diff -Nru glslang-7.12.3352/.appveyor.yml glslang-8.13.3559/.appveyor.yml --- glslang-7.12.3352/.appveyor.yml 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/.appveyor.yml 2020-01-06 14:50:40.000000000 +0000 @@ -66,7 +66,6 @@ bin\glslangValidator.exe bin\spirv-remap.exe include\glslang\* - include\SPIRV\* lib\glslang%SUFFIX%.lib lib\HLSL%SUFFIX%.lib lib\OGLCompiler%SUFFIX%.lib diff -Nru glslang-7.12.3352/BUILD.bazel glslang-8.13.3559/BUILD.bazel --- glslang-7.12.3352/BUILD.bazel 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/BUILD.bazel 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,245 @@ +package( + default_visibility = ["//visibility:public"], +) + +# Description: +# +# Khronos reference front-end for GLSL and ESSL, and sample SPIR-V generator. + +licenses(["notice"]) + +exports_files(["LICENSE"]) + +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", + 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", + ] + 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", + "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", + "NV_EXTENSIONS", + ], + linkopts = select({ + "@bazel_tools//src/conditions:windows": [""], + "//conditions:default": ["-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 = select({ + "@bazel_tools//src/conditions:windows": [""], + "//conditions:default": ["-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", + ], + ), +) + +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 = 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", + ":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], + copts = COMMON_COPTS, + data = [ + ":test_files", + ], + deps = [ + ":SPIRV", + ":glslang", + ":glslang_test_lib", + ], +) for test_file in GLSLANG_TESTS] diff -Nru glslang-7.12.3352/BUILD.gn glslang-8.13.3559/BUILD.gn --- glslang-7.12.3352/BUILD.gn 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/BUILD.gn 2020-01-06 14:50:40.000000000 +0000 @@ -33,10 +33,25 @@ 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") { include_dirs = [ "." ] + + defines = [ "ENABLE_HLSL=1" ] } source_set("glslang_sources") { @@ -45,8 +60,10 @@ 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", @@ -129,9 +146,25 @@ "glslang/MachineIndependent/reflection.h", "glslang/OSDependent/osinclude.h", "glslang/Public/ShaderLang.h", + "hlsl/hlslAttributes.cpp", + "hlsl/hlslAttributes.h", + "hlsl/hlslGrammar.cpp", + "hlsl/hlslGrammar.h", + "hlsl/hlslOpMap.cpp", + "hlsl/hlslOpMap.h", + "hlsl/hlslParseHelper.cpp", + "hlsl/hlslParseHelper.h", + "hlsl/hlslParseables.cpp", + "hlsl/hlslParseables.h", + "hlsl/hlslScanContext.cpp", + "hlsl/hlslScanContext.h", + "hlsl/hlslTokenStream.cpp", + "hlsl/hlslTokenStream.h", + "hlsl/hlslTokens.h", ] defines = [ "ENABLE_OPT=1" ] + if (is_win) { sources += [ "glslang/OSDependent/Windows/ossource.cpp" ] defines += [ "GLSLANG_OSINCLUDE_WIN32" ] @@ -141,7 +174,7 @@ } if (is_clang) { - cflags_cc = [ + cflags = [ "-Wno-extra-semi", "-Wno-ignored-qualifiers", "-Wno-implicit-fallthrough", @@ -149,12 +182,13 @@ "-Wno-sign-compare", "-Wno-unused-variable", "-Wno-missing-field-initializers", + "-Wno-newline-eof", ] } if (is_win && !is_clang) { cflags = [ - "/wd4018", # signed/unsigned mismatch - "/wd4189", # local variable is initialized but not referenced + "/wd4018", # signed/unsigned mismatch + "/wd4189", # local variable is initialized but not referenced ] } @@ -162,6 +196,9 @@ "${spirv_tools_dir}:spvtools_opt", "${spirv_tools_dir}:spvtools_val", ] + + configs -= _configs_to_remove + configs += _configs_to_add } source_set("glslang_default_resource_limits_sources") { @@ -169,8 +206,13 @@ "StandAlone/ResourceLimits.cpp", "StandAlone/ResourceLimits.h", ] - deps = [ ":glslang_sources" ] + deps = [ + ":glslang_sources", + ] public_configs = [ ":glslang_public" ] + + configs -= _configs_to_remove + configs += _configs_to_add } executable("glslang_validator") { @@ -186,6 +228,9 @@ ":glslang_default_resource_limits_sources", ":glslang_sources", ] + + configs -= _configs_to_remove + configs += _configs_to_add } executable("spirv-remap") { @@ -196,4 +241,7 @@ deps = [ ":glslang_sources", ] + + configs -= _configs_to_remove + configs += _configs_to_add } diff -Nru glslang-7.12.3352/CMakeLists.txt glslang-8.13.3559/CMakeLists.txt --- glslang-7.12.3352/CMakeLists.txt 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/CMakeLists.txt 2020-01-06 14:50:40.000000000 +0000 @@ -6,6 +6,9 @@ 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) @@ -13,6 +16,7 @@ include(CMakeDependentOption) option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF) +option(BUILD_EXTERNAL "Build external dependencies in /External" ON) set(LIB_TYPE STATIC) @@ -26,17 +30,18 @@ endif() option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" ON) -option(ENABLE_AMD_EXTENSIONS "Enables support of AMD-specific extensions" ON) option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON) -option(ENABLE_NV_EXTENSIONS "Enables support of Nvidia-specific extensions" 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_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) 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) @@ -52,7 +57,7 @@ # 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}") @@ -63,21 +68,22 @@ endmacro(glslang_pch) project(glslang) -# make testing optional -include(CTest) -if(ENABLE_AMD_EXTENSIONS) - add_definitions(-DAMD_EXTENSIONS) -endif(ENABLE_AMD_EXTENSIONS) - -if(ENABLE_NV_EXTENSIONS) - add_definitions(-DNV_EXTENSIONS) -endif(ENABLE_NV_EXTENSIONS) +if(ENABLE_CTEST) + include(CTest) +endif() if(ENABLE_HLSL) add_definitions(-DENABLE_HLSL) 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) set(CMAKE_DEBUG_POSTFIX "d") if(MSVC) @@ -104,31 +110,29 @@ 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 ENVIRONMENT=web,worker") - 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) - 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) +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(ENABLE_EMSCRIPTEN_SINGLE_FILE) + add_link_options("SHELL: -s SINGLE_FILE=1") + endif(ENABLE_EMSCRIPTEN_SINGLE_FILE) +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) @@ -152,12 +156,12 @@ # 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) -endif() -# We depend on these for later projects, so they should come first. -add_subdirectory(External) + # We depend on these for later projects, so they should come first. + add_subdirectory(External) +endif() if(NOT TARGET SPIRV-Tools-opt) set(ENABLE_OPT OFF) @@ -182,4 +186,29 @@ 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. + # 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() + + if (CMAKE_CONFIGURATION_TYPES) + 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(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 -Nru glslang-7.12.3352/debian/changelog glslang-8.13.3559/debian/changelog --- glslang-7.12.3352/debian/changelog 2020-04-08 17:29:23.000000000 +0000 +++ glslang-8.13.3559/debian/changelog 2020-04-08 17:29:23.000000000 +0000 @@ -1,3 +1,60 @@ +glslang (8.13.3559-4) unstable; urgency=medium + + * rules: Disable tests on big-endian, since they're known to fail. + + -- Timo Aaltonen Mon, 06 Apr 2020 14:15:25 +0300 + +glslang (8.13.3559-3) unstable; urgency=medium + + * control: Bump dependency on spirv-tools to match where shared libs + were introduced. (Closes: #953555) + * control: Build on all archs again. + + -- Timo Aaltonen Mon, 23 Mar 2020 12:31:08 +0200 + +glslang (8.13.3559-2) unstable; urgency=medium + + * control: Skip building on big-endian, until upstream #202 is fixed. + Also skip hurd/kfreebsd which have missing build-deps. + * fix-help.diff: Add missing --help option. + + -- Timo Aaltonen Wed, 29 Jan 2020 11:00:26 +0200 + +glslang (8.13.3559-1) unstable; urgency=medium + + * New upstream release. + * patches: glslang-lib-install.patch dropped, others refreshed. + + -- Timo Aaltonen Wed, 22 Jan 2020 14:57:23 +0200 + +glslang (7.13.3496-3) unstable; urgency=medium + + * Add spirv-tools to glslang-tools depends. + + -- Timo Aaltonen Wed, 27 Nov 2019 11:56:53 +0200 + +glslang (7.13.3496-2) unstable; urgency=medium + + * Add quilt and pkg-config to build-depends. (Closes: #945433) + * control: Add glslang-tools to -dev Suggests. (Closes: #907037) + * Add manpages for spirv-remap and glslangValidator. Thanks, Brett + Johnson! (Closes: #907225) + + [ Simon McVittie ] + * control: Mark -dev pkg M-A: same. (Closes: #940486) + * d/tests: Add superficial autopkgtests + + -- Timo Aaltonen Tue, 26 Nov 2019 00:05:09 +0200 + +glslang (7.13.3496-1) unstable; urgency=medium + + * New upstream release. + * patches: Add patches from Fedora to fix library install paths, pkg- + config support etc. + * control: Add spirv-tools to build-depends. + + -- Timo Aaltonen Wed, 20 Nov 2019 14:07:50 +0200 + glslang (7.12.3352-1) unstable; urgency=medium * New upstream release. diff -Nru glslang-7.12.3352/debian/control glslang-8.13.3559/debian/control --- glslang-7.12.3352/debian/control 2020-04-08 17:29:23.000000000 +0000 +++ glslang-8.13.3559/debian/control 2020-04-08 17:29:23.000000000 +0000 @@ -5,8 +5,11 @@ Uploaders: Timo Aaltonen Build-Depends: debhelper (>= 12), cmake, + pkg-config, python3, + quilt, spirv-headers, + spirv-tools (>= 2019.4+git20191022-2), Standards-Version: 4.4.0 Homepage: https://github.com/KhronosGroup/glslang Vcs-Git: https://salsa.debian.org/xorg-team/vulkan/glslang.git @@ -14,7 +17,8 @@ Package: glslang-tools Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, + spirv-tools (>= 2019.4+git20191022-2), Description: OpenGL and OpenGL ES shader front end and validator -- tools glslang is the official reference compiler front end for the OpenGL ES and OpenGL shading languages. It implements a strict @@ -25,6 +29,8 @@ Package: glslang-dev Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} +Suggests: glslang-tools +Multi-Arch: same Description: OpenGL and OpenGL ES shader front end and validator -- development files glslang is the official reference compiler front end for the OpenGL ES and OpenGL shading languages. It implements a strict diff -Nru glslang-7.12.3352/debian/glslang-tools.manpages glslang-8.13.3559/debian/glslang-tools.manpages --- glslang-7.12.3352/debian/glslang-tools.manpages 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/debian/glslang-tools.manpages 2020-04-08 17:29:23.000000000 +0000 @@ -0,0 +1,2 @@ +debian/man/glslangValidator.1 +debian/man/spirv-remap.1 diff -Nru glslang-7.12.3352/debian/man/glslangValidator.1 glslang-8.13.3559/debian/man/glslangValidator.1 --- glslang-7.12.3352/debian/man/glslangValidator.1 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/debian/man/glslangValidator.1 2020-04-08 17:29:23.000000000 +0000 @@ -0,0 +1,261 @@ +.\" Initially generated by help2man 1.47.4. +.TH GLSLANGVALIDATOR "1" "December 2017" "glslangValidator" +.SH NAME +glslangValidator \- OpenGL (ES) Shading Language Reference Compiler +.SH SYNOPSIS +.B glslangValidator +[\fI\,OPTION\/\fR]... [\fI\,FILE\/\fR]... +.SH DESCRIPTION +Glslang is the official reference compiler front end for the OpenGL ES and OpenGL shading languages. It implements a strict interpretation of the specifications for these languages. It is open and free for anyone to use, either from a command line or programmatically. The OpenGL and OpenGL ES working groups are committed to maintaining consistency between the reference compiler and the corresponding shading language specifications. + +The purpose of the reference compiler is to identify shader portability issues. If glslang accepts a shader without errors, then all OpenGL and OpenGL ES implementations claiming to support the shader's language version should also accept the shader without errors. Likewise, if glslang reports an error when compiling a shader, all OpenGL and OpenGL ES implementations for that language version should report errors, unless the glslang errors are caused by differences in implementation-defined limits or extension support. + +Glslang can also be used to generate SPIR-V from GLSL. But this feature is experimental and non-optimized. +.SH FILE +The file extension of \&\fI\,FILE\/\fR results in auto-stage classification: +.TP +\&.conf +to provide a config file that replaces the default configuration (see \fB\-c\fR option below for generating a template) +.TP +\&.vert +for a vertex shader +.TP +\&.tesc +for a tessellation control shader +.TP +\&.tese +for a tessellation evaluation shader +.TP +\&.geom +for a geometry shader +.TP +\&.frag +for a fragment shader +.TP +\&.comp +for a compute shader +.SH OPTIONS +.TP +\fB\-C\fR +cascading errors; risk crash from accumulation of error recoveries +.TP +\fB\-D\fR +input is HLSL +.HP +\fB\-D\fR +.TP +\fB\-D\fR +define a pre\-processor macro +.TP +\fB\-E\fR +print pre\-processed GLSL; cannot be used with \fB\-l\fR; errors will appear on stderr. +.TP +\fB\-G[ver]\fR +create SPIR\-V binary, under OpenGL semantics; turns on \fB\-l\fR; default file name is .spv (\fB\-o\fR overrides this) 'ver', when present, is the version of the input semantics, which will appear in #define GL_SPIRV ver. \fB\-\-client opengl100\fR is the same as \fB\-G100\fR and \fB\-\-target\-env\fR for OpenGL will also imply \fB\-G\fR +.TP +\fB\-H\fR +print human readable form of SPIR\-V; turns on \fB\-V\fR +.TP +\fB\-I\fR +add dir to the include search path; includer's directory is searched first, followed by left\-to\-right order of \fB\-I\fR +.TP +\fB\-Od\fR +disables optimization. May cause illegal SPIR\-V for HLSL. +.TP +\fB\-Os\fR +optimizes SPIR\-V to minimize size. +.TP +\fB\-S\fR +uses specified stage rather than parsing the file extension choices for are vert, tesc, tese, geom, frag, or comp +.TP +\fB\-U\fR +undefine a pre\-processor macro +.TP +\fB\-V[ver]\fR +create SPIR\-V binary, under Vulkan semantics; turns on \fB\-l\fR; default file name is .spv (\fB\-o\fR overrides this) 'ver', when present, is the version of the input semantics, which will appear in #define VULKAN ver. \fB\-\-client vulkan100\fR is the same as \fB\-V100\fR and \fB\-\-target\-env\fR for Vulkan will also imply \fB\-V\fR +.TP +\fB\-c\fR +configuration dump; creates the default configuration file (redirect to a .conf file) +.TP +\fB\-d\fR +default to desktop (#version 110) when there is no shader #version (default is ES version 100) +.TP +\fB\-e\fR +specify as the entry\-point name +.TP +\fB\-g\fR +generate debug information +.TP +\fB\-h\fR +print this usage message +.TP +\fB\-i\fR +intermediate tree (glslang AST) is printed out +.TP +\fB\-l\fR +link all input files together to form a single module +.TP +\fB\-m\fR +memory leak mode +.TP +\fB\-o\fR +save binary to , requires a binary option (e.g., \fB\-V\fR) +.TP +\fB\-q\fR +dump reflection query database +.TP +\fB\-r\fR +synonym for \fB\-\-relaxed\-errors\fR +.TP +\fB\-s\fR +silence syntax and semantic error reporting +.TP +\fB\-t\fR +multi\-threaded mode +.TP +\fB\-v\fR +print version strings +.TP +\fB\-w\fR +synonym for \fB\-\-suppress\-warnings\fR +.TP +\fB\-x\fR +save binary output as text\-based 32\-bit hexadecimal numbers +.TP +\fB\-\-auto\-map\-bindings\fR +automatically bind uniform variables without explicit bindings. +.TP +\fB\-\-amb\fR +synonym for \fB\-\-auto\-map\-bindings\fR +.TP +\fB\-\-auto\-map\-locations\fR +automatically locate input/output lacking 'location' (fragile, not cross stage) +.TP +\fB\-\-aml\fR +synonym for \fB\-\-auto\-map\-locations\fR +.TP +\fB\-\-client\fR {vulkan|opengl} +see \fB\-V\fR and \fB\-G\fR +.TP +\fB\-\-flatten\-uniform\-arrays\fR +flatten uniform texture/sampler arrays to scalars +.TP +\fB\-\-fua\fR +synonym for \fB\-\-flatten\-uniform\-arrays\fR +.TP +\fB\-\-hlsl\-offsets\fR +Allow block offsets to follow HLSL rules. Works independently of source language +.TP +\fB\-\-hlsl\-iomap\fR +Perform IO mapping in HLSL register space +.TP +\fB\-\-keep\-uncalled\fR +don't eliminate uncalled functions +.TP +\fB\-\-ku\fR +synonym for \fB\-\-keep\-uncalled\fR +.TP +\fB\-\-no\-storage\-format\fR +use Unknown image format +.TP +\fB\-\-nsf\fR +synonym for \fB\-\-no\-storage\-format\fR +.TP +\fB\-\-relaxed\-errors\fR +relaxed GLSL semantic error\-checking mode +.HP +\fB\-\-resource\-set\-binding\fR [stage] name set binding +.IP +Set descriptor set and binding for individual resources +.HP +\fB\-\-resource\-set\-binding\fR [stage] set +.IP +Set descriptor set for all resources +.TP +\fB\-\-rsb\fR [stage] type set binding +synonym for \fB\-\-resource\-set\-binding\fR +.TP +\fB\-\-shift\-image\-binding\fR [stage] num +base binding number for images (uav) +.HP +\fB\-\-shift\-image\-binding\fR [stage] [num set]... +per\-descriptor\-set shift values +.TP +\fB\-\-sib\fR [stage] num +synonym for \fB\-\-shift\-image\-binding\fR +.TP +\fB\-\-shift\-sampler\-binding\fR [stage] num +base binding number for samplers +.HP +\fB\-\-shift\-sampler\-binding\fR [stage] [num set]... +per\-descriptor\-set shift values +.TP +\fB\-\-ssb\fR [stage] num +synonym for \fB\-\-shift\-sampler\-binding\fR +.TP +\fB\-\-shift\-ssbo\-binding\fR [stage] num +base binding number for SSBOs +.HP +\fB\-\-shift\-ssbo\-binding\fR [stage] [num set]... +per\-descriptor\-set shift values +.TP +\fB\-\-sbb\fR [stage] num +synonym for \fB\-\-shift\-ssbo\-binding\fR +.TP +\fB\-\-shift\-texture\-binding\fR [stage] num +base binding number for textures +.HP +\fB\-\-shift\-texture\-binding\fR [stage] [num set]... +per\-descriptor\-set shift values +.TP +\fB\-\-stb\fR [stage] num +synonym for \fB\-\-shift\-texture\-binding\fR +.TP +\fB\-\-shift\-uav\-binding\fR [stage] num +base binding number for UAVs +.HP +\fB\-\-shift\-uav\-binding\fR [stage] [num set]... +per\-descriptor\-set shift values +.TP +\fB\-\-suavb\fR [stage] num +synonym for \fB\-\-shift\-uav\-binding\fR +.TP +\fB\-\-shift\-UBO\-binding\fR [stage] num +base binding number for UBOs +.HP +\fB\-\-shift\-UBO\-binding\fR [stage] [num set]... +per\-descriptor\-set shift values +.TP +\fB\-\-shift\-cbuffer\-binding\fR [stage] num +synonym for \fB\-\-shift\-UBO\-binding\fR +.HP +\fB\-\-shift\-cbuffer\-binding\fR [stage] [num set]... +per\-descriptor\-set shift values +.TP +\fB\-\-sub\fR [stage] num +synonym for \fB\-\-shift\-UBO\-binding\fR +.TP +\fB\-\-source\-entrypoint\fR +the given shader source function is renamed to be the given in \fB\-e\fR +.TP +\fB\-\-sep\fR +synonym for \fB\-\-source\-entrypoint\fR +.TP +\fB\-\-stdin\fR +Read from stdin instead of from a file. You'll have to provide the shader stageusing \fB\-S\fR. +.TP +\fB\-\-suppress\-warnings\fR +suppress GLSL warnings (except as required by #extension : warn) +.TP +\fB\-\-target\-env\fR {vulkan1.0|opengl} +set the execution environment code will execute in (as opposed to language semantics selected by \fB\-\-client\fR) defaults: 'vulkan1.0' under \fB\-\-client vulkan\fR 'opengl' under \fB\-\-client opengl\fR +.TP +\fB\-\-variable\-name\fR +Creates a C header file that contains a uint32_t array named initialized with the shader binary code. +.TP +\fB\-\-vn\fR +synonym for \fB\-\-variable\-name\fR +.SH ALSO SEE +https://github.com/KhronosGroup/glslang + +https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/ diff -Nru glslang-7.12.3352/debian/man/spirv-remap.1 glslang-8.13.3559/debian/man/spirv-remap.1 --- glslang-7.12.3352/debian/man/spirv-remap.1 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/debian/man/spirv-remap.1 2020-04-08 17:29:23.000000000 +0000 @@ -0,0 +1,72 @@ +.\" Initially generated by help2man 1.47.4. +.TH SPIRV-REMAP "1" "December 2017" "User Commands" +.SH NAME +spirv-remap \- a utility to compress of SPIR-V binary files +.SH SYNOPSIS +.B spirv\-remap +[\fI\,OPTION\/\fR]... +.SH DESCRIPTION +spirv-remap is a utility to improve compression of SPIR-V binary files via +entropy reduction, plus optional stripping of debug information and +load/store optimization. It transforms SPIR-V to SPIR-V, remapping IDs. The +resulting modules have an increased ID range (IDs are not as tightly packed +around zero), but will compress better when multiple modules are compressed +together, since compressor's dictionary can find better cross module +commonality. + +Remapping is accomplished via canonicalization. Thus, modules can be +compressed one at a time with no loss of quality relative to operating on +many modules at once. The command line tool operates on multiple modules +only in the trivial repetition sense, for ease of use. The remapper API +only accepts a single module at a time. + +spirv-remap is currently in an alpha state. Although there are no known +remapping defects, it has only been exercised on one real world game shader +workload. +.SH OPTIONS +.TP +\fB-?\fR \fB--help\fR +shows help +.TP +\fB-V\fR \fB--version\fR +shows version +.TP +\fB-v\fR \fB-vv\fR ... \fB--verbose\fR [int] +sets verbosity. With no verbosity, the command is silent. +.TP +\fB-i\fR \fB--input\fR file1 [file2...] +files to process +.TP +\fB-o\fR \fB--output\fR DESTDIR +output directory +.TP +\fB-s\fR --strip-all \fB--strip\fR all +strips all debug info +.TP +\fB--map\fR (all|types|names|funcs) +canonicalizes type IDs / named data / function bodies +.TP +\fB--dce\fR (all|types|funcs) +removes dead types / functions +.TP +\fB--opt\fR (all|loadstore) +optimizes unneeded loads/stores +.TP +\fB--do-everything\fR +Synonym for \fB--map all --dce all --opt all --strip all\fR +.SH RETURNS +0 on success + +a positive integer error on failure. +.SH EXAMPLES +.TP +spirv-remap -v --map all --input *.spv --output /tmp/out_dir +Perform ID remapping on all shaders in "*.spv", writing new files with +the same basenames to /tmp/out_dir. +.TP +spirv-remap-linux-64 -v --do-everything --input *.spv --output /tmp/out_dir +Perform all possible size reductions + +Note that +.SH ALSO SEE +https://github.com/KhronosGroup/glslang diff -Nru glslang-7.12.3352/debian/patches/0001-pkg-config-compatibility.patch glslang-8.13.3559/debian/patches/0001-pkg-config-compatibility.patch --- glslang-7.12.3352/debian/patches/0001-pkg-config-compatibility.patch 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/debian/patches/0001-pkg-config-compatibility.patch 2020-04-08 17:29:23.000000000 +0000 @@ -0,0 +1,183 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -69,6 +69,13 @@ endmacro(glslang_pch) + + project(glslang) + ++# using pkg-config to configure include paths and link libraries ++include(FindPkgConfig) ++pkg_check_modules(SPIRV_TOOLS REQUIRED SPIRV-Tools>=2019.2.1) ++if(BUILD_SHARED_LIBS) ++ pkg_check_modules(SPIRV_TOOLS_SHARED REQUIRED SPIRV-Tools-shared>=2019.2.1) ++endif(BUILD_SHARED_LIBS) ++ + if(ENABLE_CTEST) + include(CTest) + endif() +@@ -163,11 +170,7 @@ if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMA + add_subdirectory(External) + endif() + +-if(NOT TARGET SPIRV-Tools-opt) +- set(ENABLE_OPT OFF) +-endif() +- +-if(ENABLE_OPT) ++if(${SPIRV_TOOLS_FOUND} EQUAL 1) + message(STATUS "optimizer enabled") + add_definitions(-DENABLE_OPT=1) + else() +--- a/External/CMakeLists.txt ++++ b/External/CMakeLists.txt +@@ -35,10 +35,3 @@ if(BUILD_TESTING) + endif() + endif() + +-if(ENABLE_OPT AND NOT TARGET SPIRV-Tools-opt) +- if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools) +- set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests") +- add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools spirv-tools) +- endif() +-endif() +- +--- a/glslang/CMakeLists.txt ++++ b/glslang/CMakeLists.txt +@@ -76,6 +76,7 @@ set(HEADERS + MachineIndependent/preprocessor/PpContext.h + MachineIndependent/preprocessor/PpTokens.h) + ++set(VERSION 7.11.3113) + glslang_pch(SOURCES MachineIndependent/pch.cpp) + + add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS}) +@@ -112,7 +113,9 @@ if(ENABLE_GLSLANG_INSTALL) + install(TARGETS glslang EXPORT glslangTargets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() +- install(EXPORT glslangTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) ++ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/glslang.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc @ONLY) ++ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) ++ install(EXPORT glslangTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + endif(ENABLE_GLSLANG_INSTALL) + + if(ENABLE_GLSLANG_INSTALL) +--- /dev/null ++++ b/glslang/glslang.pc.cmake.in +@@ -0,0 +1,11 @@ ++ prefix=@CMAKE_INSTALL_PREFIX@ ++ exec_prefix=@CMAKE_INSTALL_PREFIX@ ++ libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ ++ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++ ++ Name: @PROJECT_NAME@ ++ Description: OpenGL and OpenGL ES shader front end and validator ++ Requires: ++ Version: @VERSION@ ++ Libs: -L${libdir} -lglslang -lOSDependent -lHLSL -lOGLCompiler -lSPVRemapper ++ Cflags: -I${includedir} +\ No newline at end of file +--- a/SPIRV/CMakeLists.txt ++++ b/SPIRV/CMakeLists.txt +@@ -40,6 +40,10 @@ target_include_directories(SPIRV PUBLIC + $ + $) + ++ ++set(SPIRV_NAME spirv) ++set(SPIRV_VERSION 1.3) ++ + if (ENABLE_SPVREMAPPER) + add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) + set_property(TARGET SPVRemapper PROPERTY FOLDER glslang) +@@ -53,15 +57,21 @@ if(WIN32 AND BUILD_SHARED_LIBS) + endif() + endif() + ++target_include_directories(SPIRV PUBLIC ${SPIRV_TOOLS_INCLUDE_DIRS}) ++target_compile_options(SPIRV PUBLIC ${SPIRV_TOOLS_CFLAGS_OTHER}) ++target_link_libraries(SPIRV ${SPIRV_TOOLS_LIBRARIES}) ++if(BUILD_SHARED_LIBS) ++ target_include_directories(SPIRV PUBLIC ${SPIRV_TOOLS_SHARED_INCLUDE_DIRS}) ++ target_compile_options(SPIRV PUBLIC ${SPIRV_TOOLS_SHARED_CFLAGS_OTHER}) ++ target_link_libraries(SPIRV ${SPIRV_TOOLS_SHARED_LIBRARIES}) ++endif(BUILD_SHARED_LIBS) ++ + if(ENABLE_OPT) + target_include_directories(SPIRV + PRIVATE ${spirv-tools_SOURCE_DIR}/include + PRIVATE ${spirv-tools_SOURCE_DIR}/source + ) +- target_link_libraries(SPIRV glslang SPIRV-Tools-opt) +- target_include_directories(SPIRV PUBLIC +- $ +- $) ++ target_link_libraries(SPIRV glslang) + else() + target_link_libraries(SPIRV glslang) + endif(ENABLE_OPT) +@@ -97,6 +107,10 @@ if(ENABLE_GLSLANG_INSTALL) + + install(EXPORT SPIRVTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + ++ # spirv.pc Configuration ++ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/spirv.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/spirv.pc @ONLY) ++ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/spirv.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) ++ + 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) +--- /dev/null ++++ b/SPIRV/spirv.pc.cmake.in +@@ -0,0 +1,11 @@ ++ prefix=@CMAKE_INSTALL_PREFIX@ ++ exec_prefix=@CMAKE_INSTALL_PREFIX@ ++ libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ ++ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++ ++ Name: @SPIRV_NAME@ ++ Description: SPIR-V is a binary intermediate language for representing graphical-shader stages and compute kernels for multiple Khronos APIs, including OpenCL, OpenGL, and Vulkan ++ Requires: ++ Version: @SPIRV_VERSION@ ++ Libs: -L${libdir} -lSPIRV ++ Cflags: -I${includedir} +\ No newline at end of file +--- a/SPIRV/SpvTools.cpp ++++ b/SPIRV/SpvTools.cpp +@@ -43,8 +43,8 @@ + #include + + #include "SpvTools.h" +-#include "spirv-tools/optimizer.hpp" +-#include "spirv-tools/libspirv.h" ++#include ++#include + + namespace glslang { + +--- a/StandAlone/CMakeLists.txt ++++ b/StandAlone/CMakeLists.txt +@@ -23,6 +23,14 @@ if(ENABLE_SPVREMAPPER) + set(LIBRARIES ${LIBRARIES} SPVRemapper) + endif() + ++if(BUILD_SHARED_LIBS) ++ set(LIBRARIES ${LIBRARIES} ${SPIRV_TOOLS_SHARED_LIBRARIES}) ++ target_include_directories(glslangValidator PUBLIC ${SPIRV_TOOLS_SHARED_INCLUDE_DIRS}) ++else() ++ set(LIBRARIES ${LIBRARIES} ${SPIRV_TOOLS_LIBRARIES}) ++ target_include_directories(glslangValidator PUBLIC ${SPIRV_TOOLS_INCLUDE_DIRS}) ++endif(BUILD_SHARED_LIBS) ++ + if(WIN32) + set(LIBRARIES ${LIBRARIES} psapi) + elseif(UNIX) +@@ -32,9 +40,6 @@ elseif(UNIX) + endif(WIN32) + + target_link_libraries(glslangValidator ${LIBRARIES}) +-target_include_directories(glslangValidator PUBLIC +- $ +- $) + + if(ENABLE_SPVREMAPPER) + set(REMAPPER_SOURCES spirv-remap.cpp) diff -Nru glslang-7.12.3352/debian/patches/fix-help.diff glslang-8.13.3559/debian/patches/fix-help.diff --- glslang-7.12.3352/debian/patches/fix-help.diff 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/debian/patches/fix-help.diff 2020-04-08 17:29:23.000000000 +0000 @@ -0,0 +1,23 @@ +commit 6ad120eaeb95846b5dfc260c40ca0c81d17c2570 +Author: Jordan Justen +Date: Tue Jan 28 12:18:12 2020 -0800 + + standalone: Fix --help + + Fixes: bd97b6f9 ("Command-line: Give better error messages. From #1829.") + Signed-off-by: Jordan Justen + +diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp +index 6e4c8d30..c0dd50ba 100644 +--- a/StandAlone/StandAlone.cpp ++++ b/StandAlone/StandAlone.cpp +@@ -654,6 +654,9 @@ void ProcessArguments(std::vector>& workItem + break; + } else if (lowerword == "version") { + Options |= EOptionDumpVersions; ++ } else if (lowerword == "help") { ++ usage(); ++ break; + } else { + Error("unrecognized command-line option", argv[0]); + } diff -Nru glslang-7.12.3352/debian/patches/glslang-default-resource-limits_staticlib.patch glslang-8.13.3559/debian/patches/glslang-default-resource-limits_staticlib.patch --- glslang-7.12.3352/debian/patches/glslang-default-resource-limits_staticlib.patch 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/debian/patches/glslang-default-resource-limits_staticlib.patch 2020-04-08 17:29:23.000000000 +0000 @@ -0,0 +1,9 @@ +--- a/StandAlone/CMakeLists.txt ++++ b/StandAlone/CMakeLists.txt +@@ -1,4 +1,4 @@ +-add_library(glslang-default-resource-limits ++add_library(glslang-default-resource-limits STATIC + ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp) + set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang) + set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON) + diff -Nru glslang-7.12.3352/debian/patches/series glslang-8.13.3559/debian/patches/series --- glslang-7.12.3352/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/debian/patches/series 2020-04-08 17:29:23.000000000 +0000 @@ -0,0 +1,3 @@ +glslang-default-resource-limits_staticlib.patch +0001-pkg-config-compatibility.patch +fix-help.diff diff -Nru glslang-7.12.3352/debian/rules glslang-8.13.3559/debian/rules --- glslang-7.12.3352/debian/rules 2020-04-08 17:29:23.000000000 +0000 +++ glslang-8.13.3559/debian/rules 2020-04-08 17:29:23.000000000 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/make -f %: - dh $@ --builddirectory=build/ + dh $@ --with quilt --builddirectory=build/ override_dh_auto_configure: dh_auto_configure -- \ @@ -10,6 +10,10 @@ override_dh_missing: dh_missing --fail-missing +ifneq (,$(filter $(DEB_HOST_ARCH), hppa powerpc ppc64 s390x sparc64)) +override_dh_auto_test: +endif + gentarball: SOURCE=glslang gentarball: UV=$(shell dpkg-parsechangelog|awk '/^Version:/ {print $$2}'|sed 's/-.*$$//') gentarball: diff -Nru glslang-7.12.3352/debian/tests/control glslang-8.13.3559/debian/tests/control --- glslang-7.12.3352/debian/tests/control 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/debian/tests/control 2020-04-08 17:29:23.000000000 +0000 @@ -0,0 +1,10 @@ +Tests: glslang-dev +Restrictions: allow-stderr, superficial +Depends: + build-essential, + glslang-dev, + +Tests: glslang-tools +Restrictions: allow-stderr, superficial +Depends: + glslang-tools, diff -Nru glslang-7.12.3352/debian/tests/glslang-dev glslang-8.13.3559/debian/tests/glslang-dev --- glslang-7.12.3352/debian/tests/glslang-dev 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/debian/tests/glslang-dev 2020-04-08 17:29:23.000000000 +0000 @@ -0,0 +1,37 @@ +#!/bin/sh +# Copyright © 2019 Collabora Ltd. +# SPDX-License-Identifier: MIT +# (see debian/copyright) + +# Check that the library can be linked. + +set -e +set -u +set -x + +tempdir="$(mktemp -d)" +cd "$tempdir" + +cat > trivial.cpp <<'EOF' +#undef NDEBUG +#include + +#include + +int main (void) +{ + ShHandle handle; + handle = ShConstructUniformMap(); + ShDestruct(handle); + return 0; +} +EOF + +# This is hard-coded because there's no pkg-config, but that matches +# what renderdoc does... +c++ -std=c++11 -o trivial trivial.cpp -lglslang -lHLSL -lOGLCompiler -lOSDependent -lSPIRV -lpthread +test -x trivial +./trivial + +cd / +rm -fr "$tempdir" diff -Nru glslang-7.12.3352/debian/tests/glslang-tools glslang-8.13.3559/debian/tests/glslang-tools --- glslang-7.12.3352/debian/tests/glslang-tools 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/debian/tests/glslang-tools 2020-04-08 17:29:23.000000000 +0000 @@ -0,0 +1,17 @@ +#!/bin/sh + +# Copyright © 2019 Collabora Ltd. +# SPDX-License-Identifier: MIT +# (see debian/copyright) + +set -eux +export LC_ALL=C.UTF-8 + +# For now just check that the executables can run at all. They exit +# unsuccessfully when asked for help, so screen-scrape the help... + +spirv-remap --help 2>&1 | tee "$AUTOPKGTEST_TMP/help" +grep -q Usage: "$AUTOPKGTEST_TMP/help" + +glslangValidator --help 2>&1 | tee "$AUTOPKGTEST_TMP/help" +grep -q Usage: "$AUTOPKGTEST_TMP/help" diff -Nru glslang-7.12.3352/glslang/CMakeLists.txt glslang-8.13.3559/glslang/CMakeLists.txt --- glslang-7.12.3352/glslang/CMakeLists.txt 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/CMakeLists.txt 2020-01-06 14:50:40.000000000 +0000 @@ -6,7 +6,12 @@ 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 MachineIndependent/glslang_tab.cpp MachineIndependent/attribute.cpp @@ -71,22 +76,15 @@ MachineIndependent/preprocessor/PpContext.h MachineIndependent/preprocessor/PpTokens.h) -# This might be useful for making grammar changes: -# -# find_package(BISON) -# add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp.h -# COMMAND ${BISON_EXECUTABLE} --defines=${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp.h -t ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang.y -o ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp -# MAIN_DEPENDENCY MachineIndependent/glslang.y -# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -# set(BISON_GLSLParser_OUTPUT_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp) - glslang_pch(SOURCES MachineIndependent/pch.cpp) add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS}) 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 "") @@ -106,14 +104,15 @@ 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 ${CMAKE_INSTALL_LIBDIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) if(ENABLE_GLSLANG_INSTALL) @@ -122,15 +121,3 @@ 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") - endif(EMSCRIPTEN) -endif(ENABLE_GLSLANG_WEB) diff -Nru glslang-7.12.3352/glslang/glslang.js.cpp glslang-8.13.3559/glslang/glslang.js.cpp --- glslang-7.12.3352/glslang/glslang.js.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/glslang.js.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,286 +0,0 @@ -// -// 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 3Dlabs Inc. Ltd. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// - -#include -#ifdef __EMSCRIPTEN__ -#include -#endif // __EMSCRIPTEN__ -#include - -#include "../SPIRV/GlslangToSpv.h" -#include "../SPIRV/doc.h" -#include "./../glslang/Public/ShaderLang.h" - -const TBuiltInResource DefaultTBuiltInResource = { - /* .MaxLights = */ 32, - /* .MaxClipPlanes = */ 6, - /* .MaxTextureUnits = */ 32, - /* .MaxTextureCoords = */ 32, - /* .MaxVertexAttribs = */ 64, - /* .MaxVertexUniformComponents = */ 4096, - /* .MaxVaryingFloats = */ 64, - /* .MaxVertexTextureImageUnits = */ 32, - /* .MaxCombinedTextureImageUnits = */ 80, - /* .MaxTextureImageUnits = */ 32, - /* .MaxFragmentUniformComponents = */ 4096, - /* .MaxDrawBuffers = */ 32, - /* .MaxVertexUniformVectors = */ 128, - /* .MaxVaryingVectors = */ 8, - /* .MaxFragmentUniformVectors = */ 16, - /* .MaxVertexOutputVectors = */ 16, - /* .MaxFragmentInputVectors = */ 15, - /* .MinProgramTexelOffset = */ -8, - /* .MaxProgramTexelOffset = */ 7, - /* .MaxClipDistances = */ 8, - /* .MaxComputeWorkGroupCountX = */ 65535, - /* .MaxComputeWorkGroupCountY = */ 65535, - /* .MaxComputeWorkGroupCountZ = */ 65535, - /* .MaxComputeWorkGroupSizeX = */ 1024, - /* .MaxComputeWorkGroupSizeY = */ 1024, - /* .MaxComputeWorkGroupSizeZ = */ 64, - /* .MaxComputeUniformComponents = */ 1024, - /* .MaxComputeTextureImageUnits = */ 16, - /* .MaxComputeImageUniforms = */ 8, - /* .MaxComputeAtomicCounters = */ 8, - /* .MaxComputeAtomicCounterBuffers = */ 1, - /* .MaxVaryingComponents = */ 60, - /* .MaxVertexOutputComponents = */ 64, - /* .MaxGeometryInputComponents = */ 64, - /* .MaxGeometryOutputComponents = */ 128, - /* .MaxFragmentInputComponents = */ 128, - /* .MaxImageUnits = */ 8, - /* .MaxCombinedImageUnitsAndFragmentOutputs = */ 8, - /* .MaxCombinedShaderOutputResources = */ 8, - /* .MaxImageSamples = */ 0, - /* .MaxVertexImageUniforms = */ 0, - /* .MaxTessControlImageUniforms = */ 0, - /* .MaxTessEvaluationImageUniforms = */ 0, - /* .MaxGeometryImageUniforms = */ 0, - /* .MaxFragmentImageUniforms = */ 8, - /* .MaxCombinedImageUniforms = */ 8, - /* .MaxGeometryTextureImageUnits = */ 16, - /* .MaxGeometryOutputVertices = */ 256, - /* .MaxGeometryTotalOutputComponents = */ 1024, - /* .MaxGeometryUniformComponents = */ 1024, - /* .MaxGeometryVaryingComponents = */ 64, - /* .MaxTessControlInputComponents = */ 128, - /* .MaxTessControlOutputComponents = */ 128, - /* .MaxTessControlTextureImageUnits = */ 16, - /* .MaxTessControlUniformComponents = */ 1024, - /* .MaxTessControlTotalOutputComponents = */ 4096, - /* .MaxTessEvaluationInputComponents = */ 128, - /* .MaxTessEvaluationOutputComponents = */ 128, - /* .MaxTessEvaluationTextureImageUnits = */ 16, - /* .MaxTessEvaluationUniformComponents = */ 1024, - /* .MaxTessPatchComponents = */ 120, - /* .MaxPatchVertices = */ 32, - /* .MaxTessGenLevel = */ 64, - /* .MaxViewports = */ 16, - /* .MaxVertexAtomicCounters = */ 0, - /* .MaxTessControlAtomicCounters = */ 0, - /* .MaxTessEvaluationAtomicCounters = */ 0, - /* .MaxGeometryAtomicCounters = */ 0, - /* .MaxFragmentAtomicCounters = */ 8, - /* .MaxCombinedAtomicCounters = */ 8, - /* .MaxAtomicCounterBindings = */ 1, - /* .MaxVertexAtomicCounterBuffers = */ 0, - /* .MaxTessControlAtomicCounterBuffers = */ 0, - /* .MaxTessEvaluationAtomicCounterBuffers = */ 0, - /* .MaxGeometryAtomicCounterBuffers = */ 0, - /* .MaxFragmentAtomicCounterBuffers = */ 1, - /* .MaxCombinedAtomicCounterBuffers = */ 1, - /* .MaxAtomicCounterBufferSize = */ 16384, - /* .MaxTransformFeedbackBuffers = */ 4, - /* .MaxTransformFeedbackInterleavedComponents = */ 64, - /* .MaxCullDistances = */ 8, - /* .MaxCombinedClipAndCullDistances = */ 8, - /* .MaxSamples = */ 4, - /* .maxMeshOutputVerticesNV = */ 256, - /* .maxMeshOutputPrimitivesNV = */ 512, - /* .maxMeshWorkGroupSizeX_NV = */ 32, - /* .maxMeshWorkGroupSizeY_NV = */ 1, - /* .maxMeshWorkGroupSizeZ_NV = */ 1, - /* .maxTaskWorkGroupSizeX_NV = */ 32, - /* .maxTaskWorkGroupSizeY_NV = */ 1, - /* .maxTaskWorkGroupSizeZ_NV = */ 1, - /* .maxMeshViewCountNV = */ 4, - - /* .limits = */ { - /* .nonInductiveForLoops = */ 1, - /* .whileLoops = */ 1, - /* .doWhileLoops = */ 1, - /* .generalUniformIndexing = */ 1, - /* .generalAttributeMatrixVectorIndexing = */ 1, - /* .generalVaryingIndexing = */ 1, - /* .generalSamplerIndexing = */ 1, - /* .generalVariableIndexing = */ 1, - /* .generalConstantMatrixVectorIndexing = */ 1, - }}; - -/* - * Takes in a GLSL shader as a string and converts it to SPIR-V in binary form. - * - * |glsl| Char array created using create_input_buffer and populated - * with the shader to be converted. - * This buffer must be destroyed using destroy_input_buffer. - * |shader_type| Magic number indicating the type of shader being processed. - * Legal values are as follows: - * Vertex = 0 - * Geometry = 3 - * Fragment = 4 - * |spirv| Pointer to an output buffer that will be updated with the - * resulting SPIR-V shader. - * This buffer must be destroyed using destroy_output_buffer. - * - * |spirv_len| Length of the output binary buffer. - * |gen_debug| Flag to indicate if debug information should be generated. - * - * Return 0 on success, non-0 on failure. - */ -#ifdef __EMSCRIPTEN__ -EMSCRIPTEN_KEEPALIVE -#endif // __EMSCRIPTEN__ -int convert_glsl_to_spirv(const char* glsl, int shader_type, unsigned int** spirv, size_t* spirv_len, bool gen_debug) -{ - int ret_val = 0; - if (glsl == nullptr || spirv == nullptr) { - return 1; - } - *spirv = nullptr; - - if (shader_type != 0 && shader_type != 3 && shader_type != 4) { - return 2; - } - - EShLanguage shader_lang = static_cast(shader_type); - - glslang::InitializeProcess(); - { - glslang::TShader shader(shader_lang); - shader.setStrings(&glsl, 1); - shader.setEnvInput(glslang::EShSourceGlsl, shader_lang, glslang::EShClientOpenGL, 100); - shader.setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_1); - shader.setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_3); - shader.parse(&DefaultTBuiltInResource, 100, true, EShMsgDefault); - - glslang::TProgram program; - program.addShader(&shader); - program.link(EShMsgDefault); - - std::vector output; - std::string warningsErrors; - glslang::SpvOptions spvOptions; - spvOptions.generateDebugInfo = gen_debug; - spvOptions.disableOptimizer = false; - spvOptions.optimizeSize = false; - spvOptions.disassemble = false; - spvOptions.validate = false; - - glslang::GlslangToSpv(*program.getIntermediate(EShLangFragment), output, nullptr, &spvOptions); - - *spirv_len = output.size(); - *spirv = static_cast(malloc(*spirv_len * sizeof(unsigned int))); - if (*spirv != nullptr) { - memcpy(*spirv, output.data(), *spirv_len); - } else { - ret_val = 3; - } - } - glslang::FinalizeProcess(); - return ret_val; -} - -/* - * Created a valid input buffer. - * - * Must be destroyed later using destroy_input_buffer. - */ -#ifdef __EMSCRIPTEN__ -EMSCRIPTEN_KEEPALIVE -#endif // __EMSCRIPTEN__ -char* create_input_buffer(int count) { return static_cast(malloc(count * sizeof(char))); } - -/* - * Destroys a buffer created by create_input_buffer - */ -#ifdef __EMSCRIPTEN__ -EMSCRIPTEN_KEEPALIVE -#endif // __EMSCRIPTEN__ -void destroy_input_buffer(char* p) -{ - if (p != nullptr) - free(p); -} - -/* - * Destroys a buffer created by convert_glsl_to_spirv - */ -#ifdef __EMSCRIPTEN__ -EMSCRIPTEN_KEEPALIVE -#endif // __EMSCRIPTEN__ -void destroy_ouput_buffer(unsigned int* p) -{ - if (p != nullptr) - free(p); -} - - -/* - * For non-Emscripten builds we supply a generic main, so that the glslang.js - * build target can generate an executable with a trivial use case instead of - * generating a WASM binary. This is done so that there is a target that can be - * built and output analyzed using desktop tools, since WASM binaries are - * specific to the Emscripten toolchain. - */ -#ifndef __EMSCRIPTEN__ -int main() { - const char* input_text = R"(#version 310 es - -void main() { })"; - - char* input; - unsigned int* output; - size_t output_len; - - input = create_input_buffer(sizeof(input_text)); - assert(input != nullptr); - memcpy(input, input_text, sizeof(input_text)); - - convert_glsl_to_spirv(input, 4, &output, &output_len, false); - destroy_ouput_buffer(output); - destroy_input_buffer(input); - return 0; -} -#endif // !__EMSCRIPTEN__ diff -Nru glslang-7.12.3352/glslang/Include/BaseTypes.h glslang-8.13.3559/glslang/Include/BaseTypes.h --- glslang-7.12.3352/glslang/Include/BaseTypes.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/Include/BaseTypes.h 2020-01-06 14:50:40.000000000 +0000 @@ -61,11 +61,7 @@ EbtSampler, EbtStruct, EbtBlock, - -#ifdef NV_EXTENSIONS EbtAccStructNV, -#endif - EbtReference, // HLSL types that live only temporarily. @@ -94,13 +90,11 @@ EvqBuffer, // read/write, shared with app EvqShared, // compute shader's read/write 'shared' qualifier -#ifdef NV_EXTENSIONS EvqPayloadNV, EvqPayloadInNV, EvqHitAttrNV, EvqCallableDataNV, EvqCallableDataInNV, -#endif // parameters EvqIn, // also, for 'in' in the grammar before we know if it's a pipeline input or an 'in' parameter @@ -221,7 +215,6 @@ EbvSampleMask, EbvHelperInvocation, -#ifdef AMD_EXTENSIONS EbvBaryCoordNoPersp, EbvBaryCoordNoPerspCentroid, EbvBaryCoordNoPerspSample, @@ -229,7 +222,6 @@ EbvBaryCoordSmoothCentroid, EbvBaryCoordSmoothSample, EbvBaryCoordPullModel, -#endif EbvViewIndex, EbvDeviceIndex, @@ -237,7 +229,6 @@ EbvFragSizeEXT, EbvFragInvocationCountEXT, -#ifdef NV_EXTENSIONS EbvViewportMaskNV, EbvSecondaryPositionNV, EbvSecondaryViewportMaskNV, @@ -273,7 +264,6 @@ EbvLayerPerViewNV, EbvMeshViewCountNV, EbvMeshViewIndicesNV, -#endif // sm builtins EbvWarpsPerSM, @@ -299,6 +289,19 @@ EbvLast }; +// In this enum, order matters; users can assume higher precision is a bigger value +// and EpqNone is 0. +enum TPrecisionQualifier { + EpqNone = 0, + EpqLow, + EpqMedium, + EpqHigh +}; + +#ifdef GLSLANG_WEB +__inline const char* GetStorageQualifierString(TStorageQualifier q) { return ""; } +__inline const char* GetPrecisionQualifierString(TPrecisionQualifier p) { return ""; } +#else // These will show up in error messages __inline const char* GetStorageQualifierString(TStorageQualifier q) { @@ -325,13 +328,11 @@ case EvqPointCoord: return "gl_PointCoord"; break; case EvqFragColor: return "fragColor"; break; case EvqFragDepth: return "gl_FragDepth"; break; -#ifdef NV_EXTENSIONS case EvqPayloadNV: return "rayPayloadNV"; break; case EvqPayloadInNV: return "rayPayloadInNV"; break; case EvqHitAttrNV: return "hitAttributeNV"; break; case EvqCallableDataNV: return "callableDataNV"; break; case EvqCallableDataInNV: return "callableDataInNV"; break; -#endif default: return "unknown qualifier"; } } @@ -413,7 +414,6 @@ case EbvSampleMask: return "SampleMaskIn"; case EbvHelperInvocation: return "HelperInvocation"; -#ifdef AMD_EXTENSIONS case EbvBaryCoordNoPersp: return "BaryCoordNoPersp"; case EbvBaryCoordNoPerspCentroid: return "BaryCoordNoPerspCentroid"; case EbvBaryCoordNoPerspSample: return "BaryCoordNoPerspSample"; @@ -421,7 +421,6 @@ case EbvBaryCoordSmoothCentroid: return "BaryCoordSmoothCentroid"; case EbvBaryCoordSmoothSample: return "BaryCoordSmoothSample"; case EbvBaryCoordPullModel: return "BaryCoordPullModel"; -#endif case EbvViewIndex: return "ViewIndex"; case EbvDeviceIndex: return "DeviceIndex"; @@ -429,7 +428,6 @@ case EbvFragSizeEXT: return "FragSizeEXT"; case EbvFragInvocationCountEXT: return "FragInvocationCountEXT"; -#ifdef NV_EXTENSIONS case EbvViewportMaskNV: return "ViewportMaskNV"; case EbvSecondaryPositionNV: return "SecondaryPositionNV"; case EbvSecondaryViewportMaskNV: return "SecondaryViewportMaskNV"; @@ -464,7 +462,6 @@ case EbvLayerPerViewNV: return "LayerPerViewNV"; case EbvMeshViewCountNV: return "MeshViewCountNV"; case EbvMeshViewIndicesNV: return "MeshViewIndicesNV"; -#endif case EbvWarpsPerSM: return "WarpsPerSMNV"; case EbvSMCount: return "SMCountNV"; @@ -475,15 +472,6 @@ } } -// In this enum, order matters; users can assume higher precision is a bigger value -// and EpqNone is 0. -enum TPrecisionQualifier { - EpqNone = 0, - EpqLow, - EpqMedium, - EpqHigh -}; - __inline const char* GetPrecisionQualifierString(TPrecisionQualifier p) { switch (p) { @@ -494,6 +482,7 @@ default: return "unknown precision qualifier"; } } +#endif __inline bool isTypeSignedInt(TBasicType type) { @@ -538,7 +527,8 @@ } } -__inline int getTypeRank(TBasicType type) { +__inline int getTypeRank(TBasicType type) +{ int res = -1; switch(type) { case EbtInt8: diff -Nru glslang-7.12.3352/glslang/Include/ConstantUnion.h glslang-8.13.3559/glslang/Include/ConstantUnion.h --- glslang-7.12.3352/glslang/Include/ConstantUnion.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/Include/ConstantUnion.h 2020-01-06 14:50:40.000000000 +0000 @@ -213,56 +213,59 @@ return false; switch (type) { - case EbtInt16: - if (constant.i16Const == i16Const) + case EbtInt: + if (constant.iConst == iConst) return true; break; - case EbtUint16: - if (constant.u16Const == u16Const) + case EbtUint: + if (constant.uConst == uConst) return true; break; - case EbtInt8: - if (constant.i8Const == i8Const) + case EbtBool: + if (constant.bConst == bConst) return true; break; - case EbtUint8: - if (constant.u8Const == u8Const) + case EbtDouble: + if (constant.dConst == dConst) return true; break; - case EbtInt: - if (constant.iConst == iConst) + +#ifndef GLSLANG_WEB + case EbtInt16: + if (constant.i16Const == i16Const) return true; break; - case EbtUint: - if (constant.uConst == uConst) + case EbtUint16: + if (constant.u16Const == u16Const) return true; break; - case EbtInt64: - if (constant.i64Const == i64Const) + case EbtInt8: + if (constant.i8Const == i8Const) return true; break; - case EbtUint64: - if (constant.u64Const == u64Const) + case EbtUint8: + if (constant.u8Const == u8Const) return true; break; - case EbtDouble: - if (constant.dConst == dConst) + case EbtInt64: + if (constant.i64Const == i64Const) return true; break; - case EbtBool: - if (constant.bConst == bConst) + case EbtUint64: + if (constant.u64Const == u64Const) return true; break; +#endif default: assert(false && "Default missing"); } @@ -329,6 +332,22 @@ { assert(type == constant.type); switch (type) { + case EbtInt: + if (iConst > constant.iConst) + return true; + + return false; + case EbtUint: + if (uConst > constant.uConst) + return true; + + return false; + case EbtDouble: + if (dConst > constant.dConst) + return true; + + return false; +#ifndef GLSLANG_WEB case EbtInt8: if (i8Const > constant.i8Const) return true; @@ -349,16 +368,6 @@ return true; return false; - case EbtInt: - if (iConst > constant.iConst) - return true; - - return false; - case EbtUint: - if (uConst > constant.uConst) - return true; - - return false; case EbtInt64: if (i64Const > constant.i64Const) return true; @@ -369,11 +378,7 @@ return true; return false; - case EbtDouble: - if (dConst > constant.dConst) - return true; - - return false; +#endif default: assert(false && "Default missing"); return false; @@ -384,6 +389,7 @@ { assert(type == constant.type); switch (type) { +#ifndef GLSLANG_WEB case EbtInt8: if (i8Const < constant.i8Const) return true; @@ -394,7 +400,7 @@ return true; return false; - case EbtInt16: + case EbtInt16: if (i16Const < constant.i16Const) return true; @@ -402,17 +408,6 @@ case EbtUint16: if (u16Const < constant.u16Const) return true; - - return false; - case EbtInt: - if (iConst < constant.iConst) - return true; - - return false; - case EbtUint: - if (uConst < constant.uConst) - return true; - return false; case EbtInt64: if (i64Const < constant.i64Const) @@ -424,11 +419,22 @@ return true; return false; +#endif case EbtDouble: if (dConst < constant.dConst) return true; return false; + case EbtInt: + if (iConst < constant.iConst) + return true; + + return false; + case EbtUint: + if (uConst < constant.uConst) + return true; + + return false; default: assert(false && "Default missing"); return false; @@ -440,15 +446,17 @@ TConstUnion returnValue; assert(type == constant.type); switch (type) { + case EbtInt: returnValue.setIConst(iConst + constant.iConst); break; + case EbtUint: returnValue.setUConst(uConst + constant.uConst); break; + case EbtDouble: returnValue.setDConst(dConst + constant.dConst); break; +#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const + constant.i8Const); break; case EbtInt16: returnValue.setI16Const(i16Const + constant.i16Const); break; - case EbtInt: returnValue.setIConst(iConst + constant.iConst); break; case EbtInt64: returnValue.setI64Const(i64Const + constant.i64Const); break; case EbtUint8: returnValue.setU8Const(u8Const + constant.u8Const); break; case EbtUint16: returnValue.setU16Const(u16Const + constant.u16Const); break; - case EbtUint: returnValue.setUConst(uConst + constant.uConst); break; case EbtUint64: returnValue.setU64Const(u64Const + constant.u64Const); break; - case EbtDouble: returnValue.setDConst(dConst + constant.dConst); break; +#endif default: assert(false && "Default missing"); } @@ -460,15 +468,17 @@ TConstUnion returnValue; assert(type == constant.type); switch (type) { + case EbtInt: returnValue.setIConst(iConst - constant.iConst); break; + case EbtUint: returnValue.setUConst(uConst - constant.uConst); break; + case EbtDouble: returnValue.setDConst(dConst - constant.dConst); break; +#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const - constant.i8Const); break; case EbtInt16: returnValue.setI16Const(i16Const - constant.i16Const); break; - case EbtInt: returnValue.setIConst(iConst - constant.iConst); break; case EbtInt64: returnValue.setI64Const(i64Const - constant.i64Const); break; case EbtUint8: returnValue.setU8Const(u8Const - constant.u8Const); break; case EbtUint16: returnValue.setU16Const(u16Const - constant.u16Const); break; - case EbtUint: returnValue.setUConst(uConst - constant.uConst); break; case EbtUint64: returnValue.setU64Const(u64Const - constant.u64Const); break; - case EbtDouble: returnValue.setDConst(dConst - constant.dConst); break; +#endif default: assert(false && "Default missing"); } @@ -480,15 +490,17 @@ TConstUnion returnValue; assert(type == constant.type); switch (type) { + case EbtInt: returnValue.setIConst(iConst * constant.iConst); break; + case EbtUint: returnValue.setUConst(uConst * constant.uConst); break; + case EbtDouble: returnValue.setDConst(dConst * constant.dConst); break; +#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const * constant.i8Const); break; case EbtInt16: returnValue.setI16Const(i16Const * constant.i16Const); break; - case EbtInt: returnValue.setIConst(iConst * constant.iConst); break; case EbtInt64: returnValue.setI64Const(i64Const * constant.i64Const); break; case EbtUint8: returnValue.setU8Const(u8Const * constant.u8Const); break; case EbtUint16: returnValue.setU16Const(u16Const * constant.u16Const); break; - case EbtUint: returnValue.setUConst(uConst * constant.uConst); break; case EbtUint64: returnValue.setU64Const(u64Const * constant.u64Const); break; - case EbtDouble: returnValue.setDConst(dConst * constant.dConst); break; +#endif default: assert(false && "Default missing"); } @@ -500,14 +512,16 @@ TConstUnion returnValue; assert(type == constant.type); switch (type) { + case EbtInt: returnValue.setIConst(iConst % constant.iConst); break; + case EbtUint: returnValue.setUConst(uConst % constant.uConst); break; +#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const % constant.i8Const); break; case EbtInt16: returnValue.setI8Const(i8Const % constant.i16Const); break; - case EbtInt: returnValue.setIConst(iConst % constant.iConst); break; case EbtInt64: returnValue.setI64Const(i64Const % constant.i64Const); break; case EbtUint8: returnValue.setU8Const(u8Const % constant.u8Const); break; case EbtUint16: returnValue.setU16Const(u16Const % constant.u16Const); break; - case EbtUint: returnValue.setUConst(uConst % constant.uConst); break; case EbtUint64: returnValue.setU64Const(u64Const % constant.u64Const); break; +#endif default: assert(false && "Default missing"); } @@ -518,6 +532,7 @@ { TConstUnion returnValue; switch (type) { +#ifndef GLSLANG_WEB case EbtInt8: switch (constant.type) { case EbtInt8: returnValue.setI8Const(i8Const >> constant.i8Const); break; @@ -570,32 +585,38 @@ default: assert(false && "Default missing"); } break; +#endif case EbtInt: switch (constant.type) { + case EbtInt: returnValue.setIConst(iConst >> constant.iConst); break; + case EbtUint: returnValue.setIConst(iConst >> constant.uConst); break; +#ifndef GLSLANG_WEB case EbtInt8: returnValue.setIConst(iConst >> constant.i8Const); break; case EbtUint8: returnValue.setIConst(iConst >> constant.u8Const); break; case EbtInt16: returnValue.setIConst(iConst >> constant.i16Const); break; case EbtUint16: returnValue.setIConst(iConst >> constant.u16Const); break; - case EbtInt: returnValue.setIConst(iConst >> constant.iConst); break; - case EbtUint: returnValue.setIConst(iConst >> constant.uConst); break; case EbtInt64: returnValue.setIConst(iConst >> constant.i64Const); break; case EbtUint64: returnValue.setIConst(iConst >> constant.u64Const); break; +#endif default: assert(false && "Default missing"); } break; case EbtUint: switch (constant.type) { + case EbtInt: returnValue.setUConst(uConst >> constant.iConst); break; + case EbtUint: returnValue.setUConst(uConst >> constant.uConst); break; +#ifndef GLSLANG_WEB case EbtInt8: returnValue.setUConst(uConst >> constant.i8Const); break; case EbtUint8: returnValue.setUConst(uConst >> constant.u8Const); break; case EbtInt16: returnValue.setUConst(uConst >> constant.i16Const); break; case EbtUint16: returnValue.setUConst(uConst >> constant.u16Const); break; - case EbtInt: returnValue.setUConst(uConst >> constant.iConst); break; - case EbtUint: returnValue.setUConst(uConst >> constant.uConst); break; case EbtInt64: returnValue.setUConst(uConst >> constant.i64Const); break; case EbtUint64: returnValue.setUConst(uConst >> constant.u64Const); break; +#endif default: assert(false && "Default missing"); } break; +#ifndef GLSLANG_WEB case EbtInt64: switch (constant.type) { case EbtInt8: returnValue.setI64Const(i64Const >> constant.i8Const); break; @@ -622,6 +643,7 @@ default: assert(false && "Default missing"); } break; +#endif default: assert(false && "Default missing"); } @@ -632,6 +654,7 @@ { TConstUnion returnValue; switch (type) { +#ifndef GLSLANG_WEB case EbtInt8: switch (constant.type) { case EbtInt8: returnValue.setI8Const(i8Const << constant.i8Const); break; @@ -684,32 +707,6 @@ default: assert(false && "Default missing"); } break; - case EbtInt: - switch (constant.type) { - case EbtInt8: returnValue.setIConst(iConst << constant.i8Const); break; - case EbtUint8: returnValue.setIConst(iConst << constant.u8Const); break; - case EbtInt16: returnValue.setIConst(iConst << constant.i16Const); break; - case EbtUint16: returnValue.setIConst(iConst << constant.u16Const); break; - case EbtInt: returnValue.setIConst(iConst << constant.iConst); break; - case EbtUint: returnValue.setIConst(iConst << constant.uConst); break; - case EbtInt64: returnValue.setIConst(iConst << constant.i64Const); break; - case EbtUint64: returnValue.setIConst(iConst << constant.u64Const); break; - default: assert(false && "Default missing"); - } - break; - case EbtUint: - switch (constant.type) { - case EbtInt8: returnValue.setUConst(uConst << constant.i8Const); break; - case EbtUint8: returnValue.setUConst(uConst << constant.u8Const); break; - case EbtInt16: returnValue.setUConst(uConst << constant.i16Const); break; - case EbtUint16: returnValue.setUConst(uConst << constant.u16Const); break; - case EbtInt: returnValue.setUConst(uConst << constant.iConst); break; - case EbtUint: returnValue.setUConst(uConst << constant.uConst); break; - case EbtInt64: returnValue.setUConst(uConst << constant.i64Const); break; - case EbtUint64: returnValue.setUConst(uConst << constant.u64Const); break; - default: assert(false && "Default missing"); - } - break; case EbtInt64: switch (constant.type) { case EbtInt8: returnValue.setI64Const(i64Const << constant.i8Const); break; @@ -736,6 +733,37 @@ default: assert(false && "Default missing"); } break; +#endif + case EbtInt: + switch (constant.type) { + case EbtInt: returnValue.setIConst(iConst << constant.iConst); break; + case EbtUint: returnValue.setIConst(iConst << constant.uConst); break; +#ifndef GLSLANG_WEB + case EbtInt8: returnValue.setIConst(iConst << constant.i8Const); break; + case EbtUint8: returnValue.setIConst(iConst << constant.u8Const); break; + case EbtInt16: returnValue.setIConst(iConst << constant.i16Const); break; + case EbtUint16: returnValue.setIConst(iConst << constant.u16Const); break; + case EbtInt64: returnValue.setIConst(iConst << constant.i64Const); break; + case EbtUint64: returnValue.setIConst(iConst << constant.u64Const); break; +#endif + default: assert(false && "Default missing"); + } + break; + case EbtUint: + switch (constant.type) { + case EbtInt: returnValue.setUConst(uConst << constant.iConst); break; + case EbtUint: returnValue.setUConst(uConst << constant.uConst); break; +#ifndef GLSLANG_WEB + case EbtInt8: returnValue.setUConst(uConst << constant.i8Const); break; + case EbtUint8: returnValue.setUConst(uConst << constant.u8Const); break; + case EbtInt16: returnValue.setUConst(uConst << constant.i16Const); break; + case EbtUint16: returnValue.setUConst(uConst << constant.u16Const); break; + case EbtInt64: returnValue.setUConst(uConst << constant.i64Const); break; + case EbtUint64: returnValue.setUConst(uConst << constant.u64Const); break; +#endif + default: assert(false && "Default missing"); + } + break; default: assert(false && "Default missing"); } @@ -747,14 +775,16 @@ TConstUnion returnValue; assert(type == constant.type); switch (type) { + case EbtInt: returnValue.setIConst(iConst & constant.iConst); break; + case EbtUint: returnValue.setUConst(uConst & constant.uConst); break; +#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const & constant.i8Const); break; case EbtUint8: returnValue.setU8Const(u8Const & constant.u8Const); break; case EbtInt16: returnValue.setI16Const(i16Const & constant.i16Const); break; case EbtUint16: returnValue.setU16Const(u16Const & constant.u16Const); break; - case EbtInt: returnValue.setIConst(iConst & constant.iConst); break; - case EbtUint: returnValue.setUConst(uConst & constant.uConst); break; case EbtInt64: returnValue.setI64Const(i64Const & constant.i64Const); break; case EbtUint64: returnValue.setU64Const(u64Const & constant.u64Const); break; +#endif default: assert(false && "Default missing"); } @@ -766,14 +796,16 @@ TConstUnion returnValue; assert(type == constant.type); switch (type) { + case EbtInt: returnValue.setIConst(iConst | constant.iConst); break; + case EbtUint: returnValue.setUConst(uConst | constant.uConst); break; +#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const | constant.i8Const); break; case EbtUint8: returnValue.setU8Const(u8Const | constant.u8Const); break; case EbtInt16: returnValue.setI16Const(i16Const | constant.i16Const); break; case EbtUint16: returnValue.setU16Const(u16Const | constant.u16Const); break; - case EbtInt: returnValue.setIConst(iConst | constant.iConst); break; - case EbtUint: returnValue.setUConst(uConst | constant.uConst); break; case EbtInt64: returnValue.setI64Const(i64Const | constant.i64Const); break; case EbtUint64: returnValue.setU64Const(u64Const | constant.u64Const); break; +#endif default: assert(false && "Default missing"); } @@ -785,14 +817,16 @@ TConstUnion returnValue; assert(type == constant.type); switch (type) { + case EbtInt: returnValue.setIConst(iConst ^ constant.iConst); break; + case EbtUint: returnValue.setUConst(uConst ^ constant.uConst); break; +#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const ^ constant.i8Const); break; case EbtUint8: returnValue.setU8Const(u8Const ^ constant.u8Const); break; case EbtInt16: returnValue.setI16Const(i16Const ^ constant.i16Const); break; case EbtUint16: returnValue.setU16Const(u16Const ^ constant.u16Const); break; - case EbtInt: returnValue.setIConst(iConst ^ constant.iConst); break; - case EbtUint: returnValue.setUConst(uConst ^ constant.uConst); break; case EbtInt64: returnValue.setI64Const(i64Const ^ constant.i64Const); break; case EbtUint64: returnValue.setU64Const(u64Const ^ constant.u64Const); break; +#endif default: assert(false && "Default missing"); } @@ -803,14 +837,16 @@ { TConstUnion returnValue; switch (type) { + case EbtInt: returnValue.setIConst(~iConst); break; + case EbtUint: returnValue.setUConst(~uConst); break; +#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(~i8Const); break; case EbtUint8: returnValue.setU8Const(~u8Const); break; case EbtInt16: returnValue.setI16Const(~i16Const); break; case EbtUint16: returnValue.setU16Const(~u16Const); break; - case EbtInt: returnValue.setIConst(~iConst); break; - case EbtUint: returnValue.setUConst(~uConst); break; case EbtInt64: returnValue.setI64Const(~i64Const); break; case EbtUint64: returnValue.setU64Const(~u64Const); break; +#endif default: assert(false && "Default missing"); } diff -Nru glslang-7.12.3352/glslang/Include/intermediate.h glslang-8.13.3559/glslang/Include/intermediate.h --- glslang-7.12.3352/glslang/Include/intermediate.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/Include/intermediate.h 2020-01-06 14:50:40.000000000 +0000 @@ -275,6 +275,10 @@ EOpConvUint64ToPtr, EOpConvPtrToUint64, + // uvec2 <-> pointer + EOpConvUvec2ToPtr, + EOpConvPtrToUvec2, + // // binary operations // @@ -422,11 +426,9 @@ EOpReflect, EOpRefract, -#ifdef AMD_EXTENSIONS EOpMin3, EOpMax3, EOpMid3, -#endif EOpDPdx, // Fragment only EOpDPdy, // Fragment only @@ -441,10 +443,7 @@ EOpInterpolateAtCentroid, // Fragment only EOpInterpolateAtSample, // Fragment only EOpInterpolateAtOffset, // Fragment only - -#ifdef AMD_EXTENSIONS EOpInterpolateAtVertex, -#endif EOpMatrixTimesMatrix, EOpOuterProduct, @@ -534,7 +533,6 @@ EOpSubgroupQuadSwapVertical, EOpSubgroupQuadSwapDiagonal, -#ifdef NV_EXTENSIONS EOpSubgroupPartition, EOpSubgroupPartitionedAdd, EOpSubgroupPartitionedMul, @@ -557,11 +555,9 @@ EOpSubgroupPartitionedExclusiveAnd, EOpSubgroupPartitionedExclusiveOr, EOpSubgroupPartitionedExclusiveXor, -#endif EOpSubgroupGuardStop, -#ifdef AMD_EXTENSIONS EOpMinInvocations, EOpMaxInvocations, EOpAddInvocations, @@ -588,7 +584,6 @@ EOpCubeFaceIndex, EOpCubeFaceCoord, EOpTime, -#endif EOpAtomicAdd, EOpAtomicMin, @@ -795,10 +790,8 @@ EOpImageQuerySamples, EOpImageLoad, EOpImageStore, -#ifdef AMD_EXTENSIONS EOpImageLoadLod, EOpImageStoreLod, -#endif EOpImageAtomicAdd, EOpImageAtomicMin, EOpImageAtomicMax, @@ -813,9 +806,7 @@ EOpSubpassLoad, EOpSubpassLoadMS, EOpSparseImageLoad, -#ifdef AMD_EXTENSIONS EOpSparseImageLoadLod, -#endif EOpImageGuardEnd, @@ -853,13 +844,11 @@ EOpTextureOffsetClamp, EOpTextureGradClamp, EOpTextureGradOffsetClamp, -#ifdef AMD_EXTENSIONS EOpTextureGatherLod, EOpTextureGatherLodOffset, EOpTextureGatherLodOffsets, EOpFragmentMaskFetch, EOpFragmentFetch, -#endif EOpSparseTextureGuardBegin, @@ -879,15 +868,12 @@ EOpSparseTextureOffsetClamp, EOpSparseTextureGradClamp, EOpSparseTextureGradOffsetClamp, -#ifdef AMD_EXTENSIONS EOpSparseTextureGatherLod, EOpSparseTextureGatherLodOffset, EOpSparseTextureGatherLodOffsets, -#endif EOpSparseTextureGuardEnd, -#ifdef NV_EXTENSIONS EOpImageFootprintGuardBegin, EOpImageSampleFootprintNV, EOpImageSampleFootprintClampNV, @@ -895,7 +881,6 @@ EOpImageSampleFootprintGradNV, EOpImageSampleFootprintGradClampNV, EOpImageFootprintGuardEnd, -#endif EOpSamplingGuardEnd, EOpTextureGuardEnd, @@ -914,14 +899,21 @@ EOpFindLSB, EOpFindMSB, -#ifdef NV_EXTENSIONS + EOpCountLeadingZeros, + EOpCountTrailingZeros, + EOpAbsDifference, + EOpAddSaturate, + EOpSubSaturate, + EOpAverage, + EOpAverageRounded, + EOpMul32x16, + EOpTraceNV, EOpReportIntersectionNV, EOpIgnoreIntersectionNV, EOpTerminateRayNV, EOpExecuteCallableNV, EOpWritePackedPrimitiveIndices4x8NV, -#endif // // HLSL operations // @@ -1110,6 +1102,8 @@ virtual bool isStruct() const { return type.isStruct(); } virtual bool isFloatingDomain() const { return type.isFloatingDomain(); } virtual bool isIntegerDomain() const { return type.isIntegerDomain(); } + bool isAtomic() const { return type.isAtomic(); } + bool isReference() const { return type.isReference(); } TString getCompleteString() const { return type.getCompleteString(); } protected: @@ -1204,6 +1198,7 @@ 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; @@ -1237,7 +1232,7 @@ // it is essential to use "symbol = sym" to assign to symbol TIntermSymbol(int i, const TString& n, const TType& t) : TIntermTyped(t), id(i), -#ifdef ENABLE_HLSL +#ifndef GLSLANG_WEB flattenSubset(-1), #endif constSubtree(nullptr) @@ -1252,7 +1247,7 @@ const TConstUnionArray& getConstArray() const { return constArray; } void setConstSubtree(TIntermTyped* subtree) { constSubtree = subtree; } TIntermTyped* getConstSubtree() const { return constSubtree; } -#ifdef ENABLE_HLSL +#ifndef GLSLANG_WEB void setFlattenSubset(int subset) { flattenSubset = subset; } int getFlattenSubset() const { return flattenSubset; } // -1 means full object #endif @@ -1263,7 +1258,7 @@ protected: int id; // the unique id of the symbol this node represents -#ifdef ENABLE_HLSL +#ifndef GLSLANG_WEB int flattenSubset; // how deeply the flattened object rooted at id has been dereferenced #endif TString name; // the name of the symbol this node represents @@ -1303,9 +1298,7 @@ bool grad; bool subpass; bool lodClamp; -#ifdef AMD_EXTENSIONS bool fragMask; -#endif }; // @@ -1321,12 +1314,19 @@ bool isConstructor() const; bool isTexture() const { return op > EOpTextureGuardBegin && op < EOpTextureGuardEnd; } bool isSampling() const { return op > EOpSamplingGuardBegin && op < EOpSamplingGuardEnd; } +#ifdef GLSLANG_WEB + bool isImage() const { return false; } + 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; } -#ifdef NV_EXTENSIONS bool isImageFootprint() const { return op > EOpImageFootprintGuardBegin && op < EOpImageFootprintGuardEnd; } -#endif bool isSparseImage() const { return op == EOpSparseImageLoad; } + bool isSubgroup() const { return op > EOpSubgroupGuardStart && op < EOpSubgroupGuardStop; } +#endif void setOperationPrecision(TPrecisionQualifier p) { operationPrecision = p; } TPrecisionQualifier getOperationPrecision() const { return operationPrecision != EpqNone ? @@ -1356,9 +1356,7 @@ cracked.grad = false; cracked.subpass = false; cracked.lodClamp = false; -#ifdef AMD_EXTENSIONS cracked.fragMask = false; -#endif switch (op) { case EOpImageQuerySize: @@ -1373,10 +1371,6 @@ case EOpTexture: case EOpSparseTexture: break; - case EOpTextureClamp: - case EOpSparseTextureClamp: - cracked.lodClamp = true; - break; case EOpTextureProj: cracked.proj = true; break; @@ -1388,22 +1382,17 @@ case EOpSparseTextureOffset: cracked.offset = true; break; - case EOpTextureOffsetClamp: - case EOpSparseTextureOffsetClamp: - cracked.offset = true; - cracked.lodClamp = true; - break; case EOpTextureFetch: case EOpSparseTextureFetch: cracked.fetch = true; - if (sampler.dim == Esd1D || (sampler.dim == Esd2D && ! sampler.ms) || sampler.dim == Esd3D) + if (sampler.is1D() || (sampler.dim == Esd2D && ! sampler.isMultiSample()) || sampler.dim == Esd3D) cracked.lod = true; break; case EOpTextureFetchOffset: case EOpSparseTextureFetchOffset: cracked.fetch = true; cracked.offset = true; - if (sampler.dim == Esd1D || (sampler.dim == Esd2D && ! sampler.ms) || sampler.dim == Esd3D) + if (sampler.is1D() || (sampler.dim == Esd2D && ! sampler.isMultiSample()) || sampler.dim == Esd3D) cracked.lod = true; break; case EOpTextureProjOffset: @@ -1428,11 +1417,6 @@ case EOpSparseTextureGrad: cracked.grad = true; break; - case EOpTextureGradClamp: - case EOpSparseTextureGradClamp: - cracked.grad = true; - cracked.lodClamp = true; - break; case EOpTextureGradOffset: case EOpSparseTextureGradOffset: cracked.grad = true; @@ -1447,6 +1431,21 @@ cracked.offset = true; cracked.proj = true; break; +#ifndef GLSLANG_WEB + case EOpTextureClamp: + case EOpSparseTextureClamp: + cracked.lodClamp = true; + break; + case EOpTextureOffsetClamp: + case EOpSparseTextureOffsetClamp: + cracked.offset = true; + cracked.lodClamp = true; + break; + case EOpTextureGradClamp: + case EOpSparseTextureGradClamp: + cracked.grad = true; + cracked.lodClamp = true; + break; case EOpTextureGradOffsetClamp: case EOpSparseTextureGradOffsetClamp: cracked.grad = true; @@ -1467,7 +1466,6 @@ cracked.gather = true; cracked.offsets = true; break; -#ifdef AMD_EXTENSIONS case EOpTextureGatherLod: case EOpSparseTextureGatherLod: cracked.gather = true; @@ -1498,8 +1496,6 @@ cracked.subpass = sampler.dim == EsdSubpass; cracked.fragMask = true; break; -#endif -#ifdef NV_EXTENSIONS case EOpImageSampleFootprintNV: break; case EOpImageSampleFootprintClampNV: @@ -1515,11 +1511,11 @@ cracked.lodClamp = true; cracked.grad = true; break; -#endif case EOpSubpassLoad: case EOpSubpassLoadMS: cracked.subpass = true; break; +#endif default: break; } diff -Nru glslang-7.12.3352/glslang/Include/PoolAlloc.h glslang-8.13.3559/glslang/Include/PoolAlloc.h --- glslang-7.12.3352/glslang/Include/PoolAlloc.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/Include/PoolAlloc.h 2020-01-06 14:50:40.000000000 +0000 @@ -304,7 +304,6 @@ 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: diff -Nru glslang-7.12.3352/glslang/Include/revision.h glslang-8.13.3559/glslang/Include/revision.h --- glslang-7.12.3352/glslang/Include/revision.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/Include/revision.h 2020-01-06 14:50:40.000000000 +0000 @@ -1,3 +1,3 @@ // This header is generated by the make-revision script. -#define GLSLANG_PATCH_LEVEL 3352 +#define GLSLANG_PATCH_LEVEL 3559 diff -Nru glslang-7.12.3352/glslang/Include/Types.h glslang-8.13.3559/glslang/Include/Types.h --- glslang-7.12.3352/glslang/Include/Types.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/Include/Types.h 2020-01-06 14:50:40.000000000 +0000 @@ -80,31 +80,59 @@ 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() - bool external : 1; // GL_OES_EGL_image_external - bool yuv : 1; // GL_EXT_YUV_target - unsigned int vectorSize : 3; // vector return type size. +#ifdef GLSLANG_WEB + bool is1D() const { return false; } + bool isBuffer() const { return false; } + bool isRect() const { return false; } + bool isSubpass() const { return false; } + bool isCombined() const { return true; } + bool isImage() const { return false; } + bool isImageClass() const { return false; } + bool isMultiSample() const { return false; } + bool isExternal() const { return false; } + void setExternal(bool e) { } + bool isYuv() const { return false; } +#else + unsigned int vectorSize : 3; // vector return type size. // Some languages support structures as sample results. Storing the whole structure in the // TSampler is too large, so there is an index to a separate table. static const unsigned structReturnIndexBits = 4; // number of index bits to use. static const unsigned structReturnSlots = (1<getTypeName().c_str()); } - if (p.coopmat && p.basicType == EbtFloat && - p.typeParameters && p.typeParameters->getNumDims() > 0 && - p.typeParameters->getDimSize(0) == 16) { - basicType = EbtFloat16; - qualifier.precision = EpqNone; + if (p.isCoopmat() && p.typeParameters && p.typeParameters->getNumDims() > 0) { + int numBits = p.typeParameters->getDimSize(0); + if (p.basicType == EbtFloat && numBits == 16) { + basicType = EbtFloat16; + qualifier.precision = EpqNone; + } else if (p.basicType == EbtUint && numBits == 8) { + basicType = EbtUint8; + qualifier.precision = EpqNone; + } else if (p.basicType == EbtInt && numBits == 8) { + basicType = EbtInt8; + qualifier.precision = EpqNone; + } } } // for construction of sampler types @@ -1483,7 +1567,7 @@ referentType = copyOf.referentType; } typeParameters = copyOf.typeParameters; - coopmat = copyOf.coopmat; + coopmat = copyOf.isCoopMat(); } // Make complete copy of the whole type graph rooted at 'copyOf'. @@ -1542,7 +1626,11 @@ virtual int getOuterArraySize() const { return arraySizes->getOuterSize(); } virtual TIntermTyped* getOuterArrayNode() const { return arraySizes->getOuterNode(); } virtual int getCumulativeArraySize() const { return arraySizes->getCumulativeSize(); } - virtual bool isArrayOfArrays() const { return arraySizes != nullptr && arraySizes->getNumDims() > 1; } +#ifdef GLSLANG_WEB + bool isArrayOfArrays() const { return false; } +#else + bool isArrayOfArrays() const { return arraySizes != nullptr && arraySizes->getNumDims() > 1; } +#endif virtual int getImplicitArraySize() const { return arraySizes->getImplicitSize(); } virtual const TArraySizes* getArraySizes() const { return arraySizes; } virtual TArraySizes* getArraySizes() { return arraySizes; } @@ -1580,9 +1668,9 @@ } return false; } - virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint -#ifdef NV_EXTENSIONS - || basicType == EbtAccStructNV + virtual bool isOpaque() const { return basicType == EbtSampler +#ifndef GLSLANG_WEB + || basicType == EbtAtomicUint || basicType == EbtAccStructNV #endif ; } virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; } @@ -1591,8 +1679,18 @@ 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; } - virtual bool isCoopMat() const { return coopmat; } +#ifdef GLSLANG_WEB + bool isAtomic() const { return false; } + bool isCoopMat() const { return false; } + bool isReference() const { return false; } +#else + bool isAtomic() const { return basicType == EbtAtomicUint; } + bool isCoopMat() const { return coopmat; } + bool isReference() const { return getBasicType() == EbtReference; } +#endif // return true if this type contains any subtype which satisfies the given predicate. template @@ -1673,20 +1771,44 @@ return contains([](const TType* t) { return t->isArray() && t->arraySizes->isOuterSpecialization(); } ); } - virtual bool contains16BitInt() const +#ifdef GLSLANG_WEB + bool containsDouble() const { return false; } + bool contains16BitFloat() const { return false; } + bool contains64BitInt() const { return false; } + bool contains16BitInt() const { return false; } + bool contains8BitInt() const { return false; } + bool containsCoopMat() const { return false; } + bool containsReference() const { return false; } +#else + bool containsDouble() const + { + return containsBasicType(EbtDouble); + } + bool contains16BitFloat() const + { + return containsBasicType(EbtFloat16); + } + bool contains64BitInt() const + { + return containsBasicType(EbtInt64) || containsBasicType(EbtUint64); + } + bool contains16BitInt() const { return containsBasicType(EbtInt16) || containsBasicType(EbtUint16); } - - virtual bool contains8BitInt() const + bool contains8BitInt() const { return containsBasicType(EbtInt8) || containsBasicType(EbtUint8); } - - virtual bool containsCoopMat() const + bool containsCoopMat() const { return contains([](const TType* t) { return t->coopmat; } ); } + bool containsReference() const + { + return containsBasicType(EbtReference); + } +#endif // Array editing methods. Array descriptors can be shared across // type instances. This allows all uses of the same array @@ -1746,11 +1868,9 @@ { if (isUnsizedArray() && !(skipNonvariablyIndexed || isArrayVariablyIndexed())) changeOuterArraySize(getImplicitArraySize()); -#ifdef NV_EXTENSIONS // For multi-dim per-view arrays, set unsized inner dimension size to 1 if (qualifier.isPerView() && arraySizes && arraySizes->isInnerUnsized()) arraySizes->clearInnerUnsized(); -#endif if (isStruct() && structure->size() > 0) { int lastMember = (int)structure->size() - 1; for (int i = 0; i < lastMember; ++i) @@ -1808,31 +1928,38 @@ static const char* getBasicString(TBasicType t) { switch (t) { - case EbtVoid: return "void"; 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"; case EbtFloat16: return "float16_t"; case EbtInt8: return "int8_t"; case EbtUint8: return "uint8_t"; case EbtInt16: return "int16_t"; case EbtUint16: return "uint16_t"; - case EbtInt: return "int"; - case EbtUint: return "uint"; case EbtInt64: return "int64_t"; 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"; -#ifdef NV_EXTENSIONS case EbtAccStructNV: return "accelerationStructureNV"; -#endif case EbtReference: return "reference"; +#endif default: return "unknown type"; } } +#ifdef GLSLANG_WEB + TString getCompleteString() const { return ""; } + const char* getStorageQualifierString() const { return ""; } + const char* getBuiltInVariableString() const { return ""; } + const char* getPrecisionQualifierString() const { return ""; } + TString getBasicTypeString() const { return ""; } +#else TString getCompleteString() const { TString typeString; @@ -1921,7 +2048,6 @@ appendUint(1u << qualifier.layoutBufferReferenceAlign); } -#ifdef NV_EXTENSIONS if (qualifier.layoutPassthrough) appendStr(" passthrough"); if (qualifier.layoutViewportRelative) @@ -1932,7 +2058,6 @@ } if (qualifier.layoutShaderRecordNV) appendStr(" shaderRecordNV"); -#endif appendStr(")"); } @@ -1950,11 +2075,8 @@ appendStr(" flat"); if (qualifier.nopersp) appendStr(" noperspective"); -#ifdef AMD_EXTENSIONS if (qualifier.explicitInterp) appendStr(" __explicitInterpAMD"); -#endif -#ifdef NV_EXTENSIONS if (qualifier.pervertexNV) appendStr(" pervertexNV"); if (qualifier.perPrimitiveNV) @@ -1963,7 +2085,6 @@ appendStr(" perviewNV"); if (qualifier.perTaskNV) appendStr(" taskNV"); -#endif if (qualifier.patch) appendStr(" patch"); if (qualifier.sample) @@ -2078,10 +2199,13 @@ const char* getStorageQualifierString() const { return GetStorageQualifierString(qualifier.storage); } const char* getBuiltInVariableString() const { return GetBuiltInVariableString(qualifier.builtIn); } const char* getPrecisionQualifierString() const { return GetPrecisionQualifierString(qualifier.precision); } +#endif + 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; @@ -2144,12 +2268,12 @@ return true; } - bool sameReferenceType(const TType& right) const + bool sameReferenceType(const TType& right) const { - if ((basicType == EbtReference) != (right.basicType == EbtReference)) + if (isReference() != right.isReference()) return false; - if ((basicType != EbtReference) && (right.basicType != EbtReference)) + if (!isReference() && !right.isReference()) return true; assert(referentType != nullptr); @@ -2161,7 +2285,7 @@ return *referentType == *right.referentType; } - // See if two types match, in all aspects except arrayness + // See if two types match, in all aspects except arrayness bool sameElementType(const TType& right) const { return basicType == right.basicType && sameElementShape(right); @@ -2196,7 +2320,7 @@ matrixCols == right.matrixCols && matrixRows == right.matrixRows && vector1 == right.vector1 && - coopmat == right.coopmat && + isCoopMat() == right.isCoopMat() && sameStructType(right) && sameReferenceType(right); } @@ -2205,10 +2329,24 @@ // an OK function parameter bool coopMatParameterOK(const TType& right) const { - return coopmat && right.coopmat && + return isCoopMat() && right.isCoopMat() && (getBasicType() == right.getBasicType()) && typeParameters == nullptr && right.typeParameters != nullptr; } + bool sameCoopMatBaseType(const TType &right) const { + bool rv = coopmat && right.coopmat; + if (getBasicType() == EbtFloat || getBasicType() == EbtFloat16) + rv = right.getBasicType() == EbtFloat || right.getBasicType() == EbtFloat16; + else if (getBasicType() == EbtUint || getBasicType() == EbtUint8) + rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8; + else if (getBasicType() == EbtInt || getBasicType() == EbtInt8) + rv = right.getBasicType() == EbtInt || right.getBasicType() == EbtInt8; + else + rv = false; + return rv; + } + + // See if two types match in all ways (just the actual type, not qualification) bool operator==(const TType& right) const { @@ -2222,12 +2360,13 @@ unsigned int getBufferReferenceAlignment() const { +#ifndef GLSLANG_WEB if (getBasicType() == glslang::EbtReference) { return getReferentType()->getQualifier().hasBufferReferenceAlign() ? (1u << getReferentType()->getQualifier().layoutBufferReferenceAlign) : 16u; - } else { - return 0; } +#endif + return 0; } protected: diff -Nru glslang-7.12.3352/glslang/MachineIndependent/attribute.cpp glslang-8.13.3559/glslang/MachineIndependent/attribute.cpp --- glslang-7.12.3352/glslang/MachineIndependent/attribute.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/attribute.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -34,6 +34,8 @@ // POSSIBILITY OF SUCH DAMAGE. // +#ifndef GLSLANG_WEB + #include "attribute.h" #include "../Include/intermediate.h" #include "ParseHelper.h" @@ -339,5 +341,6 @@ } } - } // end namespace glslang + +#endif // GLSLANG_WEB diff -Nru glslang-7.12.3352/glslang/MachineIndependent/attribute.h glslang-8.13.3559/glslang/MachineIndependent/attribute.h --- glslang-7.12.3352/glslang/MachineIndependent/attribute.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/attribute.h 2020-01-06 14:50:40.000000000 +0000 @@ -76,7 +76,49 @@ 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, + EatNonWritable, + EatNonReadable }; class TIntermAggregate; diff -Nru glslang-7.12.3352/glslang/MachineIndependent/Constant.cpp glslang-8.13.3559/glslang/MachineIndependent/Constant.cpp --- glslang-7.12.3352/glslang/MachineIndependent/Constant.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/Constant.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -189,6 +189,24 @@ else newConstArray[i].setDConst((double)NAN); break; + + case EbtInt: + if (rightUnionArray[i] == 0) + newConstArray[i].setIConst(0x7FFFFFFF); + else if (rightUnionArray[i].getIConst() == -1 && leftUnionArray[i].getIConst() == (int)-0x80000000ll) + newConstArray[i].setIConst((int)-0x80000000ll); + else + newConstArray[i].setIConst(leftUnionArray[i].getIConst() / rightUnionArray[i].getIConst()); + break; + + case EbtUint: + if (rightUnionArray[i] == 0u) + newConstArray[i].setUConst(0xFFFFFFFFu); + else + newConstArray[i].setUConst(leftUnionArray[i].getUConst() / rightUnionArray[i].getUConst()); + break; + +#ifndef GLSLANG_WEB case EbtInt8: if (rightUnionArray[i] == (signed char)0) newConstArray[i].setI8Const((signed char)0x7F); @@ -221,22 +239,6 @@ newConstArray[i].setU16Const(leftUnionArray[i].getU16Const() / rightUnionArray[i].getU16Const()); break; - case EbtInt: - if (rightUnionArray[i] == 0) - newConstArray[i].setIConst(0x7FFFFFFF); - else if (rightUnionArray[i].getIConst() == -1 && leftUnionArray[i].getIConst() == (int)-0x80000000ll) - newConstArray[i].setIConst((int)-0x80000000ll); - else - newConstArray[i].setIConst(leftUnionArray[i].getIConst() / rightUnionArray[i].getIConst()); - break; - - case EbtUint: - if (rightUnionArray[i] == 0u) - newConstArray[i].setUConst(0xFFFFFFFFu); - else - newConstArray[i].setUConst(leftUnionArray[i].getUConst() / rightUnionArray[i].getUConst()); - break; - case EbtInt64: if (rightUnionArray[i] == 0ll) newConstArray[i].setI64Const(0x7FFFFFFFFFFFFFFFll); @@ -254,6 +256,7 @@ break; default: return 0; +#endif } } break; @@ -292,13 +295,12 @@ newConstArray[i].setIConst(0); break; } else goto modulo_default; - +#ifndef GLSLANG_WEB case EbtInt64: if (rightUnionArray[i].getI64Const() == -1 && leftUnionArray[i].getI64Const() == LLONG_MIN) { newConstArray[i].setI64Const(0); break; } else goto modulo_default; -#ifdef AMD_EXTENSIONS case EbtInt16: if (rightUnionArray[i].getIConst() == -1 && leftUnionArray[i].getIConst() == SHRT_MIN) { newConstArray[i].setIConst(0); @@ -527,14 +529,16 @@ case EbtDouble: case EbtFloat16: case EbtFloat: newConstArray[i].setDConst(-unionArray[i].getDConst()); break; + case EbtInt: newConstArray[i].setIConst(-unionArray[i].getIConst()); break; + case EbtUint: newConstArray[i].setUConst(static_cast(-static_cast(unionArray[i].getUConst()))); break; +#ifndef GLSLANG_WEB case EbtInt8: newConstArray[i].setI8Const(-unionArray[i].getI8Const()); break; case EbtUint8: newConstArray[i].setU8Const(static_cast(-static_cast(unionArray[i].getU8Const()))); break; case EbtInt16: newConstArray[i].setI16Const(-unionArray[i].getI16Const()); break; case EbtUint16:newConstArray[i].setU16Const(static_cast(-static_cast(unionArray[i].getU16Const()))); break; - case EbtInt: newConstArray[i].setIConst(-unionArray[i].getIConst()); break; - case EbtUint: newConstArray[i].setUConst(static_cast(-static_cast(unionArray[i].getUConst()))); break; case EbtInt64: newConstArray[i].setI64Const(-unionArray[i].getI64Const()); break; case EbtUint64: newConstArray[i].setU64Const(static_cast(-static_cast(unionArray[i].getU64Const()))); break; +#endif default: return nullptr; } @@ -669,6 +673,48 @@ break; } + case EOpConvIntToBool: + newConstArray[i].setBConst(unionArray[i].getIConst() != 0); break; + case EOpConvUintToBool: + newConstArray[i].setBConst(unionArray[i].getUConst() != 0); break; + case EOpConvBoolToInt: + newConstArray[i].setIConst(unionArray[i].getBConst()); break; + case EOpConvBoolToUint: + newConstArray[i].setUConst(unionArray[i].getBConst()); break; + case EOpConvIntToUint: + newConstArray[i].setUConst(unionArray[i].getIConst()); break; + case EOpConvUintToInt: + newConstArray[i].setIConst(unionArray[i].getUConst()); break; + + case EOpConvFloatToBool: + case EOpConvDoubleToBool: + newConstArray[i].setBConst(unionArray[i].getDConst() != 0); break; + + case EOpConvBoolToFloat: + case EOpConvBoolToDouble: + newConstArray[i].setDConst(unionArray[i].getBConst()); break; + + case EOpConvIntToFloat: + case EOpConvIntToDouble: + newConstArray[i].setDConst(unionArray[i].getIConst()); break; + + case EOpConvUintToFloat: + case EOpConvUintToDouble: + newConstArray[i].setDConst(unionArray[i].getUConst()); break; + + case EOpConvDoubleToFloat: + case EOpConvFloatToDouble: + newConstArray[i].setDConst(unionArray[i].getDConst()); break; + + case EOpConvFloatToUint: + case EOpConvDoubleToUint: + newConstArray[i].setUConst(static_cast(unionArray[i].getDConst())); break; + + case EOpConvFloatToInt: + case EOpConvDoubleToInt: + newConstArray[i].setIConst(static_cast(unionArray[i].getDConst())); break; + +#ifndef GLSLANG_WEB case EOpConvInt8ToBool: newConstArray[i].setBConst(unionArray[i].getI8Const() != 0); break; case EOpConvUint8ToBool: @@ -677,20 +723,12 @@ newConstArray[i].setBConst(unionArray[i].getI16Const() != 0); break; case EOpConvUint16ToBool: newConstArray[i].setBConst(unionArray[i].getU16Const() != 0); break; - case EOpConvIntToBool: - newConstArray[i].setBConst(unionArray[i].getIConst() != 0); break; - case EOpConvUintToBool: - newConstArray[i].setBConst(unionArray[i].getUConst() != 0); break; case EOpConvInt64ToBool: newConstArray[i].setBConst(unionArray[i].getI64Const() != 0); break; case EOpConvUint64ToBool: newConstArray[i].setBConst(unionArray[i].getI64Const() != 0); break; case EOpConvFloat16ToBool: newConstArray[i].setBConst(unionArray[i].getDConst() != 0); break; - case EOpConvFloatToBool: - newConstArray[i].setBConst(unionArray[i].getDConst() != 0); break; - case EOpConvDoubleToBool: - newConstArray[i].setBConst(unionArray[i].getDConst() != 0); break; case EOpConvBoolToInt8: newConstArray[i].setI8Const(unionArray[i].getBConst()); break; @@ -700,20 +738,12 @@ newConstArray[i].setI16Const(unionArray[i].getBConst()); break; case EOpConvBoolToUint16: newConstArray[i].setU16Const(unionArray[i].getBConst()); break; - case EOpConvBoolToInt: - newConstArray[i].setIConst(unionArray[i].getBConst()); break; - case EOpConvBoolToUint: - newConstArray[i].setUConst(unionArray[i].getBConst()); break; case EOpConvBoolToInt64: newConstArray[i].setI64Const(unionArray[i].getBConst()); break; case EOpConvBoolToUint64: newConstArray[i].setU64Const(unionArray[i].getBConst()); break; case EOpConvBoolToFloat16: newConstArray[i].setDConst(unionArray[i].getBConst()); break; - case EOpConvBoolToFloat: - newConstArray[i].setDConst(unionArray[i].getBConst()); break; - case EOpConvBoolToDouble: - newConstArray[i].setDConst(unionArray[i].getBConst()); break; case EOpConvInt8ToInt16: newConstArray[i].setI16Const(unionArray[i].getI8Const()); break; @@ -808,8 +838,6 @@ newConstArray[i].setU8Const((unsigned char)unionArray[i].getIConst()); break; case EOpConvIntToUint16: newConstArray[i].setU16Const((unsigned char)unionArray[i].getIConst()); break; - case EOpConvIntToUint: - newConstArray[i].setUConst(unionArray[i].getIConst()); break; case EOpConvIntToUint64: newConstArray[i].setU64Const(unionArray[i].getIConst()); break; @@ -817,8 +845,6 @@ newConstArray[i].setI8Const((signed char)unionArray[i].getUConst()); break; case EOpConvUintToInt16: newConstArray[i].setI16Const((signed short)unionArray[i].getUConst()); break; - case EOpConvUintToInt: - newConstArray[i].setIConst(unionArray[i].getUConst()); break; case EOpConvUintToInt64: newConstArray[i].setI64Const(unionArray[i].getUConst()); break; case EOpConvUintToUint8: @@ -829,16 +855,8 @@ newConstArray[i].setU64Const(unionArray[i].getUConst()); break; case EOpConvIntToFloat16: newConstArray[i].setDConst(unionArray[i].getIConst()); break; - case EOpConvIntToFloat: - newConstArray[i].setDConst(unionArray[i].getIConst()); break; - case EOpConvIntToDouble: - newConstArray[i].setDConst(unionArray[i].getIConst()); break; case EOpConvUintToFloat16: newConstArray[i].setDConst(unionArray[i].getUConst()); break; - case EOpConvUintToFloat: - newConstArray[i].setDConst(unionArray[i].getUConst()); break; - case EOpConvUintToDouble: - newConstArray[i].setDConst(unionArray[i].getUConst()); break; case EOpConvInt64ToInt8: newConstArray[i].setI8Const(static_cast(unionArray[i].getI64Const())); break; case EOpConvInt64ToInt16: @@ -903,48 +921,35 @@ newConstArray[i].setI8Const(static_cast(unionArray[i].getDConst())); break; case EOpConvFloatToInt16: newConstArray[i].setI16Const(static_cast(unionArray[i].getDConst())); break; - case EOpConvFloatToInt: - newConstArray[i].setIConst(static_cast(unionArray[i].getDConst())); break; case EOpConvFloatToInt64: newConstArray[i].setI64Const(static_cast(unionArray[i].getDConst())); break; case EOpConvFloatToUint8: newConstArray[i].setU8Const(static_cast(unionArray[i].getDConst())); break; case EOpConvFloatToUint16: newConstArray[i].setU16Const(static_cast(unionArray[i].getDConst())); break; - case EOpConvFloatToUint: - newConstArray[i].setUConst(static_cast(unionArray[i].getDConst())); break; case EOpConvFloatToUint64: newConstArray[i].setU64Const(static_cast(unionArray[i].getDConst())); break; case EOpConvFloatToFloat16: newConstArray[i].setDConst(unionArray[i].getDConst()); break; - case EOpConvFloatToDouble: - newConstArray[i].setDConst(unionArray[i].getDConst()); break; case EOpConvDoubleToInt8: newConstArray[i].setI8Const(static_cast(unionArray[i].getDConst())); break; case EOpConvDoubleToInt16: newConstArray[i].setI16Const(static_cast(unionArray[i].getDConst())); break; - case EOpConvDoubleToInt: - newConstArray[i].setIConst(static_cast(unionArray[i].getDConst())); break; case EOpConvDoubleToInt64: newConstArray[i].setI64Const(static_cast(unionArray[i].getDConst())); break; case EOpConvDoubleToUint8: newConstArray[i].setU8Const(static_cast(unionArray[i].getDConst())); break; case EOpConvDoubleToUint16: newConstArray[i].setU16Const(static_cast(unionArray[i].getDConst())); break; - case EOpConvDoubleToUint: - newConstArray[i].setUConst(static_cast(unionArray[i].getDConst())); break; case EOpConvDoubleToUint64: newConstArray[i].setU64Const(static_cast(unionArray[i].getDConst())); break; case EOpConvDoubleToFloat16: newConstArray[i].setDConst(unionArray[i].getDConst()); break; - case EOpConvDoubleToFloat: - newConstArray[i].setDConst(unionArray[i].getDConst()); break; case EOpConvPtrToUint64: case EOpConvUint64ToPtr: case EOpConstructReference: newConstArray[i].setU64Const(unionArray[i].getU64Const()); break; - - +#endif // TODO: 3.0 Functionality: unary constant folding: the rest of the ops have to be fleshed out @@ -1076,6 +1081,13 @@ case EbtDouble: newConstArray[comp].setDConst(std::min(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst())); break; + case EbtInt: + newConstArray[comp].setIConst(std::min(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst())); + break; + case EbtUint: + newConstArray[comp].setUConst(std::min(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst())); + break; +#ifndef GLSLANG_WEB case EbtInt8: newConstArray[comp].setI8Const(std::min(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const())); break; @@ -1088,18 +1100,13 @@ case EbtUint16: newConstArray[comp].setU16Const(std::min(childConstUnions[0][arg0comp].getU16Const(), childConstUnions[1][arg1comp].getU16Const())); break; - case EbtInt: - newConstArray[comp].setIConst(std::min(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst())); - break; - case EbtUint: - newConstArray[comp].setUConst(std::min(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst())); - break; case EbtInt64: newConstArray[comp].setI64Const(std::min(childConstUnions[0][arg0comp].getI64Const(), childConstUnions[1][arg1comp].getI64Const())); break; case EbtUint64: newConstArray[comp].setU64Const(std::min(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const())); break; +#endif default: assert(false && "Default missing"); } break; @@ -1110,6 +1117,13 @@ case EbtDouble: newConstArray[comp].setDConst(std::max(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst())); break; + case EbtInt: + newConstArray[comp].setIConst(std::max(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst())); + break; + case EbtUint: + newConstArray[comp].setUConst(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst())); + break; +#ifndef GLSLANG_WEB case EbtInt8: newConstArray[comp].setI8Const(std::max(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const())); break; @@ -1122,18 +1136,13 @@ case EbtUint16: newConstArray[comp].setU16Const(std::max(childConstUnions[0][arg0comp].getU16Const(), childConstUnions[1][arg1comp].getU16Const())); break; - case EbtInt: - newConstArray[comp].setIConst(std::max(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst())); - break; - case EbtUint: - newConstArray[comp].setUConst(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst())); - break; case EbtInt64: newConstArray[comp].setI64Const(std::max(childConstUnions[0][arg0comp].getI64Const(), childConstUnions[1][arg1comp].getI64Const())); break; case EbtUint64: newConstArray[comp].setU64Const(std::max(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const())); break; +#endif default: assert(false && "Default missing"); } break; @@ -1145,6 +1154,11 @@ newConstArray[comp].setDConst(std::min(std::max(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst()), childConstUnions[2][arg2comp].getDConst())); break; + case EbtUint: + newConstArray[comp].setUConst(std::min(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst()), + childConstUnions[2][arg2comp].getUConst())); + break; +#ifndef GLSLANG_WEB case EbtInt8: newConstArray[comp].setI8Const(std::min(std::max(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const()), childConstUnions[2][arg2comp].getI8Const())); @@ -1165,10 +1179,6 @@ newConstArray[comp].setIConst(std::min(std::max(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst()), childConstUnions[2][arg2comp].getIConst())); break; - case EbtUint: - newConstArray[comp].setUConst(std::min(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst()), - childConstUnions[2][arg2comp].getUConst())); - break; case EbtInt64: newConstArray[comp].setI64Const(std::min(std::max(childConstUnions[0][arg0comp].getI64Const(), childConstUnions[1][arg1comp].getI64Const()), childConstUnions[2][arg2comp].getI64Const())); @@ -1177,6 +1187,7 @@ newConstArray[comp].setU64Const(std::min(std::max(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const()), childConstUnions[2][arg2comp].getU64Const())); break; +#endif default: assert(false && "Default missing"); } break; diff -Nru glslang-7.12.3352/glslang/MachineIndependent/glslang.m4 glslang-8.13.3559/glslang/MachineIndependent/glslang.m4 --- glslang-7.12.3352/glslang/MachineIndependent/glslang.m4 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/glslang.m4 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,3793 @@ +// +// Copyright (C) 2002-2005 3Dlabs Inc. Ltd. +// Copyright (C) 2012-2013 LunarG, Inc. +// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2015-2018 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 3Dlabs Inc. Ltd. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// + +// +// Do not edit the .y file, only edit 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: +// +// GLSLANG_WEB_EXCLUDE_ON +// ... +// ... +// ... +// GLSLANG_WEB_EXCLUDE_OFF +// +// Will be excluded from the grammar when m4 is executed as: +// +// m4 -P -DGLSLANG_WEB +// +// It will be included when m4 is executed as: +// +// m4 -P +// + +m4_define(`GLSLANG_WEB_EXCLUDE_ON', `m4_ifdef(`GLSLANG_WEB', `m4_divert(`-1')')') +m4_define(`GLSLANG_WEB_EXCLUDE_OFF', `m4_ifdef(`GLSLANG_WEB', `m4_divert')') + +/** + * This is bison grammar and productions for parsing all versions of the + * GLSL shading languages. + */ +%{ + +/* Based on: +ANSI C Yacc grammar + +In 1985, Jeff Lee published his Yacc grammar (which is accompanied by a +matching Lex specification) for the April 30, 1985 draft version of the +ANSI C standard. Tom Stockfisch reposted it to net.sources in 1987; that +original, as mentioned in the answer to question 17.25 of the comp.lang.c +FAQ, can be ftp'ed from ftp.uu.net, file usenet/net.sources/ansi.c.grammar.Z. + +I intend to keep this version as close to the current C Standard grammar as +possible; please let me know if you discover discrepancies. + +Jutta Degener, 1995 +*/ + +#include "SymbolTable.h" +#include "ParseHelper.h" +#include "../Public/ShaderLang.h" +#include "attribute.h" + +using namespace glslang; + +%} + +%define parse.error verbose + +%union { + struct { + glslang::TSourceLoc loc; + union { + glslang::TString *string; + int i; + unsigned int u; + long long i64; + unsigned long long u64; + bool b; + double d; + }; + glslang::TSymbol* symbol; + } lex; + struct { + glslang::TSourceLoc loc; + glslang::TOperator op; + union { + TIntermNode* intermNode; + glslang::TIntermNodePair nodePair; + glslang::TIntermTyped* intermTypedNode; + glslang::TAttributes* attributes; + }; + union { + glslang::TPublicType type; + glslang::TFunction* function; + glslang::TParameter param; + glslang::TTypeLoc typeLine; + glslang::TTypeList* typeList; + glslang::TArraySizes* arraySizes; + glslang::TIdentifierList* identifierList; + }; + glslang::TArraySizes* typeParameters; + } interm; +} + +%{ + +/* windows only pragma */ +#ifdef _MSC_VER + #pragma warning(disable : 4065) + #pragma warning(disable : 4127) + #pragma warning(disable : 4244) +#endif + +#define parseContext (*pParseContext) +#define yyerror(context, msg) context->parserError(msg) + +extern int yylex(YYSTYPE*, TParseContext&); + +%} + +%parse-param {glslang::TParseContext* pParseContext} +%lex-param {parseContext} +%pure-parser // enable thread safety +%expect 1 // One shift reduce conflict because of if | else + +%token CONST BOOL INT UINT FLOAT +%token BVEC2 BVEC3 BVEC4 +%token IVEC2 IVEC3 IVEC4 +%token UVEC2 UVEC3 UVEC4 +%token VEC2 VEC3 VEC4 +%token MAT2 MAT3 MAT4 +%token MAT2X2 MAT2X3 MAT2X4 +%token MAT3X2 MAT3X3 MAT3X4 +%token MAT4X2 MAT4X3 MAT4X4 + +// combined image/sampler +%token SAMPLER2D SAMPLER3D SAMPLERCUBE SAMPLER2DSHADOW +%token SAMPLERCUBESHADOW SAMPLER2DARRAY +%token SAMPLER2DARRAYSHADOW ISAMPLER2D ISAMPLER3D ISAMPLERCUBE +%token ISAMPLER2DARRAY USAMPLER2D USAMPLER3D +%token USAMPLERCUBE USAMPLER2DARRAY + +// 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 + +%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 + +GLSLANG_WEB_EXCLUDE_OFF + +%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 +%token MOD_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN XOR_ASSIGN OR_ASSIGN +%token SUB_ASSIGN + +%token LEFT_PAREN RIGHT_PAREN LEFT_BRACKET RIGHT_BRACKET LEFT_BRACE RIGHT_BRACE DOT +%token COMMA COLON EQUAL SEMICOLON BANG DASH TILDE PLUS STAR SLASH PERCENT +%token LEFT_ANGLE RIGHT_ANGLE VERTICAL_BAR CARET AMPERSAND QUESTION + +%token INVARIANT +%token HIGH_PRECISION MEDIUM_PRECISION LOW_PRECISION PRECISION +%token PACKED RESOURCE SUPERP + +%token FLOATCONSTANT INTCONSTANT UINTCONSTANT BOOLCONSTANT +%token IDENTIFIER TYPE_NAME +%token CENTROID IN OUT INOUT +%token STRUCT VOID WHILE +%token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT +%token UNIFORM SHARED BUFFER +%token FLAT SMOOTH LAYOUT + +GLSLANG_WEB_EXCLUDE_ON +%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 +GLSLANG_WEB_EXCLUDE_OFF + +%type assignment_operator unary_operator +%type variable_identifier primary_expression postfix_expression +%type expression integer_expression assignment_expression +%type unary_expression multiplicative_expression additive_expression +%type relational_expression equality_expression +%type conditional_expression constant_expression +%type logical_or_expression logical_xor_expression logical_and_expression +%type shift_expression and_expression exclusive_or_expression inclusive_or_expression +%type function_call initializer condition conditionopt + +%type translation_unit function_definition +%type statement simple_statement +%type statement_list switch_statement_list compound_statement +%type declaration_statement selection_statement selection_statement_nonattributed expression_statement +%type switch_statement switch_statement_nonattributed case_label +%type declaration external_declaration +%type for_init_statement compound_statement_no_new_scope +%type selection_rest_statement for_rest_statement +%type iteration_statement iteration_statement_nonattributed jump_statement statement_no_new_scope statement_scoped +%type single_declaration init_declarator_list + +%type parameter_declaration parameter_declarator parameter_type_specifier + +%type array_specifier +%type invariant_qualifier interpolation_qualifier storage_qualifier precision_qualifier +%type layout_qualifier layout_qualifier_id_list layout_qualifier_id + +%type type_parameter_specifier +%type type_parameter_specifier_opt +%type type_parameter_specifier_list + +%type type_qualifier fully_specified_type type_specifier +%type single_type_qualifier +%type type_specifier_nonarray +%type struct_specifier +%type struct_declarator +%type struct_declarator_list struct_declaration struct_declaration_list +%type block_structure +%type function_header function_declarator +%type function_header_with_parameters +%type function_call_header_with_parameters function_call_header_no_parameters function_call_generic function_prototype +%type function_call_or_method function_identifier function_call_header + +%type identifier_list + +GLSLANG_WEB_EXCLUDE_ON +%type precise_qualifier non_uniform_qualifier +%type type_name_list +%type attribute attribute_list single_attribute +%type demote_statement +%type initializer_list +GLSLANG_WEB_EXCLUDE_OFF + +%start translation_unit +%% + +variable_identifier + : IDENTIFIER { + $$ = parseContext.handleVariable($1.loc, $1.symbol, $1.string); + } + ; + +primary_expression + : variable_identifier { + $$ = $1; + } + | LEFT_PAREN expression RIGHT_PAREN { + $$ = $2; + if ($$->getAsConstantUnion()) + $$->getAsConstantUnion()->setExpression(); + } + | FLOATCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); + } + | INTCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); + } + | UINTCONSTANT { + parseContext.fullIntegerCheck($1.loc, "unsigned literal"); + $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); + } + | BOOLCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); + } +GLSLANG_WEB_EXCLUDE_ON + | 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); + } +GLSLANG_WEB_EXCLUDE_OFF + ; + +postfix_expression + : primary_expression { + $$ = $1; + } + | postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET { + $$ = parseContext.handleBracketDereference($2.loc, $1, $3); + } + | function_call { + $$ = $1; + } + | postfix_expression DOT IDENTIFIER { + $$ = parseContext.handleDotDereference($3.loc, $1, *$3.string); + } + | postfix_expression INC_OP { + parseContext.variableCheck($1); + parseContext.lValueErrorCheck($2.loc, "++", $1); + $$ = parseContext.handleUnaryMath($2.loc, "++", EOpPostIncrement, $1); + } + | postfix_expression DEC_OP { + parseContext.variableCheck($1); + parseContext.lValueErrorCheck($2.loc, "--", $1); + $$ = parseContext.handleUnaryMath($2.loc, "--", EOpPostDecrement, $1); + } + ; + +integer_expression + : expression { + parseContext.integerCheck($1, "[]"); + $$ = $1; + } + ; + +function_call + : function_call_or_method { + $$ = parseContext.handleFunctionCall($1.loc, $1.function, $1.intermNode); + delete $1.function; + } + ; + +function_call_or_method + : function_call_generic { + $$ = $1; + } + ; + +function_call_generic + : function_call_header_with_parameters RIGHT_PAREN { + $$ = $1; + $$.loc = $2.loc; + } + | function_call_header_no_parameters RIGHT_PAREN { + $$ = $1; + $$.loc = $2.loc; + } + ; + +function_call_header_no_parameters + : function_call_header VOID { + $$ = $1; + } + | function_call_header { + $$ = $1; + } + ; + +function_call_header_with_parameters + : function_call_header assignment_expression { + TParameter param = { 0, new TType }; + param.type->shallowCopy($2->getType()); + $1.function->addParameter(param); + $$.function = $1.function; + $$.intermNode = $2; + } + | function_call_header_with_parameters COMMA assignment_expression { + TParameter param = { 0, new TType }; + param.type->shallowCopy($3->getType()); + $1.function->addParameter(param); + $$.function = $1.function; + $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, $3, $2.loc); + } + ; + +function_call_header + : function_identifier LEFT_PAREN { + $$ = $1; + } + ; + +// Grammar Note: Constructors look like functions, but are recognized as types. + +function_identifier + : type_specifier { + // Constructor + $$.intermNode = 0; + $$.function = parseContext.handleConstructorCall($1.loc, $1); + } + | postfix_expression { + // + // Should be a method or subroutine call, but we haven't recognized the arguments yet. + // + $$.function = 0; + $$.intermNode = 0; + + TIntermMethod* method = $1->getAsMethodNode(); + if (method) { + $$.function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength); + $$.intermNode = method->getObject(); + } else { + TIntermSymbol* symbol = $1->getAsSymbolNode(); + if (symbol) { + parseContext.reservedErrorCheck(symbol->getLoc(), symbol->getName()); + TFunction *function = new TFunction(&symbol->getName(), TType(EbtVoid)); + $$.function = function; + } else + parseContext.error($1->getLoc(), "function call, method, or subroutine call expected", "", ""); + } + + if ($$.function == 0) { + // error recover + TString* empty = NewPoolTString(""); + $$.function = new TFunction(empty, TType(EbtVoid), EOpNull); + } + } +GLSLANG_WEB_EXCLUDE_ON + | non_uniform_qualifier { + // Constructor + $$.intermNode = 0; + $$.function = parseContext.handleConstructorCall($1.loc, $1); + } +GLSLANG_WEB_EXCLUDE_OFF + ; + +unary_expression + : postfix_expression { + parseContext.variableCheck($1); + $$ = $1; + if (TIntermMethod* method = $1->getAsMethodNode()) + parseContext.error($1->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); + } + | INC_OP unary_expression { + parseContext.lValueErrorCheck($1.loc, "++", $2); + $$ = parseContext.handleUnaryMath($1.loc, "++", EOpPreIncrement, $2); + } + | DEC_OP unary_expression { + parseContext.lValueErrorCheck($1.loc, "--", $2); + $$ = parseContext.handleUnaryMath($1.loc, "--", EOpPreDecrement, $2); + } + | unary_operator unary_expression { + if ($1.op != EOpNull) { + char errorOp[2] = {0, 0}; + switch($1.op) { + case EOpNegative: errorOp[0] = '-'; break; + case EOpLogicalNot: errorOp[0] = '!'; break; + case EOpBitwiseNot: errorOp[0] = '~'; break; + default: break; // some compilers want this + } + $$ = parseContext.handleUnaryMath($1.loc, errorOp, $1.op, $2); + } else { + $$ = $2; + if ($$->getAsConstantUnion()) + $$->getAsConstantUnion()->setExpression(); + } + } + ; +// Grammar Note: No traditional style type casts. + +unary_operator + : PLUS { $$.loc = $1.loc; $$.op = EOpNull; } + | DASH { $$.loc = $1.loc; $$.op = EOpNegative; } + | BANG { $$.loc = $1.loc; $$.op = EOpLogicalNot; } + | TILDE { $$.loc = $1.loc; $$.op = EOpBitwiseNot; + parseContext.fullIntegerCheck($1.loc, "bitwise not"); } + ; +// Grammar Note: No '*' or '&' unary ops. Pointers are not supported. + +multiplicative_expression + : unary_expression { $$ = $1; } + | multiplicative_expression STAR unary_expression { + $$ = parseContext.handleBinaryMath($2.loc, "*", EOpMul, $1, $3); + if ($$ == 0) + $$ = $1; + } + | multiplicative_expression SLASH unary_expression { + $$ = parseContext.handleBinaryMath($2.loc, "/", EOpDiv, $1, $3); + if ($$ == 0) + $$ = $1; + } + | multiplicative_expression PERCENT unary_expression { + parseContext.fullIntegerCheck($2.loc, "%"); + $$ = parseContext.handleBinaryMath($2.loc, "%", EOpMod, $1, $3); + if ($$ == 0) + $$ = $1; + } + ; + +additive_expression + : multiplicative_expression { $$ = $1; } + | additive_expression PLUS multiplicative_expression { + $$ = parseContext.handleBinaryMath($2.loc, "+", EOpAdd, $1, $3); + if ($$ == 0) + $$ = $1; + } + | additive_expression DASH multiplicative_expression { + $$ = parseContext.handleBinaryMath($2.loc, "-", EOpSub, $1, $3); + if ($$ == 0) + $$ = $1; + } + ; + +shift_expression + : additive_expression { $$ = $1; } + | shift_expression LEFT_OP additive_expression { + parseContext.fullIntegerCheck($2.loc, "bit shift left"); + $$ = parseContext.handleBinaryMath($2.loc, "<<", EOpLeftShift, $1, $3); + if ($$ == 0) + $$ = $1; + } + | shift_expression RIGHT_OP additive_expression { + parseContext.fullIntegerCheck($2.loc, "bit shift right"); + $$ = parseContext.handleBinaryMath($2.loc, ">>", EOpRightShift, $1, $3); + if ($$ == 0) + $$ = $1; + } + ; + +relational_expression + : shift_expression { $$ = $1; } + | relational_expression LEFT_ANGLE shift_expression { + $$ = parseContext.handleBinaryMath($2.loc, "<", EOpLessThan, $1, $3); + if ($$ == 0) + $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); + } + | relational_expression RIGHT_ANGLE shift_expression { + $$ = parseContext.handleBinaryMath($2.loc, ">", EOpGreaterThan, $1, $3); + if ($$ == 0) + $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); + } + | relational_expression LE_OP shift_expression { + $$ = parseContext.handleBinaryMath($2.loc, "<=", EOpLessThanEqual, $1, $3); + if ($$ == 0) + $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); + } + | relational_expression GE_OP shift_expression { + $$ = parseContext.handleBinaryMath($2.loc, ">=", EOpGreaterThanEqual, $1, $3); + if ($$ == 0) + $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); + } + ; + +equality_expression + : relational_expression { $$ = $1; } + | equality_expression EQ_OP relational_expression { + parseContext.arrayObjectCheck($2.loc, $1->getType(), "array comparison"); + parseContext.opaqueCheck($2.loc, $1->getType(), "=="); + parseContext.specializationCheck($2.loc, $1->getType(), "=="); + parseContext.referenceCheck($2.loc, $1->getType(), "=="); + $$ = parseContext.handleBinaryMath($2.loc, "==", EOpEqual, $1, $3); + if ($$ == 0) + $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); + } + | equality_expression NE_OP relational_expression { + parseContext.arrayObjectCheck($2.loc, $1->getType(), "array comparison"); + parseContext.opaqueCheck($2.loc, $1->getType(), "!="); + parseContext.specializationCheck($2.loc, $1->getType(), "!="); + parseContext.referenceCheck($2.loc, $1->getType(), "!="); + $$ = parseContext.handleBinaryMath($2.loc, "!=", EOpNotEqual, $1, $3); + if ($$ == 0) + $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); + } + ; + +and_expression + : equality_expression { $$ = $1; } + | and_expression AMPERSAND equality_expression { + parseContext.fullIntegerCheck($2.loc, "bitwise and"); + $$ = parseContext.handleBinaryMath($2.loc, "&", EOpAnd, $1, $3); + if ($$ == 0) + $$ = $1; + } + ; + +exclusive_or_expression + : and_expression { $$ = $1; } + | exclusive_or_expression CARET and_expression { + parseContext.fullIntegerCheck($2.loc, "bitwise exclusive or"); + $$ = parseContext.handleBinaryMath($2.loc, "^", EOpExclusiveOr, $1, $3); + if ($$ == 0) + $$ = $1; + } + ; + +inclusive_or_expression + : exclusive_or_expression { $$ = $1; } + | inclusive_or_expression VERTICAL_BAR exclusive_or_expression { + parseContext.fullIntegerCheck($2.loc, "bitwise inclusive or"); + $$ = parseContext.handleBinaryMath($2.loc, "|", EOpInclusiveOr, $1, $3); + if ($$ == 0) + $$ = $1; + } + ; + +logical_and_expression + : inclusive_or_expression { $$ = $1; } + | logical_and_expression AND_OP inclusive_or_expression { + $$ = parseContext.handleBinaryMath($2.loc, "&&", EOpLogicalAnd, $1, $3); + if ($$ == 0) + $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); + } + ; + +logical_xor_expression + : logical_and_expression { $$ = $1; } + | logical_xor_expression XOR_OP logical_and_expression { + $$ = parseContext.handleBinaryMath($2.loc, "^^", EOpLogicalXor, $1, $3); + if ($$ == 0) + $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); + } + ; + +logical_or_expression + : logical_xor_expression { $$ = $1; } + | logical_or_expression OR_OP logical_xor_expression { + $$ = parseContext.handleBinaryMath($2.loc, "||", EOpLogicalOr, $1, $3); + if ($$ == 0) + $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); + } + ; + +conditional_expression + : logical_or_expression { $$ = $1; } + | logical_or_expression QUESTION { + ++parseContext.controlFlowNestingLevel; + } + expression COLON assignment_expression { + --parseContext.controlFlowNestingLevel; + parseContext.boolCheck($2.loc, $1); + parseContext.rValueErrorCheck($2.loc, "?", $1); + parseContext.rValueErrorCheck($5.loc, ":", $4); + parseContext.rValueErrorCheck($5.loc, ":", $6); + $$ = parseContext.intermediate.addSelection($1, $4, $6, $2.loc); + if ($$ == 0) { + parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(), $6->getCompleteString()); + $$ = $6; + } + } + ; + +assignment_expression + : conditional_expression { $$ = $1; } + | unary_expression assignment_operator assignment_expression { + parseContext.arrayObjectCheck($2.loc, $1->getType(), "array assignment"); + parseContext.opaqueCheck($2.loc, $1->getType(), "="); + parseContext.storage16BitAssignmentCheck($2.loc, $1->getType(), "="); + parseContext.specializationCheck($2.loc, $1->getType(), "="); + parseContext.lValueErrorCheck($2.loc, "assign", $1); + parseContext.rValueErrorCheck($2.loc, "assign", $3); + $$ = parseContext.intermediate.addAssign($2.op, $1, $3, $2.loc); + if ($$ == 0) { + parseContext.assignError($2.loc, "assign", $1->getCompleteString(), $3->getCompleteString()); + $$ = $1; + } + } + ; + +assignment_operator + : EQUAL { + $$.loc = $1.loc; + $$.op = EOpAssign; + } + | MUL_ASSIGN { + $$.loc = $1.loc; + $$.op = EOpMulAssign; + } + | DIV_ASSIGN { + $$.loc = $1.loc; + $$.op = EOpDivAssign; + } + | MOD_ASSIGN { + parseContext.fullIntegerCheck($1.loc, "%="); + $$.loc = $1.loc; + $$.op = EOpModAssign; + } + | ADD_ASSIGN { + $$.loc = $1.loc; + $$.op = EOpAddAssign; + } + | SUB_ASSIGN { + $$.loc = $1.loc; + $$.op = EOpSubAssign; + } + | LEFT_ASSIGN { + parseContext.fullIntegerCheck($1.loc, "bit-shift left assign"); + $$.loc = $1.loc; $$.op = EOpLeftShiftAssign; + } + | RIGHT_ASSIGN { + parseContext.fullIntegerCheck($1.loc, "bit-shift right assign"); + $$.loc = $1.loc; $$.op = EOpRightShiftAssign; + } + | AND_ASSIGN { + parseContext.fullIntegerCheck($1.loc, "bitwise-and assign"); + $$.loc = $1.loc; $$.op = EOpAndAssign; + } + | XOR_ASSIGN { + parseContext.fullIntegerCheck($1.loc, "bitwise-xor assign"); + $$.loc = $1.loc; $$.op = EOpExclusiveOrAssign; + } + | OR_ASSIGN { + parseContext.fullIntegerCheck($1.loc, "bitwise-or assign"); + $$.loc = $1.loc; $$.op = EOpInclusiveOrAssign; + } + ; + +expression + : assignment_expression { + $$ = $1; + } + | expression COMMA assignment_expression { + parseContext.samplerConstructorLocationCheck($2.loc, ",", $3); + $$ = parseContext.intermediate.addComma($1, $3, $2.loc); + if ($$ == 0) { + parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(), $3->getCompleteString()); + $$ = $3; + } + } + ; + +constant_expression + : conditional_expression { + parseContext.constantValueCheck($1, ""); + $$ = $1; + } + ; + +declaration + : function_prototype SEMICOLON { + parseContext.handleFunctionDeclarator($1.loc, *$1.function, true /* prototype */); + $$ = 0; + // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature + } + | init_declarator_list SEMICOLON { + if ($1.intermNode && $1.intermNode->getAsAggregate()) + $1.intermNode->getAsAggregate()->setOperator(EOpSequence); + $$ = $1.intermNode; + } + | PRECISION precision_qualifier type_specifier SEMICOLON { + parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "precision statement"); + // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope + parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); + parseContext.setDefaultPrecision($1.loc, $3, $2.qualifier.precision); + $$ = 0; + } + | block_structure SEMICOLON { + parseContext.declareBlock($1.loc, *$1.typeList); + $$ = 0; + } + | block_structure IDENTIFIER SEMICOLON { + parseContext.declareBlock($1.loc, *$1.typeList, $2.string); + $$ = 0; + } + | block_structure IDENTIFIER array_specifier SEMICOLON { + parseContext.declareBlock($1.loc, *$1.typeList, $2.string, $3.arraySizes); + $$ = 0; + } + | type_qualifier SEMICOLON { + parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); + parseContext.updateStandaloneQualifierDefaults($1.loc, $1); + $$ = 0; + } + | type_qualifier IDENTIFIER SEMICOLON { + parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); + parseContext.addQualifierToExisting($1.loc, $1.qualifier, *$2.string); + $$ = 0; + } + | type_qualifier IDENTIFIER identifier_list SEMICOLON { + parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); + $3->push_back($2.string); + parseContext.addQualifierToExisting($1.loc, $1.qualifier, *$3); + $$ = 0; + } + ; + +block_structure + : type_qualifier IDENTIFIER LEFT_BRACE { parseContext.nestedBlockCheck($1.loc); } struct_declaration_list RIGHT_BRACE { + --parseContext.structNestingLevel; + parseContext.blockName = $2.string; + parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); + parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); + parseContext.currentBlockQualifier = $1.qualifier; + $$.loc = $1.loc; + $$.typeList = $5; + } + +identifier_list + : COMMA IDENTIFIER { + $$ = new TIdentifierList; + $$->push_back($2.string); + } + | identifier_list COMMA IDENTIFIER { + $$ = $1; + $$->push_back($3.string); + } + ; + +function_prototype + : function_declarator RIGHT_PAREN { + $$.function = $1; + $$.loc = $2.loc; + } + ; + +function_declarator + : function_header { + $$ = $1; + } + | function_header_with_parameters { + $$ = $1; + } + ; + + +function_header_with_parameters + : function_header parameter_declaration { + // Add the parameter + $$ = $1; + if ($2.param.type->getBasicType() != EbtVoid) + $1->addParameter($2.param); + else + delete $2.param.type; + } + | function_header_with_parameters COMMA parameter_declaration { + // + // Only first parameter of one-parameter functions can be void + // The check for named parameters not being void is done in parameter_declarator + // + if ($3.param.type->getBasicType() == EbtVoid) { + // + // This parameter > first is void + // + parseContext.error($2.loc, "cannot be an argument type except for '(void)'", "void", ""); + delete $3.param.type; + } else { + // Add the parameter + $$ = $1; + $1->addParameter($3.param); + } + } + ; + +function_header + : fully_specified_type IDENTIFIER LEFT_PAREN { + if ($1.qualifier.storage != EvqGlobal && $1.qualifier.storage != EvqTemporary) { + parseContext.error($2.loc, "no qualifiers allowed for function return", + GetStorageQualifierString($1.qualifier.storage), ""); + } + if ($1.arraySizes) + parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); + + // Add the function as a prototype after parsing it (we do not support recursion) + TFunction *function; + TType type($1); + + // Potentially rename shader entry point function. No-op most of the time. + parseContext.renameShaderFunction($2.string); + + // Make the function + function = new TFunction($2.string, type); + $$ = function; + } + ; + +parameter_declarator + // Type + name + : type_specifier IDENTIFIER { + if ($1.arraySizes) { + parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); + } + if ($1.basicType == EbtVoid) { + parseContext.error($2.loc, "illegal use of type 'void'", $2.string->c_str(), ""); + } + parseContext.reservedErrorCheck($2.loc, *$2.string); + + TParameter param = {$2.string, new TType($1)}; + $$.loc = $2.loc; + $$.param = param; + } + | type_specifier IDENTIFIER array_specifier { + if ($1.arraySizes) { + parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); + } + TType* type = new TType($1); + type->transferArraySizes($3.arraySizes); + type->copyArrayInnerSizes($1.arraySizes); + + parseContext.arrayOfArrayVersionCheck($2.loc, type->getArraySizes()); + parseContext.arraySizeRequiredCheck($3.loc, *$3.arraySizes); + parseContext.reservedErrorCheck($2.loc, *$2.string); + + TParameter param = { $2.string, type }; + + $$.loc = $2.loc; + $$.param = param; + } + ; + +parameter_declaration + // + // With name + // + : type_qualifier parameter_declarator { + $$ = $2; + if ($1.qualifier.precision != EpqNone) + $$.param.type->getQualifier().precision = $1.qualifier.precision; + parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier()); + + parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); + parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type); + parseContext.paramCheckFix($1.loc, $1.qualifier, *$$.param.type); + + } + | parameter_declarator { + $$ = $1; + + parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type); + parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type); + parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier()); + } + // + // Without name + // + | type_qualifier parameter_type_specifier { + $$ = $2; + if ($1.qualifier.precision != EpqNone) + $$.param.type->getQualifier().precision = $1.qualifier.precision; + parseContext.precisionQualifierCheck($1.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier()); + + parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); + parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type); + parseContext.paramCheckFix($1.loc, $1.qualifier, *$$.param.type); + } + | parameter_type_specifier { + $$ = $1; + + parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type); + parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type); + parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier()); + } + ; + +parameter_type_specifier + : type_specifier { + TParameter param = { 0, new TType($1) }; + $$.param = param; + if ($1.arraySizes) + parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); + } + ; + +init_declarator_list + : single_declaration { + $$ = $1; + } + | init_declarator_list COMMA IDENTIFIER { + $$ = $1; + parseContext.declareVariable($3.loc, *$3.string, $1.type); + } + | init_declarator_list COMMA IDENTIFIER array_specifier { + $$ = $1; + parseContext.declareVariable($3.loc, *$3.string, $1.type, $4.arraySizes); + } + | init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer { + $$.type = $1.type; + TIntermNode* initNode = parseContext.declareVariable($3.loc, *$3.string, $1.type, $4.arraySizes, $6); + $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, initNode, $5.loc); + } + | init_declarator_list COMMA IDENTIFIER EQUAL initializer { + $$.type = $1.type; + TIntermNode* initNode = parseContext.declareVariable($3.loc, *$3.string, $1.type, 0, $5); + $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, initNode, $4.loc); + } + ; + +single_declaration + : fully_specified_type { + $$.type = $1; + $$.intermNode = 0; +GLSLANG_WEB_EXCLUDE_ON + parseContext.declareTypeDefaults($$.loc, $$.type); +GLSLANG_WEB_EXCLUDE_OFF + } + | fully_specified_type IDENTIFIER { + $$.type = $1; + $$.intermNode = 0; + parseContext.declareVariable($2.loc, *$2.string, $1); + } + | fully_specified_type IDENTIFIER array_specifier { + $$.type = $1; + $$.intermNode = 0; + parseContext.declareVariable($2.loc, *$2.string, $1, $3.arraySizes); + } + | fully_specified_type IDENTIFIER array_specifier EQUAL initializer { + $$.type = $1; + TIntermNode* initNode = parseContext.declareVariable($2.loc, *$2.string, $1, $3.arraySizes, $5); + $$.intermNode = parseContext.intermediate.growAggregate(0, initNode, $4.loc); + } + | fully_specified_type IDENTIFIER EQUAL initializer { + $$.type = $1; + TIntermNode* initNode = parseContext.declareVariable($2.loc, *$2.string, $1, 0, $4); + $$.intermNode = parseContext.intermediate.growAggregate(0, initNode, $3.loc); + } + +// Grammar Note: No 'enum', or 'typedef'. + +fully_specified_type + : type_specifier { + $$ = $1; + + parseContext.globalQualifierTypeCheck($1.loc, $1.qualifier, $$); + if ($1.arraySizes) { + parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); + } + parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier); + } + | type_qualifier type_specifier { + parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); + parseContext.globalQualifierTypeCheck($1.loc, $1.qualifier, $2); + + if ($2.arraySizes) { + parseContext.profileRequires($2.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires($2.loc, EEsProfile, 300, 0, "arrayed type"); + } + + if ($2.arraySizes && parseContext.arrayQualifierError($2.loc, $1.qualifier)) + $2.arraySizes = nullptr; + + parseContext.checkNoShaderLayouts($2.loc, $1.shaderQualifiers); + $2.shaderQualifiers.merge($1.shaderQualifiers); + parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); + parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier); + + $$ = $2; + + if (! $$.qualifier.isInterpolation() && + ((parseContext.language == EShLangVertex && $$.qualifier.storage == EvqVaryingOut) || + (parseContext.language == EShLangFragment && $$.qualifier.storage == EvqVaryingIn))) + $$.qualifier.smooth = true; + } + ; + +invariant_qualifier + : INVARIANT { + parseContext.globalCheck($1.loc, "invariant"); + parseContext.profileRequires($$.loc, ENoProfile, 120, 0, "invariant"); + $$.init($1.loc); + $$.qualifier.invariant = true; + } + ; + +interpolation_qualifier + : SMOOTH { + parseContext.globalCheck($1.loc, "smooth"); + parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "smooth"); + parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "smooth"); + $$.init($1.loc); + $$.qualifier.smooth = true; + } + | FLAT { + parseContext.globalCheck($1.loc, "flat"); + parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "flat"); + parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "flat"); + $$.init($1.loc); + $$.qualifier.flat = true; + } +GLSLANG_WEB_EXCLUDE_ON + | 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; + } +GLSLANG_WEB_EXCLUDE_OFF + ; + +layout_qualifier + : LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN { + $$ = $3; + } + ; + +layout_qualifier_id_list + : layout_qualifier_id { + $$ = $1; + } + | layout_qualifier_id_list COMMA layout_qualifier_id { + $$ = $1; + $$.shaderQualifiers.merge($3.shaderQualifiers); + parseContext.mergeObjectLayoutQualifiers($$.qualifier, $3.qualifier, false); + } + +layout_qualifier_id + : IDENTIFIER { + $$.init($1.loc); + parseContext.setLayoutQualifier($1.loc, $$, *$1.string); + } + | IDENTIFIER EQUAL constant_expression { + $$.init($1.loc); + parseContext.setLayoutQualifier($1.loc, $$, *$1.string, $3); + } + | SHARED { // because "shared" is both an identifier and a keyword + $$.init($1.loc); + TString strShared("shared"); + parseContext.setLayoutQualifier($1.loc, $$, strShared); + } + ; + +GLSLANG_WEB_EXCLUDE_ON +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; + } + ; +GLSLANG_WEB_EXCLUDE_OFF + +type_qualifier + : single_type_qualifier { + $$ = $1; + } + | type_qualifier single_type_qualifier { + $$ = $1; + if ($$.basicType == EbtVoid) + $$.basicType = $2.basicType; + + $$.shaderQualifiers.merge($2.shaderQualifiers); + parseContext.mergeQualifiers($$.loc, $$.qualifier, $2.qualifier, false); + } + ; + +single_type_qualifier + : storage_qualifier { + $$ = $1; + } + | layout_qualifier { + $$ = $1; + } + | precision_qualifier { + parseContext.checkPrecisionQualifier($1.loc, $1.qualifier.precision); + $$ = $1; + } + | interpolation_qualifier { + // allow inheritance of storage qualifier from block declaration + $$ = $1; + } + | invariant_qualifier { + // allow inheritance of storage qualifier from block declaration + $$ = $1; + } +GLSLANG_WEB_EXCLUDE_ON + | precise_qualifier { + // allow inheritance of storage qualifier from block declaration + $$ = $1; + } + | non_uniform_qualifier { + $$ = $1; + } +GLSLANG_WEB_EXCLUDE_OFF + ; + +storage_qualifier + : CONST { + $$.init($1.loc); + $$.qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant + } + | INOUT { + parseContext.globalCheck($1.loc, "inout"); + $$.init($1.loc); + $$.qualifier.storage = EvqInOut; + } + | IN { + parseContext.globalCheck($1.loc, "in"); + $$.init($1.loc); + // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later + $$.qualifier.storage = EvqIn; + } + | OUT { + parseContext.globalCheck($1.loc, "out"); + $$.init($1.loc); + // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later + $$.qualifier.storage = EvqOut; + } + | CENTROID { + parseContext.profileRequires($1.loc, ENoProfile, 120, 0, "centroid"); + parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "centroid"); + parseContext.globalCheck($1.loc, "centroid"); + $$.init($1.loc); + $$.qualifier.centroid = true; + } + | UNIFORM { + parseContext.globalCheck($1.loc, "uniform"); + $$.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; + } + | 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"); + 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); + } +GLSLANG_WEB_EXCLUDE_OFF + ; + +GLSLANG_WEB_EXCLUDE_ON +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 + } + ; +GLSLANG_WEB_EXCLUDE_OFF + +type_specifier + : type_specifier_nonarray type_parameter_specifier_opt { + $$ = $1; + $$.qualifier.precision = parseContext.getDefaultPrecision($$); + $$.typeParameters = $2; + } + | type_specifier_nonarray type_parameter_specifier_opt array_specifier { + parseContext.arrayOfArrayVersionCheck($3.loc, $3.arraySizes); + $$ = $1; + $$.qualifier.precision = parseContext.getDefaultPrecision($$); + $$.typeParameters = $2; + $$.arraySizes = $3.arraySizes; + } + ; + +array_specifier + : LEFT_BRACKET RIGHT_BRACKET { + $$.loc = $1.loc; + $$.arraySizes = new TArraySizes; + $$.arraySizes->addInnerSize(); + } + | LEFT_BRACKET conditional_expression RIGHT_BRACKET { + $$.loc = $1.loc; + $$.arraySizes = new TArraySizes; + + TArraySize size; + parseContext.arraySizeCheck($2->getLoc(), $2, size, "array size"); + $$.arraySizes->addInnerSize(size); + } + | array_specifier LEFT_BRACKET RIGHT_BRACKET { + $$ = $1; + $$.arraySizes->addInnerSize(); + } + | array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET { + $$ = $1; + + TArraySize size; + parseContext.arraySizeCheck($3->getLoc(), $3, size, "array size"); + $$.arraySizes->addInnerSize(size); + } + ; + +type_parameter_specifier_opt + : type_parameter_specifier { + $$ = $1; + } + | /* May be null */ { + $$ = 0; + } + ; + +type_parameter_specifier + : LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE { + $$ = $2; + } + ; + +type_parameter_specifier_list + : unary_expression { + $$ = new TArraySizes; + + TArraySize size; + parseContext.arraySizeCheck($1->getLoc(), $1, size, "type parameter"); + $$->addInnerSize(size); + } + | type_parameter_specifier_list COMMA unary_expression { + $$ = $1; + + TArraySize size; + parseContext.arraySizeCheck($3->getLoc(), $3, size, "type parameter"); + $$->addInnerSize(size); + } + ; + +type_specifier_nonarray + : VOID { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtVoid; + } + | FLOAT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + } + | INT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt; + } + | UINT { + parseContext.fullIntegerCheck($1.loc, "unsigned integer"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint; + } + | BOOL { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtBool; + } + | VEC2 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setVector(2); + } + | VEC3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setVector(3); + } + | VEC4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setVector(4); + } + | BVEC2 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtBool; + $$.setVector(2); + } + | BVEC3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtBool; + $$.setVector(3); + } + | BVEC4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtBool; + $$.setVector(4); + } + | IVEC2 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt; + $$.setVector(2); + } + | IVEC3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt; + $$.setVector(3); + } + | IVEC4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt; + $$.setVector(4); + } + | UVEC2 { + parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint; + $$.setVector(2); + } + | UVEC3 { + parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint; + $$.setVector(3); + } + | UVEC4 { + parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint; + $$.setVector(4); + } + | MAT2 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(2, 2); + } + | MAT3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(3, 3); + } + | MAT4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(4, 4); + } + | MAT2X2 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(2, 2); + } + | MAT2X3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(2, 3); + } + | MAT2X4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(2, 4); + } + | MAT3X2 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(3, 2); + } + | MAT3X3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(3, 3); + } + | MAT3X4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(3, 4); + } + | MAT4X2 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(4, 2); + } + | MAT4X3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(4, 3); + } + | MAT4X4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(4, 4); + } +GLSLANG_WEB_EXCLUDE_ON + | 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); + } +GLSLANG_WEB_EXCLUDE_OFF + | SAMPLER2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd2D); + } + | SAMPLER3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd3D); + } + | SAMPLERCUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, EsdCube); + } + | SAMPLER2DSHADOW { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd2D, false, true); + } + | SAMPLERCUBESHADOW { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.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()); + $$.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); + } +GLSLANG_WEB_EXCLUDE_OFF + | ISAMPLER2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, Esd2D); + } + | ISAMPLER3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, Esd3D); + } + | ISAMPLERCUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, EsdCube); + } + | ISAMPLER2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, Esd2D, true); + } + | USAMPLER2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, Esd2D); + } + | USAMPLER3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, Esd3D); + } + | USAMPLERCUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.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); + } + | TEXTURE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.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 { + $$.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; + } +GLSLANG_WEB_EXCLUDE_OFF + | struct_specifier { + $$ = $1; + $$.qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + parseContext.structTypeCheck($$.loc, $$); + } + | TYPE_NAME { + // + // This is for user defined type names. The lexical phase looked up the + // type. + // + if (const TVariable* variable = ($1.symbol)->getAsVariable()) { + const TType& structure = variable->getType(); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtStruct; + $$.userDef = &structure; + } else + parseContext.error($1.loc, "expected type name", $1.string->c_str(), ""); + } + ; + +precision_qualifier + : HIGH_PRECISION { + parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "highp precision qualifier"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.handlePrecisionQualifier($1.loc, $$.qualifier, EpqHigh); + } + | MEDIUM_PRECISION { + parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "mediump precision qualifier"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.handlePrecisionQualifier($1.loc, $$.qualifier, EpqMedium); + } + | LOW_PRECISION { + parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "lowp precision qualifier"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.handlePrecisionQualifier($1.loc, $$.qualifier, EpqLow); + } + ; + +struct_specifier + : STRUCT IDENTIFIER LEFT_BRACE { parseContext.nestedStructCheck($1.loc); } struct_declaration_list RIGHT_BRACE { + TType* structure = new TType($5, *$2.string); + parseContext.structArrayCheck($2.loc, *structure); + TVariable* userTypeDef = new TVariable($2.string, *structure, true); + if (! parseContext.symbolTable.insert(*userTypeDef)) + parseContext.error($2.loc, "redefinition", $2.string->c_str(), "struct"); + $$.init($1.loc); + $$.basicType = EbtStruct; + $$.userDef = structure; + --parseContext.structNestingLevel; + } + | STRUCT LEFT_BRACE { parseContext.nestedStructCheck($1.loc); } struct_declaration_list RIGHT_BRACE { + TType* structure = new TType($4, TString("")); + $$.init($1.loc); + $$.basicType = EbtStruct; + $$.userDef = structure; + --parseContext.structNestingLevel; + } + ; + +struct_declaration_list + : struct_declaration { + $$ = $1; + } + | struct_declaration_list struct_declaration { + $$ = $1; + for (unsigned int i = 0; i < $2->size(); ++i) { + for (unsigned int j = 0; j < $$->size(); ++j) { + if ((*$$)[j].type->getFieldName() == (*$2)[i].type->getFieldName()) + parseContext.error((*$2)[i].loc, "duplicate member name:", "", (*$2)[i].type->getFieldName().c_str()); + } + $$->push_back((*$2)[i]); + } + } + ; + +struct_declaration + : type_specifier struct_declarator_list SEMICOLON { + if ($1.arraySizes) { + parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); + if (parseContext.isEsProfile()) + parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); + } + + $$ = $2; + + parseContext.voidErrorCheck($1.loc, (*$2)[0].type->getFieldName(), $1.basicType); + parseContext.precisionQualifierCheck($1.loc, $1.basicType, $1.qualifier); + + for (unsigned int i = 0; i < $$->size(); ++i) { + TType type($1); + type.setFieldName((*$$)[i].type->getFieldName()); + type.transferArraySizes((*$$)[i].type->getArraySizes()); + type.copyArrayInnerSizes($1.arraySizes); + parseContext.arrayOfArrayVersionCheck((*$$)[i].loc, type.getArraySizes()); + (*$$)[i].type->shallowCopy(type); + } + } + | type_qualifier type_specifier struct_declarator_list SEMICOLON { + if ($2.arraySizes) { + parseContext.profileRequires($2.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires($2.loc, EEsProfile, 300, 0, "arrayed type"); + if (parseContext.isEsProfile()) + parseContext.arraySizeRequiredCheck($2.loc, *$2.arraySizes); + } + + $$ = $3; + + parseContext.memberQualifierCheck($1); + parseContext.voidErrorCheck($2.loc, (*$3)[0].type->getFieldName(), $2.basicType); + parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); + parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier); + + for (unsigned int i = 0; i < $$->size(); ++i) { + TType type($2); + type.setFieldName((*$$)[i].type->getFieldName()); + type.transferArraySizes((*$$)[i].type->getArraySizes()); + type.copyArrayInnerSizes($2.arraySizes); + parseContext.arrayOfArrayVersionCheck((*$$)[i].loc, type.getArraySizes()); + (*$$)[i].type->shallowCopy(type); + } + } + ; + +struct_declarator_list + : struct_declarator { + $$ = new TTypeList; + $$->push_back($1); + } + | struct_declarator_list COMMA struct_declarator { + $$->push_back($3); + } + ; + +struct_declarator + : IDENTIFIER { + $$.type = new TType(EbtVoid); + $$.loc = $1.loc; + $$.type->setFieldName(*$1.string); + } + | IDENTIFIER array_specifier { + parseContext.arrayOfArrayVersionCheck($1.loc, $2.arraySizes); + + $$.type = new TType(EbtVoid); + $$.loc = $1.loc; + $$.type->setFieldName(*$1.string); + $$.type->transferArraySizes($2.arraySizes); + } + ; + +initializer + : assignment_expression { + $$ = $1; + } +GLSLANG_WEB_EXCLUDE_ON + | 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; + } +GLSLANG_WEB_EXCLUDE_OFF + ; + +GLSLANG_WEB_EXCLUDE_ON +initializer_list + : initializer { + $$ = parseContext.intermediate.growAggregate(0, $1, $1->getLoc()); + } + | initializer_list COMMA initializer { + $$ = parseContext.intermediate.growAggregate($1, $3); + } + ; +GLSLANG_WEB_EXCLUDE_OFF + +declaration_statement + : declaration { $$ = $1; } + ; + +statement + : compound_statement { $$ = $1; } + | simple_statement { $$ = $1; } + ; + +// Grammar Note: labeled statements for switch statements only; 'goto' is not supported. + +simple_statement + : declaration_statement { $$ = $1; } + | expression_statement { $$ = $1; } + | selection_statement { $$ = $1; } + | switch_statement { $$ = $1; } + | case_label { $$ = $1; } + | iteration_statement { $$ = $1; } + | jump_statement { $$ = $1; } +GLSLANG_WEB_EXCLUDE_ON + | demote_statement { $$ = $1; } +GLSLANG_WEB_EXCLUDE_OFF + ; + +GLSLANG_WEB_EXCLUDE_ON +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); + } + ; +GLSLANG_WEB_EXCLUDE_OFF + +compound_statement + : LEFT_BRACE RIGHT_BRACE { $$ = 0; } + | LEFT_BRACE { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + } + statement_list { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + } + RIGHT_BRACE { + if ($3 && $3->getAsAggregate()) + $3->getAsAggregate()->setOperator(EOpSequence); + $$ = $3; + } + ; + +statement_no_new_scope + : compound_statement_no_new_scope { $$ = $1; } + | simple_statement { $$ = $1; } + ; + +statement_scoped + : { + ++parseContext.controlFlowNestingLevel; + } + compound_statement { + --parseContext.controlFlowNestingLevel; + $$ = $2; + } + | { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; + } + simple_statement { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + $$ = $2; + } + +compound_statement_no_new_scope + // Statement that doesn't create a new scope, for selection_statement, iteration_statement + : LEFT_BRACE RIGHT_BRACE { + $$ = 0; + } + | LEFT_BRACE statement_list RIGHT_BRACE { + if ($2 && $2->getAsAggregate()) + $2->getAsAggregate()->setOperator(EOpSequence); + $$ = $2; + } + ; + +statement_list + : statement { + $$ = parseContext.intermediate.makeAggregate($1); + if ($1 && $1->getAsBranchNode() && ($1->getAsBranchNode()->getFlowOp() == EOpCase || + $1->getAsBranchNode()->getFlowOp() == EOpDefault)) { + parseContext.wrapupSwitchSubsequence(0, $1); + $$ = 0; // start a fresh subsequence for what's after this case + } + } + | statement_list statement { + if ($2 && $2->getAsBranchNode() && ($2->getAsBranchNode()->getFlowOp() == EOpCase || + $2->getAsBranchNode()->getFlowOp() == EOpDefault)) { + parseContext.wrapupSwitchSubsequence($1 ? $1->getAsAggregate() : 0, $2); + $$ = 0; // start a fresh subsequence for what's after this case + } else + $$ = parseContext.intermediate.growAggregate($1, $2); + } + ; + +expression_statement + : SEMICOLON { $$ = 0; } + | expression SEMICOLON { $$ = static_cast($1); } + ; + +selection_statement + : selection_statement_nonattributed { + $$ = $1; + } +GLSLANG_WEB_EXCLUDE_ON + | attribute selection_statement_nonattributed { + parseContext.handleSelectionAttributes(*$1, $2); + $$ = $2; + } +GLSLANG_WEB_EXCLUDE_OFF + +selection_statement_nonattributed + : IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement { + parseContext.boolCheck($1.loc, $3); + $$ = parseContext.intermediate.addSelection($3, $5, $1.loc); + } + ; + +selection_rest_statement + : statement_scoped ELSE statement_scoped { + $$.node1 = $1; + $$.node2 = $3; + } + | statement_scoped { + $$.node1 = $1; + $$.node2 = 0; + } + ; + +condition + // In 1996 c++ draft, conditions can include single declarations + : expression { + $$ = $1; + parseContext.boolCheck($1->getLoc(), $1); + } + | fully_specified_type IDENTIFIER EQUAL initializer { + parseContext.boolCheck($2.loc, $1); + + TType type($1); + TIntermNode* initNode = parseContext.declareVariable($2.loc, *$2.string, $1, 0, $4); + if (initNode) + $$ = initNode->getAsTyped(); + else + $$ = 0; + } + ; + +switch_statement + : switch_statement_nonattributed { + $$ = $1; + } +GLSLANG_WEB_EXCLUDE_ON + | attribute switch_statement_nonattributed { + parseContext.handleSwitchAttributes(*$1, $2); + $$ = $2; + } +GLSLANG_WEB_EXCLUDE_OFF + +switch_statement_nonattributed + : SWITCH LEFT_PAREN expression RIGHT_PAREN { + // start new switch sequence on the switch stack + ++parseContext.controlFlowNestingLevel; + ++parseContext.statementNestingLevel; + parseContext.switchSequenceStack.push_back(new TIntermSequence); + parseContext.switchLevel.push_back(parseContext.statementNestingLevel); + parseContext.symbolTable.push(); + } + LEFT_BRACE switch_statement_list RIGHT_BRACE { + $$ = parseContext.addSwitch($1.loc, $3, $7 ? $7->getAsAggregate() : 0); + delete parseContext.switchSequenceStack.back(); + parseContext.switchSequenceStack.pop_back(); + parseContext.switchLevel.pop_back(); + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + } + ; + +switch_statement_list + : /* nothing */ { + $$ = 0; + } + | statement_list { + $$ = $1; + } + ; + +case_label + : CASE expression COLON { + $$ = 0; + if (parseContext.switchLevel.size() == 0) + parseContext.error($1.loc, "cannot appear outside switch statement", "case", ""); + else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) + parseContext.error($1.loc, "cannot be nested inside control flow", "case", ""); + else { + parseContext.constantValueCheck($2, "case"); + parseContext.integerCheck($2, "case"); + $$ = parseContext.intermediate.addBranch(EOpCase, $2, $1.loc); + } + } + | DEFAULT COLON { + $$ = 0; + if (parseContext.switchLevel.size() == 0) + parseContext.error($1.loc, "cannot appear outside switch statement", "default", ""); + else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) + parseContext.error($1.loc, "cannot be nested inside control flow", "default", ""); + else + $$ = parseContext.intermediate.addBranch(EOpDefault, $1.loc); + } + ; + +iteration_statement + : iteration_statement_nonattributed { + $$ = $1; + } +GLSLANG_WEB_EXCLUDE_ON + | attribute iteration_statement_nonattributed { + parseContext.handleLoopAttributes(*$1, $2); + $$ = $2; + } +GLSLANG_WEB_EXCLUDE_OFF + +iteration_statement_nonattributed + : WHILE LEFT_PAREN { + if (! parseContext.limits.whileLoops) + parseContext.error($1.loc, "while loops not available", "limitation", ""); + parseContext.symbolTable.push(); + ++parseContext.loopNestingLevel; + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; + } + condition RIGHT_PAREN statement_no_new_scope { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + $$ = parseContext.intermediate.addLoop($6, $4, 0, true, $1.loc); + --parseContext.loopNestingLevel; + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + } + | DO { + ++parseContext.loopNestingLevel; + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; + } + statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON { + if (! parseContext.limits.whileLoops) + parseContext.error($1.loc, "do-while loops not available", "limitation", ""); + + parseContext.boolCheck($8.loc, $6); + + $$ = parseContext.intermediate.addLoop($3, $6, 0, false, $4.loc); + --parseContext.loopNestingLevel; + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + } + | FOR LEFT_PAREN { + parseContext.symbolTable.push(); + ++parseContext.loopNestingLevel; + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; + } + for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + $$ = parseContext.intermediate.makeAggregate($4, $2.loc); + TIntermLoop* forLoop = parseContext.intermediate.addLoop($7, reinterpret_cast($5.node1), reinterpret_cast($5.node2), true, $1.loc); + if (! parseContext.limits.nonInductiveForLoops) + parseContext.inductiveLoopCheck($1.loc, $4, forLoop); + $$ = parseContext.intermediate.growAggregate($$, forLoop, $1.loc); + $$->getAsAggregate()->setOperator(EOpSequence); + --parseContext.loopNestingLevel; + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + } + ; + +for_init_statement + : expression_statement { + $$ = $1; + } + | declaration_statement { + $$ = $1; + } + ; + +conditionopt + : condition { + $$ = $1; + } + | /* May be null */ { + $$ = 0; + } + ; + +for_rest_statement + : conditionopt SEMICOLON { + $$.node1 = $1; + $$.node2 = 0; + } + | conditionopt SEMICOLON expression { + $$.node1 = $1; + $$.node2 = $3; + } + ; + +jump_statement + : CONTINUE SEMICOLON { + if (parseContext.loopNestingLevel <= 0) + parseContext.error($1.loc, "continue statement only allowed in loops", "", ""); + $$ = parseContext.intermediate.addBranch(EOpContinue, $1.loc); + } + | BREAK SEMICOLON { + if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) + parseContext.error($1.loc, "break statement only allowed in switch and loops", "", ""); + $$ = parseContext.intermediate.addBranch(EOpBreak, $1.loc); + } + | RETURN SEMICOLON { + $$ = parseContext.intermediate.addBranch(EOpReturn, $1.loc); + if (parseContext.currentFunctionType->getBasicType() != EbtVoid) + parseContext.error($1.loc, "non-void function must return a value", "return", ""); + if (parseContext.inMain) + parseContext.postEntryPointReturn = true; + } + | RETURN expression SEMICOLON { + $$ = parseContext.handleReturnValue($1.loc, $2); + } + | DISCARD SEMICOLON { + parseContext.requireStage($1.loc, EShLangFragment, "discard"); + $$ = parseContext.intermediate.addBranch(EOpKill, $1.loc); + } + ; + +// Grammar Note: No 'goto'. Gotos are not supported. + +translation_unit + : external_declaration { + $$ = $1; + parseContext.intermediate.setTreeRoot($$); + } + | translation_unit external_declaration { + if ($2 != nullptr) { + $$ = parseContext.intermediate.growAggregate($1, $2); + parseContext.intermediate.setTreeRoot($$); + } + } + ; + +external_declaration + : function_definition { + $$ = $1; + } + | declaration { + $$ = $1; + } +GLSLANG_WEB_EXCLUDE_ON + | SEMICOLON { + parseContext.requireProfile($1.loc, ~EEsProfile, "extraneous semicolon"); + parseContext.profileRequires($1.loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); + $$ = nullptr; + } +GLSLANG_WEB_EXCLUDE_OFF + ; + +function_definition + : function_prototype { + $1.function = parseContext.handleFunctionDeclarator($1.loc, *$1.function, false /* not prototype */); + $1.intermNode = parseContext.handleFunctionDefinition($1.loc, *$1.function); + } + compound_statement_no_new_scope { + // May be best done as post process phase on intermediate code + if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) + parseContext.error($1.loc, "function does not return a value:", "", $1.function->getName().c_str()); + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + $$ = parseContext.intermediate.growAggregate($1.intermNode, $3); + parseContext.intermediate.setAggregateOperator($$, EOpFunction, $1.function->getType(), $1.loc); + $$->getAsAggregate()->setName($1.function->getMangledName().c_str()); + + // store the pragma information for debug and optimize and other vendor specific + // information. This information can be queried from the parse tree + $$->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize); + $$->getAsAggregate()->setDebug(parseContext.contextPragma.debug); + $$->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); + } + ; + +GLSLANG_WEB_EXCLUDE_ON +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); + } +GLSLANG_WEB_EXCLUDE_OFF + +%% diff -Nru glslang-7.12.3352/glslang/MachineIndependent/glslang_tab.cpp glslang-8.13.3559/glslang/MachineIndependent/glslang_tab.cpp --- glslang-7.12.3352/glslang/MachineIndependent/glslang_tab.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/glslang_tab.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -62,7 +62,7 @@ /* Copy the first part of user declarations. */ -#line 43 "MachineIndependent/glslang.y" /* yacc.c:339 */ +#line 68 "MachineIndependent/glslang.y" /* yacc.c:339 */ /* Based on: @@ -123,102 +123,102 @@ # define YYTOKENTYPE enum yytokentype { - ATTRIBUTE = 258, - VARYING = 259, - FLOAT16_T = 260, - FLOAT = 261, - FLOAT32_T = 262, - DOUBLE = 263, - FLOAT64_T = 264, - CONST = 265, - BOOL = 266, - INT = 267, - UINT = 268, - INT64_T = 269, - UINT64_T = 270, - INT32_T = 271, - UINT32_T = 272, - INT16_T = 273, - UINT16_T = 274, - INT8_T = 275, - UINT8_T = 276, - BREAK = 277, - CONTINUE = 278, - DO = 279, - ELSE = 280, - FOR = 281, - IF = 282, - DISCARD = 283, - RETURN = 284, - SWITCH = 285, - CASE = 286, - DEFAULT = 287, - SUBROUTINE = 288, - DEMOTE = 289, - BVEC2 = 290, - BVEC3 = 291, - BVEC4 = 292, - IVEC2 = 293, - IVEC3 = 294, - IVEC4 = 295, - UVEC2 = 296, - UVEC3 = 297, - UVEC4 = 298, - I64VEC2 = 299, - I64VEC3 = 300, - I64VEC4 = 301, - U64VEC2 = 302, - U64VEC3 = 303, - U64VEC4 = 304, - I32VEC2 = 305, - I32VEC3 = 306, - I32VEC4 = 307, - U32VEC2 = 308, - U32VEC3 = 309, - U32VEC4 = 310, - I16VEC2 = 311, - I16VEC3 = 312, - I16VEC4 = 313, - U16VEC2 = 314, - U16VEC3 = 315, - U16VEC4 = 316, - I8VEC2 = 317, - I8VEC3 = 318, - I8VEC4 = 319, - U8VEC2 = 320, - U8VEC3 = 321, - U8VEC4 = 322, - VEC2 = 323, - VEC3 = 324, - VEC4 = 325, - MAT2 = 326, - MAT3 = 327, - MAT4 = 328, - CENTROID = 329, - IN = 330, - OUT = 331, - INOUT = 332, - UNIFORM = 333, - PATCH = 334, - SAMPLE = 335, - BUFFER = 336, - SHARED = 337, - NONUNIFORM = 338, - PAYLOADNV = 339, - PAYLOADINNV = 340, - HITATTRNV = 341, - CALLDATANV = 342, - CALLDATAINNV = 343, - COHERENT = 344, - VOLATILE = 345, - RESTRICT = 346, - READONLY = 347, - WRITEONLY = 348, - DEVICECOHERENT = 349, - QUEUEFAMILYCOHERENT = 350, - WORKGROUPCOHERENT = 351, - SUBGROUPCOHERENT = 352, - NONPRIVATE = 353, + CONST = 258, + BOOL = 259, + INT = 260, + UINT = 261, + FLOAT = 262, + BVEC2 = 263, + BVEC3 = 264, + BVEC4 = 265, + IVEC2 = 266, + IVEC3 = 267, + IVEC4 = 268, + UVEC2 = 269, + UVEC3 = 270, + UVEC4 = 271, + VEC2 = 272, + VEC3 = 273, + VEC4 = 274, + MAT2 = 275, + MAT3 = 276, + MAT4 = 277, + MAT2X2 = 278, + MAT2X3 = 279, + MAT2X4 = 280, + MAT3X2 = 281, + MAT3X3 = 282, + MAT3X4 = 283, + MAT4X2 = 284, + MAT4X3 = 285, + MAT4X4 = 286, + SAMPLER2D = 287, + SAMPLER3D = 288, + SAMPLERCUBE = 289, + SAMPLER2DSHADOW = 290, + SAMPLERCUBESHADOW = 291, + SAMPLER2DARRAY = 292, + SAMPLER2DARRAYSHADOW = 293, + ISAMPLER2D = 294, + ISAMPLER3D = 295, + ISAMPLERCUBE = 296, + ISAMPLER2DARRAY = 297, + USAMPLER2D = 298, + USAMPLER3D = 299, + USAMPLERCUBE = 300, + USAMPLER2DARRAY = 301, + SAMPLER = 302, + SAMPLERSHADOW = 303, + TEXTURE2D = 304, + TEXTURE3D = 305, + TEXTURECUBE = 306, + TEXTURE2DARRAY = 307, + ITEXTURE2D = 308, + ITEXTURE3D = 309, + ITEXTURECUBE = 310, + ITEXTURE2DARRAY = 311, + UTEXTURE2D = 312, + UTEXTURE3D = 313, + UTEXTURECUBE = 314, + UTEXTURE2DARRAY = 315, + ATTRIBUTE = 316, + VARYING = 317, + FLOAT16_T = 318, + FLOAT32_T = 319, + DOUBLE = 320, + FLOAT64_T = 321, + INT64_T = 322, + UINT64_T = 323, + INT32_T = 324, + UINT32_T = 325, + INT16_T = 326, + UINT16_T = 327, + INT8_T = 328, + UINT8_T = 329, + I64VEC2 = 330, + I64VEC3 = 331, + I64VEC4 = 332, + U64VEC2 = 333, + U64VEC3 = 334, + U64VEC4 = 335, + I32VEC2 = 336, + I32VEC3 = 337, + I32VEC4 = 338, + U32VEC2 = 339, + U32VEC3 = 340, + U32VEC4 = 341, + I16VEC2 = 342, + I16VEC3 = 343, + I16VEC4 = 344, + U16VEC2 = 345, + U16VEC3 = 346, + U16VEC4 = 347, + I8VEC2 = 348, + I8VEC3 = 349, + I8VEC4 = 350, + U8VEC2 = 351, + U8VEC3 = 352, + U8VEC4 = 353, DVEC2 = 354, DVEC3 = 355, DVEC4 = 356, @@ -243,292 +243,294 @@ F64MAT2 = 375, F64MAT3 = 376, F64MAT4 = 377, - NOPERSPECTIVE = 378, - FLAT = 379, - SMOOTH = 380, - LAYOUT = 381, - EXPLICITINTERPAMD = 382, - PERVERTEXNV = 383, - PERPRIMITIVENV = 384, - PERVIEWNV = 385, - PERTASKNV = 386, - MAT2X2 = 387, - MAT2X3 = 388, - MAT2X4 = 389, - MAT3X2 = 390, - MAT3X3 = 391, - MAT3X4 = 392, - MAT4X2 = 393, - MAT4X3 = 394, - MAT4X4 = 395, - DMAT2X2 = 396, - DMAT2X3 = 397, - DMAT2X4 = 398, - DMAT3X2 = 399, - DMAT3X3 = 400, - DMAT3X4 = 401, - DMAT4X2 = 402, - DMAT4X3 = 403, - DMAT4X4 = 404, - F16MAT2X2 = 405, - F16MAT2X3 = 406, - F16MAT2X4 = 407, - F16MAT3X2 = 408, - F16MAT3X3 = 409, - F16MAT3X4 = 410, - F16MAT4X2 = 411, - F16MAT4X3 = 412, - F16MAT4X4 = 413, - F32MAT2X2 = 414, - F32MAT2X3 = 415, - F32MAT2X4 = 416, - F32MAT3X2 = 417, - F32MAT3X3 = 418, - F32MAT3X4 = 419, - F32MAT4X2 = 420, - F32MAT4X3 = 421, - F32MAT4X4 = 422, - F64MAT2X2 = 423, - F64MAT2X3 = 424, - F64MAT2X4 = 425, - F64MAT3X2 = 426, - F64MAT3X3 = 427, - F64MAT3X4 = 428, - F64MAT4X2 = 429, - F64MAT4X3 = 430, - F64MAT4X4 = 431, - ATOMIC_UINT = 432, - ACCSTRUCTNV = 433, - FCOOPMATNV = 434, - SAMPLER1D = 435, - SAMPLER2D = 436, - SAMPLER3D = 437, - SAMPLERCUBE = 438, - SAMPLER1DSHADOW = 439, - SAMPLER2DSHADOW = 440, - SAMPLERCUBESHADOW = 441, - SAMPLER1DARRAY = 442, - SAMPLER2DARRAY = 443, - SAMPLER1DARRAYSHADOW = 444, - SAMPLER2DARRAYSHADOW = 445, - ISAMPLER1D = 446, - ISAMPLER2D = 447, - ISAMPLER3D = 448, - ISAMPLERCUBE = 449, - ISAMPLER1DARRAY = 450, - ISAMPLER2DARRAY = 451, - USAMPLER1D = 452, - USAMPLER2D = 453, - USAMPLER3D = 454, - USAMPLERCUBE = 455, - USAMPLER1DARRAY = 456, - USAMPLER2DARRAY = 457, - SAMPLER2DRECT = 458, - SAMPLER2DRECTSHADOW = 459, - ISAMPLER2DRECT = 460, - USAMPLER2DRECT = 461, - SAMPLERBUFFER = 462, - ISAMPLERBUFFER = 463, - USAMPLERBUFFER = 464, - SAMPLERCUBEARRAY = 465, - SAMPLERCUBEARRAYSHADOW = 466, - ISAMPLERCUBEARRAY = 467, - USAMPLERCUBEARRAY = 468, - SAMPLER2DMS = 469, - ISAMPLER2DMS = 470, - USAMPLER2DMS = 471, - SAMPLER2DMSARRAY = 472, - ISAMPLER2DMSARRAY = 473, - USAMPLER2DMSARRAY = 474, - SAMPLEREXTERNALOES = 475, - SAMPLEREXTERNAL2DY2YEXT = 476, - F16SAMPLER1D = 477, - F16SAMPLER2D = 478, - F16SAMPLER3D = 479, - F16SAMPLER2DRECT = 480, - F16SAMPLERCUBE = 481, - F16SAMPLER1DARRAY = 482, - F16SAMPLER2DARRAY = 483, - F16SAMPLERCUBEARRAY = 484, - F16SAMPLERBUFFER = 485, - F16SAMPLER2DMS = 486, - F16SAMPLER2DMSARRAY = 487, - F16SAMPLER1DSHADOW = 488, - F16SAMPLER2DSHADOW = 489, - F16SAMPLER1DARRAYSHADOW = 490, - F16SAMPLER2DARRAYSHADOW = 491, - F16SAMPLER2DRECTSHADOW = 492, - F16SAMPLERCUBESHADOW = 493, - F16SAMPLERCUBEARRAYSHADOW = 494, - SAMPLER = 495, - SAMPLERSHADOW = 496, - TEXTURE1D = 497, - TEXTURE2D = 498, - TEXTURE3D = 499, - TEXTURECUBE = 500, - TEXTURE1DARRAY = 501, - TEXTURE2DARRAY = 502, - ITEXTURE1D = 503, - ITEXTURE2D = 504, - ITEXTURE3D = 505, - ITEXTURECUBE = 506, - ITEXTURE1DARRAY = 507, - ITEXTURE2DARRAY = 508, - UTEXTURE1D = 509, - UTEXTURE2D = 510, - UTEXTURE3D = 511, - UTEXTURECUBE = 512, - UTEXTURE1DARRAY = 513, - UTEXTURE2DARRAY = 514, - TEXTURE2DRECT = 515, - ITEXTURE2DRECT = 516, - UTEXTURE2DRECT = 517, - TEXTUREBUFFER = 518, - ITEXTUREBUFFER = 519, - UTEXTUREBUFFER = 520, - TEXTURECUBEARRAY = 521, - ITEXTURECUBEARRAY = 522, - UTEXTURECUBEARRAY = 523, - TEXTURE2DMS = 524, - ITEXTURE2DMS = 525, - UTEXTURE2DMS = 526, - TEXTURE2DMSARRAY = 527, - ITEXTURE2DMSARRAY = 528, - UTEXTURE2DMSARRAY = 529, - F16TEXTURE1D = 530, - F16TEXTURE2D = 531, - F16TEXTURE3D = 532, - F16TEXTURE2DRECT = 533, - F16TEXTURECUBE = 534, - F16TEXTURE1DARRAY = 535, - F16TEXTURE2DARRAY = 536, - F16TEXTURECUBEARRAY = 537, - F16TEXTUREBUFFER = 538, - F16TEXTURE2DMS = 539, - F16TEXTURE2DMSARRAY = 540, - SUBPASSINPUT = 541, - SUBPASSINPUTMS = 542, - ISUBPASSINPUT = 543, - ISUBPASSINPUTMS = 544, - USUBPASSINPUT = 545, - USUBPASSINPUTMS = 546, - F16SUBPASSINPUT = 547, - F16SUBPASSINPUTMS = 548, - IMAGE1D = 549, - IIMAGE1D = 550, - UIMAGE1D = 551, - IMAGE2D = 552, - IIMAGE2D = 553, - UIMAGE2D = 554, - IMAGE3D = 555, - IIMAGE3D = 556, - UIMAGE3D = 557, - IMAGE2DRECT = 558, - IIMAGE2DRECT = 559, - UIMAGE2DRECT = 560, - IMAGECUBE = 561, - IIMAGECUBE = 562, - UIMAGECUBE = 563, - IMAGEBUFFER = 564, - IIMAGEBUFFER = 565, - UIMAGEBUFFER = 566, - IMAGE1DARRAY = 567, - IIMAGE1DARRAY = 568, - UIMAGE1DARRAY = 569, - IMAGE2DARRAY = 570, - IIMAGE2DARRAY = 571, - UIMAGE2DARRAY = 572, - IMAGECUBEARRAY = 573, - IIMAGECUBEARRAY = 574, - UIMAGECUBEARRAY = 575, - IMAGE2DMS = 576, - IIMAGE2DMS = 577, - UIMAGE2DMS = 578, - IMAGE2DMSARRAY = 579, - IIMAGE2DMSARRAY = 580, - UIMAGE2DMSARRAY = 581, - F16IMAGE1D = 582, - F16IMAGE2D = 583, - F16IMAGE3D = 584, - F16IMAGE2DRECT = 585, - F16IMAGECUBE = 586, - F16IMAGE1DARRAY = 587, - F16IMAGE2DARRAY = 588, - F16IMAGECUBEARRAY = 589, - F16IMAGEBUFFER = 590, - F16IMAGE2DMS = 591, - F16IMAGE2DMSARRAY = 592, - STRUCT = 593, - VOID = 594, - WHILE = 595, - IDENTIFIER = 596, - TYPE_NAME = 597, - FLOATCONSTANT = 598, - DOUBLECONSTANT = 599, - INT16CONSTANT = 600, - UINT16CONSTANT = 601, - INT32CONSTANT = 602, - UINT32CONSTANT = 603, - INTCONSTANT = 604, - UINTCONSTANT = 605, - INT64CONSTANT = 606, - UINT64CONSTANT = 607, - BOOLCONSTANT = 608, - FLOAT16CONSTANT = 609, - LEFT_OP = 610, - RIGHT_OP = 611, - INC_OP = 612, - DEC_OP = 613, - LE_OP = 614, - GE_OP = 615, - EQ_OP = 616, - NE_OP = 617, - AND_OP = 618, - OR_OP = 619, - XOR_OP = 620, - MUL_ASSIGN = 621, - DIV_ASSIGN = 622, - ADD_ASSIGN = 623, - MOD_ASSIGN = 624, - LEFT_ASSIGN = 625, - RIGHT_ASSIGN = 626, - AND_ASSIGN = 627, - XOR_ASSIGN = 628, - OR_ASSIGN = 629, - SUB_ASSIGN = 630, - LEFT_PAREN = 631, - RIGHT_PAREN = 632, - LEFT_BRACKET = 633, - RIGHT_BRACKET = 634, - LEFT_BRACE = 635, - RIGHT_BRACE = 636, - DOT = 637, - COMMA = 638, - COLON = 639, - EQUAL = 640, - SEMICOLON = 641, - BANG = 642, - DASH = 643, - TILDE = 644, - PLUS = 645, - STAR = 646, - SLASH = 647, - PERCENT = 648, - LEFT_ANGLE = 649, - RIGHT_ANGLE = 650, - VERTICAL_BAR = 651, - CARET = 652, - AMPERSAND = 653, - QUESTION = 654, - INVARIANT = 655, - PRECISE = 656, - HIGH_PRECISION = 657, - MEDIUM_PRECISION = 658, - LOW_PRECISION = 659, - PRECISION = 660, - PACKED = 661, - RESOURCE = 662, - SUPERP = 663 + 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 @@ -537,7 +539,7 @@ union YYSTYPE { -#line 71 "MachineIndependent/glslang.y" /* yacc.c:355 */ +#line 96 "MachineIndependent/glslang.y" /* yacc.c:355 */ struct { glslang::TSourceLoc loc; @@ -573,7 +575,7 @@ glslang::TArraySizes* typeParameters; } interm; -#line 577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ +#line 579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -588,7 +590,7 @@ #endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ /* Copy the second part of user declarations. */ -#line 107 "MachineIndependent/glslang.y" /* yacc.c:358 */ +#line 132 "MachineIndependent/glslang.y" /* yacc.c:358 */ /* windows only pragma */ @@ -604,7 +606,7 @@ extern int yylex(YYSTYPE*, TParseContext&); -#line 608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ +#line 610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -844,23 +846,23 @@ #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 384 +#define YYFINAL 386 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 9372 +#define YYLAST 9369 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 409 +#define YYNTOKENS 411 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 111 /* YYNRULES -- Number of rules. */ -#define YYNRULES 580 +#define YYNRULES 582 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 725 +#define YYNSTATES 727 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 663 +#define YYMAXUTOK 665 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -935,72 +937,72 @@ 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 + 405, 406, 407, 408, 409, 410 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 302, 302, 308, 311, 315, 319, 322, 326, 330, - 334, 338, 342, 345, 349, 353, 356, 364, 367, 370, - 373, 376, 381, 389, 396, 403, 409, 413, 420, 423, - 429, 436, 446, 454, 459, 486, 494, 500, 504, 508, - 528, 529, 530, 531, 537, 538, 543, 548, 557, 558, - 563, 571, 572, 578, 587, 588, 593, 598, 603, 611, - 612, 621, 633, 634, 643, 644, 653, 654, 663, 664, - 672, 673, 681, 682, 690, 691, 691, 709, 710, 726, - 730, 734, 738, 743, 747, 751, 755, 759, 763, 767, - 774, 777, 788, 795, 800, 805, 813, 817, 821, 825, - 830, 835, 844, 844, 855, 859, 866, 873, 876, 883, - 891, 911, 934, 949, 974, 985, 995, 1005, 1015, 1024, - 1027, 1031, 1035, 1040, 1048, 1053, 1058, 1063, 1068, 1077, - 1088, 1115, 1124, 1131, 1138, 1149, 1158, 1168, 1180, 1189, - 1201, 1207, 1210, 1217, 1221, 1225, 1233, 1242, 1245, 1256, - 1259, 1262, 1266, 1270, 1274, 1278, 1284, 1288, 1300, 1314, - 1319, 1325, 1331, 1338, 1344, 1349, 1354, 1359, 1369, 1379, - 1389, 1399, 1408, 1420, 1424, 1429, 1434, 1439, 1444, 1449, - 1453, 1457, 1461, 1465, 1471, 1480, 1487, 1490, 1498, 1503, - 1513, 1518, 1526, 1530, 1540, 1543, 1549, 1555, 1562, 1572, - 1576, 1580, 1585, 1590, 1595, 1600, 1604, 1609, 1614, 1619, - 1624, 1629, 1634, 1639, 1644, 1649, 1653, 1658, 1663, 1668, - 1674, 1680, 1686, 1692, 1698, 1704, 1710, 1716, 1722, 1728, - 1734, 1740, 1745, 1750, 1755, 1760, 1765, 1770, 1776, 1782, - 1788, 1794, 1800, 1806, 1812, 1818, 1824, 1830, 1836, 1842, - 1848, 1854, 1860, 1866, 1872, 1878, 1884, 1890, 1896, 1902, - 1908, 1914, 1920, 1926, 1932, 1937, 1942, 1947, 1952, 1957, - 1962, 1967, 1972, 1977, 1982, 1987, 1992, 1998, 2004, 2010, - 2016, 2022, 2028, 2034, 2040, 2046, 2052, 2058, 2064, 2070, - 2076, 2082, 2088, 2094, 2100, 2106, 2112, 2118, 2124, 2130, - 2136, 2142, 2148, 2154, 2160, 2166, 2172, 2178, 2184, 2190, - 2196, 2202, 2208, 2214, 2220, 2226, 2232, 2238, 2244, 2250, - 2256, 2262, 2268, 2274, 2280, 2286, 2291, 2296, 2301, 2306, - 2311, 2316, 2321, 2326, 2331, 2336, 2341, 2346, 2351, 2356, - 2364, 2372, 2380, 2388, 2396, 2404, 2412, 2420, 2428, 2436, - 2444, 2452, 2460, 2465, 2470, 2475, 2480, 2485, 2490, 2495, - 2500, 2505, 2510, 2515, 2520, 2525, 2530, 2535, 2540, 2548, - 2556, 2561, 2566, 2571, 2579, 2584, 2589, 2594, 2602, 2607, - 2612, 2617, 2625, 2630, 2635, 2640, 2645, 2650, 2658, 2663, - 2671, 2676, 2684, 2689, 2697, 2702, 2710, 2715, 2723, 2728, - 2736, 2741, 2746, 2751, 2756, 2761, 2766, 2771, 2776, 2781, - 2786, 2791, 2796, 2801, 2806, 2811, 2819, 2824, 2829, 2834, - 2842, 2847, 2852, 2857, 2865, 2870, 2875, 2880, 2888, 2893, - 2898, 2903, 2911, 2916, 2921, 2926, 2934, 2939, 2944, 2949, - 2957, 2962, 2967, 2972, 2980, 2985, 2990, 2995, 3003, 3008, - 3013, 3018, 3026, 3031, 3036, 3041, 3049, 3054, 3059, 3064, - 3072, 3077, 3082, 3087, 3095, 3100, 3105, 3110, 3118, 3123, - 3128, 3133, 3141, 3146, 3151, 3157, 3163, 3169, 3175, 3184, - 3193, 3199, 3205, 3211, 3217, 3223, 3228, 3244, 3249, 3254, - 3262, 3262, 3273, 3273, 3283, 3286, 3299, 3321, 3348, 3352, - 3358, 3363, 3374, 3377, 3383, 3392, 3395, 3401, 3405, 3406, - 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3419, 3423, 3431, - 3432, 3436, 3432, 3448, 3449, 3453, 3453, 3460, 3460, 3474, - 3477, 3485, 3493, 3504, 3505, 3509, 3512, 3518, 3525, 3529, - 3537, 3541, 3554, 3557, 3563, 3563, 3583, 3586, 3592, 3604, - 3616, 3619, 3625, 3625, 3640, 3640, 3656, 3656, 3677, 3680, - 3686, 3689, 3695, 3699, 3706, 3711, 3716, 3723, 3726, 3735, - 3739, 3748, 3751, 3754, 3762, 3762, 3784, 3790, 3793, 3798, - 3801 + 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 @@ -1009,69 +1011,49 @@ First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "ATTRIBUTE", "VARYING", "FLOAT16_T", - "FLOAT", "FLOAT32_T", "DOUBLE", "FLOAT64_T", "CONST", "BOOL", "INT", - "UINT", "INT64_T", "UINT64_T", "INT32_T", "UINT32_T", "INT16_T", - "UINT16_T", "INT8_T", "UINT8_T", "BREAK", "CONTINUE", "DO", "ELSE", - "FOR", "IF", "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", - "SUBROUTINE", "DEMOTE", "BVEC2", "BVEC3", "BVEC4", "IVEC2", "IVEC3", - "IVEC4", "UVEC2", "UVEC3", "UVEC4", "I64VEC2", "I64VEC3", "I64VEC4", - "U64VEC2", "U64VEC3", "U64VEC4", "I32VEC2", "I32VEC3", "I32VEC4", - "U32VEC2", "U32VEC3", "U32VEC4", "I16VEC2", "I16VEC3", "I16VEC4", - "U16VEC2", "U16VEC3", "U16VEC4", "I8VEC2", "I8VEC3", "I8VEC4", "U8VEC2", - "U8VEC3", "U8VEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", "MAT4", - "CENTROID", "IN", "OUT", "INOUT", "UNIFORM", "PATCH", "SAMPLE", "BUFFER", - "SHARED", "NONUNIFORM", "PAYLOADNV", "PAYLOADINNV", "HITATTRNV", - "CALLDATANV", "CALLDATAINNV", "COHERENT", "VOLATILE", "RESTRICT", - "READONLY", "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", - "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", "DVEC2", "DVEC3", - "DVEC4", "DMAT2", "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", - "F16MAT2", "F16MAT3", "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4", - "F32MAT2", "F32MAT3", "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4", - "F64MAT2", "F64MAT3", "F64MAT4", "NOPERSPECTIVE", "FLAT", "SMOOTH", - "LAYOUT", "EXPLICITINTERPAMD", "PERVERTEXNV", "PERPRIMITIVENV", - "PERVIEWNV", "PERTASKNV", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2", - "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "DMAT2X2", "DMAT2X3", - "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3", - "DMAT4X4", "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2", - "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4", - "F32MAT2X2", "F32MAT2X3", "F32MAT2X4", "F32MAT3X2", "F32MAT3X3", - "F32MAT3X4", "F32MAT4X2", "F32MAT4X3", "F32MAT4X4", "F64MAT2X2", - "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4", - "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "ACCSTRUCTNV", - "FCOOPMATNV", "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", - "SAMPLER1DSHADOW", "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", - "SAMPLER1DARRAY", "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW", - "SAMPLER2DARRAYSHADOW", "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D", - "ISAMPLERCUBE", "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D", - "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY", - "USAMPLER2DARRAY", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", - "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", - "USAMPLERBUFFER", "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", - "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", "SAMPLER2DMS", "ISAMPLER2DMS", - "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", + "$end", "error", "$undefined", "CONST", "BOOL", "INT", "UINT", "FLOAT", + "BVEC2", "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", "UVEC2", "UVEC3", + "UVEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", "MAT4", "MAT2X2", + "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", + "MAT4X4", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER2DSHADOW", + "SAMPLERCUBESHADOW", "SAMPLER2DARRAY", "SAMPLER2DARRAYSHADOW", + "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", "ISAMPLER2DARRAY", + "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER2DARRAY", "SAMPLER", + "SAMPLERSHADOW", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", + "TEXTURE2DARRAY", "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", + "ITEXTURE2DARRAY", "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", + "UTEXTURE2DARRAY", "ATTRIBUTE", "VARYING", "FLOAT16_T", "FLOAT32_T", + "DOUBLE", "FLOAT64_T", "INT64_T", "UINT64_T", "INT32_T", "UINT32_T", + "INT16_T", "UINT16_T", "INT8_T", "UINT8_T", "I64VEC2", "I64VEC3", + "I64VEC4", "U64VEC2", "U64VEC3", "U64VEC4", "I32VEC2", "I32VEC3", + "I32VEC4", "U32VEC2", "U32VEC3", "U32VEC4", "I16VEC2", "I16VEC3", + "I16VEC4", "U16VEC2", "U16VEC3", "U16VEC4", "I8VEC2", "I8VEC3", "I8VEC4", + "U8VEC2", "U8VEC3", "U8VEC4", "DVEC2", "DVEC3", "DVEC4", "DMAT2", + "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3", + "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4", "F32MAT2", "F32MAT3", + "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4", "F64MAT2", "F64MAT3", + "F64MAT4", "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", + "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", "F16MAT2X2", "F16MAT2X3", + "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", + "F16MAT4X3", "F16MAT4X4", "F32MAT2X2", "F32MAT2X3", "F32MAT2X4", + "F32MAT3X2", "F32MAT3X3", "F32MAT3X4", "F32MAT4X2", "F32MAT4X3", + "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", + "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", + "ATOMIC_UINT", "ACCSTRUCTNV", "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", - "F16SAMPLER1D", "F16SAMPLER2D", "F16SAMPLER3D", "F16SAMPLER2DRECT", - "F16SAMPLERCUBE", "F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", - "F16SAMPLERCUBEARRAY", "F16SAMPLERBUFFER", "F16SAMPLER2DMS", - "F16SAMPLER2DMSARRAY", "F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", - "F16SAMPLER1DARRAYSHADOW", "F16SAMPLER2DARRAYSHADOW", - "F16SAMPLER2DRECTSHADOW", "F16SAMPLERCUBESHADOW", - "F16SAMPLERCUBEARRAYSHADOW", "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", "IMAGE1D", + "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", @@ -1082,11 +1064,18 @@ "F16IMAGE1D", "F16IMAGE2D", "F16IMAGE3D", "F16IMAGE2DRECT", "F16IMAGECUBE", "F16IMAGE1DARRAY", "F16IMAGE2DARRAY", "F16IMAGECUBEARRAY", "F16IMAGEBUFFER", "F16IMAGE2DMS", - "F16IMAGE2DMSARRAY", "STRUCT", "VOID", "WHILE", "IDENTIFIER", - "TYPE_NAME", "FLOATCONSTANT", "DOUBLECONSTANT", "INT16CONSTANT", - "UINT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT", "INTCONSTANT", - "UINTCONSTANT", "INT64CONSTANT", "UINT64CONSTANT", "BOOLCONSTANT", - "FLOAT16CONSTANT", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", + "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", @@ -1094,11 +1083,24 @@ "RIGHT_BRACE", "DOT", "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", "AMPERSAND", "QUESTION", - "INVARIANT", "PRECISE", "HIGH_PRECISION", "MEDIUM_PRECISION", - "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", "SUPERP", "$accept", - "variable_identifier", "primary_expression", "postfix_expression", - "integer_expression", "function_call", "function_call_or_method", - "function_call_generic", "function_call_header_no_parameters", + "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", "BUFFER", "FLAT", "SMOOTH", + "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", "multiplicative_expression", "additive_expression", "shift_expression", @@ -1182,16 +1184,17 @@ 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 + 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, + 665 }; # endif -#define YYPACT_NINF -657 +#define YYPACT_NINF -453 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-657))) + (!!((Yystate) == (-453))) -#define YYTABLE_NINF -526 +#define YYTABLE_NINF -528 #define yytable_value_is_error(Yytable_value) \ 0 @@ -1200,79 +1203,79 @@ STATE-NUM. */ static const yytype_int16 yypact[] = { - 3545, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -328, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -307, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -318, -657, -657, -657, -657, -657, - -657, -657, -657, -259, -657, -320, -286, -236, -251, 5958, - -299, -657, -191, -657, -657, -657, -657, 4350, -657, -657, - -657, -657, -228, -657, -657, 724, -657, -657, -176, -72, - -212, -657, 9030, -352, -657, -657, -211, -657, 5958, -657, - -657, -657, 5958, -171, -169, -657, -324, -285, -657, -657, - -657, 8258, -205, -657, -657, -657, -657, -281, -657, -210, - -280, -657, -657, 5958, -208, 6714, -657, -345, 1127, -657, - -657, -657, -657, -205, -325, -657, 7100, -322, -657, -167, - -657, -271, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -657, 8258, 8258, 8258, -657, -657, - -657, -657, -657, -657, -327, -657, -657, -657, -198, -278, - 8644, -196, -657, 8258, -657, -657, -355, -197, -657, -159, - 8258, -657, -72, 5958, 5958, -158, 4752, -657, -657, -657, - -657, -245, -305, -291, -323, -209, -214, -207, -204, -178, - -177, -340, -192, 7486, -657, -193, -190, -657, -187, -182, - -189, 7872, -181, 8258, -186, -185, -174, -179, -172, -657, - -657, -293, -657, -657, -253, -657, -286, -165, -164, -657, - -657, -657, -657, -657, 1530, -657, -657, -657, -657, -657, - -657, -657, -657, -657, -19, -197, 7100, -292, 7100, -657, - -657, 7100, 5958, -657, -141, -657, -657, -657, -273, -657, - -657, 8258, -137, -657, -657, 8258, -163, -657, -657, -657, - 8258, -657, -657, -657, -657, -657, 5154, -158, -205, -252, - -657, -657, -657, 8258, 8258, 8258, 8258, 8258, 8258, 8258, - 8258, 8258, 8258, 8258, 8258, 8258, 8258, 8258, 8258, 8258, - 8258, 8258, -657, -657, -657, -166, -657, -657, 1933, -657, - 8258, -657, -657, -246, 8258, -229, -657, -657, -657, -136, - -657, 1933, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -657, 8258, 8258, -657, -657, -657, -657, -657, - -657, -657, 7100, -657, -232, -657, 5556, -657, -657, -142, - -145, -657, -657, -657, -657, -244, -197, -158, -657, -657, - -657, -657, -245, -245, -305, -305, -291, -291, -291, -291, - -323, -323, -209, -214, -207, -204, -178, -177, 8258, -657, - -101, 3142, -269, -657, -261, -657, 3948, -135, -344, -657, - 1933, -657, -657, -657, -657, 6328, -657, -657, -657, -657, - -227, -134, -657, -657, 3948, -140, -657, -145, -97, 5958, - -132, 8258, -133, -136, -131, -657, -657, 8258, 8258, -657, - -139, -129, 224, -128, 2739, -657, -127, -130, 2336, -126, - -657, -657, -657, -657, -254, 8258, 2336, -140, -657, -657, - 1933, 7100, -657, -657, -657, -657, -124, -145, -657, -657, - 1933, -125, -657, -657, -657 + 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. @@ -1280,113 +1283,113 @@ means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 157, 158, 202, 200, 203, 201, 204, 156, 215, - 205, 206, 213, 214, 211, 212, 209, 210, 207, 208, - 183, 231, 232, 233, 234, 235, 236, 249, 250, 251, - 246, 247, 248, 261, 262, 263, 243, 244, 245, 258, - 259, 260, 240, 241, 242, 255, 256, 257, 237, 238, - 239, 252, 253, 254, 216, 217, 218, 264, 265, 266, - 162, 160, 161, 159, 165, 163, 164, 166, 172, 185, - 168, 169, 167, 170, 171, 173, 179, 180, 181, 182, - 174, 175, 176, 177, 178, 219, 220, 221, 276, 277, - 278, 222, 223, 224, 288, 289, 290, 225, 226, 227, - 300, 301, 302, 228, 229, 230, 312, 313, 314, 134, - 133, 132, 0, 135, 136, 137, 138, 139, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 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, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 352, 353, 354, - 355, 356, 357, 359, 360, 361, 362, 363, 364, 366, - 367, 370, 371, 372, 374, 375, 337, 338, 358, 365, - 376, 378, 379, 380, 382, 383, 474, 475, 339, 340, - 341, 368, 342, 346, 347, 350, 373, 377, 381, 343, - 344, 348, 349, 369, 345, 351, 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, - 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, 0, 199, 486, 573, 131, 146, - 487, 488, 489, 0, 572, 0, 574, 0, 108, 107, - 0, 119, 124, 153, 152, 150, 154, 0, 147, 149, - 155, 129, 195, 151, 485, 0, 569, 571, 0, 0, - 0, 492, 0, 0, 96, 93, 0, 106, 0, 115, - 109, 117, 0, 118, 0, 94, 125, 0, 99, 148, - 130, 0, 188, 194, 1, 570, 186, 0, 145, 143, - 0, 141, 490, 0, 0, 0, 97, 0, 0, 575, - 110, 114, 116, 112, 120, 111, 0, 126, 102, 0, - 100, 0, 2, 12, 13, 10, 11, 4, 5, 6, - 7, 8, 9, 15, 14, 0, 0, 0, 42, 41, - 43, 40, 3, 17, 36, 19, 24, 25, 0, 0, - 29, 0, 197, 0, 35, 33, 0, 189, 184, 0, - 0, 140, 0, 0, 0, 0, 0, 494, 95, 190, - 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, - 72, 74, 0, 0, 98, 0, 0, 554, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 520, 529, - 533, 44, 77, 90, 0, 507, 0, 155, 129, 510, - 531, 509, 517, 508, 0, 511, 512, 535, 513, 542, - 514, 515, 550, 516, 0, 113, 0, 121, 0, 502, - 128, 0, 0, 104, 0, 101, 37, 38, 0, 21, - 22, 0, 0, 27, 26, 0, 199, 30, 32, 39, - 0, 196, 187, 92, 144, 142, 0, 0, 500, 0, - 498, 493, 495, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 75, 191, 192, 0, 565, 564, 0, 556, - 0, 568, 566, 0, 0, 0, 549, 518, 552, 0, - 519, 0, 80, 81, 83, 82, 85, 86, 87, 88, - 89, 84, 79, 0, 0, 534, 530, 532, 536, 543, - 551, 123, 0, 505, 0, 127, 0, 105, 16, 0, - 23, 20, 31, 198, 491, 0, 501, 0, 496, 45, - 46, 47, 50, 49, 52, 53, 57, 58, 55, 56, - 60, 61, 63, 65, 67, 69, 71, 73, 0, 193, - 0, 0, 0, 567, 0, 548, 0, 579, 0, 577, - 521, 78, 91, 122, 503, 0, 103, 18, 497, 499, - 0, 0, 559, 558, 561, 527, 544, 540, 0, 0, - 0, 0, 0, 0, 0, 504, 506, 0, 0, 560, - 0, 0, 539, 0, 0, 537, 0, 0, 0, 0, - 576, 578, 522, 76, 0, 562, 0, 527, 526, 528, - 546, 0, 524, 553, 523, 580, 0, 563, 557, 538, - 547, 0, 541, 555, 545 + 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, 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[] = { - -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, - -657, -657, -337, -657, -398, -395, -435, -404, -312, -310, - -309, -311, -306, -308, -657, -383, -657, -397, -657, -413, - -421, 1, -657, -657, -657, 2, -657, -657, -657, -107, - -102, -105, -657, -657, -629, -657, -657, -657, -657, -180, - -657, -336, -343, -657, 6, -657, 0, -357, -657, -657, - -657, -657, -63, -657, -657, -657, -431, -439, -276, -354, - -503, -657, -377, -484, -656, -657, -417, -657, -657, -429, - -428, -657, -657, -88, -575, -370, -657, -231, -657, -392, - -657, -230, -657, -657, -657, -657, -226, -657, -657, -657, - -657, -657, -657, -657, -657, -70, -657, -657, -657, -657, - -396 + -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, 432, 433, 434, 619, 435, 436, 437, 438, 439, - 440, 441, 491, 443, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 471, 492, 648, 493, 603, 494, - 544, 495, 335, 522, 411, 496, 337, 338, 339, 369, - 370, 371, 340, 341, 342, 343, 344, 345, 390, 391, - 346, 347, 348, 349, 444, 387, 445, 397, 382, 383, - 446, 352, 353, 354, 453, 393, 456, 457, 549, 550, - 520, 614, 499, 500, 501, 502, 503, 591, 684, 713, - 692, 693, 694, 714, 504, 505, 506, 507, 695, 680, - 508, 509, 696, 721, 510, 511, 512, 656, 578, 651, - 674, 690, 691, 513, 355, 356, 357, 366, 514, 658, - 659 + -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 @@ -1394,82 +1397,163 @@ number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 351, 334, 336, 372, 379, 477, 350, 478, 479, 519, - 388, 482, 472, 611, 528, 613, 660, 552, 615, 407, - 607, 363, 546, 360, 571, 447, 395, 678, 540, 379, - 529, 530, 372, 473, 396, 682, 560, 561, 709, 683, - 541, 474, 712, 537, 442, 678, 515, 517, 358, -34, - 712, 531, 405, 395, 395, 532, 473, 454, 460, 572, - 516, 406, 361, 521, 558, 559, 364, 543, 583, 359, - 585, 562, 563, 592, 593, 594, 595, 596, 597, 598, - 599, 600, 601, 556, 374, 557, 473, 375, 526, 527, - 575, 616, 602, 612, 650, 408, 448, 451, 409, 534, - 365, 410, 449, 452, 618, 535, 539, 552, 675, 663, - 604, 379, 524, 460, 604, 525, 676, 454, 620, 519, - 454, 519, 604, 716, 519, 636, 637, 638, 639, 604, - 604, 627, 368, 605, 628, 720, 460, 604, 622, 627, - 653, 367, 668, 330, 331, 332, 553, 554, 555, 664, - 376, 665, 564, 565, 604, 655, 604, 687, 632, 633, - 640, 641, 686, 634, 635, 386, 381, 652, 392, 398, - 403, 654, 404, 395, 523, 450, 607, 552, 458, 533, - 538, 473, 542, 548, 566, 569, 454, 573, 570, 579, - 567, 626, 568, 576, 580, 584, 577, 581, 586, 589, - 617, 587, 588, 623, 621, 657, 661, 662, 722, 590, - 454, -35, -33, 649, -28, 519, 629, 630, 631, 460, - 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, - 460, 460, 460, 460, 460, 670, 607, 667, 604, 671, - -525, 681, 688, 677, 697, 698, 700, 705, 706, 707, - 702, 715, 488, 710, 642, 711, 724, 643, 645, 644, - 699, 677, 723, 647, 646, 401, 400, 402, 519, 389, - 362, 625, 545, 669, 672, 704, 708, 718, 399, 719, - 454, 673, 689, 608, 609, 385, 0, 701, 610, 0, - 703, 0, 717, 0, 0, 0, 0, 0, 543, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 519, 0, 0, 0, 0, 0, - 679, 486, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 379, 0, 679, 373, - 0, 0, 0, 0, 460, 350, 0, 380, 0, 0, - 0, 0, 0, 350, 0, 351, 334, 336, 0, 0, - 0, 350, 394, 0, 0, 0, 0, 0, 373, 0, - 0, 0, 373, 0, 350, 0, 0, 0, 350, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 455, 0, 0, 0, 0, 498, 350, - 0, 0, 0, 0, 497, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 455, 547, 0, 455, 0, 0, 350, - 350, 0, 350, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 498, 0, 0, 0, 0, 0, - 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 455, 0, 0, 0, 0, 0, 350, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 455, 0, 0, 0, - 0, 0, 350, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 498, 0, - 0, 0, 0, 0, 497, 0, 0, 0, 0, 0, - 0, 498, 0, 0, 0, 0, 0, 497, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 455, 0, 0, 0, - 0, 0, 350, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 498, 0, 0, 0, 0, 498, 497, 0, 0, - 498, 0, 497, 0, 0, 0, 497, 0, 0, 0, - 0, 0, 0, 0, 498, 0, 0, 0, 0, 380, - 497, 0, 0, 0, 0, 350, 0, 0, 0, 0, - 0, 0, 0, 0, 498, 0, 0, 0, 498, 0, - 497, 0, 0, 0, 497, 0, 498, 0, 0, 0, - 498, 0, 497, 0, 0, 0, 497, 0, 0, 0, - 498, 0, 0, 0, 384, 0, 497, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 21, + 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, 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, 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, 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, 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, @@ -1496,61 +1580,62 @@ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 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, 0, 0, 326, 0, 0, 0, + 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 328, 329, 330, 331, 332, 333, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 475, - 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, - 20, 485, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 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, 486, 412, 326, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 0, 0, 425, 426, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 427, 0, 487, 0, 488, 489, 0, - 0, 0, 0, 490, 428, 429, 430, 431, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 328, 329, 330, - 331, 332, 333, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 475, 476, 477, 0, 478, 479, 480, 481, - 482, 483, 484, 20, 485, 21, 22, 23, 24, 25, + 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, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 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, @@ -1577,61 +1662,62 @@ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 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, - 486, 412, 326, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 0, 0, 425, 426, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 427, 0, 487, 0, - 488, 606, 0, 0, 0, 0, 490, 428, 429, 430, - 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 328, 329, 330, 331, 332, 333, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 475, 476, 477, 0, 478, - 479, 480, 481, 482, 483, 484, 20, 485, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 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, 486, 412, 326, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 0, 0, - 425, 426, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 427, - 0, 487, 0, 488, 0, 0, 0, 0, 0, 490, - 428, 429, 430, 431, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 328, 329, 330, 331, 332, 333, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 475, 476, - 477, 0, 478, 479, 480, 481, 482, 483, 484, 20, - 485, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 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, @@ -1658,60 +1744,61 @@ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 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, 486, 412, 326, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 0, 0, 425, 426, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 427, 0, 487, 0, 398, 0, 0, 0, - 0, 0, 490, 428, 429, 430, 431, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, - 332, 333, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 475, 476, 477, 0, 478, 479, 480, 481, 482, - 483, 484, 20, 485, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 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, 486, - 412, 326, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 0, 0, 425, 426, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 427, 0, 487, 0, 0, - 0, 0, 0, 0, 0, 490, 428, 429, 430, 431, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, - 329, 330, 331, 332, 333, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 20, 0, 21, 22, 23, + 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, @@ -1738,101 +1825,21 @@ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 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, 0, 412, 326, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 0, 0, 425, - 426, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 427, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 490, 428, - 429, 430, 431, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 328, 329, 330, 331, 332, 333, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 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, 0, 0, 326, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 327, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 328, 329, 330, 331, 332, - 333, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 20, 0, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 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, 0, 412, - 326, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 0, 0, 425, 426, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 427, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 428, 429, 430, 431, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 328, 329, - 330, 331, 332, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 20, 0, 21, 22, 23, 24, 25, + 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, @@ -1859,101 +1866,62 @@ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 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, - 0, 377, 326, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 378, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 328, 329, 330, 331, 332, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 20, 0, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 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, 0, 0, 326, 0, 0, 0, 0, 0, + 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, - 0, 0, 0, 551, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 328, 329, 330, 331, 332, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 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, 0, 0, 326, 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, 624, 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, - 0, 0, 0, 0, 328, 329, 330, 331, 332, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 0, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 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, @@ -1980,105 +1948,30 @@ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 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, 0, 0, 326, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 666, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, - 332, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 20, 0, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 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, 0, 0, - 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 3, 4, 5, 6, 7, 0, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 0, 0, 0, 0, 0, 0, 0, 0, 328, 329, - 330, 331, 332, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 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, 0, 412, - 326, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 0, 0, 425, 426, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 427, 0, 0, 0, 518, 685, - 0, 0, 0, 0, 0, 428, 429, 430, 431, 3, - 4, 5, 6, 7, 0, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, + 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 85, 86, 87, 88, 89, 90, 91, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 118, 119, 120, 121, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, @@ -2095,106 +1988,31 @@ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 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, 0, 412, 326, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 0, - 0, 425, 426, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 427, 0, 0, 459, 0, 0, 0, 0, 0, 0, - 0, 428, 429, 430, 431, 3, 4, 5, 6, 7, - 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 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, - 0, 412, 326, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 0, 0, 425, 426, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 427, 0, 0, 0, - 518, 0, 0, 0, 0, 0, 0, 428, 429, 430, - 431, 3, 4, 5, 6, 7, 0, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 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, 0, 412, 326, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 0, 0, 425, 426, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 427, 0, 0, 574, 0, 0, 0, 0, - 0, 0, 0, 428, 429, 430, 431, 3, 4, 5, - 6, 7, 0, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 21, 22, 23, + 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, @@ -2211,287 +2029,391 @@ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 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, 0, 412, 326, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 0, 0, 425, - 426, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 427, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 428, - 429, 430, 431, 3, 4, 5, 6, 7, 0, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 284, 285, 286, 287, 288, 289, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 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, 0, 412, - 326, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 0, 0, 425, 426, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 427, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 428, 429, 430, 431, 3, - 4, 5, 6, 7, 0, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 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, 536, 0, 412, 326, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 0, - 0, 425, 426, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 428, 429, 430, 431, 3, 4, 5, 6, 7, - 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 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, - 0, 0, 326 + 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, 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, 0, 0, 339, 347, 24, 0, 26, 27, 406, - 82, 30, 395, 516, 427, 518, 591, 456, 521, 376, - 504, 341, 453, 341, 364, 382, 378, 656, 383, 372, - 357, 358, 368, 378, 386, 379, 359, 360, 694, 383, - 395, 386, 698, 440, 381, 674, 403, 404, 376, 376, - 706, 378, 376, 378, 378, 382, 378, 393, 395, 399, - 385, 385, 380, 385, 355, 356, 386, 450, 481, 376, - 483, 394, 395, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 388, 383, 390, 378, 386, 425, 426, - 473, 522, 385, 385, 578, 380, 377, 377, 383, 377, - 386, 386, 383, 383, 377, 383, 443, 546, 377, 612, - 383, 454, 383, 450, 383, 386, 377, 453, 531, 516, - 456, 518, 383, 377, 521, 560, 561, 562, 563, 383, - 383, 383, 383, 386, 386, 710, 473, 383, 535, 383, - 386, 377, 386, 402, 403, 404, 391, 392, 393, 381, - 341, 383, 361, 362, 383, 384, 383, 384, 556, 557, - 564, 565, 665, 558, 559, 341, 394, 580, 380, 380, - 341, 584, 341, 378, 341, 385, 660, 616, 386, 377, - 376, 378, 341, 341, 398, 363, 522, 379, 365, 376, - 397, 548, 396, 386, 376, 376, 386, 386, 384, 378, - 341, 386, 376, 540, 341, 341, 603, 604, 711, 381, - 546, 376, 376, 379, 377, 612, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 648, 720, 379, 383, 340, - 380, 376, 376, 656, 341, 377, 379, 386, 377, 25, - 381, 377, 380, 380, 566, 385, 381, 567, 569, 568, - 681, 674, 386, 571, 570, 372, 368, 372, 665, 341, - 333, 547, 452, 627, 651, 688, 693, 706, 366, 707, - 616, 651, 674, 514, 514, 355, -1, 683, 514, -1, - 687, -1, 705, -1, -1, -1, -1, -1, 681, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 711, -1, -1, -1, -1, -1, - 656, 340, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 679, -1, 674, 339, - -1, -1, -1, -1, 681, 339, -1, 347, -1, -1, - -1, -1, -1, 347, -1, 355, 355, 355, -1, -1, - -1, 355, 362, -1, -1, -1, -1, -1, 368, -1, - -1, -1, 372, -1, 368, -1, -1, -1, 372, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 393, -1, -1, -1, -1, 398, 393, - -1, -1, -1, -1, 398, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 453, 454, -1, 456, -1, -1, 453, - 454, -1, 456, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 504, -1, -1, -1, -1, -1, - 504, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 522, -1, -1, -1, -1, -1, 522, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 546, -1, -1, -1, - -1, -1, 546, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 578, -1, - -1, -1, -1, -1, 578, -1, -1, -1, -1, -1, - -1, 591, -1, -1, -1, -1, -1, 591, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 616, -1, -1, -1, - -1, -1, 616, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 651, -1, -1, -1, -1, 656, 651, -1, -1, - 660, -1, 656, -1, -1, -1, 660, -1, -1, -1, - -1, -1, -1, -1, 674, -1, -1, -1, -1, 679, - 674, -1, -1, -1, -1, 679, -1, -1, -1, -1, - -1, -1, -1, -1, 694, -1, -1, -1, 698, -1, - 694, -1, -1, -1, 698, -1, 706, -1, -1, -1, - 710, -1, 706, -1, -1, -1, 710, -1, -1, -1, - 720, -1, -1, -1, 0, -1, 720, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 33, -1, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 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, -1, -1, 342, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 386, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, -1, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 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, -1, -1, 357, 358, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 376, -1, 378, -1, 380, 381, -1, - -1, -1, -1, 386, 387, 388, 389, 390, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, - 403, 404, 405, 3, 4, 5, 6, 7, 8, 9, + 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, 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, -1, 26, 27, 28, 29, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, @@ -2518,61 +2440,62 @@ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 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, -1, -1, 357, 358, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 376, -1, 378, -1, - 380, 381, -1, -1, -1, -1, 386, 387, 388, 389, - 390, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 400, 401, 402, 403, 404, 405, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, -1, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 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, -1, -1, - 357, 358, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 376, - -1, 378, -1, 380, -1, -1, -1, -1, -1, 386, - 387, 388, 389, 390, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 400, 401, 402, 403, 404, 405, 3, + 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, -1, 26, 27, 28, 29, 30, 31, 32, 33, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, @@ -2598,62 +2521,63 @@ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 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, -1, -1, 357, 358, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 376, -1, 378, -1, 380, -1, -1, -1, - -1, -1, 386, 387, 388, 389, 390, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, -1, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 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, -1, -1, 357, 358, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 376, -1, 378, -1, -1, - -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, - 401, 402, 403, 404, 405, 3, 4, 5, 6, 7, + 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, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 33, -1, 35, 36, 37, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, @@ -2679,102 +2603,22 @@ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 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, -1, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, - 358, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 376, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, - 388, 389, 390, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 400, 401, 402, 403, 404, 405, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 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, -1, -1, 342, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 386, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 288, 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 33, -1, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 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, -1, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, -1, -1, 357, 358, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 376, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 387, 388, 389, 390, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 3, 4, 5, 6, 7, 8, 9, + -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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 33, -1, 35, 36, 37, 38, 39, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, @@ -2800,61 +2644,103 @@ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 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, - -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 386, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 400, 401, 402, 403, 404, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 33, -1, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 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, -1, -1, 342, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 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, -1, 381, -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, - -1, -1, 400, 401, 402, 403, 404, 3, 4, 5, + 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, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 33, -1, 35, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, @@ -2880,108 +2766,113 @@ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 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, -1, -1, 342, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 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, 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 400, 401, 402, 403, 404, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, - -1, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 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, -1, -1, 342, -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, -1, 381, -1, -1, + -1, -1, -1, -1, -1, -1, 324, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 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, 33, -1, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 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, -1, -1, - 342, -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, 5, 6, 7, 8, 9, -1, 11, + -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, - -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 35, 36, 37, 38, 39, 40, 41, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 99, 100, 101, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, @@ -2998,29 +2889,72 @@ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 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, -1, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, -1, -1, 357, 358, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 376, -1, -1, -1, 380, 381, - -1, -1, -1, -1, -1, 387, 388, 389, 390, 5, - 6, 7, 8, 9, -1, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, + 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, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 99, 100, 101, 102, 103, 104, 105, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 132, 133, 134, 135, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, @@ -3036,145 +2970,330 @@ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 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, -1, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, 358, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 376, -1, -1, 379, -1, -1, -1, -1, -1, -1, - -1, 387, 388, 389, 390, 5, 6, 7, 8, 9, - -1, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 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, - -1, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, -1, -1, 357, 358, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 376, -1, -1, -1, - 380, -1, -1, -1, -1, -1, -1, 387, 388, 389, - 390, 5, 6, 7, 8, 9, -1, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, + 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, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + -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, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 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, -1, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, 357, 358, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 376, -1, -1, 379, -1, -1, -1, -1, - -1, -1, -1, 387, 388, 389, 390, 5, 6, 7, - 8, 9, -1, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 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, -1, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, - 358, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 376, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, - 388, 389, 390, 5, 6, 7, 8, 9, -1, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 35, 36, 37, 38, 39, 40, 41, + -1, -1, -1, -1, -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 +}; + + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = +{ + 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 99, 100, 101, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, @@ -3191,239 +3310,121 @@ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 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, -1, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, -1, -1, 357, 358, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 376, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 387, 388, 389, 390, 5, - 6, 7, 8, 9, -1, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 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, -1, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, 358, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 387, 388, 389, 390, 5, 6, 7, 8, 9, - -1, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 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, - -1, -1, 342 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = -{ - 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 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, 342, 386, 400, 401, - 402, 403, 404, 405, 440, 441, 444, 445, 446, 447, - 451, 452, 453, 454, 455, 456, 459, 460, 461, 462, - 463, 465, 470, 471, 472, 513, 514, 515, 376, 376, - 341, 380, 471, 341, 386, 386, 516, 377, 383, 448, - 449, 450, 460, 465, 383, 386, 341, 341, 386, 461, - 465, 394, 467, 468, 0, 514, 341, 464, 82, 341, - 457, 458, 380, 474, 465, 378, 386, 466, 380, 492, - 449, 448, 450, 341, 341, 376, 385, 466, 380, 383, - 386, 443, 341, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 357, 358, 376, 387, 388, - 389, 390, 410, 411, 412, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 463, 465, 469, 466, 377, 383, - 385, 377, 383, 473, 460, 465, 475, 476, 386, 379, - 421, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 378, 386, 22, 23, 24, 26, 27, - 28, 29, 30, 31, 32, 34, 340, 378, 380, 381, - 386, 421, 434, 436, 438, 440, 444, 463, 465, 481, - 482, 483, 484, 485, 493, 494, 495, 496, 499, 500, - 503, 504, 505, 512, 517, 466, 385, 466, 380, 436, - 479, 385, 442, 341, 383, 386, 421, 421, 438, 357, - 358, 378, 382, 377, 377, 383, 339, 436, 376, 421, - 383, 395, 341, 434, 439, 458, 475, 465, 341, 477, - 478, 381, 476, 391, 392, 393, 388, 390, 355, 356, - 359, 360, 394, 395, 361, 362, 398, 397, 396, 363, - 365, 364, 399, 379, 379, 434, 386, 386, 507, 376, - 376, 386, 386, 438, 376, 438, 384, 386, 376, 378, - 381, 486, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 385, 437, 383, 386, 381, 482, 496, 500, - 505, 479, 385, 479, 480, 479, 475, 341, 377, 413, - 438, 341, 436, 421, 381, 477, 466, 383, 386, 421, - 421, 421, 423, 423, 424, 424, 425, 425, 425, 425, - 426, 426, 427, 428, 429, 430, 431, 432, 435, 379, - 482, 508, 438, 386, 438, 384, 506, 341, 518, 519, - 493, 436, 436, 479, 381, 383, 381, 379, 386, 478, - 438, 340, 481, 494, 509, 377, 377, 438, 453, 460, - 498, 376, 379, 383, 487, 381, 479, 384, 376, 498, - 510, 511, 489, 490, 491, 497, 501, 341, 377, 439, - 379, 519, 381, 436, 438, 386, 377, 25, 485, 483, - 380, 385, 483, 488, 492, 377, 377, 438, 488, 489, - 493, 502, 479, 386, 381 + 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_uint16 yyr1[] = { - 0, 409, 410, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 412, 412, 412, - 412, 412, 412, 413, 414, 415, 416, 416, 417, 417, - 418, 418, 419, 420, 420, 420, 421, 421, 421, 421, - 422, 422, 422, 422, 423, 423, 423, 423, 424, 424, - 424, 425, 425, 425, 426, 426, 426, 426, 426, 427, - 427, 427, 428, 428, 429, 429, 430, 430, 431, 431, - 432, 432, 433, 433, 434, 435, 434, 436, 436, 437, - 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, - 438, 438, 439, 440, 440, 440, 440, 440, 440, 440, - 440, 440, 442, 441, 443, 443, 444, 445, 445, 446, - 446, 447, 448, 448, 449, 449, 449, 449, 450, 451, - 451, 451, 451, 451, 452, 452, 452, 452, 452, 453, - 453, 454, 455, 455, 455, 455, 455, 455, 455, 455, - 456, 457, 457, 458, 458, 458, 459, 460, 460, 461, - 461, 461, 461, 461, 461, 461, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 463, 464, 464, 465, 465, - 466, 466, 466, 466, 467, 467, 468, 469, 469, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 471, 471, 471, - 473, 472, 474, 472, 475, 475, 476, 476, 477, 477, - 478, 478, 479, 479, 479, 480, 480, 481, 482, 482, - 483, 483, 483, 483, 483, 483, 483, 483, 484, 485, - 486, 487, 485, 488, 488, 490, 489, 491, 489, 492, - 492, 493, 493, 494, 494, 495, 495, 496, 497, 497, - 498, 498, 499, 499, 501, 500, 502, 502, 503, 503, - 504, 504, 506, 505, 507, 505, 508, 505, 509, 509, - 510, 510, 511, 511, 512, 512, 512, 512, 512, 513, - 513, 514, 514, 514, 516, 515, 517, 518, 518, 519, - 519 + 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, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, + 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, @@ -3471,16 +3472,16 @@ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 6, 0, 5, 1, 2, 3, 4, 1, 3, - 1, 2, 1, 3, 4, 1, 3, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 0, 0, 5, 1, 1, 0, 2, 0, 2, 2, - 3, 1, 2, 1, 2, 1, 2, 5, 3, 1, - 1, 4, 1, 2, 0, 8, 0, 1, 3, 2, - 1, 2, 0, 6, 0, 8, 0, 7, 1, 1, - 1, 0, 2, 3, 2, 2, 2, 3, 2, 1, - 2, 1, 1, 1, 0, 3, 5, 1, 3, 1, - 4 + 1, 1, 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 }; @@ -4163,250 +4164,250 @@ switch (yyn) { case 2: -#line 302 "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 4171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 3: -#line 308 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4179 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 4: -#line 311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 361 "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[-1].interm.intermTypedNode); + if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) + (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 5: -#line 315 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 366 "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); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 4197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 6: -#line 319 "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 4205 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 7: -#line 322 "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 4214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 8: -#line 326 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 376 "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); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } #line 4223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 9: -#line 330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 380 "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); + 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 4232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 10: -#line 334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 384 "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); + 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 338 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 388 "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); + 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 342 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); + 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 4258 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 13: -#line 345 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 396 "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); + 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 4267 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 14: -#line 349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 400 "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); + 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 4276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 15: -#line 353 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); + 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 4284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 16: -#line 356 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 408 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); - if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) - (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); + 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 4294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 17: -#line 364 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4302 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 18: -#line 367 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 19: -#line 370 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 20: -#line 373 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 21: -#line 376 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 22: -#line 381 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 23: -#line 389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 24: -#line 396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 25: -#line 403 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 4372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 26: -#line 409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 27: -#line 413 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 465 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4390 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 28: -#line 420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); } -#line 4398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 29: -#line 423 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 475 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 4406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4407 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 30: -#line 429 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -4414,11 +4415,11 @@ (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 4418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 31: -#line 436 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 488 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -4426,29 +4427,29 @@ (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 4430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 32: -#line 446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 498 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); } -#line 4438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 33: -#line 454 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 34: -#line 459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -4476,50 +4477,50 @@ (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 4480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 35: -#line 486 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 36: -#line 494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 37: -#line 500 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4510 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 38: -#line 504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 39: -#line 508 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -4536,179 +4537,179 @@ (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 4540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 40: -#line 528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 582 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 4546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 41: -#line 529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 4552 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 42: -#line 530 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 4558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 43: -#line 531 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 44: -#line 537 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 45: -#line 538 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 46: -#line 543 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 47: -#line 548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 48: -#line 557 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 49: -#line 558 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 50: -#line 563 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 51: -#line 571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4634 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4635 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 52: -#line 572 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 53: -#line 578 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4657 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 54: -#line 587 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 641 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 55: -#line 588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 56: -#line 593 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 57: -#line 598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4692 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 58: -#line 603 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 59: -#line 611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 665 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 60: -#line 612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(), "=="); @@ -4718,11 +4719,11 @@ if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 61: -#line 621 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(), "!="); @@ -4732,124 +4733,124 @@ if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 62: -#line 633 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 687 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 63: -#line 634 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 64: -#line 643 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 65: -#line 644 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 66: -#line 653 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 67: -#line 654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 68: -#line 663 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 69: -#line 664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 70: -#line 672 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 726 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 71: -#line 673 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 72: -#line 681 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 735 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 73: -#line 682 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 74: -#line 690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 744 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 75: -#line 691 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.controlFlowNestingLevel; } -#line 4849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 76: -#line 694 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -4862,17 +4863,17 @@ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 4866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 77: -#line 709 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 78: -#line 710 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(), "="); @@ -4886,119 +4887,119 @@ (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 4890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 79: -#line 726 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 780 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 4899 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 80: -#line 730 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 784 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 4908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4909 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 81: -#line 734 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 4917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 82: -#line 738 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 83: -#line 743 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 797 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 4936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 84: -#line 747 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 801 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 4945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 85: -#line 751 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4954 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 86: -#line 755 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 87: -#line 759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 88: -#line 763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 89: -#line 767 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 4990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 90: -#line 774 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 828 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 91: -#line 777 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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); @@ -5007,43 +5008,42 @@ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 92: -#line 788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 842 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5020 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 93: -#line 795 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 94: -#line 800 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5041 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 95: -#line 805 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); @@ -5053,7 +5053,7 @@ break; case 96: -#line 813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 866 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; @@ -5062,7 +5062,7 @@ break; case 97: -#line 817 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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; @@ -5071,7 +5071,7 @@ break; case 98: -#line 821 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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; @@ -5080,7 +5080,7 @@ break; case 99: -#line 825 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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)); @@ -5090,7 +5090,7 @@ break; case 100: -#line 830 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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); @@ -5100,7 +5100,7 @@ break; case 101: -#line 835 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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); @@ -5111,13 +5111,13 @@ break; case 102: -#line 844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } #line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 103: -#line 844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.structNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -5131,7 +5131,7 @@ break; case 104: -#line 855 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); @@ -5140,7 +5140,7 @@ break; case 105: -#line 859 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 912 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); @@ -5149,7 +5149,7 @@ break; case 106: -#line 866 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; @@ -5158,7 +5158,7 @@ break; case 107: -#line 873 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 926 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.function) = (yyvsp[0].interm.function); } @@ -5166,7 +5166,7 @@ break; case 108: -#line 876 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.function) = (yyvsp[0].interm.function); } @@ -5174,7 +5174,7 @@ break; case 109: -#line 883 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 936 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -5187,7 +5187,7 @@ break; case 110: -#line 891 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // Only first parameter of one-parameter functions can be void @@ -5209,7 +5209,7 @@ break; case 111: -#line 911 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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", @@ -5233,7 +5233,7 @@ break; case 112: -#line 934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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"); @@ -5253,7 +5253,7 @@ break; case 113: -#line 949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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"); @@ -5277,7 +5277,7 @@ break; case 114: -#line 974 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1027 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -5293,7 +5293,7 @@ break; case 115: -#line 985 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1038 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -5305,7 +5305,7 @@ break; case 116: -#line 995 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1048 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -5320,7 +5320,7 @@ break; case 117: -#line 1005 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1058 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -5332,7 +5332,7 @@ break; case 118: -#line 1015 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1068 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; @@ -5343,7 +5343,7 @@ break; case 119: -#line 1024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1077 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } @@ -5351,7 +5351,7 @@ break; case 120: -#line 1027 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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); @@ -5360,7 +5360,7 @@ break; case 121: -#line 1031 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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); @@ -5369,7 +5369,7 @@ break; case 122: -#line 1035 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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)); @@ -5379,7 +5379,7 @@ break; case 123: -#line 1040 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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)); @@ -5389,57 +5389,59 @@ break; case 124: -#line 1048 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 125: -#line 1053 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 126: -#line 1058 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 127: -#line 1063 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 128: -#line 1068 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 129: -#line 1077 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1132 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -5448,14 +5450,13 @@ parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); } - parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 5455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 130: -#line 1088 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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)); @@ -5480,22 +5481,22 @@ (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 5484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 131: -#line 1115 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 132: -#line 1124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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"); @@ -5503,11 +5504,11 @@ (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 5507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 133: -#line 1131 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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"); @@ -5515,58 +5516,49 @@ (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 5519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 134: -#line 1138 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); -#ifdef NV_EXTENSIONS - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); -#else - parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "noperspective"); -#endif + 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 5535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 135: -#line 1149 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1200 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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; -#endif } -#line 5549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 136: -#line 1158 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1207 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef NV_EXTENSIONS 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; -#endif } -#line 5564 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 137: -#line 1168 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef NV_EXTENSIONS // 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"); @@ -5575,114 +5567,109 @@ 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; -#endif } -#line 5581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 138: -#line 1180 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef NV_EXTENSIONS // 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; -#endif } -#line 5595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 139: -#line 1189 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef NV_EXTENSIONS // 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; -#endif } -#line 5609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 140: -#line 1201 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 5617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 141: -#line 1207 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 142: -#line 1210 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5635 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 143: -#line 1217 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 144: -#line 1221 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 145: -#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 146: -#line 1233 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5674 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 147: -#line 1242 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1286 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 148: -#line 1245 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -5691,446 +5678,432 @@ (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 5695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 149: -#line 1256 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 150: -#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 151: -#line 1262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 152: -#line 1266 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1310 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 153: -#line 1270 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1314 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 154: -#line 1274 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5734 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 155: -#line 1278 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1323 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 156: -#line 1284 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 157: -#line 1288 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1334 "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"); - + parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqVaryingIn; + (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 5781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 158: -#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1339 "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"); - + parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (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; + // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later + (yyval.interm.type).qualifier.storage = EvqIn; } -#line 5800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 159: -#line 1314 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1345 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); + parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqInOut; + // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later + (yyval.interm.type).qualifier.storage = EvqOut; } -#line 5810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 160: -#line 1319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1351 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.globalCheck((yyvsp[0].lex).loc, "in"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); + parseContext.globalCheck((yyvsp[0].lex).loc, "centroid"); (yyval.interm.type).init((yyvsp[0].lex).loc); - // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later - (yyval.interm.type).qualifier.storage = EvqIn; + (yyval.interm.type).qualifier.centroid = true; } -#line 5821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 161: -#line 1325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.globalCheck((yyvsp[0].lex).loc, "out"); + parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (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; + (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 5832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 162: -#line 1331 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1363 "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"); - parseContext.globalCheck((yyvsp[0].lex).loc, "centroid"); + 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.centroid = true; + (yyval.interm.type).qualifier.storage = EvqShared; } -#line 5844 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 163: -#line 1338 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); + parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.patch = true; + (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 5855 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 164: -#line 1344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1377 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); + 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.sample = true; + (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 5865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5845 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 165: -#line 1349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); + 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); - (yyval.interm.type).qualifier.storage = EvqUniform; + if (parseContext.language == EShLangVertex) + (yyval.interm.type).qualifier.storage = EvqVaryingOut; + else + (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 5875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 166: -#line 1354 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1403 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); + 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.storage = EvqBuffer; + (yyval.interm.type).qualifier.patch = true; } -#line 5885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 167: -#line 1359 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 */ { -#ifdef NV_EXTENSIONS 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; -#endif } -#line 5900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 168: -#line 1369 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 169: +#line 1422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef NV_EXTENSIONS 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; -#endif } -#line 5915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 169: -#line 1379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 170: +#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef NV_EXTENSIONS 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; -#endif } -#line 5930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 170: -#line 1389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 171: +#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef NV_EXTENSIONS 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; -#endif } -#line 5945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 171: -#line 1399 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 172: +#line 1446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef NV_EXTENSIONS 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; -#endif - } -#line 5959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 172: -#line 1408 "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"); -#ifdef NV_EXTENSIONS - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); -#else - parseContext.requireStage((yyvsp[0].lex).loc, EShLangCompute, "shared"); -#endif - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqShared; } -#line 5976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 173: -#line 1420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 5985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 174: -#line 1424 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 5995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 175: -#line 1429 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 6005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 176: -#line 1434 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 6015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 177: -#line 1439 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 6025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 178: -#line 1444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 6035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 179: -#line 1449 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 6044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 180: -#line 1453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 6053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 181: -#line 1457 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1490 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 6062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 182: -#line 1461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 6071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 183: -#line 1465 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 6082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 184: -#line 1471 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 6093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 185: -#line 1480 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 6102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 186: -#line 1487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1522 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // TODO } -#line 6110 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 187: -#line 1490 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 6120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 188: -#line 1498 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 6130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 189: -#line 1503 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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); @@ -6138,21 +6111,21 @@ (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 6142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 190: -#line 1513 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 6152 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 191: -#line 1518 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -6161,20 +6134,20 @@ parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 192: -#line 1526 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 6174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 193: -#line 1530 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); @@ -6182,35 +6155,35 @@ parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 194: -#line 1540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 6194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 195: -#line 1543 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = 0; } -#line 6202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 196: -#line 1549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 6210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 197: -#line 1555 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = new TArraySizes; @@ -6218,11 +6191,11 @@ parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 198: -#line 1562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -6230,1985 +6203,1942 @@ parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 199: -#line 1572 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 6243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 200: -#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 6252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 201: -#line 1580 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1616 "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; + (yyval.interm.type).basicType = EbtInt; } -#line 6262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 202: -#line 1585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1620 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).basicType = EbtUint; } -#line 6272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 203: -#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1625 "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; + (yyval.interm.type).basicType = EbtBool; } -#line 6282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 204: -#line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1629 "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; + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(2); } -#line 6292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 205: -#line 1600 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1634 "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).basicType = EbtFloat; + (yyval.interm.type).setVector(3); } -#line 6301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6273 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 206: -#line 1604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1639 "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; + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(4); } -#line 6311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 207: -#line 1609 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1644 "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; + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(2); } -#line 6321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 208: -#line 1614 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1649 "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; + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(3); } -#line 6331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 209: -#line 1619 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1654 "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; + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(4); } -#line 6341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 210: -#line 1624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1659 "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; + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(2); } -#line 6351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6323 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 211: -#line 1629 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1664 "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; + (yyval.interm.type).setVector(3); } -#line 6361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6333 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 212: -#line 1634 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1669 "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; + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(4); } -#line 6371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 213: -#line 1639 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); } -#line 6381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 214: -#line 1644 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); } -#line 6391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 215: -#line 1649 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtBool; + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(4); } -#line 6400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 216: -#line 1653 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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).setVector(2); + (yyval.interm.type).setMatrix(2, 2); } -#line 6410 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 217: -#line 1658 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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).setVector(3); + (yyval.interm.type).setMatrix(3, 3); } -#line 6420 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 218: -#line 1663 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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).setVector(4); + (yyval.interm.type).setMatrix(4, 4); } -#line 6430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 219: -#line 1668 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1707 "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); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); } -#line 6441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 220: -#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1712 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(3); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 3); } -#line 6452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 221: -#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1717 "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); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 4); } -#line 6463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 222: -#line 1686 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1722 "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); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 2); } -#line 6474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 223: -#line 1692 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1727 "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); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); } -#line 6485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 224: -#line 1698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1732 "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); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 4); } -#line 6496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 225: -#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1737 "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); + (yyval.interm.type).setMatrix(4, 2); } -#line 6507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 226: -#line 1710 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1742 "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); + (yyval.interm.type).setMatrix(4, 3); } -#line 6518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 227: -#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1747 "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); + (yyval.interm.type).setMatrix(4, 4); } -#line 6529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 228: -#line 1722 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + parseContext.doubleCheck((yyvsp[0].lex).loc, "double"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(2); } -#line 6540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 229: -#line 1728 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtDouble; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtFloat16; } -#line 6551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 230: -#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtDouble; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtFloat; } -#line 6562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 231: -#line 1740 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtBool; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtDouble; } -#line 6572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 232: -#line 1745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtBool; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtInt8; } -#line 6582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 233: -#line 1750 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtBool; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtUint8; } -#line 6592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 234: -#line 1755 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtInt; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtInt16; } -#line 6602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 235: -#line 1760 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtInt; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtUint16; } -#line 6612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 236: -#line 1765 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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; - (yyval.interm.type).setVector(4); } -#line 6622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 237: -#line 1770 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtInt8; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtUint; } -#line 6633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 238: -#line 1776 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtInt8; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtInt64; } -#line 6644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 239: -#line 1782 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtInt8; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtUint64; } -#line 6655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 240: -#line 1788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt16; + (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 6666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 241: -#line 1794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt16; + (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 6677 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 242: -#line 1800 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1825 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt16; + (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 6688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 243: -#line 1806 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtInt; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 6699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 244: -#line 1812 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1837 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtInt; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 6710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 245: -#line 1818 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1843 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtInt; + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 6721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 246: -#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtInt64; + (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 6732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 247: -#line 1830 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1855 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtInt64; + (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 6743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 248: -#line 1836 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1861 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtInt64; + (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 6754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 249: -#line 1842 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1867 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); + 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 = EbtUint; + (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 6765 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 250: -#line 1848 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); + 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 = EbtUint; + (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 6776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 251: -#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); + 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 = EbtUint; + (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 6787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 252: -#line 1860 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1885 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint8; + (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 6798 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 253: -#line 1866 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1891 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint8; + (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 6809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 254: -#line 1872 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint8; + (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 6820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 255: -#line 1878 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint16; + (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 6831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 256: -#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint16; + (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 6842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 257: -#line 1890 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1915 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint16; + (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 6853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 258: -#line 1896 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1921 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint; + (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 6864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 259: -#line 1902 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1927 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint; + (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 6875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 260: -#line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1933 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint; + (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 6886 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 261: -#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint64; + (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 6897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 262: -#line 1920 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1945 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint64; + (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 6908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 263: -#line 1926 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1951 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint64; + (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 6919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 264: -#line 1932 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(2); } -#line 6929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 265: -#line 1937 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(3); } -#line 6939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 266: -#line 1942 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(4); } -#line 6949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 267: -#line 1947 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(2); } -#line 6959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 268: -#line 1952 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtFloat; - (yyval.interm.type).setMatrix(2, 3); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(3); } -#line 6969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 269: -#line 1957 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtFloat; - (yyval.interm.type).setMatrix(2, 4); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(4); } -#line 6979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 270: -#line 1962 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtFloat; - (yyval.interm.type).setMatrix(3, 2); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); } -#line 6989 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 271: -#line 1967 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); } -#line 6999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 272: -#line 1972 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtFloat; - (yyval.interm.type).setMatrix(3, 4); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(4); } -#line 7009 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 273: -#line 1977 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtFloat; - (yyval.interm.type).setMatrix(4, 2); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(2); } -#line 7019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 274: -#line 1982 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtFloat; - (yyval.interm.type).setMatrix(4, 3); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(3); } -#line 7029 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 275: -#line 1987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(4); } -#line 7039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 276: -#line 1992 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 277: -#line 1998 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 278: -#line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 279: -#line 2010 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 280: -#line 2016 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 281: -#line 2022 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 282: -#line 2028 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 283: -#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 284: -#line 2040 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 285: -#line 2046 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 286: -#line 2052 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7160 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 287: -#line 2058 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 288: -#line 2064 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 289: -#line 2070 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 290: -#line 2076 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 291: -#line 2082 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 292: -#line 2088 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 293: -#line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 294: -#line 2100 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 295: -#line 2106 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 296: -#line 2112 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 297: -#line 2118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 298: -#line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 299: -#line 2130 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 300: -#line 2136 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7287 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 301: -#line 2142 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 302: -#line 2148 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 303: -#line 2154 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 304: -#line 2160 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 305: -#line 2166 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 306: -#line 2172 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 307: -#line 2178 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 308: -#line 2184 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 309: -#line 2190 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 310: -#line 2196 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 311: -#line 2202 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 312: -#line 2208 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 313: -#line 2214 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 314: -#line 2220 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 315: -#line 2226 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 316: -#line 2232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 317: -#line 2238 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 318: -#line 2244 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 319: -#line 2250 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 320: -#line 2256 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7534 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 321: -#line 2262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 322: -#line 2268 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 323: -#line 2274 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 324: -#line 2280 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2317 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef NV_EXTENSIONS (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStructNV; -#endif } -#line 7578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 325: -#line 2286 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 326: -#line 2291 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7598 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 327: -#line 2296 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 328: -#line 2301 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 329: -#line 2306 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 330: -#line 2311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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, Esd1D, false, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 7638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 331: -#line 2316 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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, Esd2D, false, true); + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 7648 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 332: -#line 2321 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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, EsdCube, false, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 7658 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 333: -#line 2326 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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, Esd1D, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 7668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 334: -#line 2331 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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, Esd2D, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 7678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 335: -#line 2336 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 7688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 336: -#line 2341 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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, Esd2D, true, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 7698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 337: -#line 2346 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 338: -#line 2351 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 339: -#line 2356 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2393 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 7731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 340: -#line 2364 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2399 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 7744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 341: -#line 2372 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2405 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 7757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 342: -#line 2380 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2411 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 7770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 343: -#line 2388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2417 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 7783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 344: -#line 2396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2423 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 7796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 345: -#line 2404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2429 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 7809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 346: -#line 2412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2435 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 7822 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 347: -#line 2420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 7835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 348: -#line 2428 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 7848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 349: -#line 2436 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 7861 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 350: -#line 2444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 7874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 351: -#line 2452 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2465 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 7887 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 352: -#line 2460 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 353: -#line 2465 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 354: -#line 2470 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 355: -#line 2475 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 7927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 356: -#line 2480 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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, Esd1D, true); + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 7937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 357: -#line 2485 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtInt, Esd2D, true); + (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 7947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 358: -#line 2490 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtInt, EsdCube, true); + (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 7957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 359: -#line 2495 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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, Esd1D); + (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 7967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 360: -#line 2500 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtUint, Esd2D); + (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 7977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 361: -#line 2505 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtUint, Esd3D); + (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 7987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 362: -#line 2510 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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, EsdCube); + (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 7997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 363: -#line 2515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 364: -#line 2520 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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, Esd2D, true); + (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 8017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 365: -#line 2525 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.set(EbtUint, EsdCube, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 8027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 366: -#line 2530 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.set(EbtFloat, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 8037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 367: -#line 2535 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.set(EbtFloat, EsdRect, false, true); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 8047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 368: -#line 2540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - 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); -#endif + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 8060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 369: -#line 2548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2559 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - 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); -#endif + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 8073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 370: -#line 2556 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.set(EbtInt, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 8083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 371: -#line 2561 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.set(EbtUint, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 8093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 372: -#line 2566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.set(EbtFloat, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 8103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 373: -#line 2571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - 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); -#endif + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 8116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 374: -#line 2579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.set(EbtInt, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 8126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 375: -#line 2584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.set(EbtUint, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 8136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 376: -#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtFloat, Esd2D, false, false, true); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 8146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 377: -#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2599 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - 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); -#endif + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 8159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 378: -#line 2602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtInt, Esd2D, false, false, true); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 8169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 379: -#line 2607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.set(EbtUint, Esd2D, false, false, true); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 8179 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 380: -#line 2612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.set(EbtFloat, Esd2D, true, false, true); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 8189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 381: -#line 2617 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2619 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - 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); -#endif + (yyval.interm.type).sampler.setPureSampler(false); } -#line 8202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 382: -#line 2625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); + (yyval.interm.type).sampler.setPureSampler(true); } -#line 8212 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 383: @@ -8216,9 +8146,9 @@ { (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); + (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 8222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8152 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 384: @@ -8226,1106 +8156,1085 @@ { (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.set(EbtFloat, EsdRect, false, true); } -#line 8232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#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.setPureSampler(true); + (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 8242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 386: -#line 2645 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.setTexture(EbtFloat, Esd1D); + (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 8252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 387: -#line 2650 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - 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); -#endif + (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 8265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 388: -#line 2658 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.setTexture(EbtFloat, Esd2D); + (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 8275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 389: -#line 2663 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2662 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - 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); -#endif + (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 8288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 390: -#line 2671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.setTexture(EbtFloat, Esd3D); + (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 8298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 391: -#line 2676 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2673 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - 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); -#endif + (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 8311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 392: -#line 2684 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.setTexture(EbtFloat, EsdCube); + (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 8321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 393: -#line 2689 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - 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); -#endif + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 8334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 394: -#line 2697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.setTexture(EbtFloat, Esd1D, true); + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 8344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 395: -#line 2702 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2694 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - 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); -#endif + (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 8357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 396: -#line 2710 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.setTexture(EbtFloat, Esd2D, true); + (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 8367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 397: -#line 2715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - 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); -#endif + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 8380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 398: -#line 2723 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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.setTexture(EbtFloat, EsdCube, true); + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 8390 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 399: -#line 2728 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - 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); -#endif + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 8403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 400: -#line 2736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2720 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 8413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 401: -#line 2741 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 8423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 402: -#line 2746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtInt, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 8433 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 403: -#line 2751 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtInt, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 8443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 404: -#line 2756 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtInt, Esd1D, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 8453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 405: -#line 2761 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtInt, Esd2D, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 8463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 406: -#line 2766 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtInt, EsdCube, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 8473 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 407: -#line 2771 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtUint, Esd1D); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 8483 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 408: -#line 2776 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtUint, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 8493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 409: -#line 2781 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtUint, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 8503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 410: -#line 2786 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtUint, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 8513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 411: -#line 2791 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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(EbtUint, Esd1D, true); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 8523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 412: -#line 2796 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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, Esd2D, true); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 8533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 413: -#line 2801 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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, EsdCube, true); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 8543 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8464 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 414: -#line 2806 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 415: -#line 2811 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 8566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 416: -#line 2819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 417: -#line 2824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 418: -#line 2829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 419: -#line 2834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2823 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 8609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 420: -#line 2842 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 421: -#line 2847 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 422: -#line 2852 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 423: -#line 2857 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 8652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 424: -#line 2865 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 425: -#line 2870 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 426: -#line 2875 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2860 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 8682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 427: -#line 2880 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2865 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 8695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 428: -#line 2888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 429: -#line 2893 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 430: -#line 2898 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 431: -#line 2903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2886 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 8738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 432: -#line 2911 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 433: -#line 2916 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 434: -#line 2921 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 435: -#line 2926 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2907 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 8781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 436: -#line 2934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8791 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 437: -#line 2939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 438: -#line 2944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 439: -#line 2949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2928 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 8824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 440: -#line 2957 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 441: -#line 2962 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8844 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 442: -#line 2967 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 443: -#line 2972 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 8867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 444: -#line 2980 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 445: -#line 2985 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8887 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 446: -#line 2990 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 447: -#line 2995 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2970 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 8910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 448: -#line 3003 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 449: -#line 3008 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 450: -#line 3013 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 451: -#line 3018 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2991 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 8953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 452: -#line 3026 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 453: -#line 3031 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 454: -#line 3036 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 8983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 455: -#line 3041 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3012 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 8996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 456: -#line 3049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 457: -#line 3054 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 458: -#line 3059 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 459: -#line 3064 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3033 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 9039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 460: -#line 3072 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 461: -#line 3077 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 462: -#line 3082 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 463: -#line 3087 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3054 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 9082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 464: -#line 3095 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 465: -#line 3100 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 466: -#line 3105 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 467: -#line 3110 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3075 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 9125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 468: -#line 3118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 469: -#line 3123 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 470: -#line 3128 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 471: -#line 3133 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3096 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 9168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 472: -#line 3141 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 473: -#line 3146 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 474: -#line 3151 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 475: -#line 3157 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 476: -#line 3163 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 477: -#line 3169 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 478: -#line 3175 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3136 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 9246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 479: -#line 3184 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3143 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS 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); -#endif } -#line 9260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 480: -#line 3193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 481: -#line 3199 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 482: -#line 3205 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 483: -#line 3211 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 484: -#line 3217 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 485: -#line 3223 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#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 9325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 486: -#line 3228 "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 @@ -9339,47 +9248,47 @@ } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 9343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 487: -#line 3244 "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 9353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 488: -#line 3249 "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 9363 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 489: -#line 3254 "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 9373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 490: -#line 3262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 492: +#line 3232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 9379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 491: -#line 3262 "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); @@ -9391,17 +9300,17 @@ (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 9395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 492: -#line 3273 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 494: +#line 3243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 9401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 493: -#line 3273 "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); @@ -9409,19 +9318,19 @@ (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 9413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 494: -#line 3283 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 496: +#line 3253 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 9421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 495: -#line 3286 "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) { @@ -9432,16 +9341,16 @@ (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 9436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 496: -#line 3299 "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"); parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); - if (parseContext.profile == EEsProfile) + if (parseContext.isEsProfile()) parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); } @@ -9459,16 +9368,16 @@ (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 9463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 497: -#line 3321 "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"); parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); - if (parseContext.profile == EEsProfile) + if (parseContext.isEsProfile()) parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); } @@ -9488,38 +9397,38 @@ (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 9492 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 498: -#line 3348 "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 9501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9410 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 499: -#line 3352 "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 9509 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 500: -#line 3358 "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 9519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 501: -#line 3363 "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); @@ -9528,235 +9437,235 @@ (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 9532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 502: -#line 3374 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 504: +#line 3344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 9540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 503: -#line 3377 "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 9551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 504: -#line 3383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + 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 9562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 505: -#line 3392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + 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 9570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 506: -#line 3395 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + 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 9578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 507: -#line 3401 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 508: -#line 3405 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 509: -#line 3406 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3375 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 510: -#line 3412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 511: -#line 3413 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3380 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 512: -#line 3414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 513: -#line 3415 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3387 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 514: -#line 3416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 515: -#line 3417 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 516: -#line 3418 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3390 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 517: -#line 3419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3391 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 518: -#line 3423 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 9547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + 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 9654 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 519: -#line 3431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 521: +#line 3409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 520: -#line 3432 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 522: +#line 3410 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 9669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 521: -#line 3436 "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 9678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 522: -#line 3440 "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 9688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 523: -#line 3448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 525: +#line 3426 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 524: -#line 3449 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 526: +#line 3427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 525: -#line 3453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 527: +#line 3431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.controlFlowNestingLevel; } -#line 9708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 526: -#line 3456 "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 9717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 527: -#line 3460 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 529: +#line 3438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 528: -#line 3465 "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 9738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 529: -#line 3474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 531: +#line 3452 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 530: -#line 3477 "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 9756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 531: -#line 3485 "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 || @@ -9765,11 +9674,11 @@ (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 9769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 532: -#line 3493 "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)) { @@ -9778,76 +9687,76 @@ } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 9782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 533: -#line 3504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 535: +#line 3482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 534: -#line 3505 "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 9794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 535: -#line 3509 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 537: +#line 3487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 536: -#line 3512 "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 9811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 537: -#line 3518 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + 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 9820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 538: -#line 3525 "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 9829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 539: -#line 3529 "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 9838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 540: -#line 3537 "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 9847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 541: -#line 3541 "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)); @@ -9858,28 +9767,28 @@ else (yyval.interm.intermTypedNode) = 0; } -#line 9862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 542: -#line 3554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 544: +#line 3534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 543: -#line 3557 "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 9879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 544: -#line 3563 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 546: +#line 3545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -9888,11 +9797,11 @@ parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 9892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 545: -#line 3571 "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(); @@ -9902,27 +9811,27 @@ --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 9906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 546: -#line 3583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 548: +#line 3565 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 547: -#line 3586 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 549: +#line 3568 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 548: -#line 3592 "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) @@ -9935,11 +9844,11 @@ (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 9939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 549: -#line 3604 "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) @@ -9949,28 +9858,28 @@ else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 9953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 550: -#line 3616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 552: +#line 3598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 551: -#line 3619 "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 9970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 552: -#line 3625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + 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", ""); @@ -9979,11 +9888,11 @@ ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 553: -#line 3633 "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); @@ -9991,21 +9900,21 @@ --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 9995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 554: -#line 3640 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 556: +#line 3624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 555: -#line 3645 "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", ""); @@ -10017,22 +9926,22 @@ --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 556: -#line 3656 "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 10032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 557: -#line 3662 "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); @@ -10045,81 +9954,81 @@ --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 558: -#line 3677 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 560: +#line 3661 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 559: -#line 3680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 561: +#line 3664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 560: -#line 3686 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 562: +#line 3670 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 10073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 561: -#line 3689 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 563: +#line 3673 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = 0; } -#line 10081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 562: -#line 3695 "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 10090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 563: -#line 3699 "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 10099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 564: -#line 3706 "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 10109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 565: -#line 3711 "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 10119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 566: -#line 3716 "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) @@ -10127,83 +10036,83 @@ if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 10131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 567: -#line 3723 "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 10139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 568: -#line 3726 "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 10148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 569: -#line 3735 "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 10157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 570: -#line 3739 "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 10168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 571: -#line 3748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 573: +#line 3732 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 572: -#line 3751 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 574: +#line 3735 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 573: -#line 3754 "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 10194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 574: -#line 3762 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + 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 10203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 575: -#line 3766 "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) @@ -10219,52 +10128,52 @@ (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); } -#line 10223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 576: -#line 3784 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + 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 10232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 577: -#line 3790 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 579: +#line 3777 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 10240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 578: -#line 3793 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 580: +#line 3780 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 10248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 579: -#line 3798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 581: +#line 3785 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 10256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 580: -#line 3801 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 582: +#line 3788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 10264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; -#line 10268 "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 @@ -10492,5 +10401,5 @@ #endif return yyresult; } -#line 3805 "MachineIndependent/glslang.y" /* yacc.c:1906 */ +#line 3793 "MachineIndependent/glslang.y" /* yacc.c:1906 */ diff -Nru glslang-7.12.3352/glslang/MachineIndependent/glslang_tab.cpp.h glslang-8.13.3559/glslang/MachineIndependent/glslang_tab.cpp.h --- glslang-7.12.3352/glslang/MachineIndependent/glslang_tab.cpp.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/glslang_tab.cpp.h 2020-01-06 14:50:40.000000000 +0000 @@ -45,102 +45,102 @@ # define YYTOKENTYPE enum yytokentype { - ATTRIBUTE = 258, - VARYING = 259, - FLOAT16_T = 260, - FLOAT = 261, - FLOAT32_T = 262, - DOUBLE = 263, - FLOAT64_T = 264, - CONST = 265, - BOOL = 266, - INT = 267, - UINT = 268, - INT64_T = 269, - UINT64_T = 270, - INT32_T = 271, - UINT32_T = 272, - INT16_T = 273, - UINT16_T = 274, - INT8_T = 275, - UINT8_T = 276, - BREAK = 277, - CONTINUE = 278, - DO = 279, - ELSE = 280, - FOR = 281, - IF = 282, - DISCARD = 283, - RETURN = 284, - SWITCH = 285, - CASE = 286, - DEFAULT = 287, - SUBROUTINE = 288, - DEMOTE = 289, - BVEC2 = 290, - BVEC3 = 291, - BVEC4 = 292, - IVEC2 = 293, - IVEC3 = 294, - IVEC4 = 295, - UVEC2 = 296, - UVEC3 = 297, - UVEC4 = 298, - I64VEC2 = 299, - I64VEC3 = 300, - I64VEC4 = 301, - U64VEC2 = 302, - U64VEC3 = 303, - U64VEC4 = 304, - I32VEC2 = 305, - I32VEC3 = 306, - I32VEC4 = 307, - U32VEC2 = 308, - U32VEC3 = 309, - U32VEC4 = 310, - I16VEC2 = 311, - I16VEC3 = 312, - I16VEC4 = 313, - U16VEC2 = 314, - U16VEC3 = 315, - U16VEC4 = 316, - I8VEC2 = 317, - I8VEC3 = 318, - I8VEC4 = 319, - U8VEC2 = 320, - U8VEC3 = 321, - U8VEC4 = 322, - VEC2 = 323, - VEC3 = 324, - VEC4 = 325, - MAT2 = 326, - MAT3 = 327, - MAT4 = 328, - CENTROID = 329, - IN = 330, - OUT = 331, - INOUT = 332, - UNIFORM = 333, - PATCH = 334, - SAMPLE = 335, - BUFFER = 336, - SHARED = 337, - NONUNIFORM = 338, - PAYLOADNV = 339, - PAYLOADINNV = 340, - HITATTRNV = 341, - CALLDATANV = 342, - CALLDATAINNV = 343, - COHERENT = 344, - VOLATILE = 345, - RESTRICT = 346, - READONLY = 347, - WRITEONLY = 348, - DEVICECOHERENT = 349, - QUEUEFAMILYCOHERENT = 350, - WORKGROUPCOHERENT = 351, - SUBGROUPCOHERENT = 352, - NONPRIVATE = 353, + CONST = 258, + BOOL = 259, + INT = 260, + UINT = 261, + FLOAT = 262, + BVEC2 = 263, + BVEC3 = 264, + BVEC4 = 265, + IVEC2 = 266, + IVEC3 = 267, + IVEC4 = 268, + UVEC2 = 269, + UVEC3 = 270, + UVEC4 = 271, + VEC2 = 272, + VEC3 = 273, + VEC4 = 274, + MAT2 = 275, + MAT3 = 276, + MAT4 = 277, + MAT2X2 = 278, + MAT2X3 = 279, + MAT2X4 = 280, + MAT3X2 = 281, + MAT3X3 = 282, + MAT3X4 = 283, + MAT4X2 = 284, + MAT4X3 = 285, + MAT4X4 = 286, + SAMPLER2D = 287, + SAMPLER3D = 288, + SAMPLERCUBE = 289, + SAMPLER2DSHADOW = 290, + SAMPLERCUBESHADOW = 291, + SAMPLER2DARRAY = 292, + SAMPLER2DARRAYSHADOW = 293, + ISAMPLER2D = 294, + ISAMPLER3D = 295, + ISAMPLERCUBE = 296, + ISAMPLER2DARRAY = 297, + USAMPLER2D = 298, + USAMPLER3D = 299, + USAMPLERCUBE = 300, + USAMPLER2DARRAY = 301, + SAMPLER = 302, + SAMPLERSHADOW = 303, + TEXTURE2D = 304, + TEXTURE3D = 305, + TEXTURECUBE = 306, + TEXTURE2DARRAY = 307, + ITEXTURE2D = 308, + ITEXTURE3D = 309, + ITEXTURECUBE = 310, + ITEXTURE2DARRAY = 311, + UTEXTURE2D = 312, + UTEXTURE3D = 313, + UTEXTURECUBE = 314, + UTEXTURE2DARRAY = 315, + ATTRIBUTE = 316, + VARYING = 317, + FLOAT16_T = 318, + FLOAT32_T = 319, + DOUBLE = 320, + FLOAT64_T = 321, + INT64_T = 322, + UINT64_T = 323, + INT32_T = 324, + UINT32_T = 325, + INT16_T = 326, + UINT16_T = 327, + INT8_T = 328, + UINT8_T = 329, + I64VEC2 = 330, + I64VEC3 = 331, + I64VEC4 = 332, + U64VEC2 = 333, + U64VEC3 = 334, + U64VEC4 = 335, + I32VEC2 = 336, + I32VEC3 = 337, + I32VEC4 = 338, + U32VEC2 = 339, + U32VEC3 = 340, + U32VEC4 = 341, + I16VEC2 = 342, + I16VEC3 = 343, + I16VEC4 = 344, + U16VEC2 = 345, + U16VEC3 = 346, + U16VEC4 = 347, + I8VEC2 = 348, + I8VEC3 = 349, + I8VEC4 = 350, + U8VEC2 = 351, + U8VEC3 = 352, + U8VEC4 = 353, DVEC2 = 354, DVEC3 = 355, DVEC4 = 356, @@ -165,292 +165,294 @@ F64MAT2 = 375, F64MAT3 = 376, F64MAT4 = 377, - NOPERSPECTIVE = 378, - FLAT = 379, - SMOOTH = 380, - LAYOUT = 381, - EXPLICITINTERPAMD = 382, - PERVERTEXNV = 383, - PERPRIMITIVENV = 384, - PERVIEWNV = 385, - PERTASKNV = 386, - MAT2X2 = 387, - MAT2X3 = 388, - MAT2X4 = 389, - MAT3X2 = 390, - MAT3X3 = 391, - MAT3X4 = 392, - MAT4X2 = 393, - MAT4X3 = 394, - MAT4X4 = 395, - DMAT2X2 = 396, - DMAT2X3 = 397, - DMAT2X4 = 398, - DMAT3X2 = 399, - DMAT3X3 = 400, - DMAT3X4 = 401, - DMAT4X2 = 402, - DMAT4X3 = 403, - DMAT4X4 = 404, - F16MAT2X2 = 405, - F16MAT2X3 = 406, - F16MAT2X4 = 407, - F16MAT3X2 = 408, - F16MAT3X3 = 409, - F16MAT3X4 = 410, - F16MAT4X2 = 411, - F16MAT4X3 = 412, - F16MAT4X4 = 413, - F32MAT2X2 = 414, - F32MAT2X3 = 415, - F32MAT2X4 = 416, - F32MAT3X2 = 417, - F32MAT3X3 = 418, - F32MAT3X4 = 419, - F32MAT4X2 = 420, - F32MAT4X3 = 421, - F32MAT4X4 = 422, - F64MAT2X2 = 423, - F64MAT2X3 = 424, - F64MAT2X4 = 425, - F64MAT3X2 = 426, - F64MAT3X3 = 427, - F64MAT3X4 = 428, - F64MAT4X2 = 429, - F64MAT4X3 = 430, - F64MAT4X4 = 431, - ATOMIC_UINT = 432, - ACCSTRUCTNV = 433, - FCOOPMATNV = 434, - SAMPLER1D = 435, - SAMPLER2D = 436, - SAMPLER3D = 437, - SAMPLERCUBE = 438, - SAMPLER1DSHADOW = 439, - SAMPLER2DSHADOW = 440, - SAMPLERCUBESHADOW = 441, - SAMPLER1DARRAY = 442, - SAMPLER2DARRAY = 443, - SAMPLER1DARRAYSHADOW = 444, - SAMPLER2DARRAYSHADOW = 445, - ISAMPLER1D = 446, - ISAMPLER2D = 447, - ISAMPLER3D = 448, - ISAMPLERCUBE = 449, - ISAMPLER1DARRAY = 450, - ISAMPLER2DARRAY = 451, - USAMPLER1D = 452, - USAMPLER2D = 453, - USAMPLER3D = 454, - USAMPLERCUBE = 455, - USAMPLER1DARRAY = 456, - USAMPLER2DARRAY = 457, - SAMPLER2DRECT = 458, - SAMPLER2DRECTSHADOW = 459, - ISAMPLER2DRECT = 460, - USAMPLER2DRECT = 461, - SAMPLERBUFFER = 462, - ISAMPLERBUFFER = 463, - USAMPLERBUFFER = 464, - SAMPLERCUBEARRAY = 465, - SAMPLERCUBEARRAYSHADOW = 466, - ISAMPLERCUBEARRAY = 467, - USAMPLERCUBEARRAY = 468, - SAMPLER2DMS = 469, - ISAMPLER2DMS = 470, - USAMPLER2DMS = 471, - SAMPLER2DMSARRAY = 472, - ISAMPLER2DMSARRAY = 473, - USAMPLER2DMSARRAY = 474, - SAMPLEREXTERNALOES = 475, - SAMPLEREXTERNAL2DY2YEXT = 476, - F16SAMPLER1D = 477, - F16SAMPLER2D = 478, - F16SAMPLER3D = 479, - F16SAMPLER2DRECT = 480, - F16SAMPLERCUBE = 481, - F16SAMPLER1DARRAY = 482, - F16SAMPLER2DARRAY = 483, - F16SAMPLERCUBEARRAY = 484, - F16SAMPLERBUFFER = 485, - F16SAMPLER2DMS = 486, - F16SAMPLER2DMSARRAY = 487, - F16SAMPLER1DSHADOW = 488, - F16SAMPLER2DSHADOW = 489, - F16SAMPLER1DARRAYSHADOW = 490, - F16SAMPLER2DARRAYSHADOW = 491, - F16SAMPLER2DRECTSHADOW = 492, - F16SAMPLERCUBESHADOW = 493, - F16SAMPLERCUBEARRAYSHADOW = 494, - SAMPLER = 495, - SAMPLERSHADOW = 496, - TEXTURE1D = 497, - TEXTURE2D = 498, - TEXTURE3D = 499, - TEXTURECUBE = 500, - TEXTURE1DARRAY = 501, - TEXTURE2DARRAY = 502, - ITEXTURE1D = 503, - ITEXTURE2D = 504, - ITEXTURE3D = 505, - ITEXTURECUBE = 506, - ITEXTURE1DARRAY = 507, - ITEXTURE2DARRAY = 508, - UTEXTURE1D = 509, - UTEXTURE2D = 510, - UTEXTURE3D = 511, - UTEXTURECUBE = 512, - UTEXTURE1DARRAY = 513, - UTEXTURE2DARRAY = 514, - TEXTURE2DRECT = 515, - ITEXTURE2DRECT = 516, - UTEXTURE2DRECT = 517, - TEXTUREBUFFER = 518, - ITEXTUREBUFFER = 519, - UTEXTUREBUFFER = 520, - TEXTURECUBEARRAY = 521, - ITEXTURECUBEARRAY = 522, - UTEXTURECUBEARRAY = 523, - TEXTURE2DMS = 524, - ITEXTURE2DMS = 525, - UTEXTURE2DMS = 526, - TEXTURE2DMSARRAY = 527, - ITEXTURE2DMSARRAY = 528, - UTEXTURE2DMSARRAY = 529, - F16TEXTURE1D = 530, - F16TEXTURE2D = 531, - F16TEXTURE3D = 532, - F16TEXTURE2DRECT = 533, - F16TEXTURECUBE = 534, - F16TEXTURE1DARRAY = 535, - F16TEXTURE2DARRAY = 536, - F16TEXTURECUBEARRAY = 537, - F16TEXTUREBUFFER = 538, - F16TEXTURE2DMS = 539, - F16TEXTURE2DMSARRAY = 540, - SUBPASSINPUT = 541, - SUBPASSINPUTMS = 542, - ISUBPASSINPUT = 543, - ISUBPASSINPUTMS = 544, - USUBPASSINPUT = 545, - USUBPASSINPUTMS = 546, - F16SUBPASSINPUT = 547, - F16SUBPASSINPUTMS = 548, - IMAGE1D = 549, - IIMAGE1D = 550, - UIMAGE1D = 551, - IMAGE2D = 552, - IIMAGE2D = 553, - UIMAGE2D = 554, - IMAGE3D = 555, - IIMAGE3D = 556, - UIMAGE3D = 557, - IMAGE2DRECT = 558, - IIMAGE2DRECT = 559, - UIMAGE2DRECT = 560, - IMAGECUBE = 561, - IIMAGECUBE = 562, - UIMAGECUBE = 563, - IMAGEBUFFER = 564, - IIMAGEBUFFER = 565, - UIMAGEBUFFER = 566, - IMAGE1DARRAY = 567, - IIMAGE1DARRAY = 568, - UIMAGE1DARRAY = 569, - IMAGE2DARRAY = 570, - IIMAGE2DARRAY = 571, - UIMAGE2DARRAY = 572, - IMAGECUBEARRAY = 573, - IIMAGECUBEARRAY = 574, - UIMAGECUBEARRAY = 575, - IMAGE2DMS = 576, - IIMAGE2DMS = 577, - UIMAGE2DMS = 578, - IMAGE2DMSARRAY = 579, - IIMAGE2DMSARRAY = 580, - UIMAGE2DMSARRAY = 581, - F16IMAGE1D = 582, - F16IMAGE2D = 583, - F16IMAGE3D = 584, - F16IMAGE2DRECT = 585, - F16IMAGECUBE = 586, - F16IMAGE1DARRAY = 587, - F16IMAGE2DARRAY = 588, - F16IMAGECUBEARRAY = 589, - F16IMAGEBUFFER = 590, - F16IMAGE2DMS = 591, - F16IMAGE2DMSARRAY = 592, - STRUCT = 593, - VOID = 594, - WHILE = 595, - IDENTIFIER = 596, - TYPE_NAME = 597, - FLOATCONSTANT = 598, - DOUBLECONSTANT = 599, - INT16CONSTANT = 600, - UINT16CONSTANT = 601, - INT32CONSTANT = 602, - UINT32CONSTANT = 603, - INTCONSTANT = 604, - UINTCONSTANT = 605, - INT64CONSTANT = 606, - UINT64CONSTANT = 607, - BOOLCONSTANT = 608, - FLOAT16CONSTANT = 609, - LEFT_OP = 610, - RIGHT_OP = 611, - INC_OP = 612, - DEC_OP = 613, - LE_OP = 614, - GE_OP = 615, - EQ_OP = 616, - NE_OP = 617, - AND_OP = 618, - OR_OP = 619, - XOR_OP = 620, - MUL_ASSIGN = 621, - DIV_ASSIGN = 622, - ADD_ASSIGN = 623, - MOD_ASSIGN = 624, - LEFT_ASSIGN = 625, - RIGHT_ASSIGN = 626, - AND_ASSIGN = 627, - XOR_ASSIGN = 628, - OR_ASSIGN = 629, - SUB_ASSIGN = 630, - LEFT_PAREN = 631, - RIGHT_PAREN = 632, - LEFT_BRACKET = 633, - RIGHT_BRACKET = 634, - LEFT_BRACE = 635, - RIGHT_BRACE = 636, - DOT = 637, - COMMA = 638, - COLON = 639, - EQUAL = 640, - SEMICOLON = 641, - BANG = 642, - DASH = 643, - TILDE = 644, - PLUS = 645, - STAR = 646, - SLASH = 647, - PERCENT = 648, - LEFT_ANGLE = 649, - RIGHT_ANGLE = 650, - VERTICAL_BAR = 651, - CARET = 652, - AMPERSAND = 653, - QUESTION = 654, - INVARIANT = 655, - PRECISE = 656, - HIGH_PRECISION = 657, - MEDIUM_PRECISION = 658, - LOW_PRECISION = 659, - PRECISION = 660, - PACKED = 661, - RESOURCE = 662, - SUPERP = 663 + 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 @@ -459,7 +461,7 @@ union YYSTYPE { -#line 71 "MachineIndependent/glslang.y" /* yacc.c:1909 */ +#line 96 "MachineIndependent/glslang.y" /* yacc.c:1909 */ struct { glslang::TSourceLoc loc; @@ -495,7 +497,7 @@ glslang::TArraySizes* typeParameters; } interm; -#line 499 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ +#line 501 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; diff -Nru glslang-7.12.3352/glslang/MachineIndependent/glslang.y glslang-8.13.3559/glslang/MachineIndependent/glslang.y --- glslang-7.12.3352/glslang/MachineIndependent/glslang.y 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/glslang.y 2020-01-06 14:50:40.000000000 +0000 @@ -36,6 +36,31 @@ // POSSIBILITY OF SUCH DAMAGE. // +// +// Do not edit the .y file, only edit 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: +// +// GLSLANG_WEB_EXCLUDE_ON +// ... +// ... +// ... +// GLSLANG_WEB_EXCLUDE_OFF +// +// Will be excluded from the grammar when m4 is executed as: +// +// m4 -P -DGLSLANG_WEB +// +// It will be included when m4 is executed as: +// +// m4 -P +// + + + + /** * This is bison grammar and productions for parsing all versions of the * GLSL shading languages. @@ -125,13 +150,34 @@ %pure-parser // enable thread safety %expect 1 // One shift reduce conflict because of if | else -%token ATTRIBUTE VARYING -%token FLOAT16_T FLOAT FLOAT32_T DOUBLE FLOAT64_T -%token CONST BOOL INT UINT INT64_T UINT64_T INT32_T UINT32_T INT16_T UINT16_T INT8_T UINT8_T -%token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT SUBROUTINE DEMOTE +%token CONST BOOL INT UINT FLOAT %token BVEC2 BVEC3 BVEC4 %token IVEC2 IVEC3 IVEC4 %token UVEC2 UVEC3 UVEC4 +%token VEC2 VEC3 VEC4 +%token MAT2 MAT3 MAT4 +%token MAT2X2 MAT2X3 MAT2X4 +%token MAT3X2 MAT3X3 MAT3X4 +%token MAT4X2 MAT4X3 MAT4X4 + +// combined image/sampler +%token SAMPLER2D SAMPLER3D SAMPLERCUBE SAMPLER2DSHADOW +%token SAMPLERCUBESHADOW SAMPLER2DARRAY +%token SAMPLER2DARRAYSHADOW ISAMPLER2D ISAMPLER3D ISAMPLERCUBE +%token ISAMPLER2DARRAY USAMPLER2D USAMPLER3D +%token USAMPLERCUBE USAMPLER2DARRAY + +// separate image/sampler +%token SAMPLER SAMPLERSHADOW +%token TEXTURE2D TEXTURE3D TEXTURECUBE TEXTURE2DARRAY +%token ITEXTURE2D ITEXTURE3D ITEXTURECUBE ITEXTURE2DARRAY +%token UTEXTURE2D UTEXTURE3D UTEXTURECUBE UTEXTURE2DARRAY + + + +%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 @@ -140,19 +186,10 @@ %token U16VEC2 U16VEC3 U16VEC4 %token I8VEC2 I8VEC3 I8VEC4 %token U8VEC2 U8VEC3 U8VEC4 -%token VEC2 VEC3 VEC4 -%token MAT2 MAT3 MAT4 CENTROID IN OUT INOUT -%token UNIFORM PATCH SAMPLE BUFFER SHARED NONUNIFORM PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV -%token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT SUBGROUPCOHERENT NONPRIVATE %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 NOPERSPECTIVE FLAT SMOOTH LAYOUT EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV - -%token MAT2X2 MAT2X3 MAT2X4 -%token MAT3X2 MAT3X3 MAT3X4 -%token MAT4X2 MAT4X3 MAT4X4 %token DMAT2X2 DMAT2X3 DMAT2X4 %token DMAT3X2 DMAT3X3 DMAT3X4 %token DMAT4X2 DMAT4X3 DMAT4X4 @@ -167,41 +204,47 @@ %token F64MAT4X2 F64MAT4X3 F64MAT4X4 %token ATOMIC_UINT %token ACCSTRUCTNV -%token FCOOPMATNV +%token FCOOPMATNV ICOOPMATNV UCOOPMATNV // combined image/sampler -%token SAMPLER1D SAMPLER2D SAMPLER3D SAMPLERCUBE SAMPLER1DSHADOW SAMPLER2DSHADOW -%token SAMPLERCUBESHADOW SAMPLER1DARRAY SAMPLER2DARRAY SAMPLER1DARRAYSHADOW -%token SAMPLER2DARRAYSHADOW ISAMPLER1D ISAMPLER2D ISAMPLER3D ISAMPLERCUBE -%token ISAMPLER1DARRAY ISAMPLER2DARRAY USAMPLER1D USAMPLER2D USAMPLER3D -%token USAMPLERCUBE USAMPLER1DARRAY USAMPLER2DARRAY -%token SAMPLER2DRECT SAMPLER2DRECTSHADOW ISAMPLER2DRECT USAMPLER2DRECT -%token SAMPLERBUFFER ISAMPLERBUFFER USAMPLERBUFFER %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 -// pure sampler -%token SAMPLER SAMPLERSHADOW +// 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 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 @@ -213,25 +256,8 @@ %token SUBPASSINPUT SUBPASSINPUTMS ISUBPASSINPUT ISUBPASSINPUTMS USUBPASSINPUT USUBPASSINPUTMS %token F16SUBPASSINPUT F16SUBPASSINPUTMS -%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 -%token STRUCT VOID WHILE -%token IDENTIFIER TYPE_NAME -%token FLOATCONSTANT DOUBLECONSTANT INT16CONSTANT UINT16CONSTANT INT32CONSTANT UINT32CONSTANT INTCONSTANT UINTCONSTANT INT64CONSTANT UINT64CONSTANT BOOLCONSTANT FLOAT16CONSTANT %token LEFT_OP RIGHT_OP %token INC_OP DEC_OP LE_OP GE_OP EQ_OP NE_OP %token AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN @@ -242,11 +268,30 @@ %token COMMA COLON EQUAL SEMICOLON BANG DASH TILDE PLUS STAR SLASH PERCENT %token LEFT_ANGLE RIGHT_ANGLE VERTICAL_BAR CARET AMPERSAND QUESTION -%token INVARIANT PRECISE +%token INVARIANT %token HIGH_PRECISION MEDIUM_PRECISION LOW_PRECISION PRECISION - %token PACKED RESOURCE SUPERP +%token FLOATCONSTANT INTCONSTANT UINTCONSTANT BOOLCONSTANT +%token IDENTIFIER TYPE_NAME +%token CENTROID IN OUT INOUT +%token STRUCT VOID WHILE +%token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT +%token UNIFORM SHARED BUFFER +%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 %type expression integer_expression assignment_expression @@ -255,7 +300,7 @@ %type conditional_expression constant_expression %type logical_or_expression logical_xor_expression logical_and_expression %type shift_expression and_expression exclusive_or_expression inclusive_or_expression -%type function_call initializer initializer_list condition conditionopt +%type function_call initializer condition conditionopt %type translation_unit function_definition %type statement simple_statement @@ -265,15 +310,14 @@ %type declaration external_declaration %type for_init_statement compound_statement_no_new_scope %type selection_rest_statement for_rest_statement -%type iteration_statement iteration_statement_nonattributed jump_statement statement_no_new_scope statement_scoped demote_statement +%type iteration_statement iteration_statement_nonattributed jump_statement statement_no_new_scope statement_scoped %type single_declaration init_declarator_list %type parameter_declaration parameter_declarator parameter_type_specifier %type array_specifier -%type precise_qualifier invariant_qualifier interpolation_qualifier storage_qualifier precision_qualifier +%type invariant_qualifier interpolation_qualifier storage_qualifier precision_qualifier %type layout_qualifier layout_qualifier_id_list layout_qualifier_id -%type non_uniform_qualifier %type type_parameter_specifier %type type_parameter_specifier_opt @@ -284,7 +328,7 @@ %type type_specifier_nonarray %type struct_specifier %type struct_declarator -%type struct_declarator_list struct_declaration struct_declaration_list type_name_list +%type struct_declarator_list struct_declaration struct_declaration_list %type block_structure %type function_header function_declarator %type function_header_with_parameters @@ -293,7 +337,13 @@ %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 %% @@ -308,13 +358,13 @@ : variable_identifier { $$ = $1; } - | INT32CONSTANT { - parseContext.explicitInt32Check($1.loc, "32-bit signed literal"); - $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); + | LEFT_PAREN expression RIGHT_PAREN { + $$ = $2; + if ($$->getAsConstantUnion()) + $$->getAsConstantUnion()->setExpression(); } - | UINT32CONSTANT { - parseContext.explicitInt32Check($1.loc, "32-bit signed literal"); - $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); + | FLOATCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); } | INTCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); @@ -323,6 +373,18 @@ parseContext.fullIntegerCheck($1.loc, "unsigned literal"); $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); } + | BOOLCONSTANT { + $$ = 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); @@ -339,9 +401,6 @@ parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer literal"); $$ = parseContext.intermediate.addConstantUnion((unsigned short)$1.u, $1.loc, true); } - | FLOATCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); - } | DOUBLECONSTANT { parseContext.doubleCheck($1.loc, "double literal"); $$ = parseContext.intermediate.addConstantUnion($1.d, EbtDouble, $1.loc, true); @@ -350,14 +409,7 @@ parseContext.float16Check($1.loc, "half float literal"); $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat16, $1.loc, true); } - | BOOLCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); - } - | LEFT_PAREN expression RIGHT_PAREN { - $$ = $2; - if ($$->getAsConstantUnion()) - $$->getAsConstantUnion()->setExpression(); - } + ; postfix_expression @@ -483,11 +535,13 @@ $$.function = new TFunction(empty, TType(EbtVoid), EOpNull); } } + | non_uniform_qualifier { // Constructor $$.intermNode = 0; $$.function = parseContext.handleConstructorCall($1.loc, $1); } + ; unary_expression @@ -804,7 +858,6 @@ } | PRECISION precision_qualifier type_specifier SEMICOLON { parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "precision statement"); - // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); parseContext.setDefaultPrecision($1.loc, $3, $2.qualifier.precision); @@ -1048,7 +1101,9 @@ : fully_specified_type { $$.type = $1; $$.intermNode = 0; + parseContext.declareTypeDefaults($$.loc, $$.type); + } | fully_specified_type IDENTIFIER { $$.type = $1; @@ -1082,7 +1137,6 @@ parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); } - parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier); } | type_qualifier type_specifier { @@ -1135,38 +1189,30 @@ $$.init($1.loc); $$.qualifier.flat = true; } + | NOPERSPECTIVE { parseContext.globalCheck($1.loc, "noperspective"); -#ifdef NV_EXTENSIONS parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); -#else - parseContext.requireProfile($1.loc, ~EEsProfile, "noperspective"); -#endif parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "noperspective"); $$.init($1.loc); $$.qualifier.nopersp = true; } | EXPLICITINTERPAMD { -#ifdef AMD_EXTENSIONS 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; -#endif } | PERVERTEXNV { -#ifdef NV_EXTENSIONS 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; -#endif } | PERPRIMITIVENV { -#ifdef NV_EXTENSIONS // 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"); @@ -1175,26 +1221,22 @@ parseContext.requireExtensions($1.loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); $$.init($1.loc); $$.qualifier.perPrimitiveNV = true; -#endif } | PERVIEWNV { -#ifdef NV_EXTENSIONS // 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; -#endif } | PERTASKNV { -#ifdef NV_EXTENSIONS // 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; -#endif } + ; layout_qualifier @@ -1229,6 +1271,7 @@ } ; + precise_qualifier : PRECISE { parseContext.profileRequires($$.loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); @@ -1238,6 +1281,7 @@ } ; + type_qualifier : single_type_qualifier { $$ = $1; @@ -1271,6 +1315,7 @@ // allow inheritance of storage qualifier from block declaration $$ = $1; } + | precise_qualifier { // allow inheritance of storage qualifier from block declaration $$ = $1; @@ -1278,6 +1323,7 @@ | non_uniform_qualifier { $$ = $1; } + ; storage_qualifier @@ -1285,6 +1331,49 @@ $$.init($1.loc); $$.qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } + | INOUT { + parseContext.globalCheck($1.loc, "inout"); + $$.init($1.loc); + $$.qualifier.storage = EvqInOut; + } + | IN { + parseContext.globalCheck($1.loc, "in"); + $$.init($1.loc); + // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later + $$.qualifier.storage = EvqIn; + } + | OUT { + parseContext.globalCheck($1.loc, "out"); + $$.init($1.loc); + // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later + $$.qualifier.storage = EvqOut; + } + | CENTROID { + parseContext.profileRequires($1.loc, ENoProfile, 120, 0, "centroid"); + parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "centroid"); + parseContext.globalCheck($1.loc, "centroid"); + $$.init($1.loc); + $$.qualifier.centroid = true; + } + | UNIFORM { + parseContext.globalCheck($1.loc, "uniform"); + $$.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; + } + | 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"); @@ -1311,30 +1400,6 @@ else $$.qualifier.storage = EvqVaryingIn; } - | INOUT { - parseContext.globalCheck($1.loc, "inout"); - $$.init($1.loc); - $$.qualifier.storage = EvqInOut; - } - | IN { - parseContext.globalCheck($1.loc, "in"); - $$.init($1.loc); - // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later - $$.qualifier.storage = EvqIn; - } - | OUT { - parseContext.globalCheck($1.loc, "out"); - $$.init($1.loc); - // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later - $$.qualifier.storage = EvqOut; - } - | CENTROID { - parseContext.profileRequires($1.loc, ENoProfile, 120, 0, "centroid"); - parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "centroid"); - parseContext.globalCheck($1.loc, "centroid"); - $$.init($1.loc); - $$.qualifier.centroid = true; - } | PATCH { parseContext.globalCheck($1.loc, "patch"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); @@ -1346,76 +1411,44 @@ $$.init($1.loc); $$.qualifier.sample = true; } - | UNIFORM { - parseContext.globalCheck($1.loc, "uniform"); - $$.init($1.loc); - $$.qualifier.storage = EvqUniform; - } - | BUFFER { - parseContext.globalCheck($1.loc, "buffer"); - $$.init($1.loc); - $$.qualifier.storage = EvqBuffer; - } | HITATTRNV { -#ifdef NV_EXTENSIONS 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; -#endif } | PAYLOADNV { -#ifdef NV_EXTENSIONS 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; -#endif } | PAYLOADINNV { -#ifdef NV_EXTENSIONS 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; -#endif } | CALLDATANV { -#ifdef NV_EXTENSIONS 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; -#endif } | CALLDATAINNV { -#ifdef NV_EXTENSIONS 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; -#endif - } - | 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"); -#ifdef NV_EXTENSIONS - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); -#else - parseContext.requireStage($1.loc, EShLangCompute, "shared"); -#endif - $$.init($1.loc); - $$.qualifier.storage = EvqShared; } | COHERENT { $$.init($1.loc); @@ -1474,8 +1507,10 @@ parseContext.unimplemented($1.loc, "subroutine"); $$.init($1.loc); } + ; + non_uniform_qualifier : NONUNIFORM { $$.init($1.loc); @@ -1494,6 +1529,7 @@ } ; + type_specifier : type_specifier_nonarray type_parameter_specifier_opt { $$ = $1; @@ -1577,26 +1613,6 @@ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; } - | 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; - } | INT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; @@ -1606,15 +1622,163 @@ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint; } - | INT8_T { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); + | BOOL { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt8; + $$.basicType = EbtBool; } - | UINT8_T { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + | VEC2 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint8; + $$.basicType = EbtFloat; + $$.setVector(2); + } + | VEC3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setVector(3); + } + | VEC4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setVector(4); + } + | BVEC2 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtBool; + $$.setVector(2); + } + | BVEC3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtBool; + $$.setVector(3); + } + | BVEC4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtBool; + $$.setVector(4); + } + | IVEC2 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt; + $$.setVector(2); + } + | IVEC3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt; + $$.setVector(3); + } + | IVEC4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt; + $$.setVector(4); + } + | UVEC2 { + parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint; + $$.setVector(2); + } + | UVEC3 { + parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint; + $$.setVector(3); + } + | UVEC4 { + parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint; + $$.setVector(4); + } + | MAT2 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(2, 2); + } + | MAT3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(3, 3); + } + | MAT4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(4, 4); + } + | MAT2X2 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(2, 2); + } + | MAT2X3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(2, 3); + } + | MAT2X4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(2, 4); + } + | MAT3X2 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(3, 2); + } + | MAT3X3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(3, 3); + } + | MAT3X4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(3, 4); + } + | MAT4X2 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(4, 2); + } + | MAT4X3 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(4, 3); + } + | MAT4X4 { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.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()); @@ -1646,25 +1810,6 @@ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint64; } - | BOOL { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtBool; - } - | VEC2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setVector(2); - } - | VEC3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setVector(3); - } - | VEC4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setVector(4); - } | DVEC2 { parseContext.doubleCheck($1.loc, "double vector"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -1737,36 +1882,6 @@ $$.basicType = EbtDouble; $$.setVector(4); } - | BVEC2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtBool; - $$.setVector(2); - } - | BVEC3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtBool; - $$.setVector(3); - } - | BVEC4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtBool; - $$.setVector(4); - } - | IVEC2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.setVector(2); - } - | IVEC3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.setVector(3); - } - | IVEC4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.setVector(4); - } | I8VEC2 { parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -1839,24 +1954,6 @@ $$.basicType = EbtInt64; $$.setVector(4); } - | UVEC2 { - parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.setVector(2); - } - | UVEC3 { - parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.setVector(3); - } - | UVEC4 { - parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.setVector(4); - } | U8VEC2 { parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -1929,66 +2026,6 @@ $$.basicType = EbtUint64; $$.setVector(4); } - | MAT2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 2); - } - | MAT3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 3); - } - | MAT4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 4); - } - | MAT2X2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 2); - } - | MAT2X3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 3); - } - | MAT2X4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 4); - } - | MAT3X2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 2); - } - | MAT3X3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 3); - } - | MAT3X4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 4); - } - | MAT4X2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 2); - } - | MAT4X3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 3); - } - | MAT4X4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 4); - } | DMAT2 { parseContext.doubleCheck($1.loc, "double matrix"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2278,10 +2315,8 @@ $$.setMatrix(4, 4); } | ACCSTRUCTNV { -#ifdef NV_EXTENSIONS $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtAccStructNV; -#endif } | ATOMIC_UINT { parseContext.vulkanRemoved($1.loc, "atomic counter types"); @@ -2293,6 +2328,7 @@ $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd1D); } + | SAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2308,11 +2344,6 @@ $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdCube); } - | SAMPLER1DSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd1D, false, true); - } | SAMPLER2DSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2323,25 +2354,31 @@ $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdCube, false, true); } - | SAMPLER1DARRAY { + | SAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd1D, true); + $$.sampler.set(EbtFloat, Esd2D, true); } - | SAMPLER2DARRAY { + | SAMPLER2DARRAYSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, true); + $$.sampler.set(EbtFloat, Esd2D, true, true); } - | SAMPLER1DARRAYSHADOW { + + | SAMPLER1DSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd1D, true, true); + $$.sampler.set(EbtFloat, Esd1D, false, true); } - | SAMPLER2DARRAYSHADOW { + | SAMPLER1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, true, true); + $$.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()); @@ -2354,179 +2391,242 @@ $$.sampler.set(EbtFloat, EsdCube, true, true); } | F16SAMPLER1D { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd1D); -#endif } | F16SAMPLER2D { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd2D); -#endif } | F16SAMPLER3D { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, Esd3D); -#endif } | F16SAMPLERCUBE { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, EsdCube); -#endif } - | F16SAMPLER1DSHADOW { -#ifdef AMD_EXTENSIONS - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + | 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; + $$.sampler.set(EbtInt, Esd2D); + } + | ISAMPLER3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, Esd3D); + } + | ISAMPLERCUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, EsdCube); + } + | ISAMPLER2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, Esd2D, true); + } + | USAMPLER2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, Esd2D); + } + | USAMPLER3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, Esd3D); + } + | USAMPLERCUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, EsdCube); + } + + | ISAMPLER1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd1D, false, true); -#endif + $$.sampler.set(EbtInt, Esd1D, true); } - | F16SAMPLER2DSHADOW { -#ifdef AMD_EXTENSIONS - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + | ISAMPLERCUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D, false, true); -#endif + $$.sampler.set(EbtInt, EsdCube, true); } - | F16SAMPLERCUBESHADOW { -#ifdef AMD_EXTENSIONS - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + | USAMPLER1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdCube, false, true); -#endif + $$.sampler.set(EbtUint, Esd1D); } - | F16SAMPLER1DARRAY { -#ifdef AMD_EXTENSIONS - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + | USAMPLER1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd1D, true); -#endif + $$.sampler.set(EbtUint, Esd1D, true); } - | F16SAMPLER2DARRAY { -#ifdef AMD_EXTENSIONS - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + | USAMPLERCUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D, true); -#endif + $$.sampler.set(EbtUint, EsdCube, true); } - | F16SAMPLER1DARRAYSHADOW { -#ifdef AMD_EXTENSIONS - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + | TEXTURECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd1D, true, true); -#endif + $$.sampler.setTexture(EbtFloat, EsdCube, true); } - | F16SAMPLER2DARRAYSHADOW { -#ifdef AMD_EXTENSIONS - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + | ITEXTURECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D, true, true); -#endif + $$.sampler.setTexture(EbtInt, EsdCube, true); } - | F16SAMPLERCUBEARRAY { -#ifdef AMD_EXTENSIONS - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + | UTEXTURECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdCube, true); -#endif + $$.sampler.setTexture(EbtUint, EsdCube, true); } - | F16SAMPLERCUBEARRAYSHADOW { -#ifdef AMD_EXTENSIONS - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + + | USAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdCube, true, true); -#endif + $$.sampler.set(EbtUint, Esd2D, true); } - | ISAMPLER1D { + | TEXTURE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd1D); + $$.sampler.setTexture(EbtFloat, Esd2D); } - | ISAMPLER2D { + | TEXTURE3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd2D); + $$.sampler.setTexture(EbtFloat, Esd3D); } - | ISAMPLER3D { + | TEXTURE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd3D); + $$.sampler.setTexture(EbtFloat, Esd2D, true); } - | ISAMPLERCUBE { + | TEXTURECUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, EsdCube); + $$.sampler.setTexture(EbtFloat, EsdCube); } - | ISAMPLER1DARRAY { + | ITEXTURE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd1D, true); + $$.sampler.setTexture(EbtInt, Esd2D); } - | ISAMPLER2DARRAY { + | ITEXTURE3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd2D, true); + $$.sampler.setTexture(EbtInt, Esd3D); } - | ISAMPLERCUBEARRAY { + | ITEXTURECUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, EsdCube, true); + $$.sampler.setTexture(EbtInt, EsdCube); } - | USAMPLER1D { + | ITEXTURE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd1D); + $$.sampler.setTexture(EbtInt, Esd2D, true); } - | USAMPLER2D { + | UTEXTURE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd2D); + $$.sampler.setTexture(EbtUint, Esd2D); } - | USAMPLER3D { + | UTEXTURE3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd3D); + $$.sampler.setTexture(EbtUint, Esd3D); } - | USAMPLERCUBE { + | UTEXTURECUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdCube); + $$.sampler.setTexture(EbtUint, EsdCube); } - | USAMPLER1DARRAY { + | UTEXTURE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd1D, true); + $$.sampler.setTexture(EbtUint, Esd2D, true); } - | USAMPLER2DARRAY { + | SAMPLER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd2D, true); + $$.sampler.setPureSampler(false); } - | USAMPLERCUBEARRAY { + | SAMPLERSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdCube, true); + $$.sampler.setPureSampler(true); } + | SAMPLER2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2538,20 +2638,16 @@ $$.sampler.set(EbtFloat, EsdRect, false, true); } | F16SAMPLER2DRECT { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, EsdRect); -#endif } | F16SAMPLER2DRECTSHADOW { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, EsdRect, false, true); -#endif } | ISAMPLER2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2569,12 +2665,10 @@ $$.sampler.set(EbtFloat, EsdBuffer); } | F16SAMPLERBUFFER { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtFloat16, EsdBuffer); -#endif } | ISAMPLERBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2592,12 +2686,10 @@ $$.sampler.set(EbtFloat, Esd2D, false, false, true); } | F16SAMPLER2DMS { -#ifdef AMD_EXTENSIONS 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); -#endif } | ISAMPLER2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2615,12 +2707,10 @@ $$.sampler.set(EbtFloat, Esd2D, true, false, true); } | F16SAMPLER2DMSARRAY { -#ifdef AMD_EXTENSIONS 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); -#endif } | ISAMPLER2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2632,67 +2722,34 @@ $$.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 { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd1D); -#endif - } - | TEXTURE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D); } | F16TEXTURE2D { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd2D); -#endif - } - | TEXTURE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd3D); } | F16TEXTURE3D { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd3D); -#endif - } - | TEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdCube); } | F16TEXTURECUBE { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, EsdCube); -#endif } | TEXTURE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2700,121 +2757,53 @@ $$.sampler.setTexture(EbtFloat, Esd1D, true); } | F16TEXTURE1DARRAY { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd1D, true); -#endif - } - | TEXTURE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D, true); } | F16TEXTURE2DARRAY { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd2D, true); -#endif - } - | TEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdCube, true); } | F16TEXTURECUBEARRAY { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, EsdCube, true); -#endif } | ITEXTURE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.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; $$.sampler.setTexture(EbtFloat, EsdRect); } | F16TEXTURE2DRECT { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, EsdRect); -#endif } | ITEXTURE2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2832,12 +2821,10 @@ $$.sampler.setTexture(EbtFloat, EsdBuffer); } | F16TEXTUREBUFFER { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, EsdBuffer); -#endif } | ITEXTUREBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2855,12 +2842,10 @@ $$.sampler.setTexture(EbtFloat, Esd2D, false, false, true); } | F16TEXTURE2DMS { -#ifdef AMD_EXTENSIONS 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); -#endif } | ITEXTURE2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2878,12 +2863,10 @@ $$.sampler.setTexture(EbtFloat, Esd2D, true, false, true); } | F16TEXTURE2DMSARRAY { -#ifdef AMD_EXTENSIONS 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); -#endif } | ITEXTURE2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2901,12 +2884,10 @@ $$.sampler.setImage(EbtFloat, Esd1D); } | F16IMAGE1D { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, Esd1D); -#endif } | IIMAGE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2924,12 +2905,10 @@ $$.sampler.setImage(EbtFloat, Esd2D); } | F16IMAGE2D { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, Esd2D); -#endif } | IIMAGE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2947,12 +2926,10 @@ $$.sampler.setImage(EbtFloat, Esd3D); } | F16IMAGE3D { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, Esd3D); -#endif } | IIMAGE3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2970,12 +2947,10 @@ $$.sampler.setImage(EbtFloat, EsdRect); } | F16IMAGE2DRECT { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, EsdRect); -#endif } | IIMAGE2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2993,12 +2968,10 @@ $$.sampler.setImage(EbtFloat, EsdCube); } | F16IMAGECUBE { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, EsdCube); -#endif } | IIMAGECUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -3016,12 +2989,10 @@ $$.sampler.setImage(EbtFloat, EsdBuffer); } | F16IMAGEBUFFER { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, EsdBuffer); -#endif } | IIMAGEBUFFER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -3039,12 +3010,10 @@ $$.sampler.setImage(EbtFloat, Esd1D, true); } | F16IMAGE1DARRAY { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, Esd1D, true); -#endif } | IIMAGE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -3062,12 +3031,10 @@ $$.sampler.setImage(EbtFloat, Esd2D, true); } | F16IMAGE2DARRAY { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, Esd2D, true); -#endif } | IIMAGE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -3085,12 +3052,10 @@ $$.sampler.setImage(EbtFloat, EsdCube, true); } | F16IMAGECUBEARRAY { -#ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setImage(EbtFloat16, EsdCube, true); -#endif } | IIMAGECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -3108,12 +3073,10 @@ $$.sampler.setImage(EbtFloat, Esd2D, false, false, true); } | F16IMAGE2DMS { -#ifdef AMD_EXTENSIONS 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); -#endif } | IIMAGE2DMS { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -3131,12 +3094,10 @@ $$.sampler.setImage(EbtFloat, Esd2D, true, false, true); } | F16IMAGE2DMSARRAY { -#ifdef AMD_EXTENSIONS 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); -#endif } | IIMAGE2DMSARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -3173,22 +3134,18 @@ $$.sampler.setSubpass(EbtFloat, true); } | F16SUBPASSINPUT { -#ifdef AMD_EXTENSIONS 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); -#endif } | F16SUBPASSINPUTMS { -#ifdef AMD_EXTENSIONS 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); -#endif } | ISUBPASSINPUT { parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); @@ -3220,6 +3177,19 @@ $$.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; @@ -3300,7 +3270,7 @@ if ($1.arraySizes) { parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); - if (parseContext.profile == EEsProfile) + if (parseContext.isEsProfile()) parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); } @@ -3322,7 +3292,7 @@ if ($2.arraySizes) { parseContext.profileRequires($2.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires($2.loc, EEsProfile, 300, 0, "arrayed type"); - if (parseContext.profile == EEsProfile) + if (parseContext.isEsProfile()) parseContext.arraySizeRequiredCheck($2.loc, *$2.arraySizes); } @@ -3374,6 +3344,7 @@ : assignment_expression { $$ = $1; } + | LEFT_BRACE initializer_list RIGHT_BRACE { const char* initFeature = "{ } style initializers"; parseContext.requireProfile($1.loc, ~EEsProfile, initFeature); @@ -3386,8 +3357,10 @@ parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); $$ = $2; } + ; + initializer_list : initializer { $$ = parseContext.intermediate.growAggregate(0, $1, $1->getLoc()); @@ -3397,6 +3370,7 @@ } ; + declaration_statement : declaration { $$ = $1; } ; @@ -3416,9 +3390,12 @@ | case_label { $$ = $1; } | iteration_statement { $$ = $1; } | jump_statement { $$ = $1; } + | demote_statement { $$ = $1; } + ; + demote_statement : DEMOTE SEMICOLON { parseContext.requireStage($1.loc, EShLangFragment, "demote"); @@ -3427,6 +3404,7 @@ } ; + compound_statement : LEFT_BRACE RIGHT_BRACE { $$ = 0; } | LEFT_BRACE { @@ -3509,11 +3487,13 @@ : selection_statement_nonattributed { $$ = $1; } + | attribute selection_statement_nonattributed { parseContext.handleSelectionAttributes(*$1, $2); $$ = $2; } + selection_statement_nonattributed : IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement { parseContext.boolCheck($1.loc, $3); @@ -3554,11 +3534,13 @@ : switch_statement_nonattributed { $$ = $1; } + | attribute switch_statement_nonattributed { parseContext.handleSwitchAttributes(*$1, $2); $$ = $2; } + switch_statement_nonattributed : SWITCH LEFT_PAREN expression RIGHT_PAREN { // start new switch sequence on the switch stack @@ -3616,11 +3598,13 @@ : iteration_statement_nonattributed { $$ = $1; } + | attribute iteration_statement_nonattributed { parseContext.handleLoopAttributes(*$1, $2); $$ = $2; } + iteration_statement_nonattributed : WHILE LEFT_PAREN { if (! parseContext.limits.whileLoops) @@ -3751,11 +3735,13 @@ | declaration { $$ = $1; } + | SEMICOLON { parseContext.requireProfile($1.loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires($1.loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); $$ = nullptr; } + ; function_definition @@ -3780,6 +3766,7 @@ } ; + attribute : LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET { $$ = $3; @@ -3802,4 +3789,5 @@ $$ = parseContext.makeAttributes(*$1.string, $3); } + %% diff -Nru glslang-7.12.3352/glslang/MachineIndependent/gl_types.h glslang-8.13.3559/glslang/MachineIndependent/gl_types.h --- glslang-7.12.3352/glslang/MachineIndependent/gl_types.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/gl_types.h 2020-01-06 14:50:40.000000000 +0000 @@ -78,7 +78,6 @@ #define GL_DOUBLE_MAT4x2 0x8F4D #define GL_DOUBLE_MAT4x3 0x8F4E -#ifdef AMD_EXTENSIONS // Those constants are borrowed from extension NV_gpu_shader5 #define GL_FLOAT16_NV 0x8FF8 #define GL_FLOAT16_VEC2_NV 0x8FF9 @@ -94,7 +93,6 @@ #define GL_FLOAT16_MAT3x4_AMD 0x91CB #define GL_FLOAT16_MAT4x2_AMD 0x91CC #define GL_FLOAT16_MAT4x3_AMD 0x91CD -#endif #define GL_SAMPLER_1D 0x8B5D #define GL_SAMPLER_2D 0x8B5E @@ -117,7 +115,6 @@ #define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C #define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D -#ifdef AMD_EXTENSIONS #define GL_FLOAT16_SAMPLER_1D_AMD 0x91CE #define GL_FLOAT16_SAMPLER_2D_AMD 0x91CF #define GL_FLOAT16_SAMPLER_3D_AMD 0x91D0 @@ -149,7 +146,6 @@ #define GL_FLOAT16_IMAGE_BUFFER_AMD 0x91E8 #define GL_FLOAT16_IMAGE_2D_MULTISAMPLE_AMD 0x91E9 #define GL_FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD 0x91EA -#endif #define GL_INT_SAMPLER_1D 0x8DC9 #define GL_INT_SAMPLER_2D 0x8DCA diff -Nru glslang-7.12.3352/glslang/MachineIndependent/Initialize.cpp glslang-8.13.3559/glslang/MachineIndependent/Initialize.cpp --- glslang-7.12.3352/glslang/MachineIndependent/Initialize.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/Initialize.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -64,6 +64,420 @@ // Using PureOperatorBuiltins=false is deprecated. bool PureOperatorBuiltins = true; +namespace { + +// +// A set of definitions for tabling of the built-in functions. +// + +// Order matters here, as does correlation with the subsequent +// "const int ..." declarations and the ArgType enumerants. +const char* TypeString[] = { + "bool", "bvec2", "bvec3", "bvec4", + "float", "vec2", "vec3", "vec4", + "int", "ivec2", "ivec3", "ivec4", + "uint", "uvec2", "uvec3", "uvec4", +}; +const int TypeStringCount = sizeof(TypeString) / sizeof(char*); // number of entries in 'TypeString' +const int TypeStringRowShift = 2; // shift amount to go downe one row in 'TypeString' +const int TypeStringColumnMask = (1 << TypeStringRowShift) - 1; // reduce type to its column number in 'TypeString' +const int TypeStringScalarMask = ~TypeStringColumnMask; // take type to its scalar column in 'TypeString' + +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 +}; +// Mixtures of the above, to help the function tables +const ArgType TypeFI = static_cast(TypeF | TypeI); +const ArgType TypeFIB = static_cast(TypeF | TypeI | TypeB); +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 +}; +// Mixtures of the above, to help the function tables +const ArgClass ClassV1FIOCV = (ArgClass)(ClassV1 | ClassFIO | ClassCV); +const ArgClass ClassV1FOCV = (ArgClass)(ClassV1 | ClassFO | ClassCV); +const ArgClass ClassV1CV = (ArgClass)(ClassV1 | ClassCV); +const ArgClass ClassBNS = (ArgClass)(ClassB | ClassNS); +const ArgClass ClassRSNS = (ArgClass)(ClassRS | ClassNS); + +// A descriptor, for a single profile, of when something is available. +// If the current profile does not match 'profile' mask below, the other fields +// do not apply (nor validate). +// profiles == EBadProfile is the end of an array of these +struct Versioning { + EProfile profiles; // the profile(s) (mask) that the following fields are valid for + int minExtendedVersion; // earliest version when extensions are enabled; ignored if numExtensions is 0 + int minCoreVersion; // earliest version function is in core; 0 means never + int numExtensions; // how many extensions are in the 'extensions' list + const char** extensions; // list of extension names enabling the function +}; + +EProfile EDesktopProfile = static_cast(ENoProfile | ECoreProfile | ECompatibilityProfile); + +// Declare pointers to put into the table for versioning. +#ifdef GLSLANG_WEB + const Versioning* Es300Desktop130 = nullptr; + 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 } }; + const Versioning* Es310Desktop450 = &Es310Desktop450Version[0]; +#endif + +// The main descriptor of what a set of function prototypes can look like, and +// a pointer to extra versioning information, when needed. +struct BuiltInFunction { + TOperator op; // operator to map the name to + const char* name; // function name + int numArguments; // number of arguments (overloads with varying arguments need different entries) + ArgType types; // ArgType mask + ArgClass classes; // the ways this particular function entry manifests + const Versioning* versioning; // nullptr means always a valid version +}; + +// The tables can have the same built-in function name more than one time, +// but the exact same prototype must be indicated at most once. +// The prototypes that get declared are the union of all those indicated. +// This is important when different releases add new prototypes for the same name. +// It also also congnitively simpler tiling of the prototype space. +// In practice, most names can be fully represented with one entry. +// +// Table is terminated by an OpNull TOperator. + +const BuiltInFunction BaseFunctions[] = { +// TOperator, name, arg-count, ArgType, ArgClass, versioning +// --------- ---- --------- ------- -------- ---------- + { EOpRadians, "radians", 1, TypeF, ClassRegular, nullptr }, + { EOpDegrees, "degrees", 1, TypeF, ClassRegular, nullptr }, + { EOpSin, "sin", 1, TypeF, ClassRegular, nullptr }, + { EOpCos, "cos", 1, TypeF, ClassRegular, nullptr }, + { EOpTan, "tan", 1, TypeF, ClassRegular, nullptr }, + { EOpAsin, "asin", 1, TypeF, ClassRegular, nullptr }, + { EOpAcos, "acos", 1, TypeF, ClassRegular, nullptr }, + { EOpAtan, "atan", 2, TypeF, ClassRegular, nullptr }, + { EOpAtan, "atan", 1, TypeF, ClassRegular, nullptr }, + { EOpPow, "pow", 2, TypeF, ClassRegular, nullptr }, + { EOpExp, "exp", 1, TypeF, ClassRegular, nullptr }, + { EOpLog, "log", 1, TypeF, ClassRegular, nullptr }, + { EOpExp2, "exp2", 1, TypeF, ClassRegular, nullptr }, + { EOpLog2, "log2", 1, TypeF, ClassRegular, nullptr }, + { EOpSqrt, "sqrt", 1, TypeF, ClassRegular, nullptr }, + { EOpInverseSqrt, "inversesqrt", 1, TypeF, ClassRegular, nullptr }, + { EOpAbs, "abs", 1, TypeF, ClassRegular, nullptr }, + { EOpSign, "sign", 1, TypeF, ClassRegular, nullptr }, + { EOpFloor, "floor", 1, TypeF, ClassRegular, nullptr }, + { EOpCeil, "ceil", 1, TypeF, ClassRegular, nullptr }, + { EOpFract, "fract", 1, TypeF, ClassRegular, nullptr }, + { EOpMod, "mod", 2, TypeF, ClassLS, nullptr }, + { EOpMin, "min", 2, TypeF, ClassLS, nullptr }, + { EOpMax, "max", 2, TypeF, ClassLS, nullptr }, + { EOpClamp, "clamp", 3, TypeF, ClassLS2, nullptr }, + { EOpMix, "mix", 3, TypeF, ClassLS, nullptr }, + { EOpStep, "step", 2, TypeF, ClassFS, nullptr }, + { EOpSmoothStep, "smoothstep", 3, TypeF, ClassFS2, nullptr }, + { EOpNormalize, "normalize", 1, TypeF, ClassRegular, nullptr }, + { EOpFaceForward, "faceforward", 3, TypeF, ClassRegular, nullptr }, + { EOpReflect, "reflect", 2, TypeF, ClassRegular, nullptr }, + { EOpRefract, "refract", 3, TypeF, ClassXLS, nullptr }, + { EOpLength, "length", 1, TypeF, ClassRS, nullptr }, + { EOpDistance, "distance", 2, TypeF, ClassRS, nullptr }, + { EOpDot, "dot", 2, TypeF, ClassRS, nullptr }, + { EOpCross, "cross", 2, TypeF, ClassV3, nullptr }, + { EOpLessThan, "lessThan", 2, TypeFI, ClassBNS, nullptr }, + { EOpLessThanEqual, "lessThanEqual", 2, TypeFI, ClassBNS, nullptr }, + { EOpGreaterThan, "greaterThan", 2, TypeFI, ClassBNS, nullptr }, + { EOpGreaterThanEqual, "greaterThanEqual", 2, TypeFI, ClassBNS, nullptr }, + { EOpVectorEqual, "equal", 2, TypeFIB, ClassBNS, nullptr }, + { EOpVectorNotEqual, "notEqual", 2, TypeFIB, ClassBNS, nullptr }, + { EOpAny, "any", 1, TypeB, ClassRSNS, nullptr }, + { EOpAll, "all", 1, TypeB, ClassRSNS, nullptr }, + { EOpVectorLogicalNot, "not", 1, TypeB, ClassNS, nullptr }, + { EOpSinh, "sinh", 1, TypeF, ClassRegular, Es300Desktop130 }, + { EOpCosh, "cosh", 1, TypeF, ClassRegular, Es300Desktop130 }, + { EOpTanh, "tanh", 1, TypeF, ClassRegular, Es300Desktop130 }, + { EOpAsinh, "asinh", 1, TypeF, ClassRegular, Es300Desktop130 }, + { EOpAcosh, "acosh", 1, TypeF, ClassRegular, Es300Desktop130 }, + { EOpAtanh, "atanh", 1, TypeF, ClassRegular, Es300Desktop130 }, + { EOpAbs, "abs", 1, TypeI, ClassRegular, Es300Desktop130 }, + { EOpSign, "sign", 1, TypeI, ClassRegular, Es300Desktop130 }, + { EOpTrunc, "trunc", 1, TypeF, ClassRegular, Es300Desktop130 }, + { EOpRound, "round", 1, TypeF, ClassRegular, Es300Desktop130 }, + { EOpRoundEven, "roundEven", 1, TypeF, ClassRegular, Es300Desktop130 }, + { EOpModf, "modf", 2, TypeF, ClassLO, Es300Desktop130 }, + { EOpMin, "min", 2, TypeIU, ClassLS, Es300Desktop130 }, + { EOpMax, "max", 2, TypeIU, ClassLS, Es300Desktop130 }, + { EOpClamp, "clamp", 3, TypeIU, ClassLS2, Es300Desktop130 }, + { EOpMix, "mix", 3, TypeF, ClassLB, Es300Desktop130 }, + { EOpIsInf, "isinf", 1, TypeF, ClassB, Es300Desktop130 }, + { EOpIsNan, "isnan", 1, TypeF, ClassB, Es300Desktop130 }, + { EOpLessThan, "lessThan", 2, TypeU, ClassBNS, Es300Desktop130 }, + { EOpLessThanEqual, "lessThanEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, + { EOpGreaterThan, "greaterThan", 2, TypeU, ClassBNS, Es300Desktop130 }, + { EOpGreaterThanEqual, "greaterThanEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, + { EOpVectorEqual, "equal", 2, TypeU, ClassBNS, Es300Desktop130 }, + { EOpVectorNotEqual, "notEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, + { EOpAtomicAdd, "atomicAdd", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, + { EOpAtomicMin, "atomicMin", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, + { EOpAtomicMax, "atomicMax", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, + { EOpAtomicAnd, "atomicAnd", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, + { EOpAtomicOr, "atomicOr", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, + { 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 + + { EOpNull } +}; + +const BuiltInFunction DerivativeFunctions[] = { + { EOpDPdx, "dFdx", 1, TypeF, ClassRegular, nullptr }, + { EOpDPdy, "dFdy", 1, TypeF, ClassRegular, nullptr }, + { EOpFwidth, "fwidth", 1, TypeF, ClassRegular, nullptr }, + { 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) +{ + const auto isScalarType = [](int type) { return (type & TypeStringColumnMask) == 0; }; + + // loop across these two: + // 0: the varying arg set, and + // 1: the fixed scalar args + const ArgClass ClassFixed = (ArgClass)(ClassLS | ClassXLS | ClassLS2 | ClassFS | ClassFS2); + for (int fixed = 0; fixed < ((function.classes & ClassFixed) > 0 ? 2 : 1); ++fixed) { + + if (fixed == 0 && (function.classes & ClassXLS)) + continue; + + // walk the type strings in TypeString[] + for (int type = 0; type < TypeStringCount; ++type) { + // skip types not selected: go from type to row number to type bit + if ((function.types & (1 << (type >> TypeStringRowShift))) == 0) + continue; + + // if we aren't on a scalar, and should be, skip + if ((function.classes & ClassV1) && !isScalarType(type)) + continue; + + // if we aren't on a 3-vector, and should be, skip + if ((function.classes & ClassV3) && (type & TypeStringColumnMask) != 2) + continue; + + // skip replication of all arg scalars between the varying arg set and the fixed args + if (fixed == 1 && type == (type & TypeStringScalarMask) && (function.classes & ClassXLS) == 0) + continue; + + // skip scalars when we are told to + if ((function.classes & ClassNS) && isScalarType(type)) + continue; + + // return type + if (function.classes & ClassB) + decls.append(TypeString[type & TypeStringColumnMask]); + else if (function.classes & ClassRS) + decls.append(TypeString[type & TypeStringScalarMask]); + else + decls.append(TypeString[type]); + decls.append(" "); + decls.append(function.name); + decls.append("("); + + // arguments + for (int arg = 0; arg < function.numArguments; ++arg) { + 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) + decls.append("out "); + } + if ((function.classes & ClassLB) && arg == function.numArguments - 1) + decls.append(TypeString[type & TypeStringColumnMask]); + else if (fixed && ((arg == function.numArguments - 1 && (function.classes & (ClassLS | ClassXLS | + ClassLS2))) || + (arg == function.numArguments - 2 && (function.classes & ClassLS2)) || + (arg == 0 && (function.classes & (ClassFS | ClassFS2))) || + (arg == 1 && (function.classes & ClassFS2)))) + decls.append(TypeString[type & TypeStringScalarMask]); + else + decls.append(TypeString[type]); + if (arg < function.numArguments - 1) + decls.append(","); + } + decls.append(");\n"); + } + } +} + +// See if the tabled versioning information allows the current version. +bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile, const SpvVersion& /* spVersion */) +{ +#ifdef GLSLANG_WEB + // all entries in table are valid + return true; +#endif + + // nullptr means always valid + if (function.versioning == nullptr) + return true; + + // check for what is said about our current profile + for (const Versioning* v = function.versioning; v->profiles != EBadProfile; ++v) { + if ((v->profiles & profile) != 0) { + if (v->minCoreVersion <= version || (v->numExtensions > 0 && v->minExtendedVersion <= version)) + return true; + } + } + + return false; +} + +// 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 subtleties +// to get correct if instead trying to do it surgically. +template +void RelateTabledBuiltins(const FunctionT* functions, TSymbolTable& symbolTable) +{ + while (functions->op != EOpNull) { + symbolTable.relateToOperator(functions->name, functions->op); + ++functions; + } +} + +} // end anonymous namespace + +// Add declarations for all tables of built-in functions. +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, spvVersion)) + AddTabledBuiltin(decls, *function); + ++function; + } + }; + + forEachFunction(commonBuiltins, BaseFunctions); + forEachFunction(stageBuiltins[EShLangFragment], DerivativeFunctions); + + if ((profile == EEsProfile && version >= 320) || (profile != EEsProfile && version >= 450)) + forEachFunction(stageBuiltins[EShLangCompute], DerivativeFunctions); +} + +// Relate all tables of built-ins to the AST operators. +void TBuiltIns::relateTabledBuiltins(int /* version */, EProfile /* profile */, const SpvVersion& /* spvVersion */, EShLanguage /* stage */, TSymbolTable& symbolTable) +{ + RelateTabledBuiltins(BaseFunctions, symbolTable); + RelateTabledBuiltins(DerivativeFunctions, symbolTable); + RelateTabledBuiltins(CustomFunctions, symbolTable); +} + inline bool IncludeLegacy(int version, EProfile profile, const SpvVersion& spvVersion) { return profile != EEsProfile && (version <= 130 || (spvVersion.spv == 0 && ARBCompatibility) || profile == ECompatibilityProfile); @@ -84,27 +498,30 @@ // Set up textual representations for making all the permutations // of texturing/imaging functions. prefixes[EbtFloat] = ""; -#ifdef AMD_EXTENSIONS + prefixes[EbtInt] = "i"; + prefixes[EbtUint] = "u"; +#ifndef GLSLANG_WEB prefixes[EbtFloat16] = "f16"; -#endif prefixes[EbtInt8] = "i8"; prefixes[EbtUint8] = "u8"; prefixes[EbtInt16] = "i16"; prefixes[EbtUint16] = "u16"; - prefixes[EbtInt] = "i"; - prefixes[EbtUint] = "u"; +#endif + postfixes[2] = "2"; postfixes[3] = "3"; postfixes[4] = "4"; // Map from symbolic class of texturing dimension to numeric dimensions. - dimMap[Esd1D] = 1; dimMap[Esd2D] = 2; - dimMap[EsdRect] = 2; dimMap[Esd3D] = 3; dimMap[EsdCube] = 3; +#ifndef GLSLANG_WEB + dimMap[Esd1D] = 1; + dimMap[EsdRect] = 2; dimMap[EsdBuffer] = 1; - dimMap[EsdSubpass] = 2; // potientially unused for now + dimMap[EsdSubpass] = 2; // potentially unused for now +#endif } TBuiltIns::~TBuiltIns() @@ -122,32 +539,22 @@ // void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvVersion) { +#ifdef GLSLANG_WEB + version = 310; + profile = EEsProfile; +#endif + addTabledBuiltins(version, profile, spvVersion); + //============================================================================ // // Prototypes for built-in functions used repeatly by different shaders // //============================================================================ +#ifndef GLSLANG_WEB // // Derivatives Functions. // - TString derivatives ( - "float dFdx(float p);" - "vec2 dFdx(vec2 p);" - "vec3 dFdx(vec3 p);" - "vec4 dFdx(vec4 p);" - - "float dFdy(float p);" - "vec2 dFdy(vec2 p);" - "vec3 dFdy(vec3 p);" - "vec4 dFdy(vec4 p);" - - "float fwidth(float p);" - "vec2 fwidth(vec2 p);" - "vec3 fwidth(vec3 p);" - "vec4 fwidth(vec4 p);" - ); - TString derivativeControls ( "float dFdxFine(float p);" "vec2 dFdxFine(vec2 p);" @@ -281,318 +688,6 @@ //============================================================================ // - // Angle and Trigonometric Functions. - // - commonBuiltins.append( - "float radians(float degrees);" - "vec2 radians(vec2 degrees);" - "vec3 radians(vec3 degrees);" - "vec4 radians(vec4 degrees);" - - "float degrees(float radians);" - "vec2 degrees(vec2 radians);" - "vec3 degrees(vec3 radians);" - "vec4 degrees(vec4 radians);" - - "float sin(float angle);" - "vec2 sin(vec2 angle);" - "vec3 sin(vec3 angle);" - "vec4 sin(vec4 angle);" - - "float cos(float angle);" - "vec2 cos(vec2 angle);" - "vec3 cos(vec3 angle);" - "vec4 cos(vec4 angle);" - - "float tan(float angle);" - "vec2 tan(vec2 angle);" - "vec3 tan(vec3 angle);" - "vec4 tan(vec4 angle);" - - "float asin(float x);" - "vec2 asin(vec2 x);" - "vec3 asin(vec3 x);" - "vec4 asin(vec4 x);" - - "float acos(float x);" - "vec2 acos(vec2 x);" - "vec3 acos(vec3 x);" - "vec4 acos(vec4 x);" - - "float atan(float y, float x);" - "vec2 atan(vec2 y, vec2 x);" - "vec3 atan(vec3 y, vec3 x);" - "vec4 atan(vec4 y, vec4 x);" - - "float atan(float y_over_x);" - "vec2 atan(vec2 y_over_x);" - "vec3 atan(vec3 y_over_x);" - "vec4 atan(vec4 y_over_x);" - - "\n"); - - if (version >= 130) { - commonBuiltins.append( - "float sinh(float angle);" - "vec2 sinh(vec2 angle);" - "vec3 sinh(vec3 angle);" - "vec4 sinh(vec4 angle);" - - "float cosh(float angle);" - "vec2 cosh(vec2 angle);" - "vec3 cosh(vec3 angle);" - "vec4 cosh(vec4 angle);" - - "float tanh(float angle);" - "vec2 tanh(vec2 angle);" - "vec3 tanh(vec3 angle);" - "vec4 tanh(vec4 angle);" - - "float asinh(float x);" - "vec2 asinh(vec2 x);" - "vec3 asinh(vec3 x);" - "vec4 asinh(vec4 x);" - - "float acosh(float x);" - "vec2 acosh(vec2 x);" - "vec3 acosh(vec3 x);" - "vec4 acosh(vec4 x);" - - "float atanh(float y_over_x);" - "vec2 atanh(vec2 y_over_x);" - "vec3 atanh(vec3 y_over_x);" - "vec4 atanh(vec4 y_over_x);" - - "\n"); - } - - // - // Exponential Functions. - // - commonBuiltins.append( - "float pow(float x, float y);" - "vec2 pow(vec2 x, vec2 y);" - "vec3 pow(vec3 x, vec3 y);" - "vec4 pow(vec4 x, vec4 y);" - - "float exp(float x);" - "vec2 exp(vec2 x);" - "vec3 exp(vec3 x);" - "vec4 exp(vec4 x);" - - "float log(float x);" - "vec2 log(vec2 x);" - "vec3 log(vec3 x);" - "vec4 log(vec4 x);" - - "float exp2(float x);" - "vec2 exp2(vec2 x);" - "vec3 exp2(vec3 x);" - "vec4 exp2(vec4 x);" - - "float log2(float x);" - "vec2 log2(vec2 x);" - "vec3 log2(vec3 x);" - "vec4 log2(vec4 x);" - - "float sqrt(float x);" - "vec2 sqrt(vec2 x);" - "vec3 sqrt(vec3 x);" - "vec4 sqrt(vec4 x);" - - "float inversesqrt(float x);" - "vec2 inversesqrt(vec2 x);" - "vec3 inversesqrt(vec3 x);" - "vec4 inversesqrt(vec4 x);" - - "\n"); - - // - // Common Functions. - // - commonBuiltins.append( - "float abs(float x);" - "vec2 abs(vec2 x);" - "vec3 abs(vec3 x);" - "vec4 abs(vec4 x);" - - "float sign(float x);" - "vec2 sign(vec2 x);" - "vec3 sign(vec3 x);" - "vec4 sign(vec4 x);" - - "float floor(float x);" - "vec2 floor(vec2 x);" - "vec3 floor(vec3 x);" - "vec4 floor(vec4 x);" - - "float ceil(float x);" - "vec2 ceil(vec2 x);" - "vec3 ceil(vec3 x);" - "vec4 ceil(vec4 x);" - - "float fract(float x);" - "vec2 fract(vec2 x);" - "vec3 fract(vec3 x);" - "vec4 fract(vec4 x);" - - "float mod(float x, float y);" - "vec2 mod(vec2 x, float y);" - "vec3 mod(vec3 x, float y);" - "vec4 mod(vec4 x, float y);" - "vec2 mod(vec2 x, vec2 y);" - "vec3 mod(vec3 x, vec3 y);" - "vec4 mod(vec4 x, vec4 y);" - - "float min(float x, float y);" - "vec2 min(vec2 x, float y);" - "vec3 min(vec3 x, float y);" - "vec4 min(vec4 x, float y);" - "vec2 min(vec2 x, vec2 y);" - "vec3 min(vec3 x, vec3 y);" - "vec4 min(vec4 x, vec4 y);" - - "float max(float x, float y);" - "vec2 max(vec2 x, float y);" - "vec3 max(vec3 x, float y);" - "vec4 max(vec4 x, float y);" - "vec2 max(vec2 x, vec2 y);" - "vec3 max(vec3 x, vec3 y);" - "vec4 max(vec4 x, vec4 y);" - - "float clamp(float x, float minVal, float maxVal);" - "vec2 clamp(vec2 x, float minVal, float maxVal);" - "vec3 clamp(vec3 x, float minVal, float maxVal);" - "vec4 clamp(vec4 x, float minVal, float maxVal);" - "vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal);" - "vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal);" - "vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal);" - - "float mix(float x, float y, float a);" - "vec2 mix(vec2 x, vec2 y, float a);" - "vec3 mix(vec3 x, vec3 y, float a);" - "vec4 mix(vec4 x, vec4 y, float a);" - "vec2 mix(vec2 x, vec2 y, vec2 a);" - "vec3 mix(vec3 x, vec3 y, vec3 a);" - "vec4 mix(vec4 x, vec4 y, vec4 a);" - - "float step(float edge, float x);" - "vec2 step(vec2 edge, vec2 x);" - "vec3 step(vec3 edge, vec3 x);" - "vec4 step(vec4 edge, vec4 x);" - "vec2 step(float edge, vec2 x);" - "vec3 step(float edge, vec3 x);" - "vec4 step(float edge, vec4 x);" - - "float smoothstep(float edge0, float edge1, float x);" - "vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x);" - "vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x);" - "vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x);" - "vec2 smoothstep(float edge0, float edge1, vec2 x);" - "vec3 smoothstep(float edge0, float edge1, vec3 x);" - "vec4 smoothstep(float edge0, float edge1, vec4 x);" - - "\n"); - - if (version >= 130) { - commonBuiltins.append( - " int abs( int x);" - "ivec2 abs(ivec2 x);" - "ivec3 abs(ivec3 x);" - "ivec4 abs(ivec4 x);" - - " int sign( int x);" - "ivec2 sign(ivec2 x);" - "ivec3 sign(ivec3 x);" - "ivec4 sign(ivec4 x);" - - "float trunc(float x);" - "vec2 trunc(vec2 x);" - "vec3 trunc(vec3 x);" - "vec4 trunc(vec4 x);" - - "float round(float x);" - "vec2 round(vec2 x);" - "vec3 round(vec3 x);" - "vec4 round(vec4 x);" - - "float roundEven(float x);" - "vec2 roundEven(vec2 x);" - "vec3 roundEven(vec3 x);" - "vec4 roundEven(vec4 x);" - - "float modf(float, out float);" - "vec2 modf(vec2, out vec2 );" - "vec3 modf(vec3, out vec3 );" - "vec4 modf(vec4, out vec4 );" - - " int min(int x, int y);" - "ivec2 min(ivec2 x, int y);" - "ivec3 min(ivec3 x, int y);" - "ivec4 min(ivec4 x, int y);" - "ivec2 min(ivec2 x, ivec2 y);" - "ivec3 min(ivec3 x, ivec3 y);" - "ivec4 min(ivec4 x, ivec4 y);" - - " uint min(uint x, uint y);" - "uvec2 min(uvec2 x, uint y);" - "uvec3 min(uvec3 x, uint y);" - "uvec4 min(uvec4 x, uint y);" - "uvec2 min(uvec2 x, uvec2 y);" - "uvec3 min(uvec3 x, uvec3 y);" - "uvec4 min(uvec4 x, uvec4 y);" - - " int max(int x, int y);" - "ivec2 max(ivec2 x, int y);" - "ivec3 max(ivec3 x, int y);" - "ivec4 max(ivec4 x, int y);" - "ivec2 max(ivec2 x, ivec2 y);" - "ivec3 max(ivec3 x, ivec3 y);" - "ivec4 max(ivec4 x, ivec4 y);" - - " uint max(uint x, uint y);" - "uvec2 max(uvec2 x, uint y);" - "uvec3 max(uvec3 x, uint y);" - "uvec4 max(uvec4 x, uint y);" - "uvec2 max(uvec2 x, uvec2 y);" - "uvec3 max(uvec3 x, uvec3 y);" - "uvec4 max(uvec4 x, uvec4 y);" - - "int clamp(int x, int minVal, int maxVal);" - "ivec2 clamp(ivec2 x, int minVal, int maxVal);" - "ivec3 clamp(ivec3 x, int minVal, int maxVal);" - "ivec4 clamp(ivec4 x, int minVal, int maxVal);" - "ivec2 clamp(ivec2 x, ivec2 minVal, ivec2 maxVal);" - "ivec3 clamp(ivec3 x, ivec3 minVal, ivec3 maxVal);" - "ivec4 clamp(ivec4 x, ivec4 minVal, ivec4 maxVal);" - - "uint clamp(uint x, uint minVal, uint maxVal);" - "uvec2 clamp(uvec2 x, uint minVal, uint maxVal);" - "uvec3 clamp(uvec3 x, uint minVal, uint maxVal);" - "uvec4 clamp(uvec4 x, uint minVal, uint maxVal);" - "uvec2 clamp(uvec2 x, uvec2 minVal, uvec2 maxVal);" - "uvec3 clamp(uvec3 x, uvec3 minVal, uvec3 maxVal);" - "uvec4 clamp(uvec4 x, uvec4 minVal, uvec4 maxVal);" - - "float mix(float x, float y, bool a);" - "vec2 mix(vec2 x, vec2 y, bvec2 a);" - "vec3 mix(vec3 x, vec3 y, bvec3 a);" - "vec4 mix(vec4 x, vec4 y, bvec4 a);" - - "bool isnan(float x);" - "bvec2 isnan(vec2 x);" - "bvec3 isnan(vec3 x);" - "bvec4 isnan(vec4 x);" - - "bool isinf(float x);" - "bvec2 isinf(vec2 x);" - "bvec3 isinf(vec3 x);" - "bvec4 isinf(vec4 x);" - - "\n"); - } - - // // double functions added to desktop 4.00, but not fma, frexp, ldexp, or pack/unpack // if (profile != EEsProfile && version >= 400) { @@ -959,31 +1054,30 @@ "bvec3 notEqual(u64vec3, u64vec3);" "bvec4 notEqual(u64vec4, u64vec4);" - "int findLSB(int64_t);" - "ivec2 findLSB(i64vec2);" - "ivec3 findLSB(i64vec3);" - "ivec4 findLSB(i64vec4);" - - "int findLSB(uint64_t);" - "ivec2 findLSB(u64vec2);" - "ivec3 findLSB(u64vec3);" - "ivec4 findLSB(u64vec4);" - - "int findMSB(int64_t);" - "ivec2 findMSB(i64vec2);" - "ivec3 findMSB(i64vec3);" - "ivec4 findMSB(i64vec4);" - - "int findMSB(uint64_t);" - "ivec2 findMSB(u64vec2);" - "ivec3 findMSB(u64vec3);" - "ivec4 findMSB(u64vec4);" + "int64_t findLSB(int64_t);" + "i64vec2 findLSB(i64vec2);" + "i64vec3 findLSB(i64vec3);" + "i64vec4 findLSB(i64vec4);" + + "int64_t findLSB(uint64_t);" + "i64vec2 findLSB(u64vec2);" + "i64vec3 findLSB(u64vec3);" + "i64vec4 findLSB(u64vec4);" + + "int64_t findMSB(int64_t);" + "i64vec2 findMSB(i64vec2);" + "i64vec3 findMSB(i64vec3);" + "i64vec4 findMSB(i64vec4);" + + "int64_t findMSB(uint64_t);" + "i64vec2 findMSB(u64vec2);" + "i64vec3 findMSB(u64vec3);" + "i64vec4 findMSB(u64vec4);" "\n" ); } -#ifdef AMD_EXTENSIONS // GL_AMD_shader_trinary_minmax if (profile != EEsProfile && version >= 430) { commonBuiltins.append( @@ -1080,48 +1174,31 @@ "\n" ); } -#endif if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 430)) { commonBuiltins.append( - "uint atomicAdd(coherent volatile inout uint, uint);" - " int atomicAdd(coherent volatile inout int, int);" "uint atomicAdd(coherent volatile inout uint, uint, int, int, int);" " int atomicAdd(coherent volatile inout int, int, int, int, int);" - "uint atomicMin(coherent volatile inout uint, uint);" - " int atomicMin(coherent volatile inout int, int);" "uint atomicMin(coherent volatile inout uint, uint, int, int, int);" " int atomicMin(coherent volatile inout int, int, int, int, int);" - "uint atomicMax(coherent volatile inout uint, uint);" - " int atomicMax(coherent volatile inout int, int);" "uint atomicMax(coherent volatile inout uint, uint, int, int, int);" " int atomicMax(coherent volatile inout int, int, int, int, int);" - "uint atomicAnd(coherent volatile inout uint, uint);" - " int atomicAnd(coherent volatile inout int, int);" "uint atomicAnd(coherent volatile inout uint, uint, int, int, int);" " int atomicAnd(coherent volatile inout int, int, int, int, int);" - "uint atomicOr (coherent volatile inout uint, uint);" - " int atomicOr (coherent volatile inout int, int);" "uint atomicOr (coherent volatile inout uint, uint, int, int, int);" " int atomicOr (coherent volatile inout int, int, int, int, int);" - "uint atomicXor(coherent volatile inout uint, uint);" - " int atomicXor(coherent volatile inout int, int);" "uint atomicXor(coherent volatile inout uint, uint, int, int, int);" " int atomicXor(coherent volatile inout int, int, int, int, int);" - "uint atomicExchange(coherent volatile inout uint, uint);" - " int atomicExchange(coherent volatile inout int, int);" "uint atomicExchange(coherent volatile inout uint, uint, int, int, int);" " int atomicExchange(coherent volatile inout int, int, int, int, int);" - "uint atomicCompSwap(coherent volatile inout uint, uint, uint);" - " int atomicCompSwap(coherent volatile inout int, int, int);" "uint atomicCompSwap(coherent volatile inout uint, uint, uint, int, int, int, int, int);" " int atomicCompSwap(coherent volatile inout int, int, int, int, int, int, int, int);" @@ -1183,27 +1260,7 @@ "void atomicStore(coherent volatile out int64_t, int64_t, int, int, int);" "\n"); } - - if ((profile == EEsProfile && version >= 310) || - (profile != EEsProfile && version >= 450)) { - commonBuiltins.append( - "int mix(int x, int y, bool a);" - "ivec2 mix(ivec2 x, ivec2 y, bvec2 a);" - "ivec3 mix(ivec3 x, ivec3 y, bvec3 a);" - "ivec4 mix(ivec4 x, ivec4 y, bvec4 a);" - - "uint mix(uint x, uint y, bool a);" - "uvec2 mix(uvec2 x, uvec2 y, bvec2 a);" - "uvec3 mix(uvec3 x, uvec3 y, bvec3 a);" - "uvec4 mix(uvec4 x, uvec4 y, bvec4 a);" - - "bool mix(bool x, bool y, bool a);" - "bvec2 mix(bvec2 x, bvec2 y, bvec2 a);" - "bvec3 mix(bvec3 x, bvec3 y, bvec3 a);" - "bvec4 mix(bvec4 x, bvec4 y, bvec4 a);" - - "\n"); - } +#endif if ((profile == EEsProfile && version >= 300) || (profile != EEsProfile && version >= 330)) { @@ -1231,6 +1288,7 @@ "\n"); } +#ifndef GLSLANG_WEB if ((profile != EEsProfile && version >= 400) || (profile == EEsProfile && version >= 310)) { // GL_OES_gpu_shader5 @@ -1284,6 +1342,7 @@ "\n"); } +#endif if ((profile == EEsProfile && version >= 300) || (profile != EEsProfile && version >= 400)) { @@ -1312,6 +1371,7 @@ "\n"); } +#ifndef GLSLANG_WEB if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 400)) { commonBuiltins.append( @@ -1331,48 +1391,7 @@ "vec4 unpackUnorm4x8(highp uint);" "\n"); } - - // - // Geometric Functions. - // - commonBuiltins.append( - "float length(float x);" - "float length(vec2 x);" - "float length(vec3 x);" - "float length(vec4 x);" - - "float distance(float p0, float p1);" - "float distance(vec2 p0, vec2 p1);" - "float distance(vec3 p0, vec3 p1);" - "float distance(vec4 p0, vec4 p1);" - - "float dot(float x, float y);" - "float dot(vec2 x, vec2 y);" - "float dot(vec3 x, vec3 y);" - "float dot(vec4 x, vec4 y);" - - "vec3 cross(vec3 x, vec3 y);" - "float normalize(float x);" - "vec2 normalize(vec2 x);" - "vec3 normalize(vec3 x);" - "vec4 normalize(vec4 x);" - - "float faceforward(float N, float I, float Nref);" - "vec2 faceforward(vec2 N, vec2 I, vec2 Nref);" - "vec3 faceforward(vec3 N, vec3 I, vec3 Nref);" - "vec4 faceforward(vec4 N, vec4 I, vec4 Nref);" - - "float reflect(float I, float N);" - "vec2 reflect(vec2 I, vec2 N);" - "vec3 reflect(vec3 I, vec3 N);" - "vec4 reflect(vec4 I, vec4 N);" - - "float refract(float I, float N, float eta);" - "vec2 refract(vec2 I, vec2 N, float eta);" - "vec3 refract(vec3 I, vec3 N, float eta);" - "vec4 refract(vec4 I, vec4 N, float eta);" - - "\n"); +#endif // // Matrix Functions. @@ -1431,109 +1450,7 @@ } } - // - // Vector relational functions. - // - commonBuiltins.append( - "bvec2 lessThan(vec2 x, vec2 y);" - "bvec3 lessThan(vec3 x, vec3 y);" - "bvec4 lessThan(vec4 x, vec4 y);" - - "bvec2 lessThan(ivec2 x, ivec2 y);" - "bvec3 lessThan(ivec3 x, ivec3 y);" - "bvec4 lessThan(ivec4 x, ivec4 y);" - - "bvec2 lessThanEqual(vec2 x, vec2 y);" - "bvec3 lessThanEqual(vec3 x, vec3 y);" - "bvec4 lessThanEqual(vec4 x, vec4 y);" - - "bvec2 lessThanEqual(ivec2 x, ivec2 y);" - "bvec3 lessThanEqual(ivec3 x, ivec3 y);" - "bvec4 lessThanEqual(ivec4 x, ivec4 y);" - - "bvec2 greaterThan(vec2 x, vec2 y);" - "bvec3 greaterThan(vec3 x, vec3 y);" - "bvec4 greaterThan(vec4 x, vec4 y);" - - "bvec2 greaterThan(ivec2 x, ivec2 y);" - "bvec3 greaterThan(ivec3 x, ivec3 y);" - "bvec4 greaterThan(ivec4 x, ivec4 y);" - - "bvec2 greaterThanEqual(vec2 x, vec2 y);" - "bvec3 greaterThanEqual(vec3 x, vec3 y);" - "bvec4 greaterThanEqual(vec4 x, vec4 y);" - - "bvec2 greaterThanEqual(ivec2 x, ivec2 y);" - "bvec3 greaterThanEqual(ivec3 x, ivec3 y);" - "bvec4 greaterThanEqual(ivec4 x, ivec4 y);" - - "bvec2 equal(vec2 x, vec2 y);" - "bvec3 equal(vec3 x, vec3 y);" - "bvec4 equal(vec4 x, vec4 y);" - - "bvec2 equal(ivec2 x, ivec2 y);" - "bvec3 equal(ivec3 x, ivec3 y);" - "bvec4 equal(ivec4 x, ivec4 y);" - - "bvec2 equal(bvec2 x, bvec2 y);" - "bvec3 equal(bvec3 x, bvec3 y);" - "bvec4 equal(bvec4 x, bvec4 y);" - - "bvec2 notEqual(vec2 x, vec2 y);" - "bvec3 notEqual(vec3 x, vec3 y);" - "bvec4 notEqual(vec4 x, vec4 y);" - - "bvec2 notEqual(ivec2 x, ivec2 y);" - "bvec3 notEqual(ivec3 x, ivec3 y);" - "bvec4 notEqual(ivec4 x, ivec4 y);" - - "bvec2 notEqual(bvec2 x, bvec2 y);" - "bvec3 notEqual(bvec3 x, bvec3 y);" - "bvec4 notEqual(bvec4 x, bvec4 y);" - - "bool any(bvec2 x);" - "bool any(bvec3 x);" - "bool any(bvec4 x);" - - "bool all(bvec2 x);" - "bool all(bvec3 x);" - "bool all(bvec4 x);" - - "bvec2 not(bvec2 x);" - "bvec3 not(bvec3 x);" - "bvec4 not(bvec4 x);" - - "\n"); - - if (version >= 130) { - commonBuiltins.append( - "bvec2 lessThan(uvec2 x, uvec2 y);" - "bvec3 lessThan(uvec3 x, uvec3 y);" - "bvec4 lessThan(uvec4 x, uvec4 y);" - - "bvec2 lessThanEqual(uvec2 x, uvec2 y);" - "bvec3 lessThanEqual(uvec3 x, uvec3 y);" - "bvec4 lessThanEqual(uvec4 x, uvec4 y);" - - "bvec2 greaterThan(uvec2 x, uvec2 y);" - "bvec3 greaterThan(uvec3 x, uvec3 y);" - "bvec4 greaterThan(uvec4 x, uvec4 y);" - - "bvec2 greaterThanEqual(uvec2 x, uvec2 y);" - "bvec3 greaterThanEqual(uvec3 x, uvec3 y);" - "bvec4 greaterThanEqual(uvec4 x, uvec4 y);" - - "bvec2 equal(uvec2 x, uvec2 y);" - "bvec3 equal(uvec3 x, uvec3 y);" - "bvec4 equal(uvec4 x, uvec4 y);" - - "bvec2 notEqual(uvec2 x, uvec2 y);" - "bvec3 notEqual(uvec3 x, uvec3 y);" - "bvec4 notEqual(uvec4 x, uvec4 y);" - - "\n"); - } - +#ifndef GLSLANG_WEB // // Original-style texture functions existing in all stages. // (Per-stage functions below.) @@ -1884,58 +1801,6 @@ "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" @@ -1944,1015 +1809,136 @@ "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" - -#ifdef NV_EXTENSIONS - "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" -#endif - - "\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" - - -#ifdef NV_EXTENSIONS - "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" -#endif - - "\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();" "\n" ); -#ifdef NV_EXTENSIONS stageBuiltins[EShLangMeshNV].append( "void subgroupMemoryBarrierShared();" "\n" @@ -2961,7 +1947,6 @@ "void subgroupMemoryBarrierShared();" "\n" ); -#endif } if (profile != EEsProfile && version >= 460) { @@ -2973,7 +1958,6 @@ "\n"); } -#ifdef AMD_EXTENSIONS // GL_AMD_shader_ballot if (profile != EEsProfile && version >= 450) { commonBuiltins.append( @@ -3870,11 +2854,182 @@ "\n"); } -#endif // AMD_EXTENSIONS - + 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"); + } -#ifdef NV_EXTENSIONS - if ((profile != EEsProfile && version >= 450) || + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { commonBuiltins.append( "struct gl_TextureFootprint2DNV {" @@ -3907,7 +3062,6 @@ "\n"); } -#endif // NV_EXTENSIONS // GL_AMD_gpu_shader_half_float/Explicit types if (profile != EEsProfile && version >= 450) { commonBuiltins.append( @@ -4792,7 +3946,7 @@ // // Geometric Functions. // - if (IncludeLegacy(version, profile, spvVersion)) + if (spvVersion.vulkan == 0 && IncludeLegacy(version, profile, spvVersion)) stageBuiltins[EShLangVertex].append("vec4 ftransform();"); // @@ -4874,6 +4028,7 @@ "void EndPrimitive();" "\n"); } +#endif //============================================================================ // @@ -4889,7 +4044,6 @@ stageBuiltins[EShLangCompute].append( "void barrier();" ); -#ifdef NV_EXTENSIONS if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { stageBuiltins[EShLangMeshNV].append( "void barrier();" @@ -4898,23 +4052,26 @@ "void barrier();" ); } -#endif 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();" ); } -#ifdef NV_EXTENSIONS +#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();" @@ -4925,7 +4082,6 @@ "void groupMemoryBarrier();" ); } -#endif commonBuiltins.append("void controlBarrier(int, int, int, int);\n" "void memoryBarrier(int, int, int);\n"); @@ -4955,6 +4111,60 @@ "void coopMatStoreNV(fcoopmatNV m, volatile coherent uvec4[] buf, uint element, uint stride, bool colMajor);\n" "fcoopmatNV coopMatMulAddNV(fcoopmatNV A, fcoopmatNV B, fcoopmatNV C);\n" + "void coopMatLoadNV(out icoopmatNV m, volatile coherent int8_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out icoopmatNV m, volatile coherent int16_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out icoopmatNV m, volatile coherent int[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out icoopmatNV m, volatile coherent int64_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out icoopmatNV m, volatile coherent ivec2[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out icoopmatNV m, volatile coherent ivec4[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out icoopmatNV m, volatile coherent uint8_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out icoopmatNV m, volatile coherent uint16_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out icoopmatNV m, volatile coherent uint[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out icoopmatNV m, volatile coherent uint64_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out icoopmatNV m, volatile coherent uvec2[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out icoopmatNV m, volatile coherent uvec4[] buf, uint element, uint stride, bool colMajor);\n" + + "void coopMatLoadNV(out ucoopmatNV m, volatile coherent int8_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out ucoopmatNV m, volatile coherent int16_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out ucoopmatNV m, volatile coherent int[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out ucoopmatNV m, volatile coherent int64_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out ucoopmatNV m, volatile coherent ivec2[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out ucoopmatNV m, volatile coherent ivec4[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out ucoopmatNV m, volatile coherent uint8_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out ucoopmatNV m, volatile coherent uint16_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out ucoopmatNV m, volatile coherent uint[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out ucoopmatNV m, volatile coherent uint64_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out ucoopmatNV m, volatile coherent uvec2[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatLoadNV(out ucoopmatNV m, volatile coherent uvec4[] buf, uint element, uint stride, bool colMajor);\n" + + "void coopMatStoreNV(icoopmatNV m, volatile coherent int8_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(icoopmatNV m, volatile coherent int16_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(icoopmatNV m, volatile coherent int[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(icoopmatNV m, volatile coherent int64_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(icoopmatNV m, volatile coherent ivec2[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(icoopmatNV m, volatile coherent ivec4[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(icoopmatNV m, volatile coherent uint8_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(icoopmatNV m, volatile coherent uint16_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(icoopmatNV m, volatile coherent uint[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(icoopmatNV m, volatile coherent uint64_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(icoopmatNV m, volatile coherent uvec2[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(icoopmatNV m, volatile coherent uvec4[] buf, uint element, uint stride, bool colMajor);\n" + + "void coopMatStoreNV(ucoopmatNV m, volatile coherent int8_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(ucoopmatNV m, volatile coherent int16_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(ucoopmatNV m, volatile coherent int[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(ucoopmatNV m, volatile coherent int64_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(ucoopmatNV m, volatile coherent ivec2[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(ucoopmatNV m, volatile coherent ivec4[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(ucoopmatNV m, volatile coherent uint8_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(ucoopmatNV m, volatile coherent uint16_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(ucoopmatNV m, volatile coherent uint[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(ucoopmatNV m, volatile coherent uint64_t[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(ucoopmatNV m, volatile coherent uvec2[] buf, uint element, uint stride, bool colMajor);\n" + "void coopMatStoreNV(ucoopmatNV m, volatile coherent uvec4[] buf, uint element, uint stride, bool colMajor);\n" + + "icoopmatNV coopMatMulAddNV(icoopmatNV A, icoopmatNV B, icoopmatNV C);\n" + "ucoopmatNV coopMatMulAddNV(ucoopmatNV A, ucoopmatNV B, ucoopmatNV C);\n" ); } @@ -5000,9 +4210,6 @@ "\n"); } - stageBuiltins[EShLangFragment].append(derivatives); - stageBuiltins[EShLangFragment].append("\n"); - // GL_ARB_derivative_control if (profile != EEsProfile && version >= 400) { stageBuiltins[EShLangFragment].append(derivativeControls); @@ -5039,7 +4246,6 @@ "bool helperInvocationEXT();" "\n"); -#ifdef AMD_EXTENSIONS // GL_AMD_shader_explicit_vertex_parameter if (profile != EEsProfile && version >= 450) { stageBuiltins[EShLangFragment].append( @@ -5113,9 +4319,6 @@ "\n"); } -#endif - -#ifdef NV_EXTENSIONS // Builtins for GL_NV_ray_tracing if (profile != EEsProfile && version >= 460) { @@ -5145,7 +4348,6 @@ //E_SPV_NV_compute_shader_derivatives if ((profile == EEsProfile && version >= 320) || (profile != EEsProfile && version >= 450)) { - stageBuiltins[EShLangCompute].append(derivatives); stageBuiltins[EShLangCompute].append(derivativeControls); stageBuiltins[EShLangCompute].append("\n"); } @@ -5159,7 +4361,7 @@ if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { stageBuiltins[EShLangMeshNV].append( "void writePackedPrimitiveIndices4x8NV(uint, uint);" - "\n"); + "\n"); } #endif @@ -5183,11 +4385,13 @@ "highp float diff;" // f - n ); } else { +#ifndef GLSLANG_WEB commonBuiltins.append( "float near;" // n "float far;" // f "float diff;" // f - n ); +#endif } commonBuiltins.append( @@ -5196,6 +4400,7 @@ "\n"); } +#ifndef GLSLANG_WEB if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) { // // Matrix state. p. 31, 32, 37, 39, 40. @@ -5313,6 +4518,7 @@ "\n"); } +#endif //============================================================================ // @@ -5342,7 +4548,7 @@ "\n"); } -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB //============================================================================ // // Define the interface to the mesh/task shader. @@ -5430,7 +4636,6 @@ "\n"); } } -#endif //============================================================================ // @@ -5564,7 +4769,6 @@ ); } -#ifdef NV_EXTENSIONS if (version >= 450) stageBuiltins[EShLangVertex].append( "out int gl_ViewportMask[];" // GL_NV_viewport_array2 @@ -5573,8 +4777,6 @@ "out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes "out int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes ); -#endif - } else { // ES profile if (version == 100) { @@ -5589,15 +4791,19 @@ "in highp int gl_InstanceID;" // needs qualifier fixed later ); if (spvVersion.vulkan > 0) +#endif stageBuiltins[EShLangVertex].append( "in highp int gl_VertexIndex;" "in highp int gl_InstanceIndex;" ); +#ifndef GLSLANG_WEB if (version < 310) +#endif stageBuiltins[EShLangVertex].append( "highp vec4 gl_Position;" // needs qualifier fixed later "highp float gl_PointSize;" // needs qualifier fixed later ); +#ifndef GLSLANG_WEB else stageBuiltins[EShLangVertex].append( "out gl_PerVertex {" @@ -5649,10 +4855,8 @@ if (version >= 450) stageBuiltins[EShLangGeometry].append( "float gl_CullDistance[];" -#ifdef NV_EXTENSIONS "vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes -#endif ); stageBuiltins[EShLangGeometry].append( "} gl_in[];" @@ -5698,7 +4902,6 @@ "in int gl_InvocationID;" ); -#ifdef NV_EXTENSIONS if (version >= 450) stageBuiltins[EShLangGeometry].append( "out int gl_ViewportMask[];" // GL_NV_viewport_array2 @@ -5707,7 +4910,6 @@ "out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes "out int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes ); -#endif stageBuiltins[EShLangGeometry].append("\n"); } else if (profile == EEsProfile && version >= 310) { @@ -5772,13 +4974,11 @@ if (version >= 450) stageBuiltins[EShLangTessControl].append( "float gl_CullDistance[];" -#ifdef NV_EXTENSIONS "int gl_ViewportMask[];" // GL_NV_viewport_array2 "vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes "int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes -#endif ); stageBuiltins[EShLangTessControl].append( "} gl_out[];" @@ -5877,7 +5077,6 @@ "out int gl_Layer;" "\n"); -#ifdef NV_EXTENSIONS if (version >= 450) stageBuiltins[EShLangTessEvaluation].append( "out int gl_ViewportMask[];" // GL_NV_viewport_array2 @@ -5886,7 +5085,6 @@ "out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes "out int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes ); -#endif } else if (profile == EEsProfile && version >= 310) { // Note: "in gl_PerVertex {...} gl_in[gl_MaxPatchVertices];" is declared in initialize() below, @@ -5980,19 +5178,25 @@ "flat in int gl_PrimitiveID;" ); - if (version >= 400) { + if (version >= 130) { // ARB_sample_shading stageBuiltins[EShLangFragment].append( "flat in int gl_SampleID;" " in vec2 gl_SamplePosition;" - "flat in int gl_SampleMaskIn[];" " out int gl_SampleMask[];" ); - if (spvVersion.spv == 0) + + if (spvVersion.spv == 0) { stageBuiltins[EShLangFragment].append( "uniform int gl_NumSamples;" - ); + ); + } } + if (version >= 400) + stageBuiltins[EShLangFragment].append( + "flat in int gl_SampleMaskIn[];" + ); + if (version >= 430) stageBuiltins[EShLangFragment].append( "flat in int gl_Layer;" @@ -6011,7 +5215,6 @@ "flat in int gl_FragInvocationCountEXT;" ); -#ifdef AMD_EXTENSIONS if (version >= 450) stageBuiltins[EShLangFragment].append( "in vec2 gl_BaryCoordNoPerspAMD;" @@ -6022,9 +5225,7 @@ "in vec2 gl_BaryCoordSmoothSampleAMD;" "in vec3 gl_BaryCoordPullModelAMD;" ); -#endif -#ifdef NV_EXTENSIONS if (version >= 430) stageBuiltins[EShLangFragment].append( "in bool gl_FragFullyCoveredNV;" @@ -6037,7 +5238,6 @@ "in vec3 gl_BaryCoordNoPerspNV;" ); -#endif } else { // ES profile @@ -6049,6 +5249,7 @@ "mediump vec2 gl_PointCoord;" // needs qualifier fixed later ); } +#endif if (version >= 300) { stageBuiltins[EShLangFragment].append( "highp vec4 gl_FragCoord;" // needs qualifier fixed later @@ -6057,6 +5258,7 @@ "highp float gl_FragDepth;" // needs qualifier fixed later ); } +#ifndef GLSLANG_WEB if (version >= 310) { stageBuiltins[EShLangFragment].append( "bool gl_HelperInvocation;" // needs qualifier fixed later @@ -6084,7 +5286,6 @@ "flat in ivec2 gl_FragSizeEXT;" "flat in int gl_FragInvocationCountEXT;" ); -#ifdef NV_EXTENSIONS if (version >= 320) stageBuiltins[EShLangFragment].append( // GL_NV_shading_rate_image "flat in ivec2 gl_FragmentSizeNV;" @@ -6095,17 +5296,19 @@ "in vec3 gl_BaryCoordNV;" "in vec3 gl_BaryCoordNoPerspNV;" ); + } #endif - } stageBuiltins[EShLangFragment].append("\n"); if (version >= 130) add2ndGenerationSamplingImaging(version, profile, spvVersion); +#ifndef GLSLANG_WEB + // 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;" @@ -6114,7 +5317,7 @@ "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;" @@ -6129,10 +5332,8 @@ stageBuiltins[EShLangGeometry] .append(ballotDecls); stageBuiltins[EShLangCompute] .append(ballotDecls); stageBuiltins[EShLangFragment] .append(fragmentBallotDecls); -#ifdef NV_EXTENSIONS stageBuiltins[EShLangMeshNV] .append(ballotDecls); stageBuiltins[EShLangTaskNV] .append(ballotDecls); -#endif } if ((profile != EEsProfile && version >= 140) || @@ -6186,7 +5387,6 @@ stageBuiltins[EShLangCompute] .append(subgroupDecls); stageBuiltins[EShLangCompute] .append(computeSubgroupDecls); stageBuiltins[EShLangFragment] .append(fragmentSubgroupDecls); -#ifdef NV_EXTENSIONS stageBuiltins[EShLangMeshNV] .append(subgroupDecls); stageBuiltins[EShLangMeshNV] .append(computeSubgroupDecls); stageBuiltins[EShLangTaskNV] .append(subgroupDecls); @@ -6197,10 +5397,8 @@ stageBuiltins[EShLangClosestHitNV] .append(subgroupDecls); stageBuiltins[EShLangMissNV] .append(subgroupDecls); stageBuiltins[EShLangCallableNV] .append(subgroupDecls); -#endif } -#ifdef NV_EXTENSIONS // GL_NV_ray_tracing if (profile != EEsProfile && version >= 460) { @@ -6300,7 +5498,6 @@ stageBuiltins[EShLangClosestHitNV].append(deviceIndex); stageBuiltins[EShLangMissNV].append(deviceIndex); } -#endif if (version >= 300 /* both ES and non-ES */) { stageBuiltins[EShLangFragment].append( @@ -6330,6 +5527,7 @@ commonBuiltins.append("const int gl_StorageSemanticsImage = 0x800;\n"); commonBuiltins.append("const int gl_StorageSemanticsOutput = 0x1000;\n"); } +#endif // printf("%s\n", commonBuiltins.c_str()); // printf("%s\n", stageBuiltins[EShLangFragment].c_str()); @@ -6345,19 +5543,27 @@ // In this function proper, enumerate the types, then calls the next set of functions // to enumerate all the uses for that type. // -#ifdef AMD_EXTENSIONS - TBasicType bTypes[4] = { EbtFloat, EbtFloat16, EbtInt, EbtUint }; + + // enumerate all the types +#ifdef GLSLANG_WEB + const TBasicType bTypes[] = { EbtFloat, EbtInt, EbtUint }; + bool skipBuffer = true; + bool skipCubeArrayed = true; + const int image = 0; #else - TBasicType bTypes[3] = { EbtFloat, EbtInt, EbtUint }; -#endif + const TBasicType bTypes[] = { EbtFloat, EbtInt, EbtUint, EbtFloat16 }; bool skipBuffer = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 140); bool skipCubeArrayed = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 130); - - // enumerate all the types - for (int image = 0; image <= 1; ++image) { // loop over "bool" image vs sampler - + for (int image = 0; image <= 1; ++image) // loop over "bool" image vs sampler +#endif + { for (int shadow = 0; shadow <= 1; ++shadow) { // loop over "bool" shadow or not - for (int ms = 0; ms <=1; ++ms) { +#ifdef GLSLANG_WEB + const int ms = 0; +#else + for (int ms = 0; ms <= 1; ++ms) // loop over "bool" multisample or not +#endif + { if ((ms || image) && shadow) continue; if (ms && profile != EEsProfile && version < 150) @@ -6368,20 +5574,23 @@ continue; for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not - for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, 2D, ..., buffer +#ifdef GLSLANG_WEB + for (int dim = Esd2D; dim <= EsdCube; ++dim) { // 2D, 3D, and Cube +#else + for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, ..., buffer, subpass if (dim == EsdSubpass && spvVersion.vulkan == 0) continue; if (dim == EsdSubpass && (image || shadow || arrayed)) continue; if ((dim == Esd1D || dim == EsdRect) && profile == EEsProfile) continue; - if (dim != Esd2D && dim != EsdSubpass && ms) + if (dim == EsdSubpass && spvVersion.vulkan == 0) continue; - if ((dim == Esd3D || dim == EsdRect) && arrayed) + if (dim == EsdSubpass && (image || shadow || arrayed)) continue; - if (dim == Esd3D && shadow) + if ((dim == Esd1D || dim == EsdRect) && profile == EEsProfile) continue; - if (dim == EsdCube && arrayed && skipCubeArrayed) + if (dim != Esd2D && dim != EsdSubpass && ms) continue; if (dim == EsdBuffer && skipBuffer) continue; @@ -6389,31 +5598,35 @@ continue; if (ms && arrayed && profile == EEsProfile && version < 310) continue; -#ifdef AMD_EXTENSIONS - for (int bType = 0; bType < 4; ++bType) { // float, float16, int, uint results - - if (shadow && bType > 1) - continue; +#endif + if (dim == Esd3D && shadow) + continue; + if (dim == EsdCube && arrayed && skipCubeArrayed) + continue; + if ((dim == Esd3D || dim == EsdRect) && arrayed) + continue; - if (bTypes[bType] == EbtFloat16 && (profile == EEsProfile ||version < 450)) + // Loop over the bTypes + for (size_t bType = 0; bType < sizeof(bTypes)/sizeof(TBasicType); ++bType) { +#ifndef GLSLANG_WEB + if (bTypes[bType] == EbtFloat16 && (profile == EEsProfile || version < 450)) continue; -#else - for (int bType = 0; bType < 3; ++bType) { // float, int, uint results - - if (shadow && bType > 0) + if (dim == EsdRect && version < 140 && bType > 0) continue; #endif - if (dim == EsdRect && version < 140 && bType > 0) + if (shadow && (bTypes[bType] == EbtInt || bTypes[bType] == EbtUint)) continue; // // Now, make all the function prototypes for the type we just built... // - TSampler sampler; +#ifndef GLSLANG_WEB if (dim == EsdSubpass) { sampler.setSubpass(bTypes[bType], ms ? true : false); - } else if (image) { + } else +#endif + if (image) { sampler.setImage(bTypes[bType], (TSamplerDim)dim, arrayed ? true : false, shadow ? true : false, ms ? true : false); @@ -6425,10 +5638,12 @@ TString typeName = sampler.getString(); +#ifndef GLSLANG_WEB if (dim == EsdSubpass) { addSubpassSampling(sampler, typeName, version, profile); continue; } +#endif addQueryFunctions(sampler, typeName, version, profile); @@ -6436,8 +5651,8 @@ addImageFunctions(sampler, typeName, version, profile); else { addSamplingFunctions(sampler, typeName, version, profile); +#ifndef GLSLANG_WEB addGatherFunctions(sampler, typeName, version, profile); - if (spvVersion.vulkan > 0 && sampler.isCombined() && !sampler.shadow) { // Base Vulkan allows texelFetch() for // textureBuffer (i.e. without sampler). @@ -6452,6 +5667,7 @@ addSamplingFunctions(sampler, textureTypeName, version, profile); addQueryFunctions(sampler, textureTypeName, version, profile); } +#endif } } } @@ -6463,7 +5679,6 @@ // // sparseTexelsResidentARB() // - if (profile != EEsProfile && version >= 450) { commonBuiltins.append("bool sparseTexelsResidentARB(int code);\n"); } @@ -6477,14 +5692,25 @@ // void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile) { - if (sampler.image && ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 430))) - return; - // // textureSize() and imageSize() // int sizeDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0) - (sampler.dim == EsdCube ? 1 : 0); + +#ifdef GLSLANG_WEB + commonBuiltins.append("highp "); + commonBuiltins.append("ivec"); + commonBuiltins.append(postfixes[sizeDims]); + commonBuiltins.append(" textureSize("); + commonBuiltins.append(typeName); + commonBuiltins.append(",int);\n"); + return; +#endif + + if (sampler.isImage() && ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 430))) + return; + if (profile == EEsProfile) commonBuiltins.append("highp "); if (sizeDims == 1) @@ -6493,12 +5719,12 @@ commonBuiltins.append("ivec"); commonBuiltins.append(postfixes[sizeDims]); } - if (sampler.image) + if (sampler.isImage()) commonBuiltins.append(" imageSize(readonly writeonly volatile coherent "); else commonBuiltins.append(" textureSize("); commonBuiltins.append(typeName); - if (! sampler.image && sampler.dim != EsdRect && sampler.dim != EsdBuffer && ! sampler.ms) + if (! sampler.isImage() && ! sampler.isRect() && ! sampler.isBuffer() && ! sampler.isMultiSample()) commonBuiltins.append(",int);\n"); else commonBuiltins.append(");\n"); @@ -6509,9 +5735,9 @@ // GL_ARB_shader_texture_image_samples // TODO: spec issue? there are no memory qualifiers; how to query a writeonly/readonly image, etc? - if (profile != EEsProfile && version >= 430 && sampler.ms) { + if (profile != EEsProfile && version >= 430 && sampler.isMultiSample()) { commonBuiltins.append("int "); - if (sampler.image) + if (sampler.isImage()) commonBuiltins.append("imageSamples(readonly writeonly volatile coherent "); else commonBuiltins.append("textureSamples("); @@ -6523,40 +5749,28 @@ // textureQueryLod(), fragment stage only // - if (profile != EEsProfile && version >= 400 && sampler.combined && sampler.dim != EsdRect && ! sampler.ms && sampler.dim != EsdBuffer) { -#ifdef AMD_EXTENSIONS + if (profile != EEsProfile && version >= 400 && sampler.isCombined() && sampler.dim != EsdRect && + ! sampler.isMultiSample() && ! sampler.isBuffer()) { for (int f16TexAddr = 0; f16TexAddr < 2; ++f16TexAddr) { if (f16TexAddr && sampler.type != EbtFloat16) continue; -#endif stageBuiltins[EShLangFragment].append("vec2 textureQueryLod("); stageBuiltins[EShLangFragment].append(typeName); if (dimMap[sampler.dim] == 1) -#ifdef AMD_EXTENSIONS if (f16TexAddr) stageBuiltins[EShLangFragment].append(", float16_t"); else stageBuiltins[EShLangFragment].append(", float"); -#else - stageBuiltins[EShLangFragment].append(", float"); -#endif else { -#ifdef AMD_EXTENSIONS if (f16TexAddr) stageBuiltins[EShLangFragment].append(", f16vec"); else stageBuiltins[EShLangFragment].append(", vec"); -#else - stageBuiltins[EShLangFragment].append(", vec"); -#endif stageBuiltins[EShLangFragment].append(postfixes[dimMap[sampler.dim]]); } stageBuiltins[EShLangFragment].append(");\n"); -#ifdef AMD_EXTENSIONS } -#endif -#ifdef NV_EXTENSIONS stageBuiltins[EShLangCompute].append("vec2 textureQueryLod("); stageBuiltins[EShLangCompute].append(typeName); if (dimMap[sampler.dim] == 1) @@ -6566,14 +5780,14 @@ stageBuiltins[EShLangCompute].append(postfixes[dimMap[sampler.dim]]); } stageBuiltins[EShLangCompute].append(");\n"); -#endif } // // textureQueryLevels() // - if (profile != EEsProfile && version >= 430 && ! sampler.image && sampler.dim != EsdRect && ! sampler.ms && sampler.dim != EsdBuffer) { + if (profile != EEsProfile && version >= 430 && ! sampler.isImage() && sampler.dim != EsdRect && + ! sampler.isMultiSample() && ! sampler.isBuffer()) { commonBuiltins.append("int textureQueryLevels("); commonBuiltins.append(typeName); commonBuiltins.append(");\n"); @@ -6600,7 +5814,7 @@ imageParams.append(", ivec"); imageParams.append(postfixes[dims]); } - if (sampler.ms) + if (sampler.isMultiSample()) imageParams.append(", int"); if (profile == EEsProfile) @@ -6616,7 +5830,7 @@ commonBuiltins.append(prefixes[sampler.type]); commonBuiltins.append("vec4);\n"); - if (sampler.dim != Esd1D && sampler.dim != EsdBuffer && profile != EEsProfile && version >= 450) { + if (! sampler.is1D() && ! sampler.isBuffer() && profile != EEsProfile && version >= 450) { commonBuiltins.append("int sparseImageLoadARB(readonly volatile coherent "); commonBuiltins.append(imageParams); commonBuiltins.append(", out "); @@ -6693,8 +5907,7 @@ } } -#ifdef AMD_EXTENSIONS - if (sampler.dim == EsdRect || sampler.dim == EsdBuffer || sampler.shadow || sampler.ms) + if (sampler.dim == EsdRect || sampler.dim == EsdBuffer || sampler.shadow || sampler.isMultiSample()) return; if (profile == EEsProfile || version < 450) @@ -6720,7 +5933,7 @@ commonBuiltins.append(prefixes[sampler.type]); commonBuiltins.append("vec4);\n"); - if (sampler.dim != Esd1D) { + if (! sampler.is1D()) { commonBuiltins.append("int sparseImageLoadLodAMD(readonly volatile coherent "); commonBuiltins.append(imageLodParams); commonBuiltins.append(", out "); @@ -6728,7 +5941,6 @@ commonBuiltins.append("vec4"); commonBuiltins.append(");\n"); } -#endif } // @@ -6743,7 +5955,7 @@ stageBuiltins[EShLangFragment].append("vec4 subpassLoad"); stageBuiltins[EShLangFragment].append("("); stageBuiltins[EShLangFragment].append(typeName.c_str()); - if (sampler.ms) + if (sampler.isMultiSample()) stageBuiltins[EShLangFragment].append(", int"); stageBuiltins[EShLangFragment].append(");\n"); } @@ -6756,17 +5968,23 @@ // void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile) { +#ifdef GLSLANG_WEB + profile = EEsProfile; + version = 310; +#endif + // // texturing // for (int proj = 0; proj <= 1; ++proj) { // loop over "bool" projective or not - if (proj && (sampler.dim == EsdCube || sampler.dim == EsdBuffer || sampler.arrayed || sampler.ms || !sampler.combined)) + if (proj && (sampler.dim == EsdCube || sampler.isBuffer() || sampler.arrayed || sampler.isMultiSample() + || !sampler.isCombined())) continue; for (int lod = 0; lod <= 1; ++lod) { - if (lod && (sampler.dim == EsdBuffer || sampler.dim == EsdRect || sampler.ms || !sampler.combined)) + if (lod && (sampler.isBuffer() || sampler.isRect() || sampler.isMultiSample() || !sampler.isCombined())) continue; if (lod && sampler.dim == Esd2D && sampler.arrayed && sampler.shadow) continue; @@ -6775,18 +5993,18 @@ for (int bias = 0; bias <= 1; ++bias) { - if (bias && (lod || sampler.ms || !sampler.combined)) + if (bias && (lod || sampler.isMultiSample() || !sampler.isCombined())) continue; if (bias && (sampler.dim == Esd2D || sampler.dim == EsdCube) && sampler.shadow && sampler.arrayed) continue; - if (bias && (sampler.dim == EsdRect || sampler.dim == EsdBuffer)) + if (bias && (sampler.isRect() || sampler.isBuffer())) continue; for (int offset = 0; offset <= 1; ++offset) { // loop over "bool" offset or not if (proj + offset + bias + lod > 3) continue; - if (offset && (sampler.dim == EsdCube || sampler.dim == EsdBuffer || sampler.ms)) + if (offset && (sampler.dim == EsdCube || sampler.isBuffer() || sampler.isMultiSample())) continue; for (int fetch = 0; fetch <= 1; ++fetch) { // loop over "bool" fetch or not @@ -6797,14 +6015,15 @@ continue; if (fetch && (sampler.shadow || sampler.dim == EsdCube)) continue; - if (fetch == 0 && (sampler.ms || sampler.dim == EsdBuffer || !sampler.combined)) + if (fetch == 0 && (sampler.isMultiSample() || sampler.isBuffer() + || !sampler.isCombined())) continue; for (int grad = 0; grad <= 1; ++grad) { // loop over "bool" grad or not - if (grad && (lod || bias || sampler.ms || !sampler.combined)) + if (grad && (lod || bias || sampler.isMultiSample() || !sampler.isCombined())) continue; - if (grad && sampler.dim == EsdBuffer) + if (grad && sampler.isBuffer()) continue; if (proj + offset + fetch + grad + bias + lod > 3) continue; @@ -6824,31 +6043,46 @@ if (extraProj && ! proj) continue; - if (extraProj && (sampler.dim == Esd3D || sampler.shadow || !sampler.combined)) + if (extraProj && (sampler.dim == Esd3D || sampler.shadow || !sampler.isCombined())) continue; -#ifdef AMD_EXTENSIONS - for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr) { // loop over 16-bit floating-point texel addressing + // loop over 16-bit floating-point texel addressing +#ifdef GLSLANG_WEB + const int f16TexAddr = 0; +#else + for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr) +#endif + { if (f16TexAddr && sampler.type != EbtFloat16) continue; if (f16TexAddr && sampler.shadow && ! compare) { compare = true; // compare argument is always present totalDims--; } + // loop over "bool" lod clamp +#ifdef GLSLANG_WEB + const int lodClamp = 0; +#else + for (int lodClamp = 0; lodClamp <= 1 ;++lodClamp) #endif - for (int lodClamp = 0; lodClamp <= 1 ;++lodClamp) { // loop over "bool" lod clamp - + { if (lodClamp && (profile == EEsProfile || version < 450)) continue; if (lodClamp && (proj || lod || fetch)) continue; - for (int sparse = 0; sparse <= 1; ++sparse) { // loop over "bool" sparse or not - + // loop over "bool" sparse or not +#ifdef GLSLANG_WEB + const int sparse = 0; +#else + for (int sparse = 0; sparse <= 1; ++sparse) +#endif + { if (sparse && (profile == EEsProfile || version < 450)) continue; - // Sparse sampling is not for 1D/1D array texture, buffer texture, and projective texture - if (sparse && (sampler.dim == Esd1D || sampler.dim == EsdBuffer || proj)) + // Sparse sampling is not for 1D/1D array texture, buffer texture, and + // projective texture + if (sparse && (sampler.is1D() || sampler.isBuffer() || proj)) continue; TString s; @@ -6858,14 +6092,10 @@ s.append("int "); else { if (sampler.shadow) -#ifdef AMD_EXTENSIONS if (sampler.type == EbtFloat16) s.append("float16_t "); else s.append("float "); -#else - s.append("float "); -#endif else { s.append(prefixes[sampler.type]); s.append("vec4 "); @@ -6903,7 +6133,6 @@ // sampler type s.append(typeName); -#ifdef AMD_EXTENSIONS // P coordinate if (extraProj) { if (f16TexAddr) @@ -6921,31 +6150,15 @@ s.append(postfixes[totalDims]); } } -#else - // P coordinate - if (extraProj) - s.append(",vec4"); - else { - s.append(","); - TBasicType t = fetch ? EbtInt : EbtFloat; - if (totalDims == 1) - s.append(TType::getBasicString(t)); - else { - s.append(prefixes[t]); - s.append("vec"); - s.append(postfixes[totalDims]); - } - } -#endif // non-optional compare if (compare) s.append(",float"); // non-optional lod argument (lod that's not driven by lod loop) or sample - if ((fetch && sampler.dim != EsdBuffer && sampler.dim != EsdRect && !sampler.ms) || - (sampler.ms && fetch)) + if ((fetch && !sampler.isBuffer() && + !sampler.isRect() && !sampler.isMultiSample()) + || (sampler.isMultiSample() && fetch)) s.append(",int"); -#ifdef AMD_EXTENSIONS // non-optional lod if (lod) { if (f16TexAddr) @@ -6974,23 +6187,6 @@ s.append(postfixes[dimMap[sampler.dim]]); } } -#else - // non-optional lod - if (lod) - s.append(",float"); - - // gradient arguments - if (grad) { - if (dimMap[sampler.dim] == 1) - s.append(",float,float"); - else { - s.append(",vec"); - s.append(postfixes[dimMap[sampler.dim]]); - s.append(",vec"); - s.append(postfixes[dimMap[sampler.dim]]); - } - } -#endif // offset if (offset) { if (dimMap[sampler.dim] == 1) @@ -7001,7 +6197,6 @@ } } -#ifdef AMD_EXTENSIONS // lod clamp if (lodClamp) { if (f16TexAddr) @@ -7009,29 +6204,19 @@ else s.append(",float"); } -#else - // lod clamp - if (lodClamp) - s.append(",float"); -#endif // texel out (for sparse texture) if (sparse) { s.append(",out "); if (sampler.shadow) -#ifdef AMD_EXTENSIONS if (sampler.type == EbtFloat16) s.append("float16_t"); else s.append("float"); -#else - s.append("float"); -#endif else { s.append(prefixes[sampler.type]); s.append("vec4"); } } -#ifdef AMD_EXTENSIONS // optional bias if (bias) { if (f16TexAddr) @@ -7039,27 +6224,18 @@ else s.append(",float"); } -#else - // optional bias - if (bias) - s.append(",float"); -#endif s.append(");\n"); // Add to the per-language set of built-ins if (bias || lodClamp) { stageBuiltins[EShLangFragment].append(s); -#ifdef NV_EXTENSIONS stageBuiltins[EShLangCompute].append(s); -#endif } else commonBuiltins.append(s); } } -#ifdef AMD_EXTENSIONS } -#endif } } } @@ -7077,6 +6253,11 @@ // 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: @@ -7086,18 +6267,16 @@ return; } - if (sampler.ms) + if (sampler.isMultiSample()) return; if (version < 140 && sampler.dim == EsdRect && sampler.type != EbtFloat) return; -#ifdef AMD_EXTENSIONS for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr) { // loop over 16-bit floating-point texel addressing if (f16TexAddr && sampler.type != EbtFloat16) continue; -#endif for (int offset = 0; offset < 3; ++offset) { // loop over three forms of offset in the call name: none, Offset, and Offsets for (int comp = 0; comp < 2; ++comp) { // loop over presence of comp argument @@ -7145,14 +6324,10 @@ s.append(typeName); // P coordinate argument -#ifdef AMD_EXTENSIONS if (f16TexAddr) s.append(",f16vec"); else s.append(",vec"); -#else - s.append(",vec"); -#endif int totalDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0); s.append(postfixes[totalDims]); @@ -7180,14 +6355,11 @@ s.append(");\n"); commonBuiltins.append(s); -#ifdef AMD_EXTENSIONS } -#endif } } } -#ifdef AMD_EXTENSIONS if (sampler.dim == EsdRect || sampler.shadow) return; @@ -7313,7 +6485,6 @@ } } } -#endif } // @@ -7325,6 +6496,11 @@ // 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. // @@ -7336,7 +6512,7 @@ //============================================================================ TString& s = commonBuiltins; - const int maxSize = 80; + const int maxSize = 200; char builtInConstant[maxSize]; // @@ -7382,6 +6558,7 @@ s.append(builtInConstant); } +#ifndef GLSLANG_WEB if (version >= 310) { // geometry @@ -7440,10 +6617,8 @@ "in gl_PerVertex {" "highp vec4 gl_Position;" "highp float gl_PointSize;" -#ifdef NV_EXTENSIONS "highp vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "highp vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes -#endif "} gl_in[gl_MaxPatchVertices];" "\n"); } @@ -7630,10 +6805,8 @@ if (profile != EEsProfile && version >= 450) s.append( "float gl_CullDistance[];" -#ifdef NV_EXTENSIONS "vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes -#endif ); s.append( "} gl_in[gl_MaxPatchVertices];" @@ -7667,8 +6840,29 @@ 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)) { @@ -7684,6 +6878,18 @@ 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)) { @@ -7721,31 +6927,6 @@ 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); @@ -7761,7 +6942,6 @@ s.append(builtInConstant); } -#ifdef NV_EXTENSIONS // SPV_NV_mesh_shader if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { snprintf(builtInConstant, maxSize, "const int gl_MaxMeshOutputVerticesNV = %d;", resources.maxMeshOutputVerticesNV); @@ -7865,6 +7045,11 @@ // 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. @@ -7879,6 +7064,17 @@ switch(language) { case EShLangVertex: + if (spvVersion.vulkan > 0) { + BuiltInVariable("gl_VertexIndex", EbvVertexIndex, symbolTable); + BuiltInVariable("gl_InstanceIndex", EbvInstanceIndex, symbolTable); + } + +#ifndef GLSLANG_WEB + if (spvVersion.vulkan == 0) { + SpecialQualifier("gl_VertexID", EvqVertexId, EbvVertexId, symbolTable); + SpecialQualifier("gl_InstanceID", EvqInstanceId, EbvInstanceId, symbolTable); + } + if (profile != EEsProfile) { if (version >= 440) { symbolTable.setVariableExtensions("gl_BaseVertexARB", 1, &E_GL_ARB_shader_draw_parameters); @@ -7913,7 +7109,6 @@ } -#ifdef AMD_EXTENSIONS if (profile != EEsProfile) { symbolTable.setFunctionExtensions("minInvocationsAMD", 1, &E_GL_AMD_shader_ballot); symbolTable.setFunctionExtensions("maxInvocationsAMD", 1, &E_GL_AMD_shader_ballot); @@ -7959,15 +7154,21 @@ symbolTable.setFunctionExtensions("fragmentMaskFetchAMD", 1, &E_GL_AMD_shader_fragment_mask); symbolTable.setFunctionExtensions("fragmentFetchAMD", 1, &E_GL_AMD_shader_fragment_mask); } -#endif -#ifdef NV_EXTENSIONS + 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); symbolTable.setFunctionExtensions("textureFootprintGradNV", 1, &E_GL_NV_shader_texture_footprint); symbolTable.setFunctionExtensions("textureFootprintGradClampNV", 1, &E_GL_NV_shader_texture_footprint); -#endif // Compatibility variables, vertex only if (spvVersion.spv == 0) { BuiltInVariable("gl_Color", EbvColor, symbolTable); @@ -8008,16 +7209,6 @@ symbolTable.setFunctionExtensions("imageAtomicCompSwap", 1, &E_GL_OES_shader_image_atomic); } - if (spvVersion.vulkan == 0) { - SpecialQualifier("gl_VertexID", EvqVertexId, EbvVertexId, symbolTable); - SpecialQualifier("gl_InstanceID", EvqInstanceId, EbvInstanceId, symbolTable); - } - - if (spvVersion.vulkan > 0) { - BuiltInVariable("gl_VertexIndex", EbvVertexIndex, symbolTable); - BuiltInVariable("gl_InstanceIndex", EbvInstanceIndex, symbolTable); - } - if (version >= 300 /* both ES and non-ES */) { symbolTable.setVariableExtensions("gl_ViewID_OVR", Num_OVR_multiview_EXTs, OVR_multiview_EXTs); BuiltInVariable("gl_ViewID_OVR", EbvViewIndex, symbolTable); @@ -8027,7 +7218,6 @@ symbolTable.setFunctionExtensions("shadow2DEXT", 1, &E_GL_EXT_shadow_samplers); symbolTable.setFunctionExtensions("shadow2DProjEXT", 1, &E_GL_EXT_shadow_samplers); } - // Fall through case EShLangTessControl: @@ -8043,22 +7233,26 @@ BuiltInVariable("gl_BoundingBox", EbvBoundingBox, symbolTable); } } - // Fall through case EShLangTessEvaluation: case EShLangGeometry: +#endif SpecialQualifier("gl_Position", EvqPosition, EbvPosition, symbolTable); SpecialQualifier("gl_PointSize", EvqPointSize, EbvPointSize, symbolTable); - SpecialQualifier("gl_ClipVertex", EvqClipVertex, EbvClipVertex, symbolTable); BuiltInVariable("gl_in", "gl_Position", EbvPosition, symbolTable); BuiltInVariable("gl_in", "gl_PointSize", EbvPointSize, symbolTable); - BuiltInVariable("gl_in", "gl_ClipDistance", EbvClipDistance, symbolTable); - BuiltInVariable("gl_in", "gl_CullDistance", EbvCullDistance, symbolTable); BuiltInVariable("gl_out", "gl_Position", EbvPosition, symbolTable); BuiltInVariable("gl_out", "gl_PointSize", EbvPointSize, symbolTable); + +#ifndef GLSLANG_WEB + SpecialQualifier("gl_ClipVertex", EvqClipVertex, EbvClipVertex, symbolTable); + + BuiltInVariable("gl_in", "gl_ClipDistance", EbvClipDistance, symbolTable); + BuiltInVariable("gl_in", "gl_CullDistance", EbvCullDistance, symbolTable); + BuiltInVariable("gl_out", "gl_ClipDistance", EbvClipDistance, symbolTable); BuiltInVariable("gl_out", "gl_CullDistance", EbvCullDistance, symbolTable); @@ -8070,19 +7264,10 @@ BuiltInVariable("gl_Layer", EbvLayer, symbolTable); BuiltInVariable("gl_ViewportIndex", EbvViewportIndex, symbolTable); -#ifdef NV_EXTENSIONS if (language != EShLangGeometry) { symbolTable.setVariableExtensions("gl_Layer", Num_viewportEXTs, viewportEXTs); symbolTable.setVariableExtensions("gl_ViewportIndex", Num_viewportEXTs, viewportEXTs); } -#else - if (language != EShLangGeometry && version >= 410) { - symbolTable.setVariableExtensions("gl_Layer", 1, &E_GL_ARB_shader_viewport_layer_array); - symbolTable.setVariableExtensions("gl_ViewportIndex", 1, &E_GL_ARB_shader_viewport_layer_array); - } -#endif - -#ifdef NV_EXTENSIONS symbolTable.setVariableExtensions("gl_ViewportMask", 1, &E_GL_NV_viewport_array2); symbolTable.setVariableExtensions("gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering); symbolTable.setVariableExtensions("gl_SecondaryViewportMaskNV", 1, &E_GL_NV_stereo_view_rendering); @@ -8113,7 +7298,6 @@ BuiltInVariable("gl_out", "gl_SecondaryViewportMaskNV", EbvSecondaryViewportMaskNV, symbolTable); BuiltInVariable("gl_out", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable); BuiltInVariable("gl_out", "gl_ViewportMaskPerViewNV", EbvViewportMaskPerViewNV, symbolTable); -#endif BuiltInVariable("gl_PatchVerticesIn", EbvPatchVertices, symbolTable); BuiltInVariable("gl_TessLevelOuter", EbvTessLevelOuter, symbolTable); @@ -8214,7 +7398,7 @@ BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } - +#endif break; case EShLangFragment: @@ -8231,6 +7415,7 @@ } } SpecialQualifier("gl_FragDepth", EvqFragDepth, EbvFragDepth, symbolTable); +#ifndef GLSLANG_WEB SpecialQualifier("gl_FragDepthEXT", EvqFragDepth, EbvFragDepth, symbolTable); SpecialQualifier("gl_HelperInvocation", EvqVaryingIn, EbvHelperInvocation, symbolTable); @@ -8243,18 +7428,29 @@ BuiltInVariable("gl_FragStencilRefARB", EbvFragStencilRef, symbolTable); } - if ((profile != EEsProfile && version >= 400) || + if ((profile != EEsProfile && version >= 130) || (profile == EEsProfile && version >= 310)) { - BuiltInVariable("gl_SampleID", EbvSampleId, symbolTable); - BuiltInVariable("gl_SamplePosition", EbvSamplePosition, symbolTable); - BuiltInVariable("gl_SampleMaskIn", EbvSampleMask, symbolTable); - BuiltInVariable("gl_SampleMask", EbvSampleMask, symbolTable); - if (profile == EEsProfile && version < 320) { - symbolTable.setVariableExtensions("gl_SampleID", 1, &E_GL_OES_sample_variables); - symbolTable.setVariableExtensions("gl_SamplePosition", 1, &E_GL_OES_sample_variables); - symbolTable.setVariableExtensions("gl_SampleMaskIn", 1, &E_GL_OES_sample_variables); - symbolTable.setVariableExtensions("gl_SampleMask", 1, &E_GL_OES_sample_variables); - symbolTable.setVariableExtensions("gl_NumSamples", 1, &E_GL_OES_sample_variables); + BuiltInVariable("gl_SampleID", EbvSampleId, symbolTable); + BuiltInVariable("gl_SamplePosition", EbvSamplePosition, symbolTable); + BuiltInVariable("gl_SampleMask", EbvSampleMask, symbolTable); + + if (profile != EEsProfile && version < 400) { + BuiltInVariable("gl_NumSamples", EbvSampleMask, symbolTable); + + symbolTable.setVariableExtensions("gl_SampleMask", 1, &E_GL_ARB_sample_shading); + symbolTable.setVariableExtensions("gl_SampleID", 1, &E_GL_ARB_sample_shading); + symbolTable.setVariableExtensions("gl_SamplePosition", 1, &E_GL_ARB_sample_shading); + symbolTable.setVariableExtensions("gl_NumSamples", 1, &E_GL_ARB_sample_shading); + } else { + BuiltInVariable("gl_SampleMaskIn", EbvSampleMask, symbolTable); + + if (profile == EEsProfile && version < 320) { + symbolTable.setVariableExtensions("gl_SampleID", 1, &E_GL_OES_sample_variables); + symbolTable.setVariableExtensions("gl_SamplePosition", 1, &E_GL_OES_sample_variables); + symbolTable.setVariableExtensions("gl_SampleMaskIn", 1, &E_GL_OES_sample_variables); + symbolTable.setVariableExtensions("gl_SampleMask", 1, &E_GL_OES_sample_variables); + symbolTable.setVariableExtensions("gl_NumSamples", 1, &E_GL_OES_sample_variables); + } } } @@ -8385,7 +7581,6 @@ symbolTable.setFunctionExtensions("textureGradOffsetClampARB", 1, &E_GL_ARB_sparse_texture_clamp); } -#ifdef AMD_EXTENSIONS // E_GL_AMD_shader_explicit_vertex_parameter if (profile != EEsProfile) { symbolTable.setVariableExtensions("gl_BaryCoordNoPerspAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); @@ -8423,9 +7618,6 @@ symbolTable.setFunctionExtensions("imageStoreLodAMD", 1, &E_GL_AMD_shader_image_load_store_lod); symbolTable.setFunctionExtensions("sparseImageLoadLodAMD", 1, &E_GL_AMD_shader_image_load_store_lod); } -#endif - -#ifdef NV_EXTENSIONS if (profile != EEsProfile && version >= 430) { symbolTable.setVariableExtensions("gl_FragFullyCoveredNV", 1, &E_GL_NV_conservative_raster_underestimation); BuiltInVariable("gl_FragFullyCoveredNV", EbvFragFullyCoveredNV, symbolTable); @@ -8441,7 +7633,6 @@ BuiltInVariable("gl_BaryCoordNV", EbvBaryCoordNV, symbolTable); BuiltInVariable("gl_BaryCoordNoPerspNV", EbvBaryCoordNoPerspNV, symbolTable); } -#endif if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { @@ -8581,8 +7772,6 @@ symbolTable.setFunctionExtensions("subgroupQuadSwapHorizontal", 1, &E_GL_KHR_shader_subgroup_quad); symbolTable.setFunctionExtensions("subgroupQuadSwapVertical", 1, &E_GL_KHR_shader_subgroup_quad); symbolTable.setFunctionExtensions("subgroupQuadSwapDiagonal", 1, &E_GL_KHR_shader_subgroup_quad); - -#ifdef NV_EXTENSIONS symbolTable.setFunctionExtensions("subgroupPartitionNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedAddNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedMulNV", 1, &E_GL_NV_shader_subgroup_partitioned); @@ -8605,7 +7794,6 @@ symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveAndNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveOrNV", 1, &E_GL_NV_shader_subgroup_partitioned); symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveXorNV", 1, &E_GL_NV_shader_subgroup_partitioned); -#endif // GL_NV_shader_sm_builtins symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins); @@ -8645,6 +7833,7 @@ } symbolTable.setFunctionExtensions("helperInvocationEXT", 1, &E_GL_EXT_demote_to_helper_invocation); +#endif break; case EShLangCompute: @@ -8654,6 +7843,15 @@ 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); @@ -8735,14 +7933,6 @@ BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } - 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); - } - // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { @@ -8755,11 +7945,13 @@ symbolTable.setFunctionExtensions("subgroupMemoryBarrierShared", 1, &E_GL_KHR_shader_subgroup_basic); } - symbolTable.setFunctionExtensions("coopMatLoadNV", 1, &E_GL_NV_cooperative_matrix); - symbolTable.setFunctionExtensions("coopMatStoreNV", 1, &E_GL_NV_cooperative_matrix); - symbolTable.setFunctionExtensions("coopMatMulAddNV", 1, &E_GL_NV_cooperative_matrix); + { + const char *coopExt[2] = { E_GL_NV_cooperative_matrix, E_GL_NV_integer_cooperative_matrix }; + symbolTable.setFunctionExtensions("coopMatLoadNV", 2, coopExt); + symbolTable.setFunctionExtensions("coopMatStoreNV", 2, coopExt); + symbolTable.setFunctionExtensions("coopMatMulAddNV", 2, coopExt); + } -#ifdef NV_EXTENSIONS if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.setFunctionExtensions("dFdx", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("dFdy", 1, &E_GL_NV_compute_shader_derivatives); @@ -8772,9 +7964,9 @@ symbolTable.setFunctionExtensions("fwidthCoarse", 1, &E_GL_NV_compute_shader_derivatives); } #endif - break; -#ifdef NV_EXTENSIONS + +#ifndef GLSLANG_WEB case EShLangRayGenNV: case EShLangIntersectNV: case EShLangAnyHitNV: @@ -9130,74 +8322,10 @@ // expected to be resolved through a library of functions, versus as // operations. // - symbolTable.relateToOperator("not", EOpVectorLogicalNot); - 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("mod", EOpMod); - symbolTable.relateToOperator("modf", EOpModf); + relateTabledBuiltins(version, profile, spvVersion, language, symbolTable); - symbolTable.relateToOperator("equal", EOpVectorEqual); - symbolTable.relateToOperator("notEqual", EOpVectorNotEqual); - symbolTable.relateToOperator("lessThan", EOpLessThan); - symbolTable.relateToOperator("greaterThan", EOpGreaterThan); - symbolTable.relateToOperator("lessThanEqual", EOpLessThanEqual); - symbolTable.relateToOperator("greaterThanEqual", EOpGreaterThanEqual); - - symbolTable.relateToOperator("radians", EOpRadians); - symbolTable.relateToOperator("degrees", EOpDegrees); - symbolTable.relateToOperator("sin", EOpSin); - symbolTable.relateToOperator("cos", EOpCos); - symbolTable.relateToOperator("tan", EOpTan); - symbolTable.relateToOperator("asin", EOpAsin); - symbolTable.relateToOperator("acos", EOpAcos); - symbolTable.relateToOperator("atan", EOpAtan); - symbolTable.relateToOperator("sinh", EOpSinh); - symbolTable.relateToOperator("cosh", EOpCosh); - symbolTable.relateToOperator("tanh", EOpTanh); - symbolTable.relateToOperator("asinh", EOpAsinh); - symbolTable.relateToOperator("acosh", EOpAcosh); - symbolTable.relateToOperator("atanh", EOpAtanh); - - symbolTable.relateToOperator("pow", EOpPow); - symbolTable.relateToOperator("exp2", EOpExp2); - symbolTable.relateToOperator("log", EOpLog); - symbolTable.relateToOperator("exp", EOpExp); - symbolTable.relateToOperator("log2", EOpLog2); - symbolTable.relateToOperator("sqrt", EOpSqrt); - symbolTable.relateToOperator("inversesqrt", EOpInverseSqrt); - - symbolTable.relateToOperator("abs", EOpAbs); - symbolTable.relateToOperator("sign", EOpSign); - symbolTable.relateToOperator("floor", EOpFloor); - symbolTable.relateToOperator("trunc", EOpTrunc); - symbolTable.relateToOperator("round", EOpRound); - symbolTable.relateToOperator("roundEven", EOpRoundEven); - symbolTable.relateToOperator("ceil", EOpCeil); - symbolTable.relateToOperator("fract", EOpFract); - symbolTable.relateToOperator("min", EOpMin); - symbolTable.relateToOperator("max", EOpMax); - symbolTable.relateToOperator("clamp", EOpClamp); - symbolTable.relateToOperator("mix", EOpMix); - symbolTable.relateToOperator("step", EOpStep); - symbolTable.relateToOperator("smoothstep", EOpSmoothStep); - - symbolTable.relateToOperator("isnan", EOpIsNan); - symbolTable.relateToOperator("isinf", EOpIsInf); - - 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); symbolTable.relateToOperator("int64BitsToDouble", EOpInt64BitsToDouble); @@ -9212,11 +8340,6 @@ symbolTable.relateToOperator("int16BitsToHalf", EOpInt16BitsToFloat16); symbolTable.relateToOperator("uint16BitsToHalf", EOpUint16BitsToFloat16); - symbolTable.relateToOperator("packSnorm2x16", EOpPackSnorm2x16); - symbolTable.relateToOperator("unpackSnorm2x16", EOpUnpackSnorm2x16); - symbolTable.relateToOperator("packUnorm2x16", EOpPackUnorm2x16); - symbolTable.relateToOperator("unpackUnorm2x16", EOpUnpackUnorm2x16); - symbolTable.relateToOperator("packSnorm4x8", EOpPackSnorm4x8); symbolTable.relateToOperator("unpackSnorm4x8", EOpUnpackSnorm4x8); symbolTable.relateToOperator("packUnorm4x8", EOpPackUnorm4x8); @@ -9225,9 +8348,6 @@ symbolTable.relateToOperator("packDouble2x32", EOpPackDouble2x32); symbolTable.relateToOperator("unpackDouble2x32", EOpUnpackDouble2x32); - symbolTable.relateToOperator("packHalf2x16", EOpPackHalf2x16); - symbolTable.relateToOperator("unpackHalf2x16", EOpUnpackHalf2x16); - symbolTable.relateToOperator("packInt2x32", EOpPackInt2x32); symbolTable.relateToOperator("unpackInt2x32", EOpUnpackInt2x32); symbolTable.relateToOperator("packUint2x32", EOpPackUint2x32); @@ -9253,33 +8373,10 @@ symbolTable.relateToOperator("unpack16", EOpUnpack16); symbolTable.relateToOperator("unpack8", EOpUnpack8); - symbolTable.relateToOperator("length", EOpLength); - symbolTable.relateToOperator("distance", EOpDistance); - symbolTable.relateToOperator("dot", EOpDot); - symbolTable.relateToOperator("cross", EOpCross); - symbolTable.relateToOperator("normalize", EOpNormalize); - symbolTable.relateToOperator("faceforward", EOpFaceForward); - symbolTable.relateToOperator("reflect", EOpReflect); - symbolTable.relateToOperator("refract", EOpRefract); - - symbolTable.relateToOperator("any", EOpAny); - symbolTable.relateToOperator("all", EOpAll); - - symbolTable.relateToOperator("barrier", EOpBarrier); symbolTable.relateToOperator("controlBarrier", EOpBarrier); - symbolTable.relateToOperator("memoryBarrier", EOpMemoryBarrier); symbolTable.relateToOperator("memoryBarrierAtomicCounter", EOpMemoryBarrierAtomicCounter); - symbolTable.relateToOperator("memoryBarrierBuffer", EOpMemoryBarrierBuffer); symbolTable.relateToOperator("memoryBarrierImage", EOpMemoryBarrierImage); - symbolTable.relateToOperator("atomicAdd", EOpAtomicAdd); - symbolTable.relateToOperator("atomicMin", EOpAtomicMin); - symbolTable.relateToOperator("atomicMax", EOpAtomicMax); - symbolTable.relateToOperator("atomicAnd", EOpAtomicAnd); - symbolTable.relateToOperator("atomicOr", EOpAtomicOr); - symbolTable.relateToOperator("atomicXor", EOpAtomicXor); - symbolTable.relateToOperator("atomicExchange", EOpAtomicExchange); - symbolTable.relateToOperator("atomicCompSwap", EOpAtomicCompSwap); symbolTable.relateToOperator("atomicLoad", EOpAtomicLoad); symbolTable.relateToOperator("atomicStore", EOpAtomicStore); @@ -9321,6 +8418,15 @@ 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); @@ -9340,24 +8446,6 @@ symbolTable.relateToOperator("subpassLoad", EOpSubpassLoad); symbolTable.relateToOperator("subpassLoadMS", EOpSubpassLoadMS); - 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); symbolTable.relateToOperator("textureGather", EOpTextureGather); symbolTable.relateToOperator("textureGatherOffset", EOpTextureGatherOffset); symbolTable.relateToOperator("textureGatherOffsets", EOpTextureGatherOffsets); @@ -9367,17 +8455,17 @@ symbolTable.relateToOperator("noise3", EOpNoise); symbolTable.relateToOperator("noise4", EOpNoise); -#ifdef NV_EXTENSIONS symbolTable.relateToOperator("textureFootprintNV", EOpImageSampleFootprintNV); symbolTable.relateToOperator("textureFootprintClampNV", EOpImageSampleFootprintClampNV); symbolTable.relateToOperator("textureFootprintLodNV", EOpImageSampleFootprintLodNV); symbolTable.relateToOperator("textureFootprintGradNV", EOpImageSampleFootprintGradNV); symbolTable.relateToOperator("textureFootprintGradClampNV", EOpImageSampleFootprintGradClampNV); -#endif + + 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); @@ -9469,7 +8557,6 @@ symbolTable.relateToOperator("allInvocations", EOpAllInvocations); symbolTable.relateToOperator("allInvocationsEqual", EOpAllInvocationsEqual); } -#ifdef AMD_EXTENSIONS symbolTable.relateToOperator("minInvocationsAMD", EOpMinInvocations); symbolTable.relateToOperator("maxInvocationsAMD", EOpMaxInvocations); symbolTable.relateToOperator("addInvocationsAMD", EOpAddInvocations); @@ -9514,7 +8601,6 @@ symbolTable.relateToOperator("fragmentMaskFetchAMD", EOpFragmentMaskFetch); symbolTable.relateToOperator("fragmentFetchAMD", EOpFragmentFetch); -#endif } // GL_KHR_shader_subgroup @@ -9575,7 +8661,6 @@ symbolTable.relateToOperator("subgroupQuadSwapVertical", EOpSubgroupQuadSwapVertical); symbolTable.relateToOperator("subgroupQuadSwapDiagonal", EOpSubgroupQuadSwapDiagonal); -#ifdef NV_EXTENSIONS symbolTable.relateToOperator("subgroupPartitionNV", EOpSubgroupPartition); symbolTable.relateToOperator("subgroupPartitionedAddNV", EOpSubgroupPartitionedAdd); symbolTable.relateToOperator("subgroupPartitionedMulNV", EOpSubgroupPartitionedMul); @@ -9598,7 +8683,6 @@ symbolTable.relateToOperator("subgroupPartitionedExclusiveAndNV", EOpSubgroupPartitionedExclusiveAnd); symbolTable.relateToOperator("subgroupPartitionedExclusiveOrNV", EOpSubgroupPartitionedExclusiveOr); symbolTable.relateToOperator("subgroupPartitionedExclusiveXorNV", EOpSubgroupPartitionedExclusiveXor); -#endif } if (profile == EEsProfile) { @@ -9623,9 +8707,6 @@ break; case EShLangFragment: - symbolTable.relateToOperator("dFdx", EOpDPdx); - symbolTable.relateToOperator("dFdy", EOpDPdy); - symbolTable.relateToOperator("fwidth", EOpFwidth); if (profile != EEsProfile && version >= 400) { symbolTable.relateToOperator("dFdxFine", EOpDPdxFine); symbolTable.relateToOperator("dFdyFine", EOpDPdyFine); @@ -9638,10 +8719,8 @@ symbolTable.relateToOperator("interpolateAtSample", EOpInterpolateAtSample); symbolTable.relateToOperator("interpolateAtOffset", EOpInterpolateAtOffset); -#ifdef AMD_EXTENSIONS if (profile != EEsProfile) symbolTable.relateToOperator("interpolateAtVertexAMD", EOpInterpolateAtVertex); -#endif symbolTable.relateToOperator("beginInvocationInterlockARB", EOpBeginInvocationInterlock); symbolTable.relateToOperator("endInvocationInterlockARB", EOpEndInvocationInterlock); @@ -9649,10 +8728,7 @@ break; case EShLangCompute: - symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared); - symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier); symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared); -#ifdef NV_EXTENSIONS if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.relateToOperator("dFdx", EOpDPdx); @@ -9665,13 +8741,11 @@ symbolTable.relateToOperator("dFdyCoarse", EOpDPdyCoarse); symbolTable.relateToOperator("fwidthCoarse",EOpFwidthCoarse); } -#endif symbolTable.relateToOperator("coopMatLoadNV", EOpCooperativeMatrixLoad); symbolTable.relateToOperator("coopMatStoreNV", EOpCooperativeMatrixStore); symbolTable.relateToOperator("coopMatMulAddNV", EOpCooperativeMatrixMulAdd); break; -#ifdef NV_EXTENSIONS case EShLangRayGenNV: case EShLangClosestHitNV: case EShLangMissNV: @@ -9707,11 +8781,11 @@ symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared); } break; -#endif default: assert(false && "Language not supported"); } +#endif } // @@ -9725,6 +8799,7 @@ // void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources) { +#ifndef GLSLANG_WEB if (profile != EEsProfile && version >= 430 && version < 440) { symbolTable.setVariableExtensions("gl_MaxTransformFeedbackBuffers", 1, &E_GL_ARB_enhanced_layouts); symbolTable.setVariableExtensions("gl_MaxTransformFeedbackInterleavedComponents", 1, &E_GL_ARB_enhanced_layouts); @@ -9770,13 +8845,11 @@ BuiltInVariable("gl_in", "gl_TexCoord", EbvTexCoord, symbolTable); BuiltInVariable("gl_in", "gl_FogFragCoord", EbvFogFragCoord, symbolTable); -#ifdef NV_EXTENSIONS symbolTable.setVariableExtensions("gl_in", "gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering); symbolTable.setVariableExtensions("gl_in", "gl_PositionPerViewNV", 1, &E_GL_NVX_multiview_per_view_attributes); BuiltInVariable("gl_in", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable); BuiltInVariable("gl_in", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable); -#endif // extension requirements if (profile == EEsProfile) { @@ -9788,6 +8861,7 @@ default: break; } +#endif } } // end namespace glslang diff -Nru glslang-7.12.3352/glslang/MachineIndependent/Initialize.h glslang-8.13.3559/glslang/MachineIndependent/Initialize.h --- glslang-7.12.3352/glslang/MachineIndependent/Initialize.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/Initialize.h 2020-01-06 14:50:40.000000000 +0000 @@ -91,6 +91,8 @@ 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 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); diff -Nru glslang-7.12.3352/glslang/MachineIndependent/Intermediate.cpp glslang-8.13.3559/glslang/MachineIndependent/Intermediate.cpp --- glslang-7.12.3352/glslang/MachineIndependent/Intermediate.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/Intermediate.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -123,12 +123,12 @@ if ((op == EOpAdd || op == EOpSub) && extensionRequested(E_GL_EXT_buffer_reference2)) { // No addressing math on struct with unsized array. - if ((left->getBasicType() == EbtReference && left->getType().getReferentType()->containsUnsizedArray()) || - (right->getBasicType() == EbtReference && right->getType().getReferentType()->containsUnsizedArray())) { + if ((left->isReference() && left->getType().getReferentType()->containsUnsizedArray()) || + (right->isReference() && right->getType().getReferentType()->containsUnsizedArray())) { return nullptr; } - if (left->getBasicType() == EbtReference && isTypeInt(right->getBasicType())) { + if (left->isReference() && isTypeInt(right->getBasicType())) { const TType& referenceType = left->getType(); TIntermConstantUnion* size = addConstantUnion((unsigned long long)computeBufferReferenceTypeSize(left->getType()), loc, true); left = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, left, TType(EbtUint64)); @@ -141,7 +141,7 @@ return node; } - if (op == EOpAdd && right->getBasicType() == EbtReference && isTypeInt(left->getBasicType())) { + if (op == EOpAdd && right->isReference() && isTypeInt(left->getBasicType())) { const TType& referenceType = right->getType(); TIntermConstantUnion* size = addConstantUnion((unsigned long long)computeBufferReferenceTypeSize(right->getType()), loc, true); right = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, right, TType(EbtUint64)); @@ -154,7 +154,7 @@ return node; } - if (op == EOpSub && left->getBasicType() == EbtReference && right->getBasicType() == EbtReference) { + if (op == EOpSub && left->isReference() && right->isReference()) { TIntermConstantUnion* size = addConstantUnion((long long)computeBufferReferenceTypeSize(left->getType()), loc, true); left = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, left, TType(EbtUint64)); @@ -170,7 +170,7 @@ } // No other math operators supported on references - if (left->getBasicType() == EbtReference || right->getBasicType() == EbtReference) { + if (left->isReference() || right->isReference()) { return nullptr; } } @@ -216,7 +216,7 @@ node->getWritableType().getQualifier().makeSpecConstant(); // If must propagate nonuniform, make a nonuniform. - if ((node->getLeft()->getQualifier().nonUniform || node->getRight()->getQualifier().nonUniform) && + if ((node->getLeft()->getQualifier().isNonUniform() || node->getRight()->getQualifier().isNonUniform()) && isNonuniformPropagating(node->getOp())) node->getWritableType().getQualifier().nonUniform = true; @@ -290,7 +290,7 @@ // Convert "reference += int" to "reference = reference + int". We need this because the // "reference + int" calculation involves a cast back to the original type, which makes it // not an lvalue. - if ((op == EOpAddAssign || op == EOpSubAssign) && left->getBasicType() == EbtReference && + if ((op == EOpAddAssign || op == EOpSubAssign) && left->isReference() && extensionRequested(E_GL_EXT_buffer_reference2)) { if (!(right->getType().isScalar() && right->getType().isIntegerDomain())) @@ -359,7 +359,7 @@ switch (op) { case EOpLogicalNot: - if (source == EShSourceHlsl) { + if (getSource() == EShSourceHlsl) { break; // HLSL can promote logical not } @@ -383,18 +383,20 @@ // TBasicType newType = EbtVoid; switch (op) { - case EOpConstructInt8: newType = EbtInt8; break; - case EOpConstructUint8: newType = EbtUint8; break; - case EOpConstructInt16: newType = EbtInt16; break; - case EOpConstructUint16: newType = EbtUint16; break; + case EOpConstructBool: newType = EbtBool; break; + case EOpConstructFloat: newType = EbtFloat; break; case EOpConstructInt: newType = EbtInt; break; case EOpConstructUint: newType = EbtUint; break; +#ifndef GLSLANG_WEB + case EOpConstructInt8: newType = EbtInt8; break; + case EOpConstructUint8: newType = EbtUint8; break; + case EOpConstructInt16: newType = EbtInt16; break; + case EOpConstructUint16: newType = EbtUint16; break; case EOpConstructInt64: newType = EbtInt64; break; case EOpConstructUint64: newType = EbtUint64; break; - case EOpConstructBool: newType = EbtBool; break; - case EOpConstructFloat: newType = EbtFloat; break; case EOpConstructDouble: newType = EbtDouble; break; case EOpConstructFloat16: newType = EbtFloat16; break; +#endif default: break; // some compilers want this } @@ -449,7 +451,7 @@ node->getWritableType().getQualifier().makeSpecConstant(); // If must propagate nonuniform, make a nonuniform. - if (node->getOperand()->getQualifier().nonUniform && isNonuniformPropagating(node->getOp())) + if (node->getOperand()->getQualifier().isNonUniform() && isNonuniformPropagating(node->getOp())) node->getWritableType().getQualifier().nonUniform = true; return node; @@ -536,15 +538,13 @@ return false; case EbtAtomicUint: case EbtSampler: -#ifdef NV_EXTENSIONS case EbtAccStructNV: -#endif // opaque types can be passed to functions if (op == EOpFunction) break; // HLSL can assign samplers directly (no constructor) - if (source == EShSourceHlsl && node->getBasicType() == EbtSampler) + if (getSource() == EShSourceHlsl && node->getBasicType() == EbtSampler) break; // samplers can get assigned via a sampler constructor @@ -562,89 +562,50 @@ 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. -TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped* node) const +bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& newOp) const { - // - // Add a new newNode for the conversion. - // - TIntermUnary* newNode = nullptr; - - TOperator newOp = EOpNull; - - bool convertToIntTypes = (convertTo == EbtInt8 || convertTo == EbtUint8 || - convertTo == EbtInt16 || convertTo == EbtUint16 || - convertTo == EbtInt || convertTo == EbtUint || - convertTo == EbtInt64 || convertTo == EbtUint64); - - bool convertFromIntTypes = (node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8 || - node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16 || - node->getBasicType() == EbtInt || node->getBasicType() == EbtUint || - node->getBasicType() == EbtInt64 || node->getBasicType() == EbtUint64); - - bool convertToFloatTypes = (convertTo == EbtFloat16 || convertTo == EbtFloat || convertTo == EbtDouble); - - bool convertFromFloatTypes = (node->getBasicType() == EbtFloat16 || - node->getBasicType() == EbtFloat || - node->getBasicType() == EbtDouble); - - if (! getArithemeticInt8Enabled()) { - if (((convertTo == EbtInt8 || convertTo == EbtUint8) && ! convertFromIntTypes) || - ((node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8) && ! convertToIntTypes)) - return nullptr; - } - - if (! getArithemeticInt16Enabled()) { - if (((convertTo == EbtInt16 || convertTo == EbtUint16) && ! convertFromIntTypes) || - ((node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16) && ! convertToIntTypes)) - return nullptr; - } - - if (! getArithemeticFloat16Enabled()) { - if ((convertTo == EbtFloat16 && ! convertFromFloatTypes) || - (node->getBasicType() == EbtFloat16 && ! convertToFloatTypes)) - return nullptr; - } - - switch (convertTo) { + switch (dst) { +#ifndef GLSLANG_WEB case EbtDouble: - switch (node->getBasicType()) { + 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 EbtInt: newOp = EOpConvIntToDouble; break; - case EbtUint: newOp = EOpConvUintToDouble; break; - case EbtBool: newOp = EOpConvBoolToDouble; break; - case EbtFloat: newOp = EOpConvFloatToDouble; break; case EbtFloat16: newOp = EOpConvFloat16ToDouble; break; case EbtInt64: newOp = EOpConvInt64ToDouble; break; case EbtUint64: newOp = EOpConvUint64ToDouble; break; default: - return nullptr; + return false; } break; +#endif case EbtFloat: - switch (node->getBasicType()) { - case EbtInt8: newOp = EOpConvInt8ToFloat; break; - case EbtUint8: newOp = EOpConvUint8ToFloat; break; - case EbtInt16: newOp = EOpConvInt16ToFloat; break; - case EbtUint16: newOp = EOpConvUint16ToFloat; break; + 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 nullptr; + return false; } break; +#ifndef GLSLANG_WEB case EbtFloat16: - switch (node->getBasicType()) { + switch (src) { case EbtInt8: newOp = EOpConvInt8ToFloat16; break; case EbtUint8: newOp = EOpConvUint8ToFloat16; break; case EbtInt16: newOp = EOpConvInt16ToFloat16; break; @@ -657,28 +618,32 @@ case EbtInt64: newOp = EOpConvInt64ToFloat16; break; case EbtUint64: newOp = EOpConvUint64ToFloat16; break; default: - return nullptr; + return false; } break; +#endif case EbtBool: - switch (node->getBasicType()) { - case EbtInt8: newOp = EOpConvInt8ToBool; break; - case EbtUint8: newOp = EOpConvUint8ToBool; break; - case EbtInt16: newOp = EOpConvInt16ToBool; break; - case EbtUint16: newOp = EOpConvUint16ToBool; break; + 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 nullptr; + return false; } break; +#ifndef GLSLANG_WEB case EbtInt8: - switch (node->getBasicType()) { + switch (src) { case EbtUint8: newOp = EOpConvUint8ToInt8; break; case EbtInt16: newOp = EOpConvInt16ToInt8; break; case EbtUint16: newOp = EOpConvUint16ToInt8; break; @@ -691,11 +656,11 @@ case EbtDouble: newOp = EOpConvDoubleToInt8; break; case EbtFloat16: newOp = EOpConvFloat16ToInt8; break; default: - return nullptr; + return false; } break; case EbtUint8: - switch (node->getBasicType()) { + switch (src) { case EbtInt8: newOp = EOpConvInt8ToUint8; break; case EbtInt16: newOp = EOpConvInt16ToUint8; break; case EbtUint16: newOp = EOpConvUint16ToUint8; break; @@ -708,12 +673,12 @@ case EbtDouble: newOp = EOpConvDoubleToUint8; break; case EbtFloat16: newOp = EOpConvFloat16ToUint8; break; default: - return nullptr; + return false; } break; case EbtInt16: - switch (node->getBasicType()) { + switch (src) { case EbtUint8: newOp = EOpConvUint8ToInt16; break; case EbtInt8: newOp = EOpConvInt8ToInt16; break; case EbtUint16: newOp = EOpConvUint16ToInt16; break; @@ -726,11 +691,11 @@ case EbtDouble: newOp = EOpConvDoubleToInt16; break; case EbtFloat16: newOp = EOpConvFloat16ToInt16; break; default: - return nullptr; + return false; } break; case EbtUint16: - switch (node->getBasicType()) { + switch (src) { case EbtInt8: newOp = EOpConvInt8ToUint16; break; case EbtUint8: newOp = EOpConvUint8ToUint16; break; case EbtInt16: newOp = EOpConvInt16ToUint16; break; @@ -743,46 +708,52 @@ case EbtDouble: newOp = EOpConvDoubleToUint16; break; case EbtFloat16: newOp = EOpConvFloat16ToUint16; break; default: - return nullptr; + return false; } break; +#endif case EbtInt: - switch (node->getBasicType()) { + 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 EbtUint: newOp = EOpConvUintToInt; break; - case EbtBool: newOp = EOpConvBoolToInt; break; - case EbtFloat: newOp = EOpConvFloatToInt; 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; + return false; } break; case EbtUint: - switch (node->getBasicType()) { + 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 EbtInt: newOp = EOpConvIntToUint; break; - case EbtBool: newOp = EOpConvBoolToUint; break; - case EbtFloat: newOp = EOpConvFloatToUint; 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; + return false; } break; +#ifndef GLSLANG_WEB case EbtInt64: - switch (node->getBasicType()) { + switch (src) { case EbtInt8: newOp = EOpConvInt8ToInt64; break; case EbtUint8: newOp = EOpConvUint8ToInt64; break; case EbtInt16: newOp = EOpConvInt16ToInt64; break; @@ -795,11 +766,11 @@ case EbtFloat16: newOp = EOpConvFloat16ToInt64; break; case EbtUint64: newOp = EOpConvUint64ToInt64; break; default: - return nullptr; + return false; } break; case EbtUint64: - switch (node->getBasicType()) { + switch (src) { case EbtInt8: newOp = EOpConvInt8ToUint64; break; case EbtUint8: newOp = EOpConvUint8ToUint64; break; case EbtInt16: newOp = EOpConvInt16ToUint64; break; @@ -812,10 +783,64 @@ case EbtFloat16: newOp = EOpConvFloat16ToUint64; break; case EbtInt64: newOp = EOpConvInt64ToUint64; break; default: - return nullptr; + 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. +TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped* node) const +{ + // + // Add a new newNode for the conversion. + // + +#ifndef GLSLANG_WEB + bool convertToIntTypes = (convertTo == EbtInt8 || convertTo == EbtUint8 || + convertTo == EbtInt16 || convertTo == EbtUint16 || + convertTo == EbtInt || convertTo == EbtUint || + convertTo == EbtInt64 || convertTo == EbtUint64); + + bool convertFromIntTypes = (node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8 || + node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16 || + node->getBasicType() == EbtInt || node->getBasicType() == EbtUint || + node->getBasicType() == EbtInt64 || node->getBasicType() == EbtUint64); + + bool convertToFloatTypes = (convertTo == EbtFloat16 || convertTo == EbtFloat || convertTo == EbtDouble); + + bool convertFromFloatTypes = (node->getBasicType() == EbtFloat16 || + node->getBasicType() == EbtFloat || + node->getBasicType() == EbtDouble); + + if (! getArithemeticInt8Enabled()) { + if (((convertTo == EbtInt8 || convertTo == EbtUint8) && ! convertFromIntTypes) || + ((node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8) && ! convertToIntTypes)) + return nullptr; + } + + if (! getArithemeticInt16Enabled()) { + if (((convertTo == EbtInt16 || convertTo == EbtUint16) && ! convertFromIntTypes) || + ((node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16) && ! convertToIntTypes)) + return nullptr; + } + + if (! getArithemeticFloat16Enabled()) { + if ((convertTo == EbtFloat16 && ! convertFromFloatTypes) || + (node->getBasicType() == EbtFloat16 && ! convertToFloatTypes)) + return nullptr; + } +#endif + + TIntermUnary* newNode = nullptr; + TOperator newOp = EOpNull; + if (!buildConvertOp(convertTo, node->getBasicType(), newOp)) { return nullptr; } @@ -823,11 +848,14 @@ 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; @@ -921,7 +949,7 @@ case EOpLogicalAnd: case EOpLogicalOr: case EOpLogicalXor: - if (source == EShSourceHlsl) + if (getSource() == EShSourceHlsl) promoteTo = std::make_tuple(EbtBool, EbtBool); else return std::make_tuple(node0, node1); @@ -932,7 +960,7 @@ // HLSL can promote bools to ints to make this work. case EOpLeftShift: case EOpRightShift: - if (source == EShSourceHlsl) { + if (getSource() == EShSourceHlsl) { TBasicType node0BasicType = node0->getBasicType(); if (node0BasicType == EbtBool) node0BasicType = EbtInt; @@ -1027,6 +1055,13 @@ case EOpConstructFloat: promoteTo = EbtFloat; break; + case EOpConstructInt: + promoteTo = EbtInt; + break; + case EOpConstructUint: + promoteTo = EbtUint; + break; +#ifndef GLSLANG_WEB case EOpConstructDouble: promoteTo = EbtDouble; break; @@ -1055,18 +1090,13 @@ canPromoteConstant = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16); break; - case EOpConstructInt: - promoteTo = EbtInt; - break; - case EOpConstructUint: - promoteTo = EbtUint; - break; case EOpConstructInt64: promoteTo = EbtInt64; break; case EOpConstructUint64: promoteTo = EbtUint64; break; +#endif case EOpLogicalNot: @@ -1099,6 +1129,7 @@ case EOpLit: case EOpMax: case EOpMin: + case EOpMod: case EOpModf: case EOpPow: case EOpReflect: @@ -1110,7 +1141,7 @@ case EOpConstructStruct: case EOpConstructCooperativeMatrix: - if (type.getBasicType() == EbtReference || node->getType().getBasicType() == EbtReference) { + if (type.isReference() || node->getType().isReference()) { // types must match to assign a reference if (type == node->getType()) return node; @@ -1133,7 +1164,7 @@ case EOpLeftShiftAssign: case EOpRightShiftAssign: { - if (source == EShSourceHlsl && node->getType().getBasicType() == EbtBool) + if (getSource() == EShSourceHlsl && node->getType().getBasicType() == EbtBool) promoteTo = type.getBasicType(); else { if (isTypeInt(type.getBasicType()) && isTypeInt(node->getBasicType())) @@ -1179,7 +1210,7 @@ TIntermTyped* TIntermediate::addUniShapeConversion(TOperator op, const TType& type, TIntermTyped* node) { // some source languages don't do this - switch (source) { + switch (getSource()) { case EShSourceHlsl: break; case EShSourceGlsl: @@ -1232,7 +1263,7 @@ void TIntermediate::addBiShapeConversion(TOperator op, TIntermTyped*& lhsNode, TIntermTyped*& rhsNode) { // some source languages don't do this - switch (source) { + switch (getSource()) { case EShSourceHlsl: break; case EShSourceGlsl: @@ -1335,7 +1366,7 @@ // The new node that handles the conversion TOperator constructorOp = mapTypeToConstructorOp(type); - if (source == EShSourceHlsl) { + if (getSource() == EShSourceHlsl) { // HLSL rules for scalar, vector and matrix conversions: // 1) scalar can become anything, initializing every component with its value // 2) vector and matrix can become scalar, first element is used (warning: truncation) @@ -1448,13 +1479,15 @@ bool TIntermediate::isIntegralConversion(TBasicType from, TBasicType to) const { +#ifdef GLSLANG_WEB + return false; +#endif + switch (from) { - case EbtInt8: - switch (to) { - case EbtUint8: - case EbtInt16: - case EbtUint16: + case EbtInt: + switch(to) { case EbtUint: + return version >= 400 || getSource() == EShSourceHlsl; case EbtInt64: case EbtUint64: return true; @@ -1462,11 +1495,8 @@ break; } break; - case EbtUint8: - switch (to) { - case EbtInt16: - case EbtUint16: - case EbtUint: + case EbtUint: + switch(to) { case EbtInt64: case EbtUint64: return true; @@ -1474,8 +1504,10 @@ break; } break; - case EbtInt16: - switch(to) { + case EbtInt8: + switch (to) { + case EbtUint8: + case EbtInt16: case EbtUint16: case EbtUint: case EbtInt64: @@ -1485,8 +1517,10 @@ break; } break; - case EbtUint16: - switch(to) { + case EbtUint8: + switch (to) { + case EbtInt16: + case EbtUint16: case EbtUint: case EbtInt64: case EbtUint64: @@ -1495,10 +1529,10 @@ break; } break; - case EbtInt: + case EbtInt16: switch(to) { + case EbtUint16: case EbtUint: - return version >= 400 || (source == EShSourceHlsl); case EbtInt64: case EbtUint64: return true; @@ -1506,8 +1540,9 @@ break; } break; - case EbtUint: + case EbtUint16: switch(to) { + case EbtUint: case EbtInt64: case EbtUint64: return true; @@ -1528,6 +1563,10 @@ bool TIntermediate::isFPConversion(TBasicType from, TBasicType to) const { +#ifdef GLSLANG_WEB + return false; +#endif + if (to == EbtFloat && from == EbtFloat16) { return true; } else { @@ -1538,12 +1577,9 @@ bool TIntermediate::isFPIntegralConversion(TBasicType from, TBasicType to) const { switch (from) { - case EbtInt8: - case EbtUint8: - case EbtInt16: - case EbtUint16: - switch (to) { - case EbtFloat16: + case EbtInt: + case EbtUint: + switch(to) { case EbtFloat: case EbtDouble: return true; @@ -1551,9 +1587,13 @@ break; } break; - case EbtInt: - case EbtUint: - switch(to) { +#ifndef GLSLANG_WEB + case EbtInt8: + case EbtUint8: + case EbtInt16: + case EbtUint16: + switch (to) { + case EbtFloat16: case EbtFloat: case EbtDouble: return true; @@ -1567,7 +1607,7 @@ return true; } break; - +#endif default: break; } @@ -1580,7 +1620,7 @@ // bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperator op) const { - if (profile == EEsProfile || version == 110) + if (isEsProfile() || version == 110) return false; if (from == to) @@ -1588,7 +1628,7 @@ // TODO: Move more policies into language-specific handlers. // Some languages allow more general (or potentially, more specific) conversions under some conditions. - if (source == EShSourceHlsl) { + if (getSource() == EShSourceHlsl) { const bool fromConvertable = (from == EbtFloat || from == EbtDouble || from == EbtInt || from == EbtUint || from == EbtBool); const bool toConvertable = (to == EbtFloat || to == EbtDouble || to == EbtInt || to == EbtUint || to == EbtBool); @@ -1655,7 +1695,7 @@ } // hlsl supported conversions - if (source == EShSourceHlsl) { + if (getSource() == EShSourceHlsl) { if (from == EbtBool && (to == EbtInt || to == EbtUint || to == EbtFloat)) return true; } @@ -1670,13 +1710,11 @@ case EbtFloat: case EbtDouble: return true; -#ifdef AMD_EXTENSIONS case EbtInt16: case EbtUint16: return extensionRequested(E_GL_AMD_gpu_shader_int16); case EbtFloat16: return extensionRequested(E_GL_AMD_gpu_shader_half_float); -#endif default: return false; } @@ -1687,34 +1725,28 @@ case EbtFloat: return true; case EbtBool: - return (source == EShSourceHlsl); -#ifdef AMD_EXTENSIONS + return getSource() == EShSourceHlsl; case EbtInt16: case EbtUint16: return extensionRequested(E_GL_AMD_gpu_shader_int16); -#endif case EbtFloat16: return -#ifdef AMD_EXTENSIONS extensionRequested(E_GL_AMD_gpu_shader_half_float) || -#endif - (source == EShSourceHlsl); + getSource() == EShSourceHlsl; default: return false; } case EbtUint: switch (from) { case EbtInt: - return version >= 400 || (source == EShSourceHlsl); + return version >= 400 || getSource() == EShSourceHlsl; case EbtUint: return true; case EbtBool: - return (source == EShSourceHlsl); -#ifdef AMD_EXTENSIONS + return getSource() == EShSourceHlsl; case EbtInt16: case EbtUint16: return extensionRequested(E_GL_AMD_gpu_shader_int16); -#endif default: return false; } @@ -1723,11 +1755,9 @@ case EbtInt: return true; case EbtBool: - return (source == EShSourceHlsl); -#ifdef AMD_EXTENSIONS + return getSource() == EShSourceHlsl; case EbtInt16: return extensionRequested(E_GL_AMD_gpu_shader_int16); -#endif default: return false; } @@ -1738,11 +1768,9 @@ case EbtInt64: case EbtUint64: return true; -#ifdef AMD_EXTENSIONS case EbtInt16: case EbtUint16: return extensionRequested(E_GL_AMD_gpu_shader_int16); -#endif default: return false; } @@ -1751,15 +1779,12 @@ case EbtInt: case EbtInt64: return true; -#ifdef AMD_EXTENSIONS case EbtInt16: return extensionRequested(E_GL_AMD_gpu_shader_int16); -#endif default: return false; } case EbtFloat16: -#ifdef AMD_EXTENSIONS switch (from) { case EbtInt16: case EbtUint16: @@ -1769,10 +1794,8 @@ default: break; } -#endif return false; case EbtUint16: -#ifdef AMD_EXTENSIONS switch (from) { case EbtInt16: case EbtUint16: @@ -1780,7 +1803,6 @@ default: break; } -#endif return false; default: return false; @@ -1790,7 +1812,12 @@ return false; } -static bool canSignedIntTypeRepresentAllUnsignedValues(TBasicType sintType, TBasicType uintType) { +static bool canSignedIntTypeRepresentAllUnsignedValues(TBasicType sintType, TBasicType uintType) +{ +#ifdef GLSLANG_WEB + return false; +#endif + switch(sintType) { case EbtInt8: switch(uintType) { @@ -1849,7 +1876,13 @@ } -static TBasicType getCorrespondingUnsignedType(TBasicType type) { +static TBasicType getCorrespondingUnsignedType(TBasicType type) +{ +#ifdef GLSLANG_WEB + assert(type == EbtInt); + return EbtUint; +#endif + switch(type) { case EbtInt8: return EbtUint8; @@ -1898,10 +1931,10 @@ TBasicType res0 = EbtNumTypes; TBasicType res1 = EbtNumTypes; - if (profile == EEsProfile || version == 110) - return std::make_tuple(res0, res1);; + if (isEsProfile() || version == 110) + return std::make_tuple(res0, res1); - if (source == EShSourceHlsl) { + if (getSource() == EShSourceHlsl) { if (canImplicitlyPromote(type1, type0, op)) { res0 = type0; res1 = type0; @@ -1970,7 +2003,7 @@ { TOperator op = EOpNull; - if (type.getQualifier().nonUniform) + if (type.getQualifier().isNonUniform()) return EOpConstructNonuniform; if (type.isCoopMat()) @@ -1981,7 +2014,7 @@ op = EOpConstructStruct; break; case EbtSampler: - if (type.getSampler().combined) + if (type.getSampler().isCombined()) op = EOpConstructTextureSampler; break; case EbtFloat: @@ -2023,6 +2056,121 @@ } } break; + case EbtInt: + if (type.getMatrixCols()) { + switch (type.getMatrixCols()) { + case 2: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructIMat2x2; break; + case 3: op = EOpConstructIMat2x3; break; + case 4: op = EOpConstructIMat2x4; break; + default: break; // some compilers want this + } + break; + case 3: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructIMat3x2; break; + case 3: op = EOpConstructIMat3x3; break; + case 4: op = EOpConstructIMat3x4; break; + default: break; // some compilers want this + } + break; + case 4: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructIMat4x2; break; + case 3: op = EOpConstructIMat4x3; break; + case 4: op = EOpConstructIMat4x4; break; + default: break; // some compilers want this + } + break; + } + } else { + switch(type.getVectorSize()) { + case 1: op = EOpConstructInt; break; + case 2: op = EOpConstructIVec2; break; + case 3: op = EOpConstructIVec3; break; + case 4: op = EOpConstructIVec4; break; + default: break; // some compilers want this + } + } + break; + case EbtUint: + if (type.getMatrixCols()) { + switch (type.getMatrixCols()) { + case 2: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructUMat2x2; break; + case 3: op = EOpConstructUMat2x3; break; + case 4: op = EOpConstructUMat2x4; break; + default: break; // some compilers want this + } + break; + case 3: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructUMat3x2; break; + case 3: op = EOpConstructUMat3x3; break; + case 4: op = EOpConstructUMat3x4; break; + default: break; // some compilers want this + } + break; + case 4: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructUMat4x2; break; + case 3: op = EOpConstructUMat4x3; break; + case 4: op = EOpConstructUMat4x4; break; + default: break; // some compilers want this + } + break; + } + } else { + switch(type.getVectorSize()) { + case 1: op = EOpConstructUint; break; + case 2: op = EOpConstructUVec2; break; + case 3: op = EOpConstructUVec3; break; + case 4: op = EOpConstructUVec4; break; + default: break; // some compilers want this + } + } + break; + case EbtBool: + if (type.getMatrixCols()) { + switch (type.getMatrixCols()) { + case 2: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructBMat2x2; break; + case 3: op = EOpConstructBMat2x3; break; + case 4: op = EOpConstructBMat2x4; break; + default: break; // some compilers want this + } + break; + case 3: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructBMat3x2; break; + case 3: op = EOpConstructBMat3x3; break; + case 4: op = EOpConstructBMat3x4; break; + default: break; // some compilers want this + } + break; + case 4: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructBMat4x2; break; + case 3: op = EOpConstructBMat4x3; break; + case 4: op = EOpConstructBMat4x4; break; + default: break; // some compilers want this + } + break; + } + } else { + switch(type.getVectorSize()) { + case 1: op = EOpConstructBool; break; + case 2: op = EOpConstructBVec2; break; + case 3: op = EOpConstructBVec3; break; + case 4: op = EOpConstructBVec4; break; + default: break; // some compilers want this + } + } + break; +#ifndef GLSLANG_WEB case EbtDouble: if (type.getMatrixCols()) { switch (type.getMatrixCols()) { @@ -2136,82 +2284,6 @@ default: break; // some compilers want this } break; - case EbtInt: - if (type.getMatrixCols()) { - switch (type.getMatrixCols()) { - case 2: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructIMat2x2; break; - case 3: op = EOpConstructIMat2x3; break; - case 4: op = EOpConstructIMat2x4; break; - default: break; // some compilers want this - } - break; - case 3: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructIMat3x2; break; - case 3: op = EOpConstructIMat3x3; break; - case 4: op = EOpConstructIMat3x4; break; - default: break; // some compilers want this - } - break; - case 4: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructIMat4x2; break; - case 3: op = EOpConstructIMat4x3; break; - case 4: op = EOpConstructIMat4x4; break; - default: break; // some compilers want this - } - break; - } - } else { - switch(type.getVectorSize()) { - case 1: op = EOpConstructInt; break; - case 2: op = EOpConstructIVec2; break; - case 3: op = EOpConstructIVec3; break; - case 4: op = EOpConstructIVec4; break; - default: break; // some compilers want this - } - } - break; - case EbtUint: - if (type.getMatrixCols()) { - switch (type.getMatrixCols()) { - case 2: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructUMat2x2; break; - case 3: op = EOpConstructUMat2x3; break; - case 4: op = EOpConstructUMat2x4; break; - default: break; // some compilers want this - } - break; - case 3: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructUMat3x2; break; - case 3: op = EOpConstructUMat3x3; break; - case 4: op = EOpConstructUMat3x4; break; - default: break; // some compilers want this - } - break; - case 4: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructUMat4x2; break; - case 3: op = EOpConstructUMat4x3; break; - case 4: op = EOpConstructUMat4x4; break; - default: break; // some compilers want this - } - break; - } - } else { - switch(type.getVectorSize()) { - case 1: op = EOpConstructUint; break; - case 2: op = EOpConstructUVec2; break; - case 3: op = EOpConstructUVec3; break; - case 4: op = EOpConstructUVec4; break; - default: break; // some compilers want this - } - } - break; case EbtInt64: switch(type.getVectorSize()) { case 1: op = EOpConstructInt64; break; @@ -2230,47 +2302,10 @@ default: break; // some compilers want this } break; - case EbtBool: - if (type.getMatrixCols()) { - switch (type.getMatrixCols()) { - case 2: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructBMat2x2; break; - case 3: op = EOpConstructBMat2x3; break; - case 4: op = EOpConstructBMat2x4; break; - default: break; // some compilers want this - } - break; - case 3: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructBMat3x2; break; - case 3: op = EOpConstructBMat3x3; break; - case 4: op = EOpConstructBMat3x4; break; - default: break; // some compilers want this - } - break; - case 4: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructBMat4x2; break; - case 3: op = EOpConstructBMat4x3; break; - case 4: op = EOpConstructBMat4x4; break; - default: break; // some compilers want this - } - break; - } - } else { - switch(type.getVectorSize()) { - case 1: op = EOpConstructBool; break; - case 2: op = EOpConstructBVec2; break; - case 3: op = EOpConstructBVec3; break; - case 4: op = EOpConstructBVec4; break; - default: break; // some compilers want this - } - } - break; case EbtReference: op = EOpConstructReference; break; +#endif default: break; } @@ -2729,6 +2764,7 @@ if (aggRoot && aggRoot->getOp() == EOpNull) aggRoot->setOperator(EOpSequence); +#ifndef GLSLANG_WEB // Propagate 'noContraction' label in backward from 'precise' variables. glslang::PropagateNoContraction(*this); @@ -2739,6 +2775,7 @@ performTextureUpgradeAndSamplerRemovalTransformation(root); break; } +#endif return true; } @@ -3780,6 +3817,16 @@ #define PROMOTE(Set, CType, Get) leftUnionArray[i].Set(static_cast(rightUnionArray[i].Get())) #define PROMOTE_TO_BOOL(Get) leftUnionArray[i].setBConst(rightUnionArray[i].Get() != 0) +#ifdef GLSLANG_WEB +#define TO_ALL(Get) \ + switch (promoteTo) { \ + case EbtFloat: PROMOTE(setDConst, double, Get); break; \ + case EbtInt: PROMOTE(setIConst, int, Get); break; \ + case EbtUint: PROMOTE(setUConst, unsigned int, Get); break; \ + case EbtBool: PROMOTE_TO_BOOL(Get); break; \ + default: return node; \ + } +#else #define TO_ALL(Get) \ switch (promoteTo) { \ case EbtFloat16: PROMOTE(setDConst, double, Get); break; \ @@ -3796,20 +3843,23 @@ case EbtBool: PROMOTE_TO_BOOL(Get); break; \ default: return node; \ } +#endif switch (node->getType().getBasicType()) { - case EbtFloat16: TO_ALL(getDConst); break; case EbtFloat: TO_ALL(getDConst); break; + case EbtInt: TO_ALL(getIConst); break; + case EbtUint: TO_ALL(getUConst); break; + case EbtBool: TO_ALL(getBConst); break; +#ifndef GLSLANG_WEB + case EbtFloat16: TO_ALL(getDConst); break; case EbtDouble: TO_ALL(getDConst); break; case EbtInt8: TO_ALL(getI8Const); break; case EbtInt16: TO_ALL(getI16Const); break; - case EbtInt: TO_ALL(getIConst); break; case EbtInt64: TO_ALL(getI64Const); break; case EbtUint8: TO_ALL(getU8Const); break; case EbtUint16: TO_ALL(getU16Const); break; - case EbtUint: TO_ALL(getUConst); break; case EbtUint64: TO_ALL(getU64Const); break; - case EbtBool: TO_ALL(getBConst); break; +#endif default: return node; } } @@ -3839,7 +3889,7 @@ struct TextureUpgradeAndSamplerRemovalTransform : public TIntermTraverser { void visitSymbol(TIntermSymbol* symbol) override { if (symbol->getBasicType() == EbtSampler && symbol->getType().getSampler().isTexture()) { - symbol->getWritableType().getSampler().combined = true; + symbol->getWritableType().getSampler().setCombined(true); } } bool visitAggregate(TVisit, TIntermAggregate* ag) override { diff -Nru glslang-7.12.3352/glslang/MachineIndependent/intermOut.cpp glslang-8.13.3559/glslang/MachineIndependent/intermOut.cpp --- glslang-7.12.3352/glslang/MachineIndependent/intermOut.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/intermOut.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -35,6 +35,8 @@ // POSSIBILITY OF SUCH DAMAGE. // +#ifndef GLSLANG_WEB + #include "localintermediate.h" #include "../Include/InfoSink.h" @@ -174,7 +176,7 @@ case EOpIndexIndirect: out.debug << "indirect index"; break; case EOpIndexDirectStruct: { - bool reference = node->getLeft()->getType().getBasicType() == EbtReference; + bool reference = node->getLeft()->getType().isReference(); const TTypeList *members = reference ? node->getLeft()->getType().getReferentType()->getStruct() : node->getLeft()->getType().getStruct(); out.debug << (*members)[node->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst()].type->getFieldName(); out.debug << ": direct index for structure"; break; @@ -211,6 +213,13 @@ 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 << ""; } @@ -555,6 +564,9 @@ 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; @@ -615,7 +627,6 @@ case EOpSubgroupQuadSwapVertical: out.debug << "subgroupQuadSwapVertical"; break; case EOpSubgroupQuadSwapDiagonal: out.debug << "subgroupQuadSwapDiagonal"; break; -#ifdef NV_EXTENSIONS case EOpSubgroupPartition: out.debug << "subgroupPartitionNV"; break; case EOpSubgroupPartitionedAdd: out.debug << "subgroupPartitionedAddNV"; break; case EOpSubgroupPartitionedMul: out.debug << "subgroupPartitionedMulNV"; break; @@ -638,7 +649,6 @@ case EOpSubgroupPartitionedExclusiveAnd: out.debug << "subgroupPartitionedExclusiveAndNV"; break; case EOpSubgroupPartitionedExclusiveOr: out.debug << "subgroupPartitionedExclusiveOrNV"; break; case EOpSubgroupPartitionedExclusiveXor: out.debug << "subgroupPartitionedExclusiveXorNV"; break; -#endif case EOpClip: out.debug << "clip"; break; case EOpIsFinite: out.debug << "isfinite"; break; @@ -648,7 +658,6 @@ case EOpSparseTexelsResident: out.debug << "sparseTexelsResident"; break; -#ifdef AMD_EXTENSIONS case EOpMinInvocations: out.debug << "minInvocations"; break; case EOpMaxInvocations: out.debug << "maxInvocations"; break; case EOpAddInvocations: out.debug << "addInvocations"; break; @@ -677,7 +686,6 @@ case EOpCubeFaceIndex: out.debug << "cubeFaceIndex"; break; case EOpCubeFaceCoord: out.debug << "cubeFaceCoord"; break; -#endif case EOpSubpassLoad: out.debug << "subpassLoad"; break; case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break; @@ -863,7 +871,6 @@ case EOpReadInvocation: out.debug << "readInvocation"; break; -#ifdef AMD_EXTENSIONS case EOpSwizzleInvocations: out.debug << "swizzleInvocations"; break; case EOpSwizzleInvocationsMasked: out.debug << "swizzleInvocationsMasked"; break; case EOpWriteInvocation: out.debug << "writeInvocation"; break; @@ -871,9 +878,7 @@ case EOpMin3: out.debug << "min3"; break; case EOpMax3: out.debug << "max3"; break; case EOpMid3: out.debug << "mid3"; break; - case EOpTime: out.debug << "time"; break; -#endif case EOpAtomicAdd: out.debug << "AtomicAdd"; break; case EOpAtomicMin: out.debug << "AtomicMin"; break; @@ -910,10 +915,8 @@ case EOpImageAtomicCompSwap: out.debug << "imageAtomicCompSwap"; break; case EOpImageAtomicLoad: out.debug << "imageAtomicLoad"; break; case EOpImageAtomicStore: out.debug << "imageAtomicStore"; break; -#ifdef AMD_EXTENSIONS case EOpImageLoadLod: out.debug << "imageLoadLod"; break; case EOpImageStoreLod: out.debug << "imageStoreLod"; break; -#endif case EOpTextureQuerySize: out.debug << "textureSize"; break; case EOpTextureQueryLod: out.debug << "textureQueryLod"; break; @@ -940,11 +943,9 @@ case EOpTextureOffsetClamp: out.debug << "textureOffsetClamp"; break; case EOpTextureGradClamp: out.debug << "textureGradClamp"; break; case EOpTextureGradOffsetClamp: out.debug << "textureGradOffsetClamp"; break; -#ifdef AMD_EXTENSIONS case EOpTextureGatherLod: out.debug << "textureGatherLod"; break; case EOpTextureGatherLodOffset: out.debug << "textureGatherLodOffset"; break; case EOpTextureGatherLodOffsets: out.debug << "textureGatherLodOffsets"; break; -#endif case EOpSparseTexture: out.debug << "sparseTexture"; break; case EOpSparseTextureOffset: out.debug << "sparseTextureOffset"; break; @@ -962,19 +963,15 @@ case EOpSparseTextureOffsetClamp: out.debug << "sparseTextureOffsetClamp"; break; case EOpSparseTextureGradClamp: out.debug << "sparseTextureGradClamp"; break; case EOpSparseTextureGradOffsetClamp: out.debug << "sparseTextureGradOffsetClam"; break; -#ifdef AMD_EXTENSIONS case EOpSparseTextureGatherLod: out.debug << "sparseTextureGatherLod"; break; case EOpSparseTextureGatherLodOffset: out.debug << "sparseTextureGatherLodOffset"; break; case EOpSparseTextureGatherLodOffsets: out.debug << "sparseTextureGatherLodOffsets"; break; case EOpSparseImageLoadLod: out.debug << "sparseImageLoadLod"; break; -#endif -#ifdef NV_EXTENSIONS case EOpImageSampleFootprintNV: out.debug << "imageSampleFootprintNV"; break; case EOpImageSampleFootprintClampNV: out.debug << "imageSampleFootprintClampNV"; break; case EOpImageSampleFootprintLodNV: out.debug << "imageSampleFootprintLodNV"; break; case EOpImageSampleFootprintGradNV: out.debug << "imageSampleFootprintGradNV"; break; case EOpImageSampleFootprintGradClampNV: out.debug << "mageSampleFootprintGradClampNV"; break; -#endif case EOpAddCarry: out.debug << "addCarry"; break; case EOpSubBorrow: out.debug << "subBorrow"; break; case EOpUMulExtended: out.debug << "uMulExtended"; break; @@ -988,9 +985,7 @@ case EOpInterpolateAtSample: out.debug << "interpolateAtSample"; break; case EOpInterpolateAtOffset: out.debug << "interpolateAtOffset"; break; -#ifdef AMD_EXTENSIONS case EOpInterpolateAtVertex: out.debug << "interpolateAtVertex"; break; -#endif case EOpSinCos: out.debug << "sincos"; break; case EOpGenMul: out.debug << "mul"; break; @@ -1057,7 +1052,6 @@ case EOpSubgroupQuadSwapVertical: out.debug << "subgroupQuadSwapVertical"; break; case EOpSubgroupQuadSwapDiagonal: out.debug << "subgroupQuadSwapDiagonal"; break; -#ifdef NV_EXTENSIONS case EOpSubgroupPartition: out.debug << "subgroupPartitionNV"; break; case EOpSubgroupPartitionedAdd: out.debug << "subgroupPartitionedAddNV"; break; case EOpSubgroupPartitionedMul: out.debug << "subgroupPartitionedMulNV"; break; @@ -1080,19 +1074,16 @@ case EOpSubgroupPartitionedExclusiveAnd: out.debug << "subgroupPartitionedExclusiveAndNV"; break; case EOpSubgroupPartitionedExclusiveOr: out.debug << "subgroupPartitionedExclusiveOrNV"; break; case EOpSubgroupPartitionedExclusiveXor: out.debug << "subgroupPartitionedExclusiveXorNV"; break; -#endif case EOpSubpassLoad: out.debug << "subpassLoad"; break; case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break; -#ifdef NV_EXTENSIONS case EOpTraceNV: out.debug << "traceNV"; break; case EOpReportIntersectionNV: out.debug << "reportIntersectionNV"; break; case EOpIgnoreIntersectionNV: out.debug << "ignoreIntersectionNV"; break; case EOpTerminateRayNV: out.debug << "terminateRayNV"; break; case EOpExecuteCallableNV: out.debug << "executeCallableNV"; break; case EOpWritePackedPrimitiveIndices4x8NV: out.debug << "writePackedPrimitiveIndices4x8NV"; break; -#endif case EOpCooperativeMatrixLoad: out.debug << "Load cooperative matrix"; break; case EOpCooperativeMatrixStore: out.debug << "Store cooperative matrix"; break; @@ -1509,16 +1500,13 @@ infoSink.debug << "interlock ordering = " << TQualifier::getInterlockOrderingString(interlockOrdering) << "\n"; break; -#ifdef NV_EXTENSIONS case EShLangMeshNV: infoSink.debug << "max_vertices = " << vertices << "\n"; infoSink.debug << "max_primitives = " << primitives << "\n"; infoSink.debug << "output primitive = " << TQualifier::getGeometryString(outputPrimitive) << "\n"; // Fall through - case EShLangTaskNV: // Fall through -#endif case EShLangCompute: infoSink.debug << "local_size = (" << localSize[0] << ", " << localSize[1] << ", " << localSize[2] << ")\n"; { @@ -1547,3 +1535,5 @@ } } // end namespace glslang + +#endif // not GLSLANG_WEB \ No newline at end of file diff -Nru glslang-7.12.3352/glslang/MachineIndependent/iomapper.cpp glslang-8.13.3559/glslang/MachineIndependent/iomapper.cpp --- glslang-7.12.3352/glslang/MachineIndependent/iomapper.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/iomapper.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -33,6 +33,8 @@ // POSSIBILITY OF SUCH DAMAGE. // +#ifndef GLSLANG_WEB + #include "../Include/Common.h" #include "../Include/InfoSink.h" @@ -75,7 +77,7 @@ target = &inputList; else if (base->getQualifier().storage == EvqVaryingOut) target = &outputList; - else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().layoutPushConstant) + else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant()) target = &uniformList; if (target) { TVarEntryInfo ent = {base->getId(), base, ! traverseAll}; @@ -355,7 +357,7 @@ } return; } - } else if (base->getQualifier().isUniformOrBuffer() && ! base->getQualifier().layoutPushConstant) { + } else if (base->getQualifier().isUniformOrBuffer() && ! base->getQualifier().isPushConstant()) { // validate uniform type; for (int i = 0; i < EShLangCount; i++) { if (i != currentStage && outVarMaps[i] != nullptr) { @@ -475,7 +477,7 @@ } // no locations added if already present, a built-in variable, a block, or an opaque if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getBasicType() == EbtBlock || - type.getBasicType() == EbtAtomicUint || (type.containsOpaque() && intermediate.getSpv().openGl == 0)) { + type.isAtomic() || (type.containsOpaque() && intermediate.getSpv().openGl == 0)) { return ent.newLocation = -1; } // no locations on blocks of built-in variables @@ -672,7 +674,7 @@ } else { // no locations added if already present, a built-in variable, a block, or an opaque if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getBasicType() == EbtBlock || - type.getBasicType() == EbtAtomicUint || (type.containsOpaque() && intermediate.getSpv().openGl == 0)) { + type.isAtomic() || (type.containsOpaque() && intermediate.getSpv().openGl == 0)) { return ent.newLocation = -1; } // no locations on blocks of built-in variables @@ -943,6 +945,7 @@ } }; +#ifdef ENABLE_HLSL /******************************************************************************** The following IO resolver maps types in HLSL register space, as follows: @@ -1023,6 +1026,7 @@ return ent.newBinding = -1; } }; +#endif // Map I/O variables to provided offsets, and make bindings for // unbound but live variables. @@ -1031,7 +1035,9 @@ 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)); } @@ -1044,6 +1050,7 @@ return false; // if no resolver is provided, use the default resolver with the given shifts and auto map settings TDefaultIoResolver defaultResolver(intermediate); +#ifdef ENABLE_HLSL TDefaultHlslIoResolver defaultHlslResolver(intermediate); if (resolver == nullptr) { // TODO: use a passed in IO mapper for this @@ -1053,6 +1060,10 @@ resolver = &defaultResolver; } resolver->addStage(stage); +#else + resolver = &defaultResolver; +#endif + TVarLiveMap inVarMap, outVarMap, uniformVarMap; TVarLiveVector inVector, outVector, uniformVector; TVarGatherTraverser iter_binding_all(intermediate, true, inVarMap, outVarMap, uniformVarMap); @@ -1125,7 +1136,9 @@ 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)); } @@ -1232,3 +1245,5 @@ } } // end namespace glslang + +#endif // GLSLANG_WEB diff -Nru glslang-7.12.3352/glslang/MachineIndependent/iomapper.h glslang-8.13.3559/glslang/MachineIndependent/iomapper.h --- glslang-7.12.3352/glslang/MachineIndependent/iomapper.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/iomapper.h 2020-01-06 14:50:40.000000000 +0000 @@ -33,6 +33,8 @@ // POSSIBILITY OF SUCH DAMAGE. // +#ifndef GLSLANG_WEB + #ifndef _IOMAPPER_INCLUDED #define _IOMAPPER_INCLUDED @@ -112,7 +114,7 @@ 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; @@ -123,7 +125,7 @@ void addStage(EShLanguage stage) override { if (stage < EShLangCount) stageMask[stage] = true; - }; + } uint32_t computeTypeLocationSize(const TType& type, EShLanguage stage); TSlotSetMap slots; @@ -176,7 +178,7 @@ // Return true if this is a UAV (unordered access view) type: static bool isUavType(const glslang::TType& type) { - if (type.getQualifier().readonly) + if (type.getQualifier().isReadOnly()) return false; return (type.getBasicType() == glslang::EbtSampler && type.getSampler().isImage()) || (type.getQualifier().storage == EvqBuffer); @@ -189,7 +191,7 @@ 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; @@ -207,7 +209,7 @@ 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. @@ -240,7 +242,7 @@ const_cast(first) = _Right.first; second = _Right.second; return (*this); - }; + } }; typedef std::vector TVarLiveVector; @@ -251,7 +253,7 @@ 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 @@ -293,3 +295,5 @@ } // end namespace glslang #endif // _IOMAPPER_INCLUDED + +#endif // GLSLANG_WEB diff -Nru glslang-7.12.3352/glslang/MachineIndependent/limits.cpp glslang-8.13.3559/glslang/MachineIndependent/limits.cpp --- glslang-7.12.3352/glslang/MachineIndependent/limits.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/limits.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -187,12 +187,14 @@ // void TParseContext::constantIndexExpressionCheck(TIntermNode* index) { +#ifndef GLSLANG_WEB TIndexTraverser it(inductiveLoopIds); index->traverse(&it); if (it.bad) error(it.badLoc, "Non-constant-index-expression", "limitations", ""); +#endif } } // end namespace glslang diff -Nru glslang-7.12.3352/glslang/MachineIndependent/linkValidate.cpp glslang-8.13.3559/glslang/MachineIndependent/linkValidate.cpp --- glslang-7.12.3352/glslang/MachineIndependent/linkValidate.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/linkValidate.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -56,8 +56,10 @@ // void TIntermediate::error(TInfoSink& infoSink, const char* message) { +#ifndef GLSLANG_WEB infoSink.info.prefix(EPrefixError); infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; +#endif ++numErrors; } @@ -65,8 +67,10 @@ // Link-time warning. void TIntermediate::warn(TInfoSink& infoSink, const char* message) { +#ifndef GLSLANG_WEB infoSink.info.prefix(EPrefixWarning); infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; +#endif } // TODO: 4.4 offset/align: "Two blocks linked together in the same program with the same block @@ -78,9 +82,11 @@ // void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit) { +#ifndef GLSLANG_WEB mergeCallGraphs(infoSink, unit); mergeModes(infoSink, unit); mergeTrees(infoSink, unit); +#endif } void TIntermediate::mergeCallGraphs(TInfoSink& infoSink, TIntermediate& unit) @@ -98,6 +104,8 @@ callGraph.insert(callGraph.end(), unit.callGraph.begin(), unit.callGraph.end()); } +#ifndef GLSLANG_WEB + #define MERGE_MAX(member) member = std::max(member, unit.member) #define MERGE_TRUE(member) if (unit.member) member = unit.member; @@ -106,9 +114,9 @@ if (language != unit.language) error(infoSink, "stages must match when linking into a single stage"); - if (source == EShSourceNone) - source = unit.source; - if (source != unit.source) + if (getSource() == EShSourceNone) + setSource(unit.getSource()); + if (getSource() != unit.getSource()) error(infoSink, "can't link compilation units from different source languages"); if (treeRoot == nullptr) { @@ -116,7 +124,7 @@ version = unit.version; requestedExtensions = unit.requestedExtensions; } else { - if ((profile == EEsProfile) != (unit.profile == EEsProfile)) + if ((isEsProfile()) != (unit.isEsProfile())) error(infoSink, "Cannot cross link ES and desktop profiles"); else if (unit.profile == ECompatibilityProfile) profile = ECompatibilityProfile; @@ -142,18 +150,13 @@ if (vertices == TQualifier::layoutNotSet) vertices = unit.vertices; else if (vertices != unit.vertices) { - if (language == EShLangGeometry -#ifdef NV_EXTENSIONS - || language == EShLangMeshNV -#endif - ) + if (language == EShLangGeometry || language == EShLangMeshNV) error(infoSink, "Contradictory layout max_vertices values"); else if (language == EShLangTessControl) error(infoSink, "Contradictory layout vertices values"); else assert(0); } -#ifdef NV_EXTENSIONS if (primitives == TQualifier::layoutNotSet) primitives = unit.primitives; else if (primitives != unit.primitives) { @@ -162,7 +165,6 @@ else assert(0); } -#endif if (inputPrimitive == ElgNone) inputPrimitive = unit.inputPrimitive; @@ -190,12 +192,14 @@ 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"); @@ -224,21 +228,16 @@ xfbBuffers[b].implicitStride = std::max(xfbBuffers[b].implicitStride, unit.xfbBuffers[b].implicitStride); if (unit.xfbBuffers[b].contains64BitType) xfbBuffers[b].contains64BitType = true; -#ifdef AMD_EXTENSIONS if (unit.xfbBuffers[b].contains32BitType) xfbBuffers[b].contains32BitType = true; if (unit.xfbBuffers[b].contains16BitType) xfbBuffers[b].contains16BitType = true; -#endif // TODO: 4.4 link: enhanced layouts: compare ranges } MERGE_TRUE(multiStream); - -#ifdef NV_EXTENSIONS MERGE_TRUE(layoutOverrideCoverage); MERGE_TRUE(geoPassthroughEXT); -#endif for (unsigned int i = 0; i < unit.shiftBinding.size(); ++i) { if (unit.shiftBinding[i] > 0) @@ -287,13 +286,8 @@ } // Getting this far means we have two existing trees to merge... -#ifdef NV_EXTENSIONS numShaderRecordNVBlocks += unit.numShaderRecordNVBlocks; -#endif - -#ifdef NV_EXTENSIONS numTaskNVBlocks += unit.numTaskNVBlocks; -#endif // Get the top-level globals of each unit TIntermSequence& globals = treeRoot->getAsAggregate()->getSequence(); @@ -315,6 +309,8 @@ ioAccessed.insert(unit.ioAccessed.begin(), unit.ioAccessed.end()); } +#endif + // Traverser that seeds an ID map with all built-ins, and tracks the // maximum ID used. // (It would be nice to put this in a function, but that causes warnings @@ -502,6 +498,7 @@ // void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, bool crossStage) { +#ifndef GLSLANG_WEB bool writeTypeComparison = false; // Types have to match @@ -536,7 +533,7 @@ } // Precise... - if (! crossStage && symbol.getQualifier().noContraction != unitSymbol.getQualifier().noContraction) { + if (! crossStage && symbol.getQualifier().isNoContraction() != unitSymbol.getQualifier().isNoContraction()) { error(infoSink, "Presence of precise qualifier must match:"); writeTypeComparison = true; } @@ -545,9 +542,9 @@ if (symbol.getQualifier().centroid != unitSymbol.getQualifier().centroid || symbol.getQualifier().smooth != unitSymbol.getQualifier().smooth || symbol.getQualifier().flat != unitSymbol.getQualifier().flat || - symbol.getQualifier().sample != unitSymbol.getQualifier().sample || - symbol.getQualifier().patch != unitSymbol.getQualifier().patch || - symbol.getQualifier().nopersp != unitSymbol.getQualifier().nopersp) { + symbol.getQualifier().isSample()!= unitSymbol.getQualifier().isSample() || + symbol.getQualifier().isPatch() != unitSymbol.getQualifier().isPatch() || + symbol.getQualifier().isNonPerspective() != unitSymbol.getQualifier().isNonPerspective()) { error(infoSink, "Interpolation and auxiliary storage qualifiers must match:"); writeTypeComparison = true; } @@ -595,6 +592,7 @@ if (writeTypeComparison) infoSink.info << " " << symbol.getName() << ": \"" << symbol.getType().getCompleteString() << "\" versus \"" << unitSymbol.getType().getCompleteString() << "\"\n"; +#endif } // @@ -609,15 +607,12 @@ return; if (numEntryPoints < 1) { - if (source == EShSourceGlsl) + if (getSource() == EShSourceGlsl) error(infoSink, "Missing entry point: Each stage requires one entry point"); else warn(infoSink, "Entry point not found"); } - if (numPushConstants > 1) - error(infoSink, "Only one push_constant block is allowed per stage"); - // recursion and missing body checking checkCallGraphCycles(infoSink); checkCallGraphBodies(infoSink, keepUncalled); @@ -625,6 +620,10 @@ // overlap/alias/missing I/O, etc. inOutLocationCheck(infoSink); +#ifndef GLSLANG_WEB + if (getNumPushConstants() > 1) + error(infoSink, "Only one push_constant block is allowed per stage"); + // invocations if (invocations == TQualifier::layoutNotSet) invocations = 1; @@ -642,12 +641,10 @@ for (size_t b = 0; b < xfbBuffers.size(); ++b) { if (xfbBuffers[b].contains64BitType) RoundToPow2(xfbBuffers[b].implicitStride, 8); -#ifdef AMD_EXTENSIONS else if (xfbBuffers[b].contains32BitType) RoundToPow2(xfbBuffers[b].implicitStride, 4); else if (xfbBuffers[b].contains16BitType) RoundToPow2(xfbBuffers[b].implicitStride, 2); -#endif // "It is a compile-time or link-time error to have // any xfb_offset that overflows xfb_stride, whether stated on declarations before or after the xfb_stride, or @@ -668,16 +665,11 @@ error(infoSink, "xfb_stride must be multiple of 8 for buffer holding a double or 64-bit integer:"); infoSink.info.prefix(EPrefixError); infoSink.info << " xfb_buffer " << (unsigned int)b << ", xfb_stride " << xfbBuffers[b].stride << "\n"; -#ifdef AMD_EXTENSIONS } else if (xfbBuffers[b].contains32BitType && ! IsMultipleOfPow2(xfbBuffers[b].stride, 4)) { -#else - } else if (! IsMultipleOfPow2(xfbBuffers[b].stride, 4)) { -#endif error(infoSink, "xfb_stride must be multiple of 4:"); infoSink.info.prefix(EPrefixError); infoSink.info << " xfb_buffer " << (unsigned int)b << ", xfb_stride " << xfbBuffers[b].stride << "\n"; } -#ifdef AMD_EXTENSIONS // "If the buffer is capturing any // outputs with half-precision or 16-bit integer components, the stride must be a multiple of 2" else if (xfbBuffers[b].contains16BitType && ! IsMultipleOfPow2(xfbBuffers[b].stride, 2)) { @@ -686,7 +678,6 @@ infoSink.info << " xfb_buffer " << (unsigned int)b << ", xfb_stride " << xfbBuffers[b].stride << "\n"; } -#endif // "The resulting stride (implicit or explicit), when divided by 4, must be less than or equal to the // implementation-dependent constant gl_MaxTransformFeedbackInterleavedComponents." if (xfbBuffers[b].stride > (unsigned int)(4 * resources.maxTransformFeedbackInterleavedComponents)) { @@ -704,7 +695,7 @@ error(infoSink, "At least one shader must specify an output layout(vertices=...)"); break; case EShLangTessEvaluation: - if (source == EShSourceGlsl) { + if (getSource() == EShSourceGlsl) { if (inputPrimitive == ElgNone) error(infoSink, "At least one shader must specify an input layout primitive"); if (vertexSpacing == EvsNone) @@ -730,8 +721,6 @@ break; case EShLangCompute: break; - -#ifdef NV_EXTENSIONS case EShLangRayGenNV: case EShLangIntersectNV: case EShLangAnyHitNV: @@ -764,8 +753,6 @@ if (numTaskNVBlocks > 1) error(infoSink, "Only one taskNV interface block is allowed per shader"); break; -#endif - default: error(infoSink, "Unknown Stage."); break; @@ -787,6 +774,7 @@ } finalLinkTraverser; treeRoot->traverse(&finalLinkTraverser); +#endif } // @@ -973,7 +961,7 @@ } } - if (profile == EEsProfile) { + if (isEsProfile()) { if (numFragOut > 1 && fragOutWithNoLocation) error(infoSink, "when more than one fragment shader output, all must have location qualifiers"); } @@ -1066,6 +1054,7 @@ // So, for the case of dvec3, we need two independent ioRanges. int collision = -1; // no collision +#ifndef GLSLANG_WEB if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 && (qualifier.isPipeInput() || qualifier.isPipeOutput())) { // Dealing with dvec3 in/out split across two locations. @@ -1092,7 +1081,9 @@ if (collision < 0) usedIo[set].push_back(range2); } - } else { + } else +#endif + { // Not a dvec3 in/out split across two locations, generic path. // Need a single IO-range block. @@ -1106,10 +1097,10 @@ } // 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 (! (profile != EEsProfile && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0) + if (! (!isEsProfile() && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0) collision = checkLocationRange(set, range, type, typeCollision); if (collision < 0) @@ -1187,14 +1178,10 @@ // TODO: perf: this can be flattened by using getCumulativeArraySize(), and a deref that discards all arrayness // TODO: are there valid cases of having an unsized array with a location? If so, running this code too early. TType elementType(type, 0); - if (type.isSizedArray() -#ifdef NV_EXTENSIONS - && !type.getQualifier().isPerView() -#endif - ) + if (type.isSizedArray() && !type.getQualifier().isPerView()) return type.getOuterArraySize() * computeTypeLocationSize(elementType, stage); else { -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB // unset perViewNV attributes for arrayed per-view outputs: "perviewNV vec4 v[MAX_VIEWS][3];" elementType.getQualifier().perViewNV = false; #endif @@ -1273,6 +1260,8 @@ return 1; } +#ifndef GLSLANG_WEB + // Accumulate xfb buffer ranges and check for collisions as the accumulation is done. // // Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value. @@ -1285,11 +1274,7 @@ TXfbBuffer& buffer = xfbBuffers[qualifier.layoutXfbBuffer]; // compute the range -#ifdef AMD_EXTENSIONS unsigned int size = computeTypeXfbSize(type, buffer.contains64BitType, buffer.contains32BitType, buffer.contains16BitType); -#else - unsigned int size = computeTypeXfbSize(type, buffer.contains64BitType); -#endif buffer.implicitStride = std::max(buffer.implicitStride, qualifier.layoutXfbOffset + size); TRange range(qualifier.layoutXfbOffset, qualifier.layoutXfbOffset + size - 1); @@ -1309,15 +1294,10 @@ // Recursively figure out how many bytes of xfb buffer are used by the given type. // Return the size of type, in bytes. // Sets contains64BitType to true if the type contains a 64-bit data type. -#ifdef AMD_EXTENSIONS // Sets contains32BitType to true if the type contains a 32-bit data type. // Sets contains16BitType to true if the type contains a 16-bit data type. // N.B. Caller must set contains64BitType, contains32BitType, and contains16BitType to false before calling. unsigned int TIntermediate::computeTypeXfbSize(const TType& type, bool& contains64BitType, bool& contains32BitType, bool& contains16BitType) const -#else -// N.B. Caller must set contains64BitType to false before calling. -unsigned int TIntermediate::computeTypeXfbSize(const TType& type, bool& contains64BitType) const -#endif { // "...if applied to an aggregate containing a double or 64-bit integer, the offset must also be a multiple of 8, // and the space taken in the buffer will be a multiple of 8. @@ -1330,44 +1310,32 @@ // TODO: perf: this can be flattened by using getCumulativeArraySize(), and a deref that discards all arrayness assert(type.isSizedArray()); TType elementType(type, 0); -#ifdef AMD_EXTENSIONS return type.getOuterArraySize() * computeTypeXfbSize(elementType, contains64BitType, contains16BitType, contains16BitType); -#else - return type.getOuterArraySize() * computeTypeXfbSize(elementType, contains64BitType); -#endif } if (type.isStruct()) { unsigned int size = 0; bool structContains64BitType = false; -#ifdef AMD_EXTENSIONS bool structContains32BitType = false; bool structContains16BitType = false; -#endif for (int member = 0; member < (int)type.getStruct()->size(); ++member) { TType memberType(type, member); // "... if applied to // an aggregate containing a double or 64-bit integer, the offset must also be a multiple of 8, // and the space taken in the buffer will be a multiple of 8." bool memberContains64BitType = false; -#ifdef AMD_EXTENSIONS bool memberContains32BitType = false; bool memberContains16BitType = false; int memberSize = computeTypeXfbSize(memberType, memberContains64BitType, memberContains32BitType, memberContains16BitType); -#else - int memberSize = computeTypeXfbSize(memberType, memberContains64BitType); -#endif if (memberContains64BitType) { structContains64BitType = true; RoundToPow2(size, 8); -#ifdef AMD_EXTENSIONS } else if (memberContains32BitType) { structContains32BitType = true; RoundToPow2(size, 4); } else if (memberContains16BitType) { structContains16BitType = true; RoundToPow2(size, 2); -#endif } size += memberSize; } @@ -1375,14 +1343,12 @@ if (structContains64BitType) { contains64BitType = true; RoundToPow2(size, 8); -#ifdef AMD_EXTENSIONS } else if (structContains32BitType) { contains32BitType = true; RoundToPow2(size, 4); } else if (structContains16BitType) { contains16BitType = true; RoundToPow2(size, 2); -#endif } return size; } @@ -1402,7 +1368,6 @@ if (type.getBasicType() == EbtDouble || type.getBasicType() == EbtInt64 || type.getBasicType() == EbtUint64) { contains64BitType = true; return 8 * numComponents; -#ifdef AMD_EXTENSIONS } else if (type.getBasicType() == EbtFloat16 || type.getBasicType() == EbtInt16 || type.getBasicType() == EbtUint16) { contains16BitType = true; return 2 * numComponents; @@ -1412,12 +1377,10 @@ contains32BitType = true; return 4 * numComponents; } -#else - } else - return 4 * numComponents; -#endif } +#endif + const int baseAlignmentVec4Std140 = 16; // Return the size and alignment of a component of the given type. @@ -1425,6 +1388,10 @@ // Return value is the alignment.. int TIntermediate::getBaseAlignmentScalar(const TType& type, int& size) { +#ifdef GLSLANG_WEB + size = 4; return 4; +#endif + switch (type.getBasicType()) { case EbtInt64: case EbtUint64: @@ -1741,7 +1708,7 @@ int TIntermediate::computeBufferReferenceTypeSize(const TType& type) { - assert(type.getBasicType() == EbtReference); + assert(type.isReference()); int size = getBlockSize(*type.getReferentType()); int align = type.getBufferReferenceAlignment(); diff -Nru glslang-7.12.3352/glslang/MachineIndependent/localintermediate.h glslang-8.13.3559/glslang/MachineIndependent/localintermediate.h --- glslang-7.12.3352/glslang/MachineIndependent/localintermediate.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/localintermediate.h 2020-01-06 14:50:40.000000000 +0000 @@ -147,23 +147,19 @@ TRange offset; }; +#ifndef GLSLANG_WEB // Things that need to be tracked per xfb buffer. struct TXfbBuffer { -#ifdef AMD_EXTENSIONS TXfbBuffer() : stride(TQualifier::layoutXfbStrideEnd), implicitStride(0), contains64BitType(false), contains32BitType(false), contains16BitType(false) { } -#else - TXfbBuffer() : stride(TQualifier::layoutXfbStrideEnd), implicitStride(0), contains64BitType(false) { } -#endif std::vector ranges; // byte offsets that have already been assigned unsigned int stride; unsigned int implicitStride; bool contains64BitType; -#ifdef AMD_EXTENSIONS bool contains32BitType; bool contains16BitType; -#endif }; +#endif // Track a set of strings describing how the module was processed. // Using the form: @@ -217,7 +213,6 @@ class TSymbol; class TVariable; -#ifdef NV_EXTENSIONS // // Texture and Sampler transformation mode. // @@ -226,7 +221,6 @@ LayoutDerivativeGroupQuads, // derivative_group_quadsNV LayoutDerivativeGroupLinear, // derivative_group_linearNV }; -#endif // // Set of helper functions to help parse and build the tree. @@ -234,194 +228,59 @@ class TIntermediate { public: explicit TIntermediate(EShLanguage l, int v = 0, EProfile p = ENoProfile) : - implicitThisName("@this"), implicitCounterName("@count"), - language(l), source(EShSourceNone), profile(p), version(v), treeRoot(0), + language(l), + profile(p), version(v), treeRoot(0), numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false), + invertY(false), + useStorageBuffer(false), + nanMinMaxClamp(false), + depthReplacing(false) +#ifndef GLSLANG_WEB + , + implicitThisName("@this"), implicitCounterName("@count"), + source(EShSourceNone), + useVulkanMemoryModel(false), invocations(TQualifier::layoutNotSet), vertices(TQualifier::layoutNotSet), inputPrimitive(ElgNone), outputPrimitive(ElgNone), pixelCenterInteger(false), originUpperLeft(false), vertexSpacing(EvsNone), vertexOrder(EvoNone), interlockOrdering(EioNone), pointMode(false), earlyFragmentTests(false), - postDepthCoverage(false), depthLayout(EldNone), depthReplacing(false), + postDepthCoverage(false), depthLayout(EldNone), hlslFunctionality1(false), blendEquations(0), xfbMode(false), multiStream(false), -#ifdef NV_EXTENSIONS layoutOverrideCoverage(false), geoPassthroughEXT(false), numShaderRecordNVBlocks(0), computeDerivativeMode(LayoutDerivativeNone), primitives(TQualifier::layoutNotSet), numTaskNVBlocks(0), -#endif autoMapBindings(false), autoMapLocations(false), - invertY(false), flattenUniformArrays(false), useUnknownFormat(false), hlslOffsets(false), - useStorageBuffer(false), - useVulkanMemoryModel(false), hlslIoMapping(false), useVariablePointers(false), textureSamplerTransformMode(EShTexSampTransKeep), needToLegalize(false), binaryDoubleOutput(false), usePhysicalStorageBuffer(false), - uniformLocationBase(0), - nanMinMaxClamp(false) + uniformLocationBase(0) +#endif { 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; +#ifndef GLSLANG_WEB xfbBuffers.resize(TQualifier::layoutXfbBufferEnd); - shiftBinding.fill(0); +#endif } - void setLimits(const TBuiltInResource& r) { resources = r; } - - bool postProcess(TIntermNode*, EShLanguage); - void output(TInfoSink&, bool tree); - void removeTree(); - - void setSource(EShSource s) { source = s; } - EShSource getSource() const { return source; } - void setEntryPointName(const char* ep) - { - entryPointName = ep; - processes.addProcess("entry-point"); - processes.addArgument(entryPointName); - } - void setEntryPointMangledName(const char* ep) { entryPointMangledName = ep; } - const std::string& getEntryPointName() const { return entryPointName; } - const std::string& getEntryPointMangledName() const { return entryPointMangledName; } - - void setShiftBinding(TResourceType res, unsigned int shift) - { - shiftBinding[res] = shift; - - const char* name = getResourceName(res); - if (name != nullptr) - processes.addIfNonZero(name, shift); - } - - unsigned int getShiftBinding(TResourceType res) const { return shiftBinding[res]; } - - void setShiftBindingForSet(TResourceType res, unsigned int shift, unsigned int set) - { - if (shift == 0) // ignore if there's no shift: it's a no-op. - return; - - shiftBindingForSet[res][set] = shift; - - const char* name = getResourceName(res); - if (name != nullptr) { - processes.addProcess(name); - processes.addArgument(shift); - processes.addArgument(set); - } - } - - int getShiftBindingForSet(TResourceType res, unsigned int set) const - { - const auto shift = shiftBindingForSet[res].find(set); - return shift == shiftBindingForSet[res].end() ? -1 : shift->second; - } - bool hasShiftBindingForSet(TResourceType res) const { return !shiftBindingForSet[res].empty(); } - - void setResourceSetBinding(const std::vector& shift) - { - resourceSetBinding = shift; - if (shift.size() > 0) { - processes.addProcess("resource-set-binding"); - for (int s = 0; s < (int)shift.size(); ++s) - processes.addArgument(shift[s]); - } - } - const std::vector& getResourceSetBinding() const { return resourceSetBinding; } - void setAutoMapBindings(bool map) - { - autoMapBindings = map; - if (autoMapBindings) - processes.addProcess("auto-map-bindings"); - } - bool getAutoMapBindings() const { return autoMapBindings; } - void setAutoMapLocations(bool map) - { - autoMapLocations = map; - if (autoMapLocations) - processes.addProcess("auto-map-locations"); - } - bool getAutoMapLocations() const { return autoMapLocations; } - void setInvertY(bool invert) - { - invertY = invert; - if (invertY) - processes.addProcess("invert-y"); - } - bool getInvertY() const { return invertY; } - - void setFlattenUniformArrays(bool flatten) - { - flattenUniformArrays = flatten; - if (flattenUniformArrays) - processes.addProcess("flatten-uniform-arrays"); - } - bool getFlattenUniformArrays() const { return flattenUniformArrays; } - void setNoStorageFormat(bool b) - { - useUnknownFormat = b; - if (useUnknownFormat) - processes.addProcess("no-storage-format"); - } - bool getNoStorageFormat() const { return useUnknownFormat; } - void setHlslOffsets() - { - hlslOffsets = true; - if (hlslOffsets) - processes.addProcess("hlsl-offsets"); - } - bool usingHlslOffsets() const { return hlslOffsets; } - void setUseStorageBuffer() - { - useStorageBuffer = true; - processes.addProcess("use-storage-buffer"); - } - bool usingStorageBuffer() const { return useStorageBuffer; } - void setHlslIoMapping(bool b) - { - hlslIoMapping = b; - if (hlslIoMapping) - processes.addProcess("hlsl-iomap"); - } - bool usingHlslIoMapping() { return hlslIoMapping; } - void setUseVulkanMemoryModel() - { - useVulkanMemoryModel = true; - processes.addProcess("use-vulkan-memory-model"); - } - bool usingVulkanMemoryModel() const { return useVulkanMemoryModel; } - void setUsePhysicalStorageBuffer() - { - usePhysicalStorageBuffer = true; - } - bool usingPhysicalStorageBuffer() const { return usePhysicalStorageBuffer; } - void setUseVariablePointers() - { - useVariablePointers = true; - processes.addProcess("use-variable-pointers"); - } - bool usingVariablePointers() const { return useVariablePointers; } - - template T addCounterBufferName(const T& name) const { return name + implicitCounterName; } - bool hasCounterBufferName(const TString& name) const { - size_t len = strlen(implicitCounterName); - return name.size() > len && - name.compare(name.size() - len, len, implicitCounterName) == 0; - } - - void setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { textureSamplerTransformMode = mode; } void setVersion(int v) { version = v; } int getVersion() const { return version; } @@ -452,6 +311,12 @@ 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; @@ -485,9 +350,35 @@ int getNumEntryPoints() const { return numEntryPoints; } int getNumErrors() const { return numErrors; } void addPushConstantCount() { ++numPushConstants; } -#ifdef NV_EXTENSIONS - void addShaderRecordNVCount() { ++numShaderRecordNVBlocks; } - void addTaskNVCount() { ++numTaskNVBlocks; } + void setLimits(const TBuiltInResource& r) { resources = r; } + + bool postProcess(TIntermNode*, EShLanguage); + void removeTree(); + + void setEntryPointName(const char* ep) + { + entryPointName = ep; + processes.addProcess("entry-point"); + processes.addArgument(entryPointName); + } + void setEntryPointMangledName(const char* ep) { entryPointMangledName = ep; } + const std::string& getEntryPointName() const { return entryPointName; } + const std::string& getEntryPointMangledName() const { return entryPointMangledName; } + + void setInvertY(bool invert) + { + invertY = invert; + if (invertY) + processes.addProcess("invert-y"); + } + bool getInvertY() const { return invertY; } + +#ifdef ENABLE_HLSL + void setSource(EShSource s) { source = s; } + EShSource getSource() const { return source; } +#else + void setSource(EShSource s) { assert(s == EShSourceGlsl); } + EShSource getSource() const { return EShSourceGlsl; } #endif bool isRecursive() const { return recursive; } @@ -566,67 +457,23 @@ void addSymbolLinkageNodes(TIntermAggregate*& linkage, EShLanguage, TSymbolTable&); void addSymbolLinkageNode(TIntermAggregate*& linkage, const TSymbol&); - bool setInvocations(int i) - { - if (invocations != TQualifier::layoutNotSet) - return invocations == i; - invocations = i; - return true; - } - int getInvocations() const { return invocations; } - bool setVertices(int m) - { - if (vertices != TQualifier::layoutNotSet) - return vertices == m; - vertices = m; - return true; - } - int getVertices() const { return vertices; } - bool setInputPrimitive(TLayoutGeometry p) - { - if (inputPrimitive != ElgNone) - return inputPrimitive == p; - inputPrimitive = p; - return true; - } - TLayoutGeometry getInputPrimitive() const { return inputPrimitive; } - bool setVertexSpacing(TVertexSpacing s) - { - if (vertexSpacing != EvsNone) - return vertexSpacing == s; - vertexSpacing = s; - return true; - } - TVertexSpacing getVertexSpacing() const { return vertexSpacing; } - bool setVertexOrder(TVertexOrder o) - { - if (vertexOrder != EvoNone) - return vertexOrder == o; - vertexOrder = o; - return true; - } - TVertexOrder getVertexOrder() const { return vertexOrder; } - void setPointMode() { pointMode = true; } - bool getPointMode() const { return pointMode; } - - bool setInterlockOrdering(TInterlockOrdering o) + void setUseStorageBuffer() { - if (interlockOrdering != EioNone) - return interlockOrdering == o; - interlockOrdering = o; - return true; + useStorageBuffer = true; + processes.addProcess("use-storage-buffer"); } - TInterlockOrdering getInterlockOrdering() const { return interlockOrdering; } - + bool usingStorageBuffer() const { return useStorageBuffer; } + void setDepthReplacing() { depthReplacing = true; } + bool isDepthReplacing() const { return depthReplacing; } 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; } unsigned int getLocalSize(int dim) const { return localSize[dim]; } - bool setLocalSizeSpecId(int dim, int id) { if (localSizeSpecId[dim] != TQualifier::layoutNotSet) @@ -635,27 +482,212 @@ return true; } int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; } +#ifdef GLSLANG_WEB + void output(TInfoSink&, bool tree) { } - void setXfbMode() { xfbMode = true; } - bool getXfbMode() const { return xfbMode; } - void setMultiStream() { multiStream = true; } - bool isMultiStream() const { return multiStream; } - bool setOutputPrimitive(TLayoutGeometry p) - { - if (outputPrimitive != ElgNone) - return outputPrimitive == p; - outputPrimitive = p; + bool isEsProfile() const { return false; } + bool getXfbMode() const { return false; } + bool isMultiStream() const { return false; } + TLayoutGeometry getOutputPrimitive() const { return ElgNone; } + bool getPostDepthCoverage() const { return false; } + bool getEarlyFragmentTests() const { return false; } + TLayoutDepth getDepth() const { return EldNone; } + bool getPixelCenterInteger() const { return false; } + void setOriginUpperLeft() { } + bool getOriginUpperLeft() const { return true; } + TInterlockOrdering getInterlockOrdering() const { return EioNone; } + + bool getAutoMapBindings() const { return false; } + bool getAutoMapLocations() const { return false; } + int getNumPushConstants() const { return 0; } + void addShaderRecordNVCount() { } + void addTaskNVCount() { } + void setUseVulkanMemoryModel() { } + bool usingVulkanMemoryModel() const { return false; } + bool usingPhysicalStorageBuffer() const { return false; } + bool usingVariablePointers() const { return false; } + unsigned getXfbStride(int buffer) const { return 0; } + bool hasLayoutDerivativeModeNone() const { return false; } + ComputeDerivativeMode getLayoutDerivativeModeNone() const { return LayoutDerivativeNone; } +#else + void output(TInfoSink&, bool tree); + + bool isEsProfile() const { return profile == EEsProfile; } + + void setShiftBinding(TResourceType res, unsigned int shift) + { + shiftBinding[res] = shift; + + const char* name = getResourceName(res); + if (name != nullptr) + processes.addIfNonZero(name, shift); + } + + unsigned int getShiftBinding(TResourceType res) const { return shiftBinding[res]; } + + void setShiftBindingForSet(TResourceType res, unsigned int shift, unsigned int set) + { + if (shift == 0) // ignore if there's no shift: it's a no-op. + return; + + shiftBindingForSet[res][set] = shift; + + const char* name = getResourceName(res); + if (name != nullptr) { + processes.addProcess(name); + processes.addArgument(shift); + processes.addArgument(set); + } + } + + int getShiftBindingForSet(TResourceType res, unsigned int set) const + { + const auto shift = shiftBindingForSet[res].find(set); + return shift == shiftBindingForSet[res].end() ? -1 : shift->second; + } + bool hasShiftBindingForSet(TResourceType res) const { return !shiftBindingForSet[res].empty(); } + + void setResourceSetBinding(const std::vector& shift) + { + resourceSetBinding = shift; + if (shift.size() > 0) { + processes.addProcess("resource-set-binding"); + for (int s = 0; s < (int)shift.size(); ++s) + processes.addArgument(shift[s]); + } + } + const std::vector& getResourceSetBinding() const { return resourceSetBinding; } + void setAutoMapBindings(bool map) + { + autoMapBindings = map; + if (autoMapBindings) + processes.addProcess("auto-map-bindings"); + } + bool getAutoMapBindings() const { return autoMapBindings; } + void setAutoMapLocations(bool map) + { + autoMapLocations = map; + if (autoMapLocations) + processes.addProcess("auto-map-locations"); + } + bool getAutoMapLocations() const { return autoMapLocations; } + +#ifdef ENABLE_HLSL + void setFlattenUniformArrays(bool flatten) + { + flattenUniformArrays = flatten; + if (flattenUniformArrays) + processes.addProcess("flatten-uniform-arrays"); + } + bool getFlattenUniformArrays() const { return flattenUniformArrays; } +#endif + void setNoStorageFormat(bool b) + { + useUnknownFormat = b; + if (useUnknownFormat) + processes.addProcess("no-storage-format"); + } + bool getNoStorageFormat() const { return useUnknownFormat; } + void setUseVulkanMemoryModel() + { + useVulkanMemoryModel = true; + processes.addProcess("use-vulkan-memory-model"); + } + bool usingVulkanMemoryModel() const { return useVulkanMemoryModel; } + void setUsePhysicalStorageBuffer() + { + usePhysicalStorageBuffer = true; + } + bool usingPhysicalStorageBuffer() const { return usePhysicalStorageBuffer; } + void setUseVariablePointers() + { + useVariablePointers = true; + processes.addProcess("use-variable-pointers"); + } + bool usingVariablePointers() const { return useVariablePointers; } + +#ifdef ENABLE_HLSL + template T addCounterBufferName(const T& name) const { return name + implicitCounterName; } + bool hasCounterBufferName(const TString& name) const { + size_t len = strlen(implicitCounterName); + return name.size() > len && + name.compare(name.size() - len, len, implicitCounterName) == 0; + } +#endif + + void setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { textureSamplerTransformMode = mode; } + int getNumPushConstants() const { return numPushConstants; } + void addShaderRecordNVCount() { ++numShaderRecordNVBlocks; } + void addTaskNVCount() { ++numTaskNVBlocks; } + + bool setInvocations(int i) + { + if (invocations != TQualifier::layoutNotSet) + return invocations == i; + invocations = i; + return true; + } + int getInvocations() const { return invocations; } + bool setVertices(int m) + { + if (vertices != TQualifier::layoutNotSet) + return vertices == m; + vertices = m; + return true; + } + int getVertices() const { return vertices; } + bool setInputPrimitive(TLayoutGeometry p) + { + if (inputPrimitive != ElgNone) + return inputPrimitive == p; + inputPrimitive = p; + return true; + } + TLayoutGeometry getInputPrimitive() const { return inputPrimitive; } + bool setVertexSpacing(TVertexSpacing s) + { + if (vertexSpacing != EvsNone) + return vertexSpacing == s; + vertexSpacing = s; + return true; + } + TVertexSpacing getVertexSpacing() const { return vertexSpacing; } + bool setVertexOrder(TVertexOrder o) + { + if (vertexOrder != EvoNone) + return vertexOrder == o; + vertexOrder = o; + return true; + } + TVertexOrder getVertexOrder() const { return vertexOrder; } + void setPointMode() { pointMode = true; } + bool getPointMode() const { return pointMode; } + + bool setInterlockOrdering(TInterlockOrdering o) + { + if (interlockOrdering != EioNone) + return interlockOrdering == o; + interlockOrdering = o; + return true; + } + TInterlockOrdering getInterlockOrdering() const { return interlockOrdering; } + + void setXfbMode() { xfbMode = true; } + bool getXfbMode() const { return xfbMode; } + void setMultiStream() { multiStream = true; } + bool isMultiStream() const { return multiStream; } + bool setOutputPrimitive(TLayoutGeometry p) + { + if (outputPrimitive != ElgNone) + return outputPrimitive == p; + outputPrimitive = p; return true; } TLayoutGeometry getOutputPrimitive() const { return outputPrimitive; } - void setOriginUpperLeft() { originUpperLeft = true; } - bool getOriginUpperLeft() const { return originUpperLeft; } - void setPixelCenterInteger() { pixelCenterInteger = true; } - bool getPixelCenterInteger() const { return pixelCenterInteger; } - void setEarlyFragmentTests() { earlyFragmentTests = true; } - bool getEarlyFragmentTests() const { return earlyFragmentTests; } void setPostDepthCoverage() { postDepthCoverage = true; } bool getPostDepthCoverage() const { return postDepthCoverage; } + void setEarlyFragmentTests() { earlyFragmentTests = true; } + bool getEarlyFragmentTests() const { return earlyFragmentTests; } bool setDepth(TLayoutDepth d) { if (depthLayout != EldNone) @@ -664,29 +696,12 @@ return true; } TLayoutDepth getDepth() const { return depthLayout; } - void setDepthReplacing() { depthReplacing = true; } - bool isDepthReplacing() const { return depthReplacing; } - - void setHlslFunctionality1() { hlslFunctionality1 = true; } - bool getHlslFunctionality1() const { return hlslFunctionality1; } - + void setOriginUpperLeft() { originUpperLeft = true; } + bool getOriginUpperLeft() const { return originUpperLeft; } + void setPixelCenterInteger() { pixelCenterInteger = true; } + bool getPixelCenterInteger() const { return pixelCenterInteger; } void addBlendEquation(TBlendEquationShift b) { blendEquations |= (1 << b); } unsigned int getBlendEquations() const { return blendEquations; } - - void addToCallGraph(TInfoSink&, const TString& caller, const TString& callee); - void merge(TInfoSink&, TIntermediate&); - void finalCheck(TInfoSink&, bool keepUncalled); - - void addIoAccessed(const TString& name) { ioAccessed.insert(name); } - bool inIoAccessed(const TString& name) const { return ioAccessed.find(name) != ioAccessed.end(); } - - int addUsedLocation(const TQualifier&, const TType&, bool& typeCollision); - int checkLocationRange(int set, const TIoRange& range, const TType&, bool& typeCollision); - int addUsedOffsets(int binding, int offset, int numOffsets); - bool addUsedConstantId(int id); - static int computeTypeLocationSize(const TType&, EShLanguage); - static int computeTypeUniformLocationSize(const TType&); - bool setXfbBufferStride(int buffer, unsigned stride) { if (xfbBuffers[buffer].stride != TQualifier::layoutXfbStrideEnd) @@ -696,28 +711,14 @@ } unsigned getXfbStride(int buffer) const { return xfbBuffers[buffer].stride; } int addXfbBufferOffset(const TType&); -#ifdef AMD_EXTENSIONS unsigned int computeTypeXfbSize(const TType&, bool& contains64BitType, bool& contains32BitType, bool& contains16BitType) const; -#else unsigned int computeTypeXfbSize(const TType&, bool& contains64BitType) const; -#endif - static int getBaseAlignmentScalar(const TType&, int& size); - static int getBaseAlignment(const TType&, int& size, int& stride, TLayoutPacking layoutPacking, bool rowMajor); - static int getScalarAlignment(const TType&, int& size, int& stride, bool rowMajor); - static int getMemberAlignment(const TType&, int& size, int& stride, TLayoutPacking layoutPacking, bool rowMajor); - static bool improperStraddle(const TType& type, int size, int offset); - static void updateOffset(const TType& parentType, const TType& memberType, int& offset, int& memberSize); - static int getOffset(const TType& type, int index); - static int getBlockSize(const TType& blockType); - static int computeBufferReferenceTypeSize(const TType&); - bool promote(TIntermOperator*); - -#ifdef NV_EXTENSIONS void setLayoutOverrideCoverage() { layoutOverrideCoverage = true; } bool getLayoutOverrideCoverage() const { return layoutOverrideCoverage; } void setGeoPassthroughEXT() { geoPassthroughEXT = true; } bool getGeoPassthroughEXT() const { return geoPassthroughEXT; } void setLayoutDerivativeMode(ComputeDerivativeMode mode) { computeDerivativeMode = mode; } + bool hasLayoutDerivativeModeNone() const { return computeDerivativeMode != LayoutDerivativeNone; } ComputeDerivativeMode getLayoutDerivativeModeNone() const { return computeDerivativeMode; } bool setPrimitives(int m) { @@ -727,28 +728,10 @@ return true; } int getPrimitives() const { return primitives; } -#endif - const char* addSemanticName(const TString& name) { return semanticNameSet.insert(name).first->c_str(); } - - void setSourceFile(const char* file) { if (file != nullptr) sourceFile = file; } - const std::string& getSourceFile() const { return sourceFile; } - void addSourceText(const char* text, size_t len) { sourceText.append(text, len); } - const std::string& getSourceText() const { return sourceText; } - const std::map& getIncludeText() const { return includeText; } - void addIncludeText(const char* name, const char* text, size_t len) { includeText[name].assign(text,len); } - void addProcesses(const std::vector& p) - { - for (int i = 0; i < (int)p.size(); ++i) - processes.addProcess(p[i]); - } - void addProcess(const std::string& process) { processes.addProcess(process); } - void addProcessArgument(const std::string& arg) { processes.addArgument(arg); } - const std::vector& getProcesses() const { return processes.getProcesses(); } - void addUniformLocationOverride(const char* nameStr, int location) { std::string name = nameStr; @@ -768,38 +751,103 @@ void setUniformLocationBase(int base) { uniformLocationBase = base; } int getUniformLocationBase() const { return uniformLocationBase; } - void setNanMinMaxClamp(bool setting) { nanMinMaxClamp = setting; } - bool getNanMinMaxClamp() const { return nanMinMaxClamp; } - void setNeedsLegalization() { needToLegalize = true; } bool needsLegalization() const { return needToLegalize; } void setBinaryDoubleOutput() { binaryDoubleOutput = true; } bool getBinaryDoubleOutput() { return binaryDoubleOutput; } +#endif // GLSLANG_WEB - const char* const implicitThisName; - const char* const implicitCounterName; +#ifdef ENABLE_HLSL + void setHlslFunctionality1() { hlslFunctionality1 = true; } + bool getHlslFunctionality1() const { return hlslFunctionality1; } + void setHlslOffsets() + { + hlslOffsets = true; + if (hlslOffsets) + processes.addProcess("hlsl-offsets"); + } + bool usingHlslOffsets() const { return hlslOffsets; } + void setHlslIoMapping(bool b) + { + hlslIoMapping = b; + if (hlslIoMapping) + processes.addProcess("hlsl-iomap"); + } + bool usingHlslIoMapping() { return hlslIoMapping; } +#else + bool getHlslFunctionality1() const { return false; } + bool usingHlslOffsets() const { return false; } + bool usingHlslIoMapping() { return false; } +#endif + + void addToCallGraph(TInfoSink&, const TString& caller, const TString& callee); + 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(); } + + int addUsedLocation(const TQualifier&, const TType&, bool& typeCollision); + int checkLocationRange(int set, const TIoRange& range, const TType&, bool& typeCollision); + int addUsedOffsets(int binding, int offset, int numOffsets); + bool addUsedConstantId(int id); + static int computeTypeLocationSize(const TType&, EShLanguage); + static int computeTypeUniformLocationSize(const TType&); + + static int getBaseAlignmentScalar(const TType&, int& size); + static int getBaseAlignment(const TType&, int& size, int& stride, TLayoutPacking layoutPacking, bool rowMajor); + static int getScalarAlignment(const TType&, int& size, int& stride, bool rowMajor); + static int getMemberAlignment(const TType&, int& size, int& stride, TLayoutPacking layoutPacking, bool rowMajor); + static bool improperStraddle(const TType& type, int size, int offset); + static void updateOffset(const TType& parentType, const TType& memberType, int& offset, int& memberSize); + static int getOffset(const TType& type, int index); + static int getBlockSize(const TType& blockType); + static int computeBufferReferenceTypeSize(const TType&); + bool promote(TIntermOperator*); + void setNanMinMaxClamp(bool setting) { nanMinMaxClamp = setting; } + bool getNanMinMaxClamp() const { return nanMinMaxClamp; } + + void setSourceFile(const char* file) { if (file != nullptr) sourceFile = file; } + const std::string& getSourceFile() const { return sourceFile; } + void addSourceText(const char* text, size_t len) { sourceText.append(text, len); } + const std::string& getSourceText() const { return sourceText; } + const std::map& getIncludeText() const { return includeText; } + void addIncludeText(const char* name, const char* text, size_t len) { includeText[name].assign(text,len); } + void addProcesses(const std::vector& p) + { + for (int i = 0; i < (int)p.size(); ++i) + processes.addProcess(p[i]); + } + void addProcess(const std::string& process) { processes.addProcess(process); } + void addProcessArgument(const std::string& arg) { processes.addArgument(arg); } + const std::vector& getProcesses() const { return processes.getProcesses(); } // Certain explicit conversions are allowed conditionally +#ifdef GLSLANG_WEB + bool getArithemeticInt8Enabled() const { return false; } + bool getArithemeticInt16Enabled() const { return false; } + bool getArithemeticFloat16Enabled() const { return false; } +#else bool getArithemeticInt8Enabled() const { return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int8); } bool getArithemeticInt16Enabled() const { return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || -#ifdef AMD_EXTENSIONS extensionRequested(E_GL_AMD_gpu_shader_int16) || -#endif extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16); } bool getArithemeticFloat16Enabled() const { return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || -#ifdef AMD_EXTENSIONS extensionRequested(E_GL_AMD_gpu_shader_half_float) || -#endif extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float16); } +#endif protected: TIntermSymbol* addSymbol(int Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&); @@ -830,13 +878,21 @@ 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. + // This data structure is just a log to pass on to back ends. + // Versioning and extensions are handled in Version.cpp, with a rich + // set of functions for querying stages, versions, extension enable/disabled, etc. +#ifdef GLSLANG_WEB + bool extensionRequested(const char *extension) const { return false; } +#else bool extensionRequested(const char *extension) const {return requestedExtensions.find(extension) != requestedExtensions.end();} +#endif + static const char* getResourceName(TResourceType); const EShLanguage language; // stage, known at construction time - EShSource source; // source language, known a bit later std::string entryPointName; std::string entryPointMangledName; typedef std::list TGraph; @@ -852,6 +908,20 @@ int numErrors; int numPushConstants; bool recursive; + bool invertY; + 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 +public: + const char* const implicitThisName; + const char* const implicitCounterName; +protected: + EShSource source; // source language, known a bit later + bool useVulkanMemoryModel; int invocations; int vertices; TLayoutGeometry inputPrimitive; @@ -862,26 +932,20 @@ TVertexOrder vertexOrder; TInterlockOrdering interlockOrdering; bool pointMode; - int localSize[3]; - int localSizeSpecId[3]; bool earlyFragmentTests; bool postDepthCoverage; TLayoutDepth depthLayout; - bool depthReplacing; bool hlslFunctionality1; int blendEquations; // an 'or'ing of masks of shifts of TBlendEquationShift bool xfbMode; std::vector xfbBuffers; // all the data we need to track per xfb buffer bool multiStream; - -#ifdef NV_EXTENSIONS bool layoutOverrideCoverage; bool geoPassthroughEXT; int numShaderRecordNVBlocks; ComputeDerivativeMode computeDerivativeMode; int primitives; int numTaskNVBlocks; -#endif // Base shift values std::array shiftBinding; @@ -892,23 +956,29 @@ std::vector resourceSetBinding; bool autoMapBindings; bool autoMapLocations; - bool invertY; bool flattenUniformArrays; bool useUnknownFormat; bool hlslOffsets; - bool useStorageBuffer; - bool useVulkanMemoryModel; bool hlslIoMapping; bool useVariablePointers; - std::set ioAccessed; // set of names of statically read/written I/O that might need extra checking - std::vector usedIo[4]; // sets of used locations, one for each of in, out, uniform, and buffers - std::vector usedAtomics; // sets of bindings used by atomic counters - std::unordered_set usedConstantId; // specialization constant ids used std::set semanticNameSet; EShTextureSamplerTransformMode textureSamplerTransformMode; + bool needToLegalize; + bool binaryDoubleOutput; + bool usePhysicalStorageBuffer; + + std::unordered_map uniformLocationOverrides; + int uniformLocationBase; +#endif + + std::unordered_set usedConstantId; // specialization constant ids used + std::vector usedAtomics; // sets of bindings used by atomic counters + std::vector usedIo[4]; // sets of used locations, one for each of in, out, uniform, and buffers + // set of names of statically read/written I/O that might need extra checking + std::set ioAccessed; // source code of shader, useful as part of debug information std::string sourceFile; std::string sourceText; @@ -919,14 +989,6 @@ // for OpModuleProcessed, or equivalent TProcesses processes; - bool needToLegalize; - bool binaryDoubleOutput; - bool usePhysicalStorageBuffer; - - std::unordered_map uniformLocationOverrides; - int uniformLocationBase; - bool nanMinMaxClamp; // true if desiring min/max/clamp to favor non-NaN over NaN - private: void operator=(TIntermediate&); // prevent assignments }; diff -Nru glslang-7.12.3352/glslang/MachineIndependent/ParseContextBase.cpp glslang-8.13.3559/glslang/MachineIndependent/ParseContextBase.cpp --- glslang-7.12.3352/glslang/MachineIndependent/ParseContextBase.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/ParseContextBase.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -67,6 +67,8 @@ } } +#if !defined(GLSLANG_WEB) || defined(GLSLANG_WEB_DEVEL) + void C_DECL TParseContextBase::error(const TSourceLoc& loc, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) { @@ -113,6 +115,8 @@ va_end(args); } +#endif + // // Both test and if necessary, spit out an error, to see if the node is really // an l-value that can be operated on this way. @@ -149,15 +153,13 @@ case EvqConst: message = "can't modify a const"; break; case EvqConstReadOnly: message = "can't modify a const"; break; case EvqUniform: message = "can't modify a uniform"; break; +#ifndef GLSLANG_WEB case EvqBuffer: - if (node->getQualifier().readonly) + if (node->getQualifier().isReadOnly()) message = "can't modify a readonly buffer"; -#ifdef NV_EXTENSIONS - if (node->getQualifier().layoutShaderRecordNV) + if (node->getQualifier().isShaderRecordNV()) message = "can't modify a shaderrecordnv qualified buffer"; -#endif break; -#ifdef NV_EXTENSIONS case EvqHitAttrNV: if (language != EShLangIntersectNV) message = "cannot modify hitAttributeNV in this stage"; @@ -172,13 +174,13 @@ case EbtSampler: message = "can't modify a sampler"; break; - case EbtAtomicUint: - message = "can't modify an atomic_uint"; - break; case EbtVoid: message = "can't modify void"; break; -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB + case EbtAtomicUint: + message = "can't modify an atomic_uint"; + break; case EbtAccStructNV: message = "can't modify accelerationStructureNV"; break; @@ -234,7 +236,7 @@ } TIntermSymbol* symNode = node->getAsSymbolNode(); - if (symNode && symNode->getQualifier().writeonly) + if (symNode && symNode->getQualifier().isWriteOnly()) error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str()); } @@ -574,6 +576,7 @@ selector.push_back(0); } +#ifdef ENABLE_HLSL // // Make the passed-in variable information become a member of the // global uniform block. If this doesn't exist yet, make it. @@ -618,6 +621,7 @@ ++firstNewMember; } +#endif void TParseContextBase::finish() { diff -Nru glslang-7.12.3352/glslang/MachineIndependent/ParseHelper.cpp glslang-8.13.3559/glslang/MachineIndependent/ParseHelper.cpp --- glslang-7.12.3352/glslang/MachineIndependent/ParseHelper.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/ParseHelper.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -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. // @@ -56,13 +56,16 @@ infoSink, forwardCompatible, messages, entryPoint), inMain(false), blockName(nullptr), - limits(resources.limits), + limits(resources.limits) +#ifndef GLSLANG_WEB + , atomicUintOffsets(nullptr), anyIndexLimits(false) +#endif { // decide whether precision qualifiers should be ignored or respected - if (profile == EEsProfile || spvVersion.vulkan > 0) { + if (isEsProfile() || spvVersion.vulkan > 0) { precisionManager.respectPrecisionQualifiers(); - if (! parsingBuiltins && language == EShLangFragment && profile != EEsProfile && spvVersion.vulkan > 0) + if (! parsingBuiltins && language == EShLangFragment && !isEsProfile() && spvVersion.vulkan > 0) precisionManager.warnAboutDefaults(); } @@ -83,6 +86,7 @@ globalInputDefaults.clear(); globalOutputDefaults.clear(); +#ifndef GLSLANG_WEB // "Shaders in the transform // feedback capturing mode have an initial global default of // layout(xfb_buffer = 0) out;" @@ -94,6 +98,7 @@ if (language == EShLangGeometry) globalOutputDefaults.layoutStream = 0; +#endif if (entryPoint != nullptr && entryPoint->size() > 0 && *entryPoint != "main") infoSink.info.message(EPrefixError, "Source entry point must be \"main\""); @@ -101,7 +106,9 @@ TParseContext::~TParseContext() { +#ifndef GLSLANG_WEB delete [] atomicUintOffsets; +#endif } // Set up all default precisions as needed by the current environment. @@ -121,7 +128,7 @@ // replace with real precision defaults for those that have them if (obeyPrecisionQualifiers()) { - if (profile == EEsProfile) { + if (isEsProfile()) { // Most don't have defaults, a few default to lowp. TSampler sampler; sampler.set(EbtFloat, Esd2D); @@ -129,7 +136,7 @@ sampler.set(EbtFloat, EsdCube); defaultSamplerPrecision[computeSamplerTypeIndex(sampler)] = EpqLow; sampler.set(EbtFloat, Esd2D); - sampler.external = true; + sampler.setExternal(true); defaultSamplerPrecision[computeSamplerTypeIndex(sampler)] = EpqLow; } @@ -138,7 +145,7 @@ // is used to resolve the precision from the supplied arguments/operands instead. // So, we don't actually want to replace EpqNone with a default precision for built-ins. if (! parsingBuiltins) { - if (profile == EEsProfile && language == EShLangFragment) { + if (isEsProfile() && language == EShLangFragment) { defaultPrecision[EbtInt] = EpqMedium; defaultPrecision[EbtUint] = EpqMedium; } else { @@ -147,7 +154,7 @@ defaultPrecision[EbtFloat] = EpqHigh; } - if (profile != EEsProfile) { + if (!isEsProfile()) { // Non-ES profile // All sampler precisions default to highp. for (int type = 0; type < maxSamplerIndex; ++type) @@ -163,7 +170,9 @@ void TParseContext::setLimits(const TBuiltInResource& r) { resources = r; + intermediate.setLimits(r); +#ifndef GLSLANG_WEB anyIndexLimits = ! limits.generalAttributeMatrixVectorIndexing || ! limits.generalConstantMatrixVectorIndexing || ! limits.generalSamplerIndexing || @@ -171,7 +180,6 @@ ! limits.generalVariableIndexing || ! limits.generalVaryingIndexing; - intermediate.setLimits(resources); // "Each binding point tracks its own current default offset for // inheritance of subsequent variables using the same binding. The initial state of compilation is that all @@ -179,6 +187,7 @@ atomicUintOffsets = new int[resources.maxAtomicCounterBindings]; for (int b = 0; b < resources.maxAtomicCounterBindings; ++b) atomicUintOffsets[b] = 0; +#endif } // @@ -213,6 +222,7 @@ void TParseContext::handlePragma(const TSourceLoc& loc, const TVector& tokens) { +#ifndef GLSLANG_WEB if (pragmaCallback) pragmaCallback(loc.line, tokens); @@ -285,6 +295,7 @@ warn(loc, "not implemented", "#pragma once", ""); } else if (tokens[0].compare("glslang_binary_double_output") == 0) intermediate.setBinaryDoubleOutput(); +#endif } // @@ -298,6 +309,7 @@ if (symbol && symbol->getNumExtensions()) requireExtensions(loc, symbol->getNumExtensions(), symbol->getExtensions(), symbol->getName().c_str()); +#ifndef GLSLANG_WEB if (symbol && symbol->isReadOnly()) { // All shared things containing an unsized array must be copied up // on first use, so that all future references will share its array structure, @@ -307,11 +319,17 @@ // 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 const TVariable* variable; const TAnonMember* anon = symbol ? symbol->getAsAnonMember() : nullptr; @@ -334,8 +352,7 @@ // 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; } @@ -357,7 +374,7 @@ if (variable->getType().getQualifier().isIo()) intermediate.addIoAccessed(*string); - if (variable->getType().getBasicType() == EbtReference && + if (variable->getType().isReference() && variable->getType().getQualifier().bufferReferenceNeedsVulkanMemoryModel()) { intermediate.setUseVulkanMemoryModel(); } @@ -378,7 +395,7 @@ variableCheck(base); if (! base->isArray() && ! base->isMatrix() && ! base->isVector() && ! base->getType().isCoopMat() && - base->getBasicType() != EbtReference) { + ! base->isReference()) { if (base->getAsSymbolNode()) error(loc, " left of '[' is not of type array, matrix, or vector ", base->getAsSymbolNode()->getName().c_str(), ""); else @@ -389,7 +406,7 @@ } if (!base->isArray() && base->isVector()) { - if (base->getType().containsBasicType(EbtFloat16)) + if (base->getType().contains16BitFloat()) requireFloat16Arithmetic(loc, "[", "does not operate on types containing float16"); if (base->getType().contains16BitInt()) requireInt16Arithmetic(loc, "[", "does not operate on types containing (u)int16"); @@ -407,23 +424,24 @@ // at least one of base and index is not a front-end constant variable... TIntermTyped* result = nullptr; - if (base->getBasicType() == EbtReference && ! base->isArray()) { +#ifndef GLSLANG_WEB + if (base->isReference() && ! base->isArray()) { requireExtensions(loc, 1, &E_GL_EXT_buffer_reference2, "buffer reference indexing"); result = intermediate.addBinaryMath(EOpAdd, base, index, loc); result->setType(base->getType()); return result; } + if (base->getAsSymbolNode() && isIoResizeArray(base->getType())) + handleIoResizeArrayAccess(loc, base); +#endif if (index->getQualifier().isFrontEndConstant()) checkIndex(loc, base->getType(), indexValue); - if (base->getAsSymbolNode() && isIoResizeArray(base->getType())) - handleIoResizeArrayAccess(loc, base); - if (index->getQualifier().isFrontEndConstant()) { +#ifndef GLSLANG_WEB if (base->getType().isUnsizedArray()) { base->getWritableType().updateImplicitArraySize(indexValue + 1); -#ifdef NV_EXTENSIONS // For 2D per-view builtin arrays, update the inner dimension size in parent type if (base->getQualifier().isPerView() && base->getQualifier().builtIn != EbvNone) { TIntermBinary* binaryNode = base->getAsBinaryNode(); @@ -434,11 +452,12 @@ arraySizes.setDimSize(1, std::max(arraySizes.getDimSize(1), indexValue + 1)); } } -#endif } else +#endif checkIndex(loc, base->getType(), indexValue); result = intermediate.addIndex(EOpIndexDirect, base, index, loc); } else { +#ifndef GLSLANG_WEB if (base->getType().isUnsizedArray()) { // we have a variable index into an unsized array, which is okay, // depending on the situation @@ -450,6 +469,7 @@ } base->getWritableType().setArrayVariablyIndexed(); } +#endif if (base->getBasicType() == EbtBlock) { if (base->getQualifier().storage == EvqBuffer) requireProfile(base->getLoc(), ~EEsProfile, "variable indexing buffer block array"); @@ -457,7 +477,7 @@ profileRequires(base->getLoc(), EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "variable indexing uniform block array"); else { - // input/output blocks either don't exist or can be variable indexed + // input/output blocks either don't exist or can't be variably indexed } } else if (language == EShLangFragment && base->getQualifier().isPipeOutput()) requireProfile(base->getLoc(), ~EEsProfile, "variable indexing fragment shader output array"); @@ -471,8 +491,8 @@ result = intermediate.addIndex(EOpIndexIndirect, base, index, loc); } - // Insert valid dereferenced result - TType newType(base->getType(), 0); // dereferenced type + // Insert valid dereferenced result type + TType newType(base->getType(), 0); if (base->getType().getQualifier().isConstant() && index->getQualifier().isConstant()) { newType.getQualifier().storage = EvqConst; // If base or index is a specialization constant, the result should also be a specialization constant. @@ -480,20 +500,27 @@ newType.getQualifier().makeSpecConstant(); } } else { - newType.getQualifier().makePartialTemporary(); + newType.getQualifier().storage = EvqTemporary; + newType.getQualifier().specConstant = false; } result->setType(newType); +#ifndef GLSLANG_WEB + inheritMemoryQualifiers(base->getQualifier(), result->getWritableType().getQualifier()); + // Propagate nonuniform if (base->getQualifier().isNonUniform() || index->getQualifier().isNonUniform()) result->getWritableType().getQualifier().nonUniform = true; if (anyIndexLimits) handleIndexLimits(loc, base, index); +#endif return result; } +#ifndef GLSLANG_WEB + // for ES 2.0 (version 100) limitations for almost all index operations except vertex-shader uniforms void TParseContext::handleIndexLimits(const TSourceLoc& /*loc*/, TIntermTyped* base, TIntermTyped* index) { @@ -530,14 +557,12 @@ { return type.isArray() && ((language == EShLangGeometry && type.getQualifier().storage == EvqVaryingIn) || - (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut && ! type.getQualifier().patch) -#ifdef NV_EXTENSIONS - || - (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && type.getQualifier().pervertexNV) || - (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut && !type.getQualifier().perTaskNV) - -#endif - ); + (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut && + ! type.getQualifier().patch) || + (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && + type.getQualifier().pervertexNV) || + (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut && + !type.getQualifier().perTaskNV)); } // If an array is not isIoResizeArray() but is an io array, make sure it has the right size @@ -566,11 +591,7 @@ void TParseContext::ioArrayCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) { if (! type.isArray() && ! symbolTable.atBuiltInLevel()) { - if (type.getQualifier().isArrayedIo(language) -#ifdef NV_EXTENSIONS - && !type.getQualifier().layoutPassthrough -#endif - ) + if (type.getQualifier().isArrayedIo(language) && !type.getQualifier().layoutPassthrough) error(loc, "type must be an array:", type.getStorageQualifierString(), identifier.c_str()); } } @@ -617,12 +638,7 @@ // As I/O array sizes don't change, fetch requiredSize only once, // except for mesh shaders which could have different I/O array sizes based on type qualifiers. - if (firstIteration -#ifdef NV_EXTENSIONS - || (language == EShLangMeshNV) -#endif - ) - { + if (firstIteration || (language == EShLangMeshNV)) { requiredSize = getIoArrayImplicitSize(type.getQualifier(), &featureString); if (requiredSize == 0) break; @@ -647,14 +663,11 @@ else if (language == EShLangTessControl) { expectedSize = maxVertices; str = "vertices"; - } -#ifdef NV_EXTENSIONS - else if (language == EShLangFragment) { + } else if (language == EShLangFragment) { // Number of vertices for Fragment shader is always three. expectedSize = 3; str = "vertices"; - } - else if (language == EShLangMeshNV) { + } else if (language == EShLangMeshNV) { unsigned int maxPrimitives = intermediate.getPrimitives() != TQualifier::layoutNotSet ? intermediate.getPrimitives() : 0; if (qualifier.builtIn == EbvPrimitiveIndicesNV) { @@ -671,7 +684,6 @@ str = "max_vertices"; } } -#endif if (featureString) *featureString = str; return expectedSize; @@ -686,19 +698,19 @@ error(loc, "inconsistent input primitive for array size of", feature, name.c_str()); else if (language == EShLangTessControl) error(loc, "inconsistent output number of vertices for array size of", feature, name.c_str()); -#ifdef NV_EXTENSIONS else if (language == EShLangFragment) { if (type.getOuterArraySize() > requiredSize) error(loc, " cannot be greater than 3 for pervertexNV", feature, name.c_str()); } else if (language == EShLangMeshNV) error(loc, "inconsistent output array size of", feature, name.c_str()); -#endif else assert(0); } } +#endif // GLSLANG_WEB + // Handle seeing a binary node with a math operation. // Returns nullptr if not semantically allowed. TIntermTyped* TParseContext::handleBinaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right) @@ -721,7 +733,7 @@ break; } - if (((left->getType().containsBasicType(EbtFloat16) || right->getType().containsBasicType(EbtFloat16)) && !float16Arithmetic()) || + if (((left->getType().contains16BitFloat() || right->getType().contains16BitFloat()) && !float16Arithmetic()) || ((left->getType().contains16BitInt() || right->getType().contains16BitInt()) && !int16Arithmetic()) || ((left->getType().contains8BitInt() || right->getType().contains8BitInt()) && !int8Arithmetic())) { allowed = false; @@ -743,14 +755,13 @@ rValueErrorCheck(loc, str, childNode); bool allowed = true; - if ((childNode->getType().containsBasicType(EbtFloat16) && !float16Arithmetic()) || + if ((childNode->getType().contains16BitFloat() && !float16Arithmetic()) || (childNode->getType().contains16BitInt() && !int16Arithmetic()) || (childNode->getType().contains8BitInt() && !int8Arithmetic())) { allowed = false; } TIntermTyped* result = nullptr; - if (allowed) result = intermediate.addUnaryMath(op, childNode, loc); @@ -819,7 +830,7 @@ TSwizzleSelectors selectors; parseSwizzleSelector(loc, field, base->getVectorSize(), selectors); - if (base->isVector() && selectors.size() != 1 && base->getType().containsBasicType(EbtFloat16)) + if (base->isVector() && selectors.size() != 1 && base->getType().contains16BitFloat()) requireFloat16Arithmetic(loc, ".", "can't swizzle types containing float16"); if (base->isVector() && selectors.size() != 1 && base->getType().contains16BitInt()) requireInt16Arithmetic(loc, ".", "can't swizzle types containing (u)int16"); @@ -854,12 +865,10 @@ if (base->getType().getQualifier().isSpecConstant()) result->getWritableType().getQualifier().makeSpecConstant(); } - } else if (base->getBasicType() == EbtStruct || - base->getBasicType() == EbtBlock || - base->getBasicType() == EbtReference) { - const TTypeList* fields = base->getBasicType() == EbtReference ? - base->getType().getReferentType()->getStruct() : - base->getType().getStruct(); + } else if (base->isStruct() || base->isReference()) { + const TTypeList* fields = base->isReference() ? + base->getType().getReferentType()->getStruct() : + base->getType().getStruct(); bool fieldFound = false; int member; for (member = 0; member < (int)fields->size(); ++member) { @@ -879,14 +888,15 @@ if ((*fields)[member].type->getQualifier().isIo()) intermediate.addIoAccessed(field); } + inheritMemoryQualifiers(base->getQualifier(), result->getWritableType().getQualifier()); } else error(loc, "no such field in structure", field.c_str(), ""); } else error(loc, "does not apply to this type:", field.c_str(), base->getType().getCompleteString().c_str()); // Propagate noContraction up the dereference chain - if (base->getQualifier().noContraction) - result->getWritableType().getQualifier().noContraction = true; + if (base->getQualifier().isNoContraction()) + result->getWritableType().getQualifier().setNoContraction(); // Propagate nonuniform if (base->getQualifier().isNonUniform()) @@ -1126,7 +1136,7 @@ if (builtIn && fnCandidate->getNumExtensions()) requireExtensions(loc, fnCandidate->getNumExtensions(), fnCandidate->getExtensions(), fnCandidate->getName().c_str()); - if (builtIn && fnCandidate->getType().containsBasicType(EbtFloat16)) + if (builtIn && fnCandidate->getType().contains16BitFloat()) requireFloat16Arithmetic(loc, "built-in function", "float16 types can only be in uniform block or buffer storage"); if (builtIn && fnCandidate->getType().contains16BitInt()) requireInt16Arithmetic(loc, "built-in function", "(u)int16 types can only be in uniform block or buffer storage"); @@ -1146,9 +1156,11 @@ if (lValueErrorCheck(arguments->getLoc(), "assign", arg->getAsTyped())) error(arguments->getLoc(), "Non-L-value cannot be passed for 'out' or 'inout' parameters.", "out", ""); } - TQualifier& argQualifier = arg->getAsTyped()->getQualifier(); - if (argQualifier.isMemory()) { + const TType& argType = arg->getAsTyped()->getType(); + 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)) @@ -1168,16 +1180,16 @@ // 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.layoutFormat != formalQualifier.layoutFormat) { + if (!builtIn && argQualifier.getFormat() != formalQualifier.getFormat()) { // we have mismatched formats, which should only be allowed if writeonly // and at least one format is unknown - if (!formalQualifier.writeonly || (formalQualifier.layoutFormat != ElfNone && - argQualifier.layoutFormat != ElfNone)) + if (!formalQualifier.isWriteOnly() || (formalQualifier.getFormat() != ElfNone && + argQualifier.getFormat() != ElfNone)) error(arguments->getLoc(), "image formats must match", "format", ""); } - - if (builtIn && arg->getAsTyped()->getType().containsBasicType(EbtFloat16)) + if (builtIn && arg->getAsTyped()->getType().contains16BitFloat()) requireFloat16Arithmetic(arguments->getLoc(), "built-in function", "float16 types can only be in uniform block or buffer storage"); if (builtIn && arg->getAsTyped()->getType().contains16BitInt()) requireInt16Arithmetic(arguments->getLoc(), "built-in function", "(u)int16 types can only be in uniform block or buffer storage"); @@ -1217,9 +1229,11 @@ intermediate.addToCallGraph(infoSink, currentCaller, fnCandidate->getMangledName()); } +#ifndef GLSLANG_WEB if (builtIn) nonOpBuiltInCheck(loc, *fnCandidate, *call); else +#endif userFunctionCallCheck(loc, *call); } @@ -1348,13 +1362,9 @@ operationPrecision = std::max(operationPrecision, function[arg].type->getQualifier().precision); } // compute the result precision -#ifdef AMD_EXTENSIONS if (agg->isSampling() || agg->getOp() == EOpImageLoad || agg->getOp() == EOpImageStore || agg->getOp() == EOpImageLoadLod || agg->getOp() == EOpImageStoreLod) -#else - if (agg->isSampling() || agg->getOp() == EOpImageLoad || agg->getOp() == EOpImageStore) -#endif resultPrecision = sequence[0]->getAsTyped()->getQualifier().precision; else if (function.getType().getBasicType() != EbtBool) resultPrecision = function.getType().getQualifier().precision == EpqNone ? @@ -1375,7 +1385,9 @@ TIntermNode* TParseContext::handleReturnValue(const TSourceLoc& loc, TIntermTyped* value) { +#ifndef GLSLANG_WEB storage16BitAssignmentCheck(loc, value->getType(), "return"); +#endif functionReturnsValue = true; if (currentFunctionType->getBasicType() == EbtVoid) { @@ -1400,6 +1412,7 @@ // See if the operation is being done in an illegal location. void TParseContext::checkLocation(const TSourceLoc& loc, TOperator op) { +#ifndef GLSLANG_WEB switch (op) { case EOpBarrier: if (language == EShLangTessControl) { @@ -1452,6 +1465,7 @@ default: break; } +#endif } // Finish processing object.length(). This started earlier in handleDotDereference(), where @@ -1469,29 +1483,28 @@ const TType& type = intermNode->getAsTyped()->getType(); if (type.isArray()) { if (type.isUnsizedArray()) { +#ifndef GLSLANG_WEB if (intermNode->getAsSymbolNode() && isIoResizeArray(type)) { // We could be between a layout declaration that gives a built-in io array implicit size and // a user redeclaration of that array, meaning we have to substitute its implicit size here // without actually redeclaring the array. (It is an error to use a member before the // redeclaration, but not an error to use the array name itself.) const TString& name = intermNode->getAsSymbolNode()->getName(); - if (name == "gl_in" || name == "gl_out" -#ifdef NV_EXTENSIONS - || name == "gl_MeshVerticesNV" - || name == "gl_MeshPrimitivesNV" -#endif - ) - { + if (name == "gl_in" || name == "gl_out" || name == "gl_MeshVerticesNV" || + name == "gl_MeshPrimitivesNV") { length = getIoArrayImplicitSize(type.getQualifier()); } } +#endif if (length == 0) { +#ifndef GLSLANG_WEB if (intermNode->getAsSymbolNode() && isIoResizeArray(type)) error(loc, "", function->getName().c_str(), "array must first be sized by a redeclaration or layout qualifier"); else if (isRuntimeLength(*intermNode->getAsTyped())) { // Create a unary op and let the back end handle it return intermediate.addBuiltInFunctionCall(loc, EOpArrayLength, true, intermNode, TType(EbtInt)); } else +#endif error(loc, "", function->getName().c_str(), "array must be declared with a size before using this method"); } } else if (type.getOuterArrayNode()) { @@ -1524,6 +1537,7 @@ // void TParseContext::addInputArgumentConversions(const TFunction& function, TIntermNode*& arguments) const { +#ifndef GLSLANG_WEB TIntermAggregate* aggregate = arguments->getAsAggregate(); // Process each argument's conversion @@ -1551,6 +1565,7 @@ } } } +#endif } // @@ -1562,6 +1577,9 @@ // TIntermTyped* TParseContext::addOutputArgumentConversions(const TFunction& function, TIntermAggregate& intermNode) const { +#ifdef GLSLANG_WEB + return &intermNode; +#else TIntermSequence& arguments = intermNode.getSequence(); // Will there be any output conversions? @@ -1629,6 +1647,7 @@ conversionTree = intermediate.setAggregateOperator(conversionTree, EOpComma, intermNode.getType(), intermNode.getLoc()); return conversionTree; +#endif } void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& fnCandidate, const TIntermOperator& callNode) @@ -1796,7 +1815,6 @@ } } - // // Do additional checking of built-in function calls that is not caught // by normal semantic checks on argument type, extension tagging, etc. @@ -1824,6 +1842,7 @@ TString featureString; const char* feature = nullptr; switch (callNode.getOp()) { +#ifndef GLSLANG_WEB case EOpTextureGather: case EOpTextureGatherOffset: case EOpTextureGatherOffsets: @@ -1880,7 +1899,6 @@ error(loc, "must be a compile-time constant:", feature, "component argument"); } -#ifdef AMD_EXTENSIONS bool bias = false; if (callNode.getOp() == EOpTextureGather) bias = fnCandidate.getParamCount() > 3; @@ -1895,12 +1913,8 @@ profileRequires(loc, ~EEsProfile, 450, nullptr, feature); requireExtensions(loc, 1, &E_GL_AMD_texture_gather_bias_lod, feature); } -#endif - break; } - -#ifdef AMD_EXTENSIONS case EOpSparseTextureGather: case EOpSparseTextureGatherOffset: case EOpSparseTextureGatherOffsets: @@ -1978,7 +1992,7 @@ int arg = -1; switch (callNode.getOp()) { case EOpTextureOffset: arg = 2; break; - case EOpTextureFetchOffset: arg = (arg0->getType().getSampler().dim != EsdRect) ? 3 : 2; break; + case EOpTextureFetchOffset: arg = (arg0->getType().getSampler().isRect()) ? 2 : 3; break; case EOpTextureProjOffset: arg = 2; break; case EOpTextureLodOffset: arg = 3; break; case EOpTextureProjLodOffset: arg = 3; break; @@ -1991,7 +2005,7 @@ if (arg > 0) { -#ifdef AMD_EXTENSIONS +#ifndef GLSLANG_WEB bool f16ShadowCompare = (*argp)[1]->getAsTyped()->getBasicType() == EbtFloat16 && arg0->getType().getSampler().shadow; if (f16ShadowCompare) ++arg; @@ -2011,7 +2025,7 @@ break; } -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB case EOpTraceNV: if (!(*argp)[10]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "payload number", ""); @@ -2020,7 +2034,6 @@ if (!(*argp)[1]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "callable data number", ""); break; -#endif case EOpTextureQuerySamples: case EOpImageQuerySamples: @@ -2042,12 +2055,12 @@ // Make sure the image types have the correct layout() format and correct argument types const TType& imageType = arg0->getType(); if (imageType.getSampler().type == EbtInt || imageType.getSampler().type == EbtUint) { - if (imageType.getQualifier().layoutFormat != ElfR32i && imageType.getQualifier().layoutFormat != ElfR32ui) + if (imageType.getQualifier().getFormat() != ElfR32i && imageType.getQualifier().getFormat() != ElfR32ui) error(loc, "only supported on image with format r32i or r32ui", fnCandidate.getName().c_str(), ""); } else { if (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") != 0) error(loc, "only supported on integer images", fnCandidate.getName().c_str(), ""); - else if (imageType.getQualifier().layoutFormat != ElfR32f && profile == EEsProfile) + else if (imageType.getQualifier().getFormat() != ElfR32f && isEsProfile()) error(loc, "only supported on image with format r32f", fnCandidate.getName().c_str(), ""); } @@ -2075,13 +2088,9 @@ requireExtensions(loc, 1, &E_GL_KHR_memory_scope_semantics, fnCandidate.getName().c_str()); memorySemanticsCheck(loc, fnCandidate, callNode); } else if (arg0->getType().getBasicType() == EbtInt64 || arg0->getType().getBasicType() == EbtUint64) { -#ifdef NV_EXTENSIONS const char* const extensions[2] = { E_GL_NV_shader_atomic_int64, E_GL_EXT_shader_atomic_int64 }; requireExtensions(loc, 2, extensions, fnCandidate.getName().c_str()); -#else - requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_int64, fnCandidate.getName().c_str()); -#endif } break; } @@ -2089,9 +2098,7 @@ case EOpInterpolateAtCentroid: case EOpInterpolateAtSample: case EOpInterpolateAtOffset: -#ifdef AMD_EXTENSIONS case EOpInterpolateAtVertex: -#endif // Make sure the first argument is an interpolant, or an array element of an interpolant if (arg0->getType().getQualifier().storage != EvqVaryingIn) { // It might still be an array element. @@ -2101,13 +2108,12 @@ // // ES and desktop 4.3 and earlier: swizzles may not be used // desktop 4.4 and later: swizzles may be used - bool swizzleOkay = (profile != EEsProfile) && (version >= 440); + bool swizzleOkay = (!isEsProfile()) && (version >= 440); const TIntermTyped* base = TIntermediate::findLValueBase(arg0, swizzleOkay); if (base == nullptr || base->getType().getQualifier().storage != EvqVaryingIn) error(loc, "first argument must be an interpolant, or interpolant-array element", fnCandidate.getName().c_str(), ""); } -#ifdef AMD_EXTENSIONS if (callNode.getOp() == EOpInterpolateAtVertex) { if (!arg0->getType().getQualifier().isExplicitInterpolation()) error(loc, "argument must be qualified as __explicitInterpAMD in", "interpolant", ""); @@ -2121,8 +2127,6 @@ } } } -#endif - break; case EOpEmitStreamVertex: @@ -2153,9 +2157,12 @@ break; case EOpSubgroupBroadcast: - // must be an integral constant expression. - if ((*argp)[1]->getAsConstantUnion() == nullptr) - error(loc, "argument must be compile-time constant", "id", ""); + case EOpSubgroupQuadBroadcast: + 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: @@ -2165,6 +2172,7 @@ memorySemanticsCheck(loc, fnCandidate, callNode); } break; +#endif default: break; @@ -2182,7 +2190,7 @@ const TSampler& sampler = fnCandidate[0].type->getSampler(); const bool isTexture = sampler.isTexture() && !sampler.isCombined(); - const bool isBuffer = sampler.dim == EsdBuffer; + const bool isBuffer = sampler.isBuffer(); const bool isFetch = callNode.getOp() == EOpTextureFetch || callNode.getOp() == EOpTextureFetchOffset; if (isTexture && (!isBuffer || !isFetch)) @@ -2195,13 +2203,39 @@ 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", ""); + + // 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; + } + } } } +#ifndef GLSLANG_WEB + extern bool PureOperatorBuiltins; // Deprecated! Use PureOperatorBuiltins == true instead, in which case this @@ -2317,17 +2351,19 @@ if (fnCandidate.getName().compare(0, 11, "imageAtomic") == 0) { const TType& imageType = callNode.getSequence()[0]->getAsTyped()->getType(); if (imageType.getSampler().type == EbtInt || imageType.getSampler().type == EbtUint) { - if (imageType.getQualifier().layoutFormat != ElfR32i && imageType.getQualifier().layoutFormat != ElfR32ui) + if (imageType.getQualifier().getFormat() != ElfR32i && imageType.getQualifier().getFormat() != ElfR32ui) error(loc, "only supported on image with format r32i or r32ui", fnCandidate.getName().c_str(), ""); } else { if (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") != 0) error(loc, "only supported on integer images", fnCandidate.getName().c_str(), ""); - else if (imageType.getQualifier().layoutFormat != ElfR32f && profile == EEsProfile) + else if (imageType.getQualifier().getFormat() != ElfR32f && isEsProfile()) error(loc, "only supported on image with format r32f", fnCandidate.getName().c_str(), ""); } } } +#endif + // // Do any extra checking for a user function call. // @@ -2475,6 +2511,7 @@ bool errorReturn = false; switch(binaryNode->getOp()) { +#ifndef GLSLANG_WEB case EOpIndexDirect: case EOpIndexIndirect: // ... tessellation control shader ... @@ -2490,10 +2527,8 @@ error(loc, "tessellation-control per-vertex output l-value must be indexed with gl_InvocationID", "[]", ""); } } - - break; // left node is checked by base class - case EOpIndexDirectStruct: break; // left node is checked by base class +#endif case EOpVectorSwizzle: errorReturn = lValueErrorCheck(loc, op, binaryNode->getLeft()); if (!errorReturn) { @@ -2525,8 +2560,7 @@ } } - if (binaryNode && binaryNode->getOp() == EOpIndexDirectStruct && - binaryNode->getLeft()->getBasicType() == EbtReference) + if (binaryNode && binaryNode->getOp() == EOpIndexDirectStruct && binaryNode->getLeft()->isReference()) return false; // Let the base class check errors @@ -2549,7 +2583,7 @@ case EvqFragDepth: intermediate.setDepthReplacing(); // "In addition, it is an error to statically write to gl_FragDepth in the fragment shader." - if (profile == EEsProfile && intermediate.getEarlyFragmentTests()) + if (isEsProfile() && intermediate.getEarlyFragmentTests()) message = "can't modify gl_FragDepth if using early_fragment_tests"; break; @@ -2586,12 +2620,10 @@ // Let the base class check errors TParseContextBase::rValueErrorCheck(loc, op, node); -#ifdef AMD_EXTENSIONS TIntermSymbol* symNode = node->getAsSymbolNode(); - if (!(symNode && symNode->getQualifier().writeonly)) // base class checks - if (symNode && symNode->getQualifier().explicitInterp) + if (!(symNode && symNode->getQualifier().isWriteOnly())) // base class checks + if (symNode && symNode->getQualifier().isExplicitInterpolation()) error(loc, "can't read from explicitly-interpolated object: ", op, symNode->getName().c_str()); -#endif } // @@ -2637,14 +2669,14 @@ 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 (profile == EEsProfile && 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(), ""); } @@ -2656,7 +2688,7 @@ // 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 @@ -2668,14 +2700,14 @@ else if (strncmp(identifier, "defined", 8) == 0) ppError(loc, "\"defined\" can't be (un)defined:", op, identifier); else if (strstr(identifier, "__") != 0) { - if (profile == EEsProfile && version >= 300 && + if (isEsProfile() && version >= 300 && (strcmp(identifier, "__LINE__") == 0 || strcmp(identifier, "__FILE__") == 0 || strcmp(identifier, "__VERSION__") == 0)) ppError(loc, "predefined names can't be (un)defined:", op, identifier); else { - if (profile == EEsProfile && 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); } @@ -2689,10 +2721,14 @@ // bool TParseContext::lineContinuationCheck(const TSourceLoc& loc, bool endOfComment) { +#ifdef GLSLANG_WEB + return true; +#endif + const char* message = "line continuation"; - bool lineContinuationAllowed = (profile == EEsProfile && version >= 300) || - (profile != EEsProfile && (version >= 420 || extensionTurnedOn(E_GL_ARB_shading_language_420pack))); + bool lineContinuationAllowed = (isEsProfile() && version >= 300) || + (!isEsProfile() && (version >= 420 || extensionTurnedOn(E_GL_ARB_shading_language_420pack))); if (endOfComment) { if (lineContinuationAllowed) @@ -2741,10 +2777,27 @@ // 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) { +#ifndef GLSLANG_WEB + case EOpConstructNonuniform: + if (node != nullptr && node->getAsTyped() != nullptr) { + type.shallowCopy(node->getAsTyped()->getType()); + type.getQualifier().makeTemporary(); + type.getQualifier().nonUniform = true; + } + break; +#endif + default: + type.shallowCopy(function.getType()); + break; + } + // See if it's a matrix bool constructingMatrix = false; - switch(op) { + switch (op) { case EOpConstructTextureSampler: return constructorTextureSamplerError(loc, function); case EOpConstructMat2x2: @@ -2756,6 +2809,7 @@ case EOpConstructMat4x2: case EOpConstructMat4x3: case EOpConstructMat4x4: +#ifndef GLSLANG_WEB case EOpConstructDMat2x2: case EOpConstructDMat2x3: case EOpConstructDMat2x4: @@ -2774,6 +2828,7 @@ case EOpConstructF16Mat4x2: case EOpConstructF16Mat4x3: case EOpConstructF16Mat4x4: +#endif constructingMatrix = true; break; default: @@ -2823,20 +2878,21 @@ if (function[arg].type->isFloatingDomain()) floatArgument = true; if (type.isStruct()) { - if (function[arg].type->containsBasicType(EbtFloat16)) { + if (function[arg].type->contains16BitFloat()) { requireFloat16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type"); } - if (function[arg].type->containsBasicType(EbtUint16) || - function[arg].type->containsBasicType(EbtInt16)) { + if (function[arg].type->contains16BitInt()) { requireInt16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type"); } - if (function[arg].type->containsBasicType(EbtUint8) || - function[arg].type->containsBasicType(EbtInt8)) { + if (function[arg].type->contains8BitInt()) { requireInt8Arithmetic(loc, "constructor", "can't construct structure containing 8-bit type"); } } } + if (op == EOpConstructNonuniform) + constType = false; +#ifndef GLSLANG_WEB switch (op) { case EOpConstructFloat16: case EOpConstructF16Vec2: @@ -2876,6 +2932,7 @@ default: break; } +#endif // inherit constness from children if (constType) { @@ -2884,17 +2941,24 @@ if (specConstType) { switch (op) { case EOpConstructInt8: - case EOpConstructUint8: - case EOpConstructInt16: - case EOpConstructUint16: case EOpConstructInt: case EOpConstructUint: - case EOpConstructInt64: - case EOpConstructUint64: case EOpConstructBool: case EOpConstructBVec2: case EOpConstructBVec3: case EOpConstructBVec4: + case EOpConstructIVec2: + case EOpConstructIVec3: + case EOpConstructIVec4: + case EOpConstructUVec2: + case EOpConstructUVec3: + case EOpConstructUVec4: +#ifndef GLSLANG_WEB + case EOpConstructUint8: + case EOpConstructInt16: + case EOpConstructUint16: + case EOpConstructInt64: + case EOpConstructUint64: case EOpConstructI8Vec2: case EOpConstructI8Vec3: case EOpConstructI8Vec4: @@ -2907,18 +2971,13 @@ case EOpConstructU16Vec2: case EOpConstructU16Vec3: case EOpConstructU16Vec4: - case EOpConstructIVec2: - case EOpConstructIVec3: - case EOpConstructIVec4: - case EOpConstructUVec2: - case EOpConstructUVec3: - case EOpConstructUVec4: case EOpConstructI64Vec2: case EOpConstructI64Vec3: case EOpConstructI64Vec4: case EOpConstructU64Vec2: case EOpConstructU64Vec3: case EOpConstructU64Vec4: +#endif // This was the list of valid ones, if they aren't converting from float // and aren't making an array. makeSpecConst = ! floatArgument && ! type.isArray(); @@ -3028,7 +3087,7 @@ error(loc, "cannot convert a sampler", "constructor", ""); return true; } - if (op != EOpConstructStruct && typed->getBasicType() == EbtAtomicUint) { + if (op != EOpConstructStruct && typed->isAtomic()) { error(loc, "cannot convert an atomic_uint", "constructor", ""); return true; } @@ -3074,7 +3133,7 @@ } // simulate the first argument's impact on the result type, so it can be compared with the encapsulated operator!=() TSampler texture = function.getType().getSampler(); - texture.combined = false; + texture.setCombined(false); texture.shadow = false; if (texture != function[0].type->getSampler()) { error(loc, "sampler-constructor first argument must match type and dimensionality of constructor type", token, ""); @@ -3126,14 +3185,14 @@ { // Check that the appropriate extension is enabled if external sampler is used. // There are two extensions. The correct one must be used based on GLSL version. - if (type.getBasicType() == EbtSampler && type.getSampler().external) { + if (type.getBasicType() == EbtSampler && type.getSampler().isExternal()) { if (version < 300) { requireExtensions(loc, 1, &E_GL_OES_EGL_image_external, "samplerExternalOES"); } else { requireExtensions(loc, 1, &E_GL_OES_EGL_image_external_essl3, "samplerExternalOES"); } } - if (type.getSampler().yuv) { + if (type.getSampler().isYuv()) { requireExtensions(loc, 1, &E_GL_EXT_YUV_target, "__samplerExternal2DY2YEXT"); } @@ -3150,6 +3209,8 @@ } } +#ifndef GLSLANG_WEB + void TParseContext::atomicUintCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) { if (type.getQualifier().storage == EvqUniform) @@ -3160,7 +3221,7 @@ else if (type.getBasicType() == EbtAtomicUint && type.getQualifier().storage != EvqUniform) error(loc, "atomic_uints can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); } -#ifdef NV_EXTENSIONS + void TParseContext::accStructNVCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) { if (type.getQualifier().storage == EvqUniform) @@ -3173,7 +3234,8 @@ type.getBasicTypeString().c_str(), identifier.c_str()); } -#endif + +#endif // GLSLANG_WEB void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) { @@ -3238,7 +3300,7 @@ break; } - if (!nonuniformOkay && qualifier.nonUniform) + if (!nonuniformOkay && qualifier.isNonUniform()) error(loc, "for non-parameter, can only apply to 'in' or no storage qualifier", "nonuniformEXT", ""); invariantCheck(loc, qualifier); @@ -3252,7 +3314,7 @@ if (! symbolTable.atGlobalLevel()) return; - if (!(publicType.userDef && publicType.userDef->getBasicType() == EbtReference)) { + if (!(publicType.userDef && publicType.userDef->isReference())) { if (qualifier.isMemoryQualifierImageAndSSBOOnly() && ! publicType.isImage() && publicType.qualifier.storage != EvqBuffer) { error(loc, "memory qualifiers cannot be used on this type", "", ""); } else if (qualifier.isMemory() && (publicType.basicType != EbtSampler) && !publicType.qualifier.isUniformOrBuffer()) { @@ -3262,13 +3324,13 @@ if (qualifier.storage == EvqBuffer && publicType.basicType != EbtBlock && - !qualifier.layoutBufferReference) + !qualifier.hasBufferReference()) error(loc, "buffers can be declared only as blocks", "buffer", ""); if (qualifier.storage != EvqVaryingIn && qualifier.storage != EvqVaryingOut) return; - if (publicType.shaderQualifiers.blendEquation) + if (publicType.shaderQualifiers.hasBlendEquation()) error(loc, "can only be applied to a standalone 'out'", "blend equation", ""); // now, knowing it is a shader in/out, do all the in/out semantic checks @@ -3281,25 +3343,15 @@ if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble) profileRequires(loc, EEsProfile, 300, nullptr, "shader input/output"); - if (!qualifier.flat -#ifdef AMD_EXTENSIONS - && !qualifier.explicitInterp -#endif -#ifdef NV_EXTENSIONS - && !qualifier.pervertexNV -#endif - ) { + if (!qualifier.flat && !qualifier.isExplicitInterpolation() && !qualifier.isPervertexNV()) { if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble || - (publicType.userDef && (publicType.userDef->containsBasicType(EbtInt8) || - publicType.userDef->containsBasicType(EbtUint8) || - publicType.userDef->containsBasicType(EbtInt16) || - publicType.userDef->containsBasicType(EbtUint16) || - publicType.userDef->containsBasicType(EbtInt) || - publicType.userDef->containsBasicType(EbtUint) || - publicType.userDef->containsBasicType(EbtInt64) || - publicType.userDef->containsBasicType(EbtUint64) || - publicType.userDef->containsBasicType(EbtDouble)))) { + (publicType.userDef && ( publicType.userDef->containsBasicType(EbtInt) + || publicType.userDef->containsBasicType(EbtUint) + || publicType.userDef->contains16BitInt() + || publicType.userDef->contains8BitInt() + || publicType.userDef->contains64BitInt() + || publicType.userDef->containsDouble()))) { if (qualifier.storage == EvqVaryingIn && language == EShLangFragment) error(loc, "must be qualified as flat", TType::getBasicString(publicType.basicType), GetStorageQualifierString(qualifier.storage)); else if (qualifier.storage == EvqVaryingOut && language == EShLangVertex && version == 300) @@ -3307,13 +3359,11 @@ } } - if (qualifier.patch && qualifier.isInterpolation()) + if (qualifier.isPatch() && qualifier.isInterpolation()) error(loc, "cannot use interpolation qualifiers with patch", "patch", ""); -#ifdef NV_EXTENSIONS - if (qualifier.perTaskNV && publicType.basicType != EbtBlock) + if (qualifier.isTaskMemory() && publicType.basicType != EbtBlock) error(loc, "taskNV variables can be declared only as blocks", "taskNV", ""); -#endif if (qualifier.storage == EvqVaryingIn) { switch (language) { @@ -3331,18 +3381,6 @@ if (qualifier.isAuxiliary() || qualifier.isInterpolation() || qualifier.isMemory() || qualifier.invariant) error(loc, "vertex input cannot be further qualified", "", ""); break; - - case EShLangTessControl: - if (qualifier.patch) - error(loc, "can only use on output in tessellation-control shader", "patch", ""); - break; - - case EShLangTessEvaluation: - break; - - case EShLangGeometry: - break; - case EShLangFragment: if (publicType.userDef) { profileRequires(loc, EEsProfile, 300, nullptr, "fragment-shader struct input"); @@ -3353,12 +3391,16 @@ requireProfile(loc, ~EEsProfile, "fragment-shader struct input containing an array"); } break; - - case EShLangCompute: + 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", ""); + break; +#endif default: break; } @@ -3376,18 +3418,6 @@ } break; - - case EShLangTessControl: - break; - - case EShLangTessEvaluation: - if (qualifier.patch) - error(loc, "can only use on input in tessellation-evaluation shader", "patch", ""); - break; - - case EShLangGeometry: - break; - case EShLangFragment: profileRequires(loc, EEsProfile, 300, nullptr, "fragment shader output"); if (publicType.basicType == EbtStruct) { @@ -3409,7 +3439,12 @@ 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", ""); + break; +#endif default: break; } @@ -3433,18 +3468,14 @@ // Multiple interpolation qualifiers (mostly done later by 'individual qualifiers') if (src.isInterpolation() && dst.isInterpolation()) -#ifdef AMD_EXTENSIONS error(loc, "can only have one interpolation qualifier (flat, smooth, noperspective, __explicitInterpAMD)", "", ""); -#else - error(loc, "can only have one interpolation qualifier (flat, smooth, noperspective)", "", ""); -#endif // Ordering - if (! force && ((profile != EEsProfile && version < 420) || - (profile == EEsProfile && version < 310)) + if (! force && ((!isEsProfile() && version < 420) || + (isEsProfile() && version < 310)) && ! extensionTurnedOn(E_GL_ARB_shading_language_420pack)) { // non-function parameters - if (src.noContraction && (dst.invariant || dst.isInterpolation() || dst.isAuxiliary() || dst.storage != EvqTemporary || dst.precision != EpqNone)) + if (src.isNoContraction() && (dst.invariant || dst.isInterpolation() || dst.isAuxiliary() || dst.storage != EvqTemporary || dst.precision != EpqNone)) error(loc, "precise qualifier must appear first", "", ""); if (src.invariant && (dst.isInterpolation() || dst.isAuxiliary() || dst.storage != EvqTemporary || dst.precision != EpqNone)) error(loc, "invariant qualifier must appear before interpolation, storage, and precision qualifiers ", "", ""); @@ -3456,7 +3487,7 @@ error(loc, "precision qualifier must appear as last qualifier", "", ""); // function parameters - if (src.noContraction && (dst.storage == EvqConst || dst.storage == EvqIn || dst.storage == EvqOut)) + if (src.isNoContraction() && (dst.storage == EvqConst || dst.storage == EvqIn || dst.storage == EvqOut)) error(loc, "precise qualifier must appear first", "", ""); if (src.storage == EvqConst && (dst.storage == EvqIn || dst.storage == EvqOut)) error(loc, "in/out must appear before const", "", ""); @@ -3481,6 +3512,7 @@ if (dst.precision == EpqNone || (force && src.precision != EpqNone)) dst.precision = src.precision; +#ifndef GLSLANG_WEB if (!force && ((src.coherent && (dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent)) || (src.devicecoherent && (dst.coherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent)) || (src.queuefamilycoherent && (dst.coherent || dst.devicecoherent || dst.workgroupcoherent || dst.subgroupcoherent)) || @@ -3488,6 +3520,7 @@ (src.subgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent)))) { error(loc, "only one coherent/devicecoherent/queuefamilycoherent/workgroupcoherent/subgroupcoherent qualifier allowed", GetPrecisionQualifierString(src.precision), ""); } +#endif // Layout qualifiers mergeObjectLayoutQualifiers(dst, src, false); @@ -3495,19 +3528,17 @@ bool repeated = false; #define MERGE_SINGLETON(field) repeated |= dst.field && src.field; dst.field |= src.field; MERGE_SINGLETON(invariant); - MERGE_SINGLETON(noContraction); MERGE_SINGLETON(centroid); MERGE_SINGLETON(smooth); MERGE_SINGLETON(flat); + MERGE_SINGLETON(specConstant); +#ifndef GLSLANG_WEB + MERGE_SINGLETON(noContraction); MERGE_SINGLETON(nopersp); -#ifdef AMD_EXTENSIONS MERGE_SINGLETON(explicitInterp); -#endif -#ifdef NV_EXTENSIONS MERGE_SINGLETON(perPrimitiveNV); MERGE_SINGLETON(perViewNV); MERGE_SINGLETON(perTaskNV); -#endif MERGE_SINGLETON(patch); MERGE_SINGLETON(sample); MERGE_SINGLETON(coherent); @@ -3520,8 +3551,8 @@ MERGE_SINGLETON(restrict); MERGE_SINGLETON(readonly); MERGE_SINGLETON(writeonly); - MERGE_SINGLETON(specConstant); MERGE_SINGLETON(nonUniform); +#endif if (repeated) error(loc, "replicated qualifiers", "", ""); @@ -3564,11 +3595,11 @@ // correlates with the declaration of defaultSamplerPrecision[] int TParseContext::computeSamplerTypeIndex(TSampler& sampler) { - int arrayIndex = sampler.arrayed ? 1 : 0; - int shadowIndex = sampler.shadow ? 1 : 0; - int externalIndex = sampler.external? 1 : 0; - int imageIndex = sampler.image ? 1 : 0; - int msIndex = sampler.ms ? 1 : 0; + int arrayIndex = sampler.arrayed ? 1 : 0; + int shadowIndex = sampler.shadow ? 1 : 0; + int externalIndex = sampler.isExternal() ? 1 : 0; + int imageIndex = sampler.isImageClass() ? 1 : 0; + int msIndex = sampler.isMultiSample() ? 1 : 0; int flattened = EsdNumDims * (EbtNumTypes * (2 * (2 * (2 * (2 * arrayIndex + msIndex) + imageIndex) + shadowIndex) + externalIndex) + sampler.type) + sampler.dim; @@ -3592,8 +3623,10 @@ if (! obeyPrecisionQualifiers() || parsingBuiltins) return; +#ifndef GLSLANG_WEB if (baseType == EbtAtomicUint && qualifier.precision != EpqNone && qualifier.precision != EpqHigh) error(loc, "atomic counters can only be highp", "atomic_uint", ""); +#endif if (baseType == EbtFloat || baseType == EbtUint || baseType == EbtInt || baseType == EbtSampler || baseType == EbtAtomicUint) { if (qualifier.precision == EpqNone) { @@ -3612,8 +3645,7 @@ { if ((qualifier == EvqOut || qualifier == EvqInOut) && type.isOpaque()) error(loc, "samplers and atomic_uints cannot be output parameters", type.getBasicTypeString().c_str(), ""); - - if (!parsingBuiltins && type.containsBasicType(EbtFloat16)) + if (!parsingBuiltins && type.contains16BitFloat()) requireFloat16Arithmetic(loc, type.getBasicTypeString().c_str(), "float16 types can only be in uniform block or buffer storage"); if (!parsingBuiltins && type.contains16BitInt()) requireInt16Arithmetic(loc, type.getBasicTypeString().c_str(), "(u)int16 types can only be in uniform block or buffer storage"); @@ -3776,51 +3808,53 @@ (qualifier.storage != EvqTemporary && qualifier.storage != EvqGlobal && qualifier.storage != EvqShared && qualifier.storage != EvqConst)) error(loc, "only outermost dimension of an array of arrays can be a specialization constant", "[]", ""); +#ifndef GLSLANG_WEB + // desktop always allows outer-dimension-unsized variable arrays, - if (profile != EEsProfile) + if (!isEsProfile()) return; // 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: if (qualifier.storage == EvqVaryingIn) - if ((profile == EEsProfile && version >= 320) || + if ((isEsProfile() && version >= 320) || extensionsTurnedOn(Num_AEP_geometry_shader, AEP_geometry_shader)) return; break; case EShLangTessControl: if ( qualifier.storage == EvqVaryingIn || - (qualifier.storage == EvqVaryingOut && ! qualifier.patch)) - if ((profile == EEsProfile && version >= 320) || + (qualifier.storage == EvqVaryingOut && ! qualifier.isPatch())) + if ((isEsProfile() && version >= 320) || extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader)) return; break; case EShLangTessEvaluation: - if ((qualifier.storage == EvqVaryingIn && ! qualifier.patch) || + if ((qualifier.storage == EvqVaryingIn && ! qualifier.isPatch()) || qualifier.storage == EvqVaryingOut) - if ((profile == EEsProfile && version >= 320) || + if ((isEsProfile() && version >= 320) || extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader)) return; break; -#ifdef NV_EXTENSIONS case EShLangMeshNV: if (qualifier.storage == EvqVaryingOut) - if ((profile == EEsProfile && version >= 320) || + if ((isEsProfile() && version >= 320) || extensionTurnedOn(E_GL_NV_mesh_shader)) return; break; -#endif default: break; } +#endif + + // last member of ssbo block exception: + if (qualifier.storage == EvqBuffer && lastMember) + return; + arraySizeRequiredCheck(loc, *arraySizes); } @@ -3861,6 +3895,7 @@ if (symbolTable.atGlobalLevel()) trackLinkage(*symbol); +#ifndef GLSLANG_WEB if (! symbolTable.atBuiltInLevel()) { if (isIoResizeArray(type)) { ioArraySymbolResizeList.push_back(symbol); @@ -3868,6 +3903,7 @@ } else fixIoArraySize(loc, symbol->getWritableType()); } +#endif return; } @@ -3905,6 +3941,7 @@ return; } +#ifndef GLSLANG_WEB if (existingType.isSizedArray()) { // be more leniant for input arrays to geometry shaders and tessellation control outputs, where the redeclaration is the same size if (! (isIoResizeArray(type) && existingType.getOuterArraySize() == type.getOuterArraySize())) @@ -3918,8 +3955,11 @@ if (isIoResizeArray(type)) checkIoArraysConsistency(loc); +#endif } +#ifndef GLSLANG_WEB + // Policy and error check for needing a runtime sized array. void TParseContext::checkRuntimeSizable(const TSourceLoc& loc, const TIntermTyped& base) { @@ -3933,7 +3973,7 @@ const TIntermBinary* binary = base.getAsBinaryNode(); if (binary != nullptr && binary->getOp() == EOpIndexDirectStruct && - binary->getLeft()->getBasicType() == EbtReference) { + binary->getLeft()->isReference()) { const int index = binary->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst(); const int memberCount = (int)binary->getLeft()->getType().getReferentType()->getStruct()->size(); @@ -3943,10 +3983,7 @@ } // check for additional things allowed by GL_EXT_nonuniform_qualifier - if (base.getBasicType() == EbtSampler || -#ifdef NV_EXTENSIONS - base.getBasicType() == EbtAccStructNV || -#endif + if (base.getBasicType() == EbtSampler || base.getBasicType() == EbtAccStructNV || (base.getBasicType() == EbtBlock && base.getType().getQualifier().isUniformOrBuffer())) requireExtensions(loc, 1, &E_GL_EXT_nonuniform_qualifier, "variable index"); else @@ -3963,7 +4000,7 @@ // is it the last member? const int index = binary->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst(); - if (binary->getLeft()->getBasicType() == EbtReference) + if (binary->getLeft()->isReference()) return false; const int memberCount = (int)binary->getLeft()->getType().getStruct()->size(); @@ -3975,7 +4012,6 @@ return false; } -#ifdef NV_EXTENSIONS // Check if mesh perviewNV attributes have a view dimension // and resize it to gl_MaxMeshViewCountNV when implicitly sized. void TParseContext::checkAndResizeMeshViewDim(const TSourceLoc& loc, TType& type, bool isBlockMember) @@ -4002,7 +4038,8 @@ error(loc, "requires a view array dimension", "perviewNV", ""); } } -#endif + +#endif // GLSLANG_WEB // Returns true if the first argument to the #line directive is the line number for the next line. // @@ -4015,7 +4052,7 @@ // source string number source-string-number. bool TParseContext::lineDirectiveShouldSetNextLine() const { - return profile == EEsProfile || version >= 330; + return isEsProfile() || version >= 330; } // @@ -4046,18 +4083,19 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TString& identifier, const TQualifier& qualifier, const TShaderQualifiers& publicType) { +#ifndef GLSLANG_WEB if (! builtInName(identifier) || symbolTable.atBuiltInLevel() || ! symbolTable.atGlobalLevel()) return nullptr; - bool nonEsRedecls = (profile != EEsProfile && (version >= 130 || identifier == "gl_TexCoord")); - bool esRedecls = (profile == EEsProfile && + bool nonEsRedecls = (!isEsProfile() && (version >= 130 || identifier == "gl_TexCoord")); + bool esRedecls = (isEsProfile() && (version >= 320 || extensionsTurnedOn(Num_AEP_shader_io_blocks, AEP_shader_io_blocks))); if (! esRedecls && ! nonEsRedecls) return nullptr; // Special case when using GL_ARB_separate_shader_objects bool ssoPre150 = false; // means the only reason this variable is redeclared is due to this combination - if (profile != EEsProfile && version <= 140 && extensionTurnedOn(E_GL_ARB_separate_shader_objects)) { + if (!isEsProfile() && version <= 140 && extensionTurnedOn(E_GL_ARB_separate_shader_objects)) { if (identifier == "gl_Position" || identifier == "gl_PointSize" || identifier == "gl_ClipVertex" || @@ -4080,11 +4118,9 @@ (identifier == "gl_Color" && language == EShLangFragment) || (identifier == "gl_FragStencilRefARB" && (nonEsRedecls && version >= 140) && language == EShLangFragment) || -#ifdef NV_EXTENSIONS identifier == "gl_SampleMask" || identifier == "gl_Layer" || identifier == "gl_PrimitiveIndicesNV" || -#endif identifier == "gl_TexCoord") { // Find the existing symbol, if any. @@ -4164,16 +4200,13 @@ } } else if ( -#ifdef NV_EXTENSIONS identifier == "gl_PrimitiveIndicesNV" || -#endif identifier == "gl_FragStencilRefARB") { if (qualifier.hasLayout()) error(loc, "cannot apply layout qualifier to", "redeclaration", symbol->getName().c_str()); if (qualifier.storage != EvqVaryingOut) error(loc, "cannot change output storage qualification of", "redeclaration", symbol->getName().c_str()); } -#ifdef NV_EXTENSIONS else if (identifier == "gl_SampleMask") { if (!publicType.layoutOverrideCoverage) { error(loc, "redeclaration only allowed for override_coverage layout", "redeclaration", symbol->getName().c_str()); @@ -4186,12 +4219,12 @@ symbolQualifier.layoutViewportRelative = qualifier.layoutViewportRelative; symbolQualifier.layoutSecondaryViewportRelativeOffset = qualifier.layoutSecondaryViewportRelativeOffset; } -#endif // TODO: semantics quality: separate smooth from nothing declared, then use IsInterpolation for several tests above return symbol; } +#endif return nullptr; } @@ -4203,16 +4236,13 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newTypeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes) { +#ifndef GLSLANG_WEB const char* feature = "built-in block redeclaration"; profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature); profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_separate_shader_objects, feature); - if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment" -#ifdef NV_EXTENSIONS - && blockName != "gl_MeshPerVertexNV" && blockName != "gl_MeshPerPrimitiveNV" -#endif - ) - { + if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment" && + blockName != "gl_MeshPerVertexNV" && blockName != "gl_MeshPerPrimitiveNV") { error(loc, "cannot redeclare block: ", "block declaration", blockName.c_str()); return; } @@ -4271,7 +4301,6 @@ TType& type = block->getWritableType(); -#ifdef NV_EXTENSIONS // if gl_PerVertex is redeclared for the purpose of passing through "gl_Position" // for passthrough purpose, the redeclared block should have the same qualifers as // the current one @@ -4281,7 +4310,6 @@ type.getQualifier().layoutStream = currentBlockQualifier.layoutStream; type.getQualifier().layoutXfbBuffer = currentBlockQualifier.layoutXfbBuffer; } -#endif TTypeList::iterator member = type.getWritableStruct()->begin(); size_t numOriginalMembersFound = 0; @@ -4314,7 +4342,6 @@ error(memberLoc, "cannot change array size of redeclared block member", member->type->getFieldName().c_str(), ""); else if (! oldType.getQualifier().isPerView() && newType.isArray()) arrayLimitCheck(loc, member->type->getFieldName(), newType.getOuterArraySize()); -#ifdef NV_EXTENSIONS if (oldType.getQualifier().isPerView() && ! newType.getQualifier().isPerView()) error(memberLoc, "missing perviewNV qualifier to redeclared block member", member->type->getFieldName().c_str(), ""); else if (! oldType.getQualifier().isPerView() && newType.getQualifier().isPerView()) @@ -4334,7 +4361,6 @@ error(memberLoc, "missing perprimitiveNV qualifier to redeclared block member", member->type->getFieldName().c_str(), ""); else if (! oldType.getQualifier().isPerPrimitive() && newType.getQualifier().isPerPrimitive()) error(memberLoc, "cannot add perprimitiveNV qualifier to redeclared block member", member->type->getFieldName().c_str(), ""); -#endif if (newType.getQualifier().isMemory()) error(memberLoc, "cannot add memory qualifier to redeclared block member", member->type->getFieldName().c_str(), ""); if (newType.getQualifier().hasNonXfbLayout()) @@ -4425,6 +4451,7 @@ // Save it in the AST for linker use. trackLinkage(*block); +#endif // GLSLANG_WEB } void TParseContext::paramCheckFixStorage(const TSourceLoc& loc, const TStorageQualifier& qualifier, TType& type) @@ -4452,6 +4479,7 @@ 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; @@ -4464,6 +4492,7 @@ type.getQualifier().writeonly = qualifier.writeonly; type.getQualifier().restrict = qualifier.restrict; } +#endif if (qualifier.isAuxiliary() || qualifier.isInterpolation()) @@ -4472,9 +4501,9 @@ error(loc, "cannot use layout qualifiers on a function parameter", "", ""); if (qualifier.invariant) error(loc, "cannot use invariant qualifier on a function parameter", "", ""); - if (qualifier.noContraction) { + if (qualifier.isNoContraction()) { if (qualifier.isParamOutput()) - type.getQualifier().noContraction = true; + type.getQualifier().setNoContraction(); else warn(loc, "qualifier has no effect on non-output parameters", "precise", ""); } @@ -4515,12 +4544,15 @@ void TParseContext::referenceCheck(const TSourceLoc& loc, const TType& type, const char* op) { +#ifndef GLSLANG_WEB if (containsFieldWithBasicType(type, EbtReference)) error(loc, "can't use with reference types", op, ""); +#endif } void TParseContext::storage16BitAssignmentCheck(const TSourceLoc& loc, const TType& type, const char* op) { +#ifndef GLSLANG_WEB if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtFloat16)) requireFloat16Arithmetic(loc, op, "can't use with structs containing float16"); @@ -4550,6 +4582,7 @@ if (type.isArray() && type.getBasicType() == EbtUint8) requireInt8Arithmetic(loc, op, "can't use with arrays containing uint8"); +#endif } void TParseContext::specializationCheck(const TSourceLoc& loc, const TType& type, const char* op) @@ -4601,6 +4634,7 @@ // void TParseContext::inductiveLoopCheck(const TSourceLoc& loc, TIntermNode* init, TIntermLoop* loop) { +#ifndef GLSLANG_WEB // loop index init must exist and be a declaration, which shows up in the AST as an aggregate of size 1 of the declaration bool badInit = false; if (! init || ! init->getAsAggregate() || init->getAsAggregate()->getSequence().size() != 1) @@ -4696,8 +4730,10 @@ // the body inductiveLoopBodyCheck(loop->getBody(), loopIndex, symbolTable); +#endif } +#ifndef GLSLANG_WEB // Do limit checks for built-in arrays. void TParseContext::arrayLimitCheck(const TSourceLoc& loc, const TString& identifier, int size) { @@ -4707,13 +4743,12 @@ limitCheck(loc, size, "gl_MaxClipDistances", "gl_ClipDistance array size"); else if (identifier.compare("gl_CullDistance") == 0) limitCheck(loc, size, "gl_MaxCullDistances", "gl_CullDistance array size"); -#ifdef NV_EXTENSIONS else if (identifier.compare("gl_ClipDistancePerViewNV") == 0) limitCheck(loc, size, "gl_MaxClipDistances", "gl_ClipDistancePerViewNV array size"); else if (identifier.compare("gl_CullDistancePerViewNV") == 0) limitCheck(loc, size, "gl_MaxCullDistances", "gl_CullDistancePerViewNV array size"); -#endif } +#endif // GLSLANG_WEB // See if the provided value is less than or equal to the symbol indicated by limit, // which should be a constant in the symbol table. @@ -4727,6 +4762,8 @@ error(loc, "must be less than or equal to", feature, "%s (%d)", limit, constArray[0].getIConst()); } +#ifndef GLSLANG_WEB + // // Do any additional error checking, etc., once we know the parsing is done. // @@ -4748,33 +4785,30 @@ // about the stage itself. switch (language) { case EShLangGeometry: - if (profile == EEsProfile && version == 310) + if (isEsProfile() && version == 310) requireExtensions(getCurrentLoc(), Num_AEP_geometry_shader, AEP_geometry_shader, "geometry shaders"); break; case EShLangTessControl: case EShLangTessEvaluation: - if (profile == EEsProfile && version == 310) + if (isEsProfile() && version == 310) requireExtensions(getCurrentLoc(), Num_AEP_tessellation_shader, AEP_tessellation_shader, "tessellation shaders"); - else if (profile != EEsProfile && version < 400) + else if (!isEsProfile() && version < 400) requireExtensions(getCurrentLoc(), 1, &E_GL_ARB_tessellation_shader, "tessellation shaders"); break; case EShLangCompute: - if (profile != EEsProfile && version < 430) + if (!isEsProfile() && version < 430) requireExtensions(getCurrentLoc(), 1, &E_GL_ARB_compute_shader, "compute shaders"); break; -#ifdef NV_EXTENSIONS case EShLangTaskNV: requireExtensions(getCurrentLoc(), 1, &E_GL_NV_mesh_shader, "task shaders"); break; case EShLangMeshNV: requireExtensions(getCurrentLoc(), 1, &E_GL_NV_mesh_shader, "mesh shaders"); break; -#endif default: break; } -#ifdef NV_EXTENSIONS // Set default outputs for GL_NV_geometry_shader_passthrough if (language == EShLangGeometry && extensionTurnedOn(E_SPV_NV_geometry_shader_passthrough)) { if (intermediate.getOutputPrimitive() == ElgNone) { @@ -4794,8 +4828,8 @@ } } } -#endif } +#endif // GLSLANG_WEB // // Layout qualifier stuff. @@ -4831,6 +4865,7 @@ publicType.qualifier.layoutPacking = ElpStd140; return; } +#ifndef GLSLANG_WEB if (id == TQualifier::getLayoutPackingString(ElpStd430)) { requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, "std430"); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, nullptr, "std430"); @@ -4870,20 +4905,12 @@ intermediate.setUsePhysicalStorageBuffer(); return; } - if (language == EShLangGeometry || language == EShLangTessEvaluation -#ifdef NV_EXTENSIONS - || language == EShLangMeshNV -#endif - ) { + if (language == EShLangGeometry || language == EShLangTessEvaluation || language == EShLangMeshNV) { if (id == TQualifier::getGeometryString(ElgTriangles)) { publicType.shaderQualifiers.geometry = ElgTriangles; return; } - if (language == EShLangGeometry -#ifdef NV_EXTENSIONS - || language == EShLangMeshNV -#endif - ) { + if (language == EShLangGeometry || language == EShLangMeshNV) { if (id == TQualifier::getGeometryString(ElgPoints)) { publicType.shaderQualifiers.geometry = ElgPoints; return; @@ -4892,10 +4919,7 @@ publicType.shaderQualifiers.geometry = ElgLines; return; } -#ifdef NV_EXTENSIONS - if (language == EShLangGeometry) -#endif - { + if (language == EShLangGeometry) { if (id == TQualifier::getGeometryString(ElgLineStrip)) { publicType.shaderQualifiers.geometry = ElgLineStrip; return; @@ -4912,14 +4936,12 @@ publicType.shaderQualifiers.geometry = ElgTriangleStrip; return; } -#ifdef NV_EXTENSIONS if (id == "passthrough") { requireExtensions(loc, 1, &E_SPV_NV_geometry_shader_passthrough, "geometry shader passthrough"); publicType.qualifier.layoutPassthrough = true; intermediate.setGeoPassthroughEXT(); return; } -#endif } } else { assert(language == EShLangTessEvaluation); @@ -5007,10 +5029,8 @@ requireProfile(loc, ECoreProfile | ECompatibilityProfile, "fragment shader interlock layout qualifier"); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 450, nullptr, "fragment shader interlock layout qualifier"); requireExtensions(loc, 1, &E_GL_ARB_fragment_shader_interlock, TQualifier::getInterlockOrderingString(order)); -#ifdef NV_EXTENSIONS if (order == EioShadingRateInterlockOrdered || order == EioShadingRateInterlockUnordered) requireExtensions(loc, 1, &E_GL_NV_shading_rate_image, TQualifier::getInterlockOrderingString(order)); -#endif publicType.shaderQualifiers.interlockOrdering = order; return; } @@ -5031,7 +5051,6 @@ error(loc, "unknown blend equation", "blend_support", ""); return; } -#ifdef NV_EXTENSIONS if (id == "override_coverage") { requireExtensions(loc, 1, &E_GL_NV_sample_mask_override_coverage, "sample mask override coverage"); publicType.shaderQualifiers.layoutOverrideCoverage = true; @@ -5069,9 +5088,8 @@ } } } -#else - } #endif + error(loc, "unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)", id.c_str(), ""); } @@ -5136,7 +5154,8 @@ 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(), ""); @@ -5156,8 +5175,10 @@ error(loc, "needs a literal integer", "set", ""); return; } else if (id == "binding") { +#ifndef GLSLANG_WEB profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, "binding"); profileRequires(loc, EEsProfile, 310, nullptr, "binding"); +#endif if ((unsigned int)value >= TQualifier::layoutBindingEnd) error(loc, "binding is too large", id.c_str(), ""); else @@ -5165,7 +5186,23 @@ if (nonLiteral) error(loc, "needs a literal integer", "binding", ""); return; - } else if (id == "component") { + } + if (id == "constant_id") { + requireSpv(loc, "constant_id"); + if (value >= (int)TQualifier::layoutSpecConstantIdEnd) { + error(loc, "specialization-constant id is too large", id.c_str(), ""); + } else { + publicType.qualifier.layoutSpecConstantId = value; + publicType.qualifier.specConstant = true; + if (! intermediate.addUsedConstantId(value)) + error(loc, "specialization-constant id already used", id.c_str(), ""); + } + if (nonLiteral) + error(loc, "needs a literal integer", "constant_id", ""); + return; + } +#ifndef GLSLANG_WEB + if (id == "component") { requireProfile(loc, ECoreProfile | ECompatibilityProfile, "component"); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, "component"); if ((unsigned)value >= TQualifier::layoutComponentEnd) @@ -5175,7 +5212,8 @@ if (nonLiteral) error(loc, "needs a literal integer", "component", ""); return; - } else if (id.compare(0, 4, "xfb_") == 0) { + } + if (id.compare(0, 4, "xfb_") == 0) { // "Any shader making any static use (after preprocessing) of any of these // *xfb_* qualifiers will cause the shader to be in a transform feedback // capturing mode and hence responsible for describing the transform feedback @@ -5221,7 +5259,6 @@ return; } } - if (id == "input_attachment_index") { requireVulkan(loc, "input_attachment_index"); if (value >= (int)TQualifier::layoutAttachmentEnd) @@ -5232,20 +5269,6 @@ error(loc, "needs a literal integer", "input_attachment_index", ""); return; } - if (id == "constant_id") { - requireSpv(loc, "constant_id"); - if (value >= (int)TQualifier::layoutSpecConstantIdEnd) { - error(loc, "specialization-constant id is too large", id.c_str(), ""); - } else { - publicType.qualifier.layoutSpecConstantId = value; - publicType.qualifier.specConstant = true; - if (! intermediate.addUsedConstantId(value)) - error(loc, "specialization-constant id already used", id.c_str(), ""); - } - if (nonLiteral) - error(loc, "needs a literal integer", "constant_id", ""); - return; - } if (id == "num_views") { requireExtensions(loc, Num_OVR_multiview_EXTs, OVR_multiview_EXTs, "num_views"); publicType.shaderQualifiers.numViews = value; @@ -5253,8 +5276,6 @@ error(loc, "needs a literal integer", "num_views", ""); return; } - -#if NV_EXTENSIONS if (language == EShLangVertex || language == EShLangTessControl || language == EShLangTessEvaluation || @@ -5267,7 +5288,6 @@ return; } } -#endif if (id == "buffer_reference_align") { requireExtensions(loc, 1, &E_GL_EXT_buffer_reference, "buffer_reference_align"); @@ -5279,11 +5299,10 @@ 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) @@ -5296,9 +5315,6 @@ } break; - case EShLangTessEvaluation: - break; - case EShLangGeometry: if (id == "invocations") { profileRequires(loc, ECompatibilityProfile | ECoreProfile, 400, nullptr, "invocations"); @@ -5348,7 +5364,6 @@ } break; -#ifdef NV_EXTENSIONS case EShLangMeshNV: if (id == "max_vertices") { requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "max_vertices"); @@ -5375,16 +5390,14 @@ #endif case EShLangCompute: if (id.compare(0, 11, "local_size_") == 0) { -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB if (language == EShLangMeshNV || language == EShLangTaskNV) { requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "gl_WorkGroupSize"); - } - else -#endif - { + } else { 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) { @@ -5393,14 +5406,17 @@ } 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) { @@ -5448,53 +5464,50 @@ if (src.hasPacking()) dst.layoutPacking = src.layoutPacking; +#ifndef GLSLANG_WEB if (src.hasStream()) dst.layoutStream = src.layoutStream; - if (src.hasFormat()) dst.layoutFormat = src.layoutFormat; - if (src.hasXfbBuffer()) dst.layoutXfbBuffer = src.layoutXfbBuffer; + if (src.hasBufferReferenceAlign()) + dst.layoutBufferReferenceAlign = src.layoutBufferReferenceAlign; +#endif if (src.hasAlign()) dst.layoutAlign = src.layoutAlign; - if (src.hasBufferReferenceAlign()) - dst.layoutBufferReferenceAlign = src.layoutBufferReferenceAlign; - if (! inheritOnly) { if (src.hasLocation()) dst.layoutLocation = src.layoutLocation; - if (src.hasComponent()) - dst.layoutComponent = src.layoutComponent; - if (src.hasIndex()) - dst.layoutIndex = src.layoutIndex; - if (src.hasOffset()) dst.layoutOffset = src.layoutOffset; - if (src.hasSet()) dst.layoutSet = src.layoutSet; if (src.layoutBinding != TQualifier::layoutBindingEnd) dst.layoutBinding = src.layoutBinding; + if (src.hasSpecConstantId()) + dst.layoutSpecConstantId = src.layoutSpecConstantId; + +#ifndef GLSLANG_WEB + if (src.hasComponent()) + dst.layoutComponent = src.layoutComponent; + if (src.hasIndex()) + dst.layoutIndex = src.layoutIndex; if (src.hasXfbStride()) dst.layoutXfbStride = src.layoutXfbStride; if (src.hasXfbOffset()) dst.layoutXfbOffset = src.layoutXfbOffset; if (src.hasAttachment()) dst.layoutAttachment = src.layoutAttachment; - if (src.hasSpecConstantId()) - dst.layoutSpecConstantId = src.layoutSpecConstantId; - if (src.layoutPushConstant) dst.layoutPushConstant = true; if (src.layoutBufferReference) dst.layoutBufferReference = true; -#ifdef NV_EXTENSIONS if (src.layoutPassthrough) dst.layoutPassthrough = true; if (src.layoutViewportRelative) @@ -5563,17 +5576,15 @@ if (qualifier.hasPacking()) error(loc, "cannot specify packing on a variable declaration", "layout", ""); // "The offset qualifier can only be used on block members of blocks..." - if (qualifier.hasOffset() && type.getBasicType() != EbtAtomicUint) + if (qualifier.hasOffset() && !type.isAtomic()) error(loc, "cannot specify on a variable declaration", "offset", ""); // "The align qualifier can only be used on blocks or block members..." if (qualifier.hasAlign()) error(loc, "cannot specify on a variable declaration", "align", ""); - if (qualifier.layoutPushConstant) + if (qualifier.isPushConstant()) error(loc, "can only specify on a uniform block", "push_constant", ""); -#ifdef NV_EXTENSIONS - if (qualifier.layoutShaderRecordNV) + if (qualifier.isShaderRecordNV()) error(loc, "can only specify on a buffer block", "shaderRecordNV", ""); -#endif } break; default: @@ -5637,17 +5648,15 @@ case EvqVaryingOut: if (type.getBasicType() == EbtBlock) profileRequires(loc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, "location qualifier on in/out block"); -#ifdef NV_EXTENSIONS if (type.getQualifier().isTaskMemory()) error(loc, "cannot apply to taskNV in/out blocks", "location", ""); -#endif break; case EvqUniform: case EvqBuffer: if (type.getBasicType() == EbtBlock) error(loc, "cannot apply to uniform or buffer block", "location", ""); break; -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB case EvqPayloadNV: case EvqPayloadInNV: case EvqHitAttrNV: @@ -5670,6 +5679,7 @@ error(loc, "fragment outputs sharing the same location must be the same basic type", "location", "%d", repeated); } +#ifndef GLSLANG_WEB if (qualifier.hasXfbOffset() && qualifier.hasXfbBuffer()) { int repeated = intermediate.addXfbBufferOffset(type); if (repeated >= 0) @@ -5681,25 +5691,20 @@ if ((type.containsBasicType(EbtDouble) || type.containsBasicType(EbtInt64) || type.containsBasicType(EbtUint64)) && ! IsMultipleOfPow2(qualifier.layoutXfbOffset, 8)) error(loc, "type contains double or 64-bit integer; xfb_offset must be a multiple of 8", "xfb_offset", ""); -#ifdef AMD_EXTENSIONS else if ((type.containsBasicType(EbtBool) || type.containsBasicType(EbtFloat) || type.containsBasicType(EbtInt) || type.containsBasicType(EbtUint)) && ! IsMultipleOfPow2(qualifier.layoutXfbOffset, 4)) error(loc, "must be a multiple of size of first component", "xfb_offset", ""); // ..., if applied to an aggregate containing a half float or 16-bit integer, the offset must also be a multiple of 2..." - else if ((type.containsBasicType(EbtFloat16) || type.containsBasicType(EbtInt16) || type.containsBasicType(EbtUint16)) && + else if ((type.contains16BitFloat() || type.containsBasicType(EbtInt16) || type.containsBasicType(EbtUint16)) && !IsMultipleOfPow2(qualifier.layoutXfbOffset, 2)) error(loc, "type contains half float or 16-bit integer; xfb_offset must be a multiple of 2", "xfb_offset", ""); -#else - else if (! IsMultipleOfPow2(qualifier.layoutXfbOffset, 4)) - error(loc, "must be a multiple of size of first component", "xfb_offset", ""); -#endif } - if (qualifier.hasXfbStride() && qualifier.hasXfbBuffer()) { if (! intermediate.setXfbBufferStride(qualifier.layoutXfbBuffer, qualifier.layoutXfbStride)) error(loc, "all stride settings must match for xfb buffer", "xfb_stride", "%d", qualifier.layoutXfbBuffer); } +#endif if (qualifier.hasBinding()) { // Binding checking, from the spec: @@ -5722,15 +5727,19 @@ lastBinding += type.getCumulativeArraySize(); else { lastBinding += 1; +#ifndef GLSLANG_WEB if (spvVersion.vulkan == 0) warn(loc, "assuming binding count of one for compile-time checking of binding numbers for unsized array", "[]", ""); +#endif } } } +#ifndef GLSLANG_WEB if (spvVersion.vulkan == 0 && lastBinding >= resources.maxCombinedTextureImageUnits) error(loc, "sampler binding not less than gl_MaxCombinedTextureImageUnits", "binding", type.isArray() ? "(using array)" : ""); +#endif } - if (type.getBasicType() == EbtAtomicUint) { + if (type.isAtomic()) { if (qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) { error(loc, "atomic_uint binding is too large; see gl_MaxAtomicCounterBindings", "binding", ""); return; @@ -5740,18 +5749,16 @@ // some types require bindings // atomic_uint - if (type.getBasicType() == EbtAtomicUint) + if (type.isAtomic()) error(loc, "layout(binding=X) is required", "atomic_uint", ""); // SPIR-V if (spvVersion.spv > 0) { if (qualifier.isUniformOrBuffer()) { - if (type.getBasicType() == EbtBlock && !qualifier.layoutPushConstant && -#ifdef NV_EXTENSIONS - !qualifier.layoutShaderRecordNV && -#endif - !qualifier.layoutAttachment && - !qualifier.layoutBufferReference) + if (type.getBasicType() == EbtBlock && !qualifier.isPushConstant() && + !qualifier.isShaderRecordNV() && + !qualifier.hasAttachment() && + !qualifier.hasBufferReference()) error(loc, "uniform/buffer blocks require layout(binding=X)", "binding", ""); else if (spvVersion.vulkan > 0 && type.getBasicType() == EbtSampler) error(loc, "sampler/texture/image requires layout(binding=X)", "binding", ""); @@ -5776,40 +5783,38 @@ // Image format if (qualifier.hasFormat()) { if (! type.isImage()) - error(loc, "only apply to images", TQualifier::getLayoutFormatString(qualifier.layoutFormat), ""); + error(loc, "only apply to images", TQualifier::getLayoutFormatString(qualifier.getFormat()), ""); else { - if (type.getSampler().type == EbtFloat && qualifier.layoutFormat > ElfFloatGuard) - error(loc, "does not apply to floating point images", TQualifier::getLayoutFormatString(qualifier.layoutFormat), ""); - if (type.getSampler().type == EbtInt && (qualifier.layoutFormat < ElfFloatGuard || qualifier.layoutFormat > ElfIntGuard)) - error(loc, "does not apply to signed integer images", TQualifier::getLayoutFormatString(qualifier.layoutFormat), ""); - if (type.getSampler().type == EbtUint && qualifier.layoutFormat < ElfIntGuard) - error(loc, "does not apply to unsigned integer images", TQualifier::getLayoutFormatString(qualifier.layoutFormat), ""); + if (type.getSampler().type == EbtFloat && qualifier.getFormat() > ElfFloatGuard) + error(loc, "does not apply to floating point images", TQualifier::getLayoutFormatString(qualifier.getFormat()), ""); + if (type.getSampler().type == EbtInt && (qualifier.getFormat() < ElfFloatGuard || qualifier.getFormat() > ElfIntGuard)) + error(loc, "does not apply to signed integer images", TQualifier::getLayoutFormatString(qualifier.getFormat()), ""); + if (type.getSampler().type == EbtUint && qualifier.getFormat() < ElfIntGuard) + error(loc, "does not apply to unsigned integer images", TQualifier::getLayoutFormatString(qualifier.getFormat()), ""); - if (profile == EEsProfile) { + if (isEsProfile()) { // "Except for image variables qualified with the format qualifiers r32f, r32i, and r32ui, image variables must // specify either memory qualifier readonly or the memory qualifier writeonly." - if (! (qualifier.layoutFormat == ElfR32f || qualifier.layoutFormat == ElfR32i || qualifier.layoutFormat == ElfR32ui)) { - if (! qualifier.readonly && ! qualifier.writeonly) - error(loc, "format requires readonly or writeonly memory qualifier", TQualifier::getLayoutFormatString(qualifier.layoutFormat), ""); + if (! (qualifier.getFormat() == ElfR32f || qualifier.getFormat() == ElfR32i || qualifier.getFormat() == ElfR32ui)) { + if (! qualifier.isReadOnly() && ! qualifier.isWriteOnly()) + error(loc, "format requires readonly or writeonly memory qualifier", TQualifier::getLayoutFormatString(qualifier.getFormat()), ""); } } } - } else if (type.isImage() && ! qualifier.writeonly) { + } else if (type.isImage() && ! qualifier.isWriteOnly()) { const char *explanation = "image variables not declared 'writeonly' and without a format layout qualifier"; requireProfile(loc, ECoreProfile | ECompatibilityProfile, explanation); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shader_image_load_formatted, explanation); } - if (qualifier.layoutPushConstant && type.getBasicType() != EbtBlock) + if (qualifier.isPushConstant() && type.getBasicType() != EbtBlock) error(loc, "can only be used with a block", "push_constant", ""); - if (qualifier.layoutBufferReference && type.getBasicType() != EbtBlock) + if (qualifier.hasBufferReference() && type.getBasicType() != EbtBlock) error(loc, "can only be used with a block", "buffer_reference", ""); -#ifdef NV_EXTENSIONS - if (qualifier.layoutShaderRecordNV && type.getBasicType() != EbtBlock) + if (qualifier.isShaderRecordNV() && type.getBasicType() != EbtBlock) error(loc, "can only be used with a block", "shaderRecordNV", ""); -#endif // input attachment if (type.isSubpass()) { @@ -5866,10 +5871,11 @@ // output block declarations, and output block member declarations." switch (qualifier.storage) { +#ifndef GLSLANG_WEB case EvqVaryingIn: { const char* feature = "location qualifier on input"; - if (profile == EEsProfile && version < 310) + if (isEsProfile() && version < 310) requireStage(loc, EShLangVertex, feature); else requireStage(loc, (EShLanguageMask)~EShLangComputeMask, feature); @@ -5886,7 +5892,7 @@ case EvqVaryingOut: { const char* feature = "location qualifier on output"; - if (profile == EEsProfile && version < 310) + if (isEsProfile() && version < 310) requireStage(loc, EShLangFragment, feature); else requireStage(loc, (EShLanguageMask)~EShLangComputeMask, feature); @@ -5900,12 +5906,14 @@ } break; } +#endif case EvqUniform: 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); + profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_explicit_uniform_location, feature); profileRequires(loc, EEsProfile, 310, nullptr, feature); break; } @@ -5940,18 +5948,17 @@ error(loc, "offset/align can only be used on a uniform or buffer", "layout", ""); } } - if (qualifier.layoutPushConstant) { + if (qualifier.isPushConstant()) { if (qualifier.storage != EvqUniform) error(loc, "can only be used with a uniform", "push_constant", ""); if (qualifier.hasSet()) error(loc, "cannot be used with push_constant", "set", ""); } - if (qualifier.layoutBufferReference) { + if (qualifier.hasBufferReference()) { if (qualifier.storage != EvqBuffer) error(loc, "can only be used with buffer", "buffer_reference", ""); } -#ifdef NV_EXTENSIONS - if (qualifier.layoutShaderRecordNV) { + if (qualifier.isShaderRecordNV()) { if (qualifier.storage != EvqBuffer) error(loc, "can only be used with a buffer", "shaderRecordNV", ""); if (qualifier.hasBinding()) @@ -5963,12 +5970,12 @@ if (qualifier.storage == EvqHitAttrNV && qualifier.hasLayout()) { error(loc, "cannot apply layout qualifiers to hitAttributeNV variable", "hitAttributeNV", ""); } -#endif } // For places that can't have shader-level layout qualifiers void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQualifiers& shaderQualifiers) { +#ifndef GLSLANG_WEB const char* message = "can only apply to a standalone qualifier"; if (shaderQualifiers.geometry != ElgNone) @@ -5981,10 +5988,6 @@ error(loc, message, "point_mode", ""); if (shaderQualifiers.invocations != TQualifier::layoutNotSet) error(loc, message, "invocations", ""); - if (shaderQualifiers.earlyFragmentTests) - error(loc, message, "early_fragment_tests", ""); - if (shaderQualifiers.postDepthCoverage) - error(loc, message, "post_depth_coverage", ""); for (int i = 0; i < 3; ++i) { if (shaderQualifiers.localSize[i] > 1) error(loc, message, "local_size", ""); @@ -5992,38 +5995,38 @@ error(loc, message, "local_size id", ""); } if (shaderQualifiers.vertices != TQualifier::layoutNotSet) { - if (language == EShLangGeometry -#ifdef NV_EXTENSIONS - || language == EShLangMeshNV -#endif - ) + if (language == EShLangGeometry || language == EShLangMeshNV) error(loc, message, "max_vertices", ""); else if (language == EShLangTessControl) error(loc, message, "vertices", ""); else assert(0); } -#ifdef NV_EXTENSIONS + if (shaderQualifiers.earlyFragmentTests) + error(loc, message, "early_fragment_tests", ""); + if (shaderQualifiers.postDepthCoverage) + error(loc, message, "post_depth_coverage", ""); if (shaderQualifiers.primitives != TQualifier::layoutNotSet) { if (language == EShLangMeshNV) error(loc, message, "max_primitives", ""); else assert(0); } -#endif - if (shaderQualifiers.blendEquation) + if (shaderQualifiers.hasBlendEquation()) error(loc, message, "blend equation", ""); if (shaderQualifiers.numViews != TQualifier::layoutNotSet) error(loc, message, "num_views", ""); if (shaderQualifiers.interlockOrdering != EioNone) error(loc, message, TQualifier::getInterlockOrderingString(shaderQualifiers.interlockOrdering), ""); +#endif } // Correct and/or advance an object's offset layout qualifier. void TParseContext::fixOffset(const TSourceLoc& loc, TSymbol& symbol) { const TQualifier& qualifier = symbol.getType().getQualifier(); - if (symbol.getType().getBasicType() == EbtAtomicUint) { +#ifndef GLSLANG_WEB + if (symbol.getType().isAtomic()) { if (qualifier.hasBinding() && (int)qualifier.layoutBinding < resources.maxAtomicCounterBindings) { // Set the offset @@ -6032,6 +6035,10 @@ offset = qualifier.layoutOffset; else offset = atomicUintOffsets[qualifier.layoutBinding]; + + if (offset % 4 != 0) + error(loc, "atomic counters offset should align based on 4:", "offset", "%d", offset); + symbol.getWritableType().getQualifier().layoutOffset = offset; // Check for overlap @@ -6052,6 +6059,7 @@ atomicUintOffsets[qualifier.layoutBinding] = offset + numOffsets; } } +#endif } // @@ -6061,13 +6069,16 @@ // const TFunction* TParseContext::findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn) { - const TFunction* function = nullptr; - if (symbolTable.isFunctionNameVariable(call.getName())) { error(loc, "can't use function syntax on variable", call.getName().c_str(), ""); return nullptr; } +#ifdef GLSLANG_WEB + return findFunctionExact(loc, call, builtIn); +#endif + + const TFunction* function = nullptr; bool explicitTypesEnabled = extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int8) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int16) || @@ -6077,7 +6088,7 @@ extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float32) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float64); - if (profile == EEsProfile || version < 120) + if (isEsProfile() || version < 120) function = findFunctionExact(loc, call, builtIn); else if (version < 400) function = findFunction120(loc, call, builtIn); @@ -6239,6 +6250,8 @@ } if (from.isArray() || to.isArray() || ! from.sameElementShape(to)) return false; + if (from.isCoopMat() && to.isCoopMat()) + return from.sameCoopMatBaseType(to); return intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType()); }; @@ -6313,6 +6326,8 @@ } if (from.isArray() || to.isArray() || ! from.sameElementShape(to)) return false; + if (from.isCoopMat() && to.isCoopMat()) + return from.sameCoopMatBaseType(to); return intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType()); }; @@ -6364,11 +6379,13 @@ return bestMatch; } -// When a declaration includes a type, but not a variable name, it can be +// When a declaration includes a type, but not a variable name, it can be used // to establish defaults. void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType& publicType) { - if (publicType.basicType == EbtAtomicUint && publicType.qualifier.hasBinding() && publicType.qualifier.hasOffset()) { +#ifndef GLSLANG_WEB + if (publicType.basicType == EbtAtomicUint && publicType.qualifier.hasBinding() && + publicType.qualifier.hasOffset()) { if (publicType.qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) { error(loc, "atomic_uint binding is too large", "binding", ""); return; @@ -6377,8 +6394,9 @@ return; } - if (publicType.qualifier.hasLayout() && !publicType.qualifier.layoutBufferReference) + if (publicType.qualifier.hasLayout() && !publicType.qualifier.hasBufferReference()) warn(loc, "useless application of layout qualifier", "layout", ""); +#endif } // @@ -6409,12 +6427,20 @@ if (!publicType.typeParameters || publicType.typeParameters->getNumDims() != 4) { error(loc, "expected four type parameters", identifier.c_str(), ""); } - if (publicType.typeParameters && - publicType.typeParameters->getDimSize(0) != 16 && - publicType.typeParameters->getDimSize(0) != 32 && - publicType.typeParameters->getDimSize(0) != 64) { - error(loc, "expected 16, 32, or 64 bits for first type parameter", identifier.c_str(), ""); + if (publicType.typeParameters) { + if (isTypeFloat(publicType.basicType) && + publicType.typeParameters->getDimSize(0) != 16 && + publicType.typeParameters->getDimSize(0) != 32 && + publicType.typeParameters->getDimSize(0) != 64) { + error(loc, "expected 16, 32, or 64 bits for first type parameter", identifier.c_str(), ""); + } + if (isTypeInt(publicType.basicType) && + publicType.typeParameters->getDimSize(0) != 8 && + publicType.typeParameters->getDimSize(0) != 32) { + error(loc, "expected 8 or 32 bits for first type parameter", identifier.c_str(), ""); + } } + } else { if (publicType.typeParameters && publicType.typeParameters->getNumDims() != 0) { error(loc, "unexpected type parameters", identifier.c_str(), ""); @@ -6430,18 +6456,18 @@ nonInitConstCheck(loc, identifier, type); samplerCheck(loc, type, identifier, initializer); - atomicUintCheck(loc, type, identifier); transparentOpaqueCheck(loc, type, identifier); -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB + atomicUintCheck(loc, type, identifier); accStructNVCheck(loc, type, identifier); checkAndResizeMeshViewDim(loc, type, /*isBlockMember*/ false); #endif - if (type.getQualifier().storage == EvqConst && type.containsBasicType(EbtReference)) { + if (type.getQualifier().storage == EvqConst && type.containsReference()) { error(loc, "variables with reference type can't have qualifier 'const'", "qualifier", ""); } if (type.getQualifier().storage != EvqUniform && type.getQualifier().storage != EvqBuffer) { - if (type.containsBasicType(EbtFloat16)) + if (type.contains16BitFloat()) requireFloat16Arithmetic(loc, "qualifier", "float16 types can only be in uniform block or buffer storage"); if (type.contains16BitInt()) requireInt16Arithmetic(loc, "qualifier", "(u)int16 types can only be in uniform block or buffer storage"); @@ -6449,13 +6475,12 @@ requireInt8Arithmetic(loc, "qualifier", "(u)int8 types can only be in uniform block or buffer storage"); } - if (type.getQualifier().storage == EvqShared && - type.containsCoopMat()) + if (type.getQualifier().storage == EvqShared && type.containsCoopMat()) error(loc, "qualifier", "Cooperative matrix types must not be used in shared memory", ""); if (identifier != "gl_FragCoord" && (publicType.shaderQualifiers.originUpperLeft || publicType.shaderQualifiers.pixelCenterInteger)) error(loc, "can only apply origin_upper_left and pixel_center_origin to gl_FragCoord", "layout qualifier", ""); - if (identifier != "gl_FragDepth" && publicType.shaderQualifiers.layoutDepth != EldNone) + if (identifier != "gl_FragDepth" && publicType.shaderQualifiers.getDepth() != EldNone) error(loc, "can only apply depth layout to gl_FragDepth", "layout qualifier", ""); // Check for redeclaration of built-ins and/or attempting to declare a reserved name @@ -6511,12 +6536,14 @@ // Pick up global defaults from the provide global defaults into dst. void TParseContext::inheritGlobalDefaults(TQualifier& dst) const { +#ifndef GLSLANG_WEB if (dst.storage == EvqVaryingOut) { if (! dst.hasStream() && language == EShLangGeometry) dst.layoutStream = globalOutputDefaults.layoutStream; if (! dst.hasXfbBuffer()) dst.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer; } +#endif } // @@ -6545,7 +6572,9 @@ // make a new variable TVariable* variable = new TVariable(&identifier, type); +#ifndef GLSLANG_WEB ioArrayCheck(loc, type, identifier); +#endif // add variable to symbol table if (symbolTable.insert(*variable)) { @@ -6572,7 +6601,7 @@ // TStorageQualifier qualifier = variable->getType().getQualifier().storage; if (! (qualifier == EvqTemporary || qualifier == EvqGlobal || qualifier == EvqConst || - (qualifier == EvqUniform && profile != EEsProfile && version >= 120))) { + (qualifier == EvqUniform && !isEsProfile() && version >= 120))) { error(loc, " cannot initialize this type of qualifier ", variable->getType().getStorageQualifierString(), ""); return nullptr; } @@ -6590,7 +6619,9 @@ TType skeletalType; skeletalType.shallowCopy(variable->getType()); skeletalType.getQualifier().makeTemporary(); +#ifndef GLSLANG_WEB initializer = convertInitializerList(loc, skeletalType, initializer); +#endif if (! initializer) { // error recovery; don't leave const without constant values if (qualifier == EvqConst) @@ -6644,7 +6675,7 @@ // qualifier any initializer must be a constant expression." if (symbolTable.atGlobalLevel() && ! initializer->getType().getQualifier().isConstant()) { const char* initFeature = "non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)"; - if (profile == EEsProfile) { + if (isEsProfile()) { if (relaxedErrors() && ! extensionTurnedOn(E_GL_EXT_shader_non_constant_global_initializers)) warn(loc, "not allowed in this version", initFeature, ""); else @@ -6895,7 +6926,7 @@ // 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()); @@ -6926,6 +6957,35 @@ basicOp = EOpConstructFloat; break; + case EOpConstructIVec2: + case EOpConstructIVec3: + case EOpConstructIVec4: + case EOpConstructInt: + basicOp = EOpConstructInt; + 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: + basicOp = EOpConstructUint; + break; + + case EOpConstructBVec2: + case EOpConstructBVec3: + case EOpConstructBVec4: + case EOpConstructBool: + basicOp = EOpConstructBool; + break; + +#ifndef GLSLANG_WEB + case EOpConstructDVec2: case EOpConstructDVec3: case EOpConstructDVec4: @@ -6961,8 +7021,14 @@ 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; } @@ -6978,8 +7044,14 @@ 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; } @@ -6995,8 +7067,14 @@ 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; } @@ -7012,8 +7090,14 @@ 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; } @@ -7029,27 +7113,19 @@ 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; } break; - case EOpConstructIVec2: - case EOpConstructIVec3: - case EOpConstructIVec4: - case EOpConstructInt: - basicOp = EOpConstructInt; - break; - - case EOpConstructUVec2: - case EOpConstructUVec3: - case EOpConstructUVec4: - case EOpConstructUint: - basicOp = EOpConstructUint; - break; - case EOpConstructI64Vec2: case EOpConstructI64Vec3: case EOpConstructI64Vec4: @@ -7058,7 +7134,7 @@ break; case EOpConstructUint64: - if (type.isScalar() && node->getType().getBasicType() == EbtReference) { + if (type.isScalar() && node->getType().isReference()) { TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvPtrToUint64, true, node, type); return newNode; } @@ -7069,27 +7145,27 @@ basicOp = EOpConstructUint64; break; - case EOpConstructBVec2: - case EOpConstructBVec3: - case EOpConstructBVec4: - case EOpConstructBool: - basicOp = EOpConstructBool; - break; - 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: // construct reference from reference - if (node->getType().getBasicType() == EbtReference) { + if (node->getType().isReference()) { newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConstructReference, true, node, type); 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; @@ -7102,19 +7178,75 @@ } node = intermediate.setAggregateOperator(node, EOpConstructCooperativeMatrix, type, node->getLoc()); } else { + TOperator op = EOpNull; switch (type.getBasicType()) { default: assert(0); break; + case EbtInt: + switch (node->getType().getBasicType()) { + case EbtFloat: op = EOpConvFloatToInt; break; + case EbtFloat16: op = EOpConvFloat16ToInt; break; + case EbtUint8: op = EOpConvUint8ToInt; break; + case EbtInt8: op = EOpConvInt8ToInt; break; + case EbtUint: op = EOpConvUintToInt; break; + default: assert(0); + } + break; + case EbtUint: + switch (node->getType().getBasicType()) { + case EbtFloat: op = EOpConvFloatToUint; break; + case EbtFloat16: op = EOpConvFloat16ToUint; break; + case EbtUint8: op = EOpConvUint8ToUint; break; + case EbtInt8: op = EOpConvInt8ToUint; break; + case EbtInt: op = EOpConvIntToUint; break; + case EbtUint: op = EOpConvUintToInt8; break; + default: assert(0); + } + break; + case EbtInt8: + switch (node->getType().getBasicType()) { + case EbtFloat: op = EOpConvFloatToInt8; break; + case EbtFloat16: op = EOpConvFloat16ToInt8; break; + case EbtUint8: op = EOpConvUint8ToInt8; break; + case EbtInt: op = EOpConvIntToInt8; break; + case EbtUint: op = EOpConvUintToInt8; break; + default: assert(0); + } + break; + case EbtUint8: + switch (node->getType().getBasicType()) { + case EbtFloat: op = EOpConvFloatToUint8; break; + case EbtFloat16: op = EOpConvFloat16ToUint8; break; + case EbtInt8: op = EOpConvInt8ToUint8; break; + case EbtInt: op = EOpConvIntToUint8; break; + case EbtUint: op = EOpConvUintToUint8; break; + default: assert(0); + } + break; case EbtFloat: - assert(node->getType().getBasicType() == EbtFloat16); - node = intermediate.addUnaryNode(EOpConvFloat16ToFloat, node, node->getLoc(), type); + switch (node->getType().getBasicType()) { + case EbtFloat16: op = EOpConvFloat16ToFloat; break; + case EbtInt8: op = EOpConvInt8ToFloat; break; + case EbtUint8: op = EOpConvUint8ToFloat; break; + case EbtInt: op = EOpConvIntToFloat; break; + case EbtUint: op = EOpConvUintToFloat; break; + default: assert(0); + } break; case EbtFloat16: - assert(node->getType().getBasicType() == EbtFloat); - node = intermediate.addUnaryNode(EOpConvFloatToFloat16, node, node->getLoc(), type); + switch (node->getType().getBasicType()) { + case EbtFloat: op = EOpConvFloatToFloat16; break; + case EbtInt8: op = EOpConvInt8ToFloat16; break; + case EbtUint8: op = EOpConvUint8ToFloat16; break; + case EbtInt: op = EOpConvIntToFloat16; break; + case EbtUint: op = EOpConvUintToFloat16; break; + default: assert(0); + } break; } + + node = intermediate.addUnaryNode(op, node, node->getLoc(), type); // If it's a (non-specialization) constant, it must be folded. if (node->getAsUnaryNode()->getOperand()->getAsConstantUnion()) return node->getAsUnaryNode()->getOperand()->getAsConstantUnion()->fold(op, node->getType()); @@ -7122,6 +7254,8 @@ return node; +#endif // GLSLANG_WEB + default: error(loc, "unsupported construction", "", ""); @@ -7163,6 +7297,23 @@ return converted; } +// If a memory qualifier is present in 'to', also make it present in 'from'. +void TParseContext::inheritMemoryQualifiers(const TQualifier& from, TQualifier& to) +{ +#ifndef GLSLANG_WEB + if (from.isReadOnly()) + to.readonly = from.readonly; + if (from.isWriteOnly()) + to.writeonly = from.writeonly; + if (from.coherent) + to.coherent = from.coherent; + if (from.volatil) + to.volatil = from.volatil; + if (from.restrict) + to.restrict = from.restrict; +#endif +} + // // Do everything needed to add an interface block. // @@ -7178,7 +7329,7 @@ requireProfile(loc, ~EEsProfile, "array-of-array of block"); } - // fix and check for member storage qualifiers and types that don't belong within a block + // Inherit and check member storage qualifiers WRT to the block-level qualifier. for (unsigned int member = 0; member < typeList.size(); ++member) { TType& memberType = *typeList[member].type; TQualifier& memberQualifier = memberType.getQualifier(); @@ -7187,7 +7338,8 @@ if (memberQualifier.storage != EvqTemporary && memberQualifier.storage != EvqGlobal && memberQualifier.storage != currentBlockQualifier.storage) error(memberLoc, "member storage qualifier cannot contradict block storage qualifier", memberType.getFieldName().c_str(), ""); memberQualifier.storage = currentBlockQualifier.storage; -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB + inheritMemoryQualifiers(currentBlockQualifier, memberQualifier); if (currentBlockQualifier.perPrimitiveNV) memberQualifier.perPrimitiveNV = currentBlockQualifier.perPrimitiveNV; if (currentBlockQualifier.perViewNV) @@ -7240,18 +7392,13 @@ // Special case for "push_constant uniform", which has a default of std430, // contrary to normal uniform defaults, and can't have a default tracked for it. - if ((currentBlockQualifier.layoutPushConstant && !currentBlockQualifier.hasPacking()) -#ifdef NV_EXTENSIONS - || (currentBlockQualifier.layoutShaderRecordNV && !currentBlockQualifier.hasPacking()) -#endif - ) + if ((currentBlockQualifier.isPushConstant() && !currentBlockQualifier.hasPacking()) || + (currentBlockQualifier.isShaderRecordNV() && !currentBlockQualifier.hasPacking())) currentBlockQualifier.layoutPacking = ElpStd430; -#ifdef NV_EXTENSIONS // Special case for "taskNV in/out", which has a default of std430, - if (currentBlockQualifier.perTaskNV && !currentBlockQualifier.hasPacking()) + if (currentBlockQualifier.isTaskMemory() && !currentBlockQualifier.hasPacking()) currentBlockQualifier.layoutPacking = ElpStd430; -#endif // fix and check for member layout qualifiers @@ -7269,12 +7416,11 @@ bool memberWithLocation = false; bool memberWithoutLocation = false; -#ifdef NV_EXTENSIONS bool memberWithPerViewQualifier = false; -#endif 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", ""); @@ -7288,12 +7434,14 @@ 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(), ""); if (memberQualifier.hasLocation()) { const char* feature = "location on block member"; switch (currentBlockQualifier.storage) { +#ifndef GLSLANG_WEB case EvqVaryingIn: case EvqVaryingOut: requireProfile(memberLoc, ECoreProfile | ECompatibilityProfile | EEsProfile, feature); @@ -7301,6 +7449,7 @@ profileRequires(memberLoc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature); memberWithLocation = true; break; +#endif default: error(memberLoc, "can only use in an in/out block", feature, ""); break; @@ -7317,11 +7466,9 @@ error(memberLoc, "can only be used with std140, std430, or scalar layout packing", "offset/align", ""); } -#ifdef NV_EXTENSIONS if (memberQualifier.isPerView()) { memberWithPerViewQualifier = true; } -#endif TQualifier newMemberQualification = defaultQualification; mergeQualifiers(memberLoc, newMemberQualification, memberQualifier, false); @@ -7330,6 +7477,7 @@ 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 @@ -7339,6 +7487,7 @@ if (!currentBlockQualifier.hasXfbBuffer() && currentBlockQualifier.hasXfbOffset()) currentBlockQualifier.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer; } +#endif // Process the members fixBlockLocations(loc, currentBlockQualifier, typeList, memberWithLocation, memberWithoutLocation); @@ -7347,7 +7496,7 @@ for (unsigned int member = 0; member < typeList.size(); ++member) layoutTypeCheck(typeList[member].loc, *typeList[member].type); -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB if (memberWithPerViewQualifier) { for (unsigned int member = 0; member < typeList.size(); ++member) { checkAndResizeMeshViewDim(typeList[member].loc, *typeList[member].type, /*isBlockMember*/ true); @@ -7366,10 +7515,11 @@ TType blockType(&typeList, *blockName, currentBlockQualifier); if (arraySizes != nullptr) blockType.transferArraySizes(arraySizes); - else - ioArrayCheck(loc, blockType, instanceName ? *instanceName : *blockName); - if (currentBlockQualifier.layoutBufferReference) { +#ifndef GLSLANG_WEB + if (arraySizes == nullptr) + ioArrayCheck(loc, blockType, instanceName ? *instanceName : *blockName); + if (currentBlockQualifier.hasBufferReference()) { if (currentBlockQualifier.storage != EvqBuffer) error(loc, "can only be used with buffer", "buffer_reference", ""); @@ -7381,7 +7531,7 @@ TVariable* blockNameVar = new TVariable(blockName, blockNameType, true); if (! symbolTable.insert(*blockNameVar)) { TSymbol* existingName = symbolTable.find(*blockName); - if (existingName->getType().getBasicType() == EbtReference && + if (existingName->getType().isReference() && existingName->getType().getReferentType()->getStruct() && existingName->getType().getReferentType()->getStruct()->size() == 0 && existingName->getType().getQualifier().storage == blockType.getQualifier().storage) { @@ -7393,7 +7543,9 @@ if (!instanceName) { return; } - } else { + } else +#endif + { // // Don't make a user-defined type out of block name; that will cause an error // if the same block name gets reused in a different interface. @@ -7441,12 +7593,14 @@ // Check for general layout qualifier errors layoutObjectCheck(loc, variable); +#ifndef GLSLANG_WEB // fix up if (isIoResizeArray(blockType)) { ioArraySymbolResizeList.push_back(&variable); checkIoArraysConsistency(loc, true); } else fixIoArraySize(loc, variable.getWritableType()); +#endif // Save it in the AST for linker use. trackLinkage(variable); @@ -7459,8 +7613,8 @@ switch (qualifier.storage) { case EvqUniform: profileRequires(loc, EEsProfile, 300, nullptr, "uniform block"); - profileRequires(loc, ENoProfile, 140, nullptr, "uniform block"); - if (currentBlockQualifier.layoutPacking == ElpStd430 && ! currentBlockQualifier.layoutPushConstant) + profileRequires(loc, ENoProfile, 140, E_GL_ARB_uniform_buffer_object, "uniform block"); + if (currentBlockQualifier.layoutPacking == ElpStd430 && ! currentBlockQualifier.isPushConstant()) requireExtensions(loc, 1, &E_GL_EXT_scalar_block_layout, "std430 requires the buffer storage qualifier"); break; case EvqBuffer: @@ -7472,41 +7626,28 @@ profileRequires(loc, ~EEsProfile, 150, E_GL_ARB_separate_shader_objects, "input block"); // It is a compile-time error to have an input block in a vertex shader or an output block in a fragment shader // "Compute shaders do not permit user-defined input variables..." - requireStage(loc, (EShLanguageMask)(EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask|EShLangFragmentMask -#ifdef NV_EXTENSIONS - |EShLangMeshNVMask -#endif - ), "input block"); + requireStage(loc, (EShLanguageMask)(EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask| + EShLangFragmentMask|EShLangMeshNVMask), "input block"); if (language == EShLangFragment) { profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "fragment input block"); - } -#ifdef NV_EXTENSIONS - else if (language == EShLangMeshNV && ! qualifier.isTaskMemory()) { + } else if (language == EShLangMeshNV && ! qualifier.isTaskMemory()) { error(loc, "input blocks cannot be used in a mesh shader", "out", ""); } -#endif break; case EvqVaryingOut: profileRequires(loc, ~EEsProfile, 150, E_GL_ARB_separate_shader_objects, "output block"); - requireStage(loc, (EShLanguageMask)(EShLangVertexMask|EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask -#ifdef NV_EXTENSIONS - |EShLangMeshNVMask|EShLangTaskNVMask -#endif - ), "output block"); + requireStage(loc, (EShLanguageMask)(EShLangVertexMask|EShLangTessControlMask|EShLangTessEvaluationMask| + EShLangGeometryMask|EShLangMeshNVMask|EShLangTaskNVMask), "output block"); // ES 310 can have a block before shader_io is turned on, so skip this test for built-ins if (language == EShLangVertex && ! parsingBuiltins) { profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "vertex output block"); - } -#ifdef NV_EXTENSIONS - else if (language == EShLangMeshNV && qualifier.isTaskMemory()) { + } else if (language == EShLangMeshNV && qualifier.isTaskMemory()) { error(loc, "can only use on input blocks in mesh shader", "taskNV", ""); - } - else if (language == EShLangTaskNV && ! qualifier.isTaskMemory()) { + } else if (language == EShLangTaskNV && ! qualifier.isTaskMemory()) { error(loc, "output blocks cannot be used in a task shader", "out", ""); } -#endif break; -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB case EvqPayloadNV: profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV block"); requireStage(loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangAnyHitNVMask | EShLangClosestHitNVMask | EShLangMissNVMask), @@ -7561,18 +7702,16 @@ error(loc, "cannot use interpolation qualifiers on an interface block", "flat/smooth/noperspective", ""); if (qualifier.centroid) error(loc, "cannot use centroid qualifier on an interface block", "centroid", ""); - if (qualifier.sample) + if (qualifier.isSample()) error(loc, "cannot use sample qualifier on an interface block", "sample", ""); if (qualifier.invariant) error(loc, "cannot use invariant qualifier on an interface block", "invariant", ""); - if (qualifier.layoutPushConstant) + if (qualifier.isPushConstant()) intermediate.addPushConstantCount(); -#ifdef NV_EXTENSIONS - if (qualifier.layoutShaderRecordNV) + if (qualifier.isShaderRecordNV()) intermediate.addShaderRecordNVCount(); - if (qualifier.perTaskNV) + if (qualifier.isTaskMemory()) intermediate.addTaskNVCount(); -#endif } // @@ -7621,6 +7760,7 @@ void TParseContext::fixXfbOffsets(TQualifier& qualifier, TTypeList& typeList) { +#ifndef GLSLANG_WEB // "If a block is qualified with xfb_offset, all its // members are assigned transform feedback buffer offsets. If a block is not qualified with xfb_offset, any // members of that block not qualified with an xfb_offset will not be assigned transform feedback buffer @@ -7633,24 +7773,18 @@ for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); bool contains64BitType = false; -#ifdef AMD_EXTENSIONS bool contains32BitType = false; bool contains16BitType = false; int memberSize = intermediate.computeTypeXfbSize(*typeList[member].type, contains64BitType, contains32BitType, contains16BitType); -#else - int memberSize = intermediate.computeTypeXfbSize(*typeList[member].type, contains64BitType); -#endif // see if we need to auto-assign an offset to this member if (! memberQualifier.hasXfbOffset()) { // "if applied to an aggregate containing a double or 64-bit integer, the offset must also be a multiple of 8" if (contains64BitType) RoundToPow2(nextOffset, 8); -#ifdef AMD_EXTENSIONS else if (contains32BitType) RoundToPow2(nextOffset, 4); else if (contains16BitType) RoundToPow2(nextOffset, 2); -#endif memberQualifier.layoutXfbOffset = nextOffset; } else nextOffset = memberQualifier.layoutXfbOffset; @@ -7660,6 +7794,7 @@ // The above gave all block members an offset, so we can take it off the block now, // which will avoid double counting the offset usage. qualifier.layoutXfbOffset = TQualifier::layoutXfbOffsetEnd; +#endif } // Calculate and save the offset of each block member, using the recursively @@ -7736,7 +7871,7 @@ // a qualifier to an existing symbol. Detect this and create the block reference // type with an empty type list, which will be filled in later in // TParseContext::declareBlock. - if (!symbol && qualifier.layoutBufferReference) { + if (!symbol && qualifier.hasBufferReference()) { TTypeList typeList; TType blockType(&typeList, identifier, qualifier);; TType blockNameType(EbtReference, blockType, identifier); @@ -7776,10 +7911,10 @@ error(loc, "cannot change qualification after use", "invariant", ""); symbol->getWritableType().getQualifier().invariant = true; invariantCheck(loc, symbol->getType().getQualifier()); - } else if (qualifier.noContraction) { + } else if (qualifier.isNoContraction()) { if (intermediate.inIoAccessed(identifier)) error(loc, "cannot change qualification after use", "precise", ""); - symbol->getWritableType().getQualifier().noContraction = true; + symbol->getWritableType().getQualifier().setNoContraction(); } else if (qualifier.specConstant) { symbol->getWritableType().getQualifier().makeSpecConstant(); if (qualifier.hasSpecConstantId()) @@ -7802,7 +7937,7 @@ bool pipeOut = qualifier.isPipeOutput(); bool pipeIn = qualifier.isPipeInput(); - if (version >= 300 || (profile != EEsProfile && version >= 420)) { + if (version >= 300 || (!isEsProfile() && version >= 420)) { if (! pipeOut) error(loc, "can only apply to an output", "invariant", ""); } else { @@ -7817,12 +7952,9 @@ // void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, const TPublicType& publicType) { +#ifndef GLSLANG_WEB if (publicType.shaderQualifiers.vertices != TQualifier::layoutNotSet) { -#ifdef NV_EXTENSIONS assert(language == EShLangTessControl || language == EShLangGeometry || language == EShLangMeshNV); -#else - assert(language == EShLangTessControl || language == EShLangGeometry); -#endif const char* id = (language == EShLangTessControl) ? "vertices" : "max_vertices"; if (publicType.qualifier.storage != EvqVaryingOut) @@ -7833,7 +7965,6 @@ if (language == EShLangTessControl) checkIoArraysConsistency(loc); } -#ifdef NV_EXTENSIONS if (publicType.shaderQualifiers.primitives != TQualifier::layoutNotSet) { assert(language == EShLangMeshNV); const char* id = "max_primitives"; @@ -7843,7 +7974,6 @@ if (! intermediate.setPrimitives(publicType.shaderQualifiers.primitives)) error(loc, "cannot change previously set layout value", id, ""); } -#endif if (publicType.shaderQualifiers.invocations != TQualifier::layoutNotSet) { if (publicType.qualifier.storage != EvqVaryingIn) error(loc, "can only apply to 'in'", "invocations", ""); @@ -7860,12 +7990,10 @@ case ElgTrianglesAdjacency: case ElgQuads: case ElgIsolines: -#ifdef NV_EXTENSIONS if (language == EShLangMeshNV) { error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; } -#endif if (intermediate.setInputPrimitive(publicType.shaderQualifiers.geometry)) { if (language == EShLangGeometry) checkIoArraysConsistency(loc); @@ -7877,14 +8005,12 @@ } } else if (publicType.qualifier.storage == EvqVaryingOut) { switch (publicType.shaderQualifiers.geometry) { -#ifdef NV_EXTENSIONS case ElgLines: case ElgTriangles: if (language != EShLangMeshNV) { error(loc, "cannot apply to 'out'", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; } -#endif // Fall through case ElgPoints: case ElgLineStrip: @@ -7918,8 +8044,9 @@ else error(loc, "can only apply to 'in'", "point_mode", ""); } +#endif 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", ""); @@ -7935,7 +8062,7 @@ if (intermediate.getLocalSize(i) > (unsigned int)max) error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", ""); } -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB else if (language == EShLangMeshNV) { switch (i) { case 0: max = resources.maxMeshWorkGroupSizeX_NV; break; @@ -7945,8 +8072,7 @@ } if (intermediate.getLocalSize(i) > (unsigned int)max) error(loc, "too large; see gl_MaxMeshWorkGroupSizeNV", "local_size", ""); - } - else if (language == EShLangTaskNV) { + } else if (language == EShLangTaskNV) { switch (i) { case 0: max = resources.maxTaskWorkGroupSizeX_NV; break; case 1: max = resources.maxTaskWorkGroupSizeY_NV; break; @@ -7981,6 +8107,8 @@ workGroupSize->getWritableType().getQualifier().specConstant = true; } } + +#ifndef GLSLANG_WEB if (publicType.shaderQualifiers.earlyFragmentTests) { if (publicType.qualifier.storage == EvqVaryingIn) intermediate.setEarlyFragmentTests(); @@ -7993,7 +8121,7 @@ else error(loc, "can only apply to 'in'", "post_coverage_coverage", ""); } - if (publicType.shaderQualifiers.blendEquation) { + if (publicType.shaderQualifiers.hasBlendEquation()) { if (publicType.qualifier.storage != EvqVaryingOut) error(loc, "can only apply to 'out'", "blend equation", ""); } @@ -8006,7 +8134,6 @@ error(loc, "can only apply to 'in'", TQualifier::getInterlockOrderingString(publicType.shaderQualifiers.interlockOrdering), ""); } -#ifdef NV_EXTENSIONS if (publicType.shaderQualifiers.layoutDerivativeGroupQuads && publicType.shaderQualifiers.layoutDerivativeGroupLinear) { error(loc, "cannot be both specified", "derivative_group_quadsNV and derivative_group_linearNV", ""); @@ -8051,6 +8178,7 @@ qualifier.isInterpolation() || qualifier.precision != EpqNone) error(loc, "cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type)", "qualifier", ""); + // "The offset qualifier can only be used on block members of blocks..." // "The align qualifier can only be used on blocks or block members..." if (qualifier.hasOffset() || @@ -8075,6 +8203,7 @@ case EvqVaryingIn: break; case EvqVaryingOut: +#ifndef GLSLANG_WEB if (qualifier.hasStream()) globalOutputDefaults.layoutStream = qualifier.layoutStream; if (qualifier.hasXfbBuffer()) @@ -8083,6 +8212,7 @@ if (! intermediate.setXfbBufferStride(globalOutputDefaults.layoutXfbBuffer, qualifier.layoutXfbStride)) error(loc, "all stride settings must match for xfb buffer", "xfb_stride", "%d", qualifier.layoutXfbBuffer); } +#endif break; default: error(loc, "default qualifier requires 'uniform', 'buffer', 'in', or 'out' storage qualification", "", ""); @@ -8095,16 +8225,14 @@ error(loc, "cannot declare a default, use a full declaration", "location/component/index", ""); if (qualifier.hasXfbOffset()) error(loc, "cannot declare a default, use a full declaration", "xfb_offset", ""); - if (qualifier.layoutPushConstant) + if (qualifier.isPushConstant()) error(loc, "cannot declare a default, can only be used on a block", "push_constant", ""); - if (qualifier.layoutBufferReference) + if (qualifier.hasBufferReference()) error(loc, "cannot declare a default, can only be used on a block", "buffer_reference", ""); if (qualifier.hasSpecConstantId()) error(loc, "cannot declare a default, can only be used on a scalar", "constant_id", ""); -#ifdef NV_EXTENSIONS - if (qualifier.layoutShaderRecordNV) + if (qualifier.isShaderRecordNV()) error(loc, "cannot declare a default, can only be used on a block", "shaderRecordNV", ""); -#endif } // @@ -8171,7 +8299,7 @@ // "it is an error to have no statement between a label and the end of the switch statement." // The specifications were updated to remove this (being ill-defined what a "statement" was), // so, this became a warning. However, 3.0 tests still check for the error. - if (profile == EEsProfile && version <= 300 && ! relaxedErrors()) + if (isEsProfile() && version <= 300 && ! relaxedErrors()) error(loc, "last case/default label not followed by statements", "switch", ""); else warn(loc, "last case/default label not followed by statements", "switch", ""); diff -Nru glslang-7.12.3352/glslang/MachineIndependent/ParseHelper.h glslang-8.13.3559/glslang/MachineIndependent/ParseHelper.h --- glslang-7.12.3352/glslang/MachineIndependent/ParseHelper.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/ParseHelper.h 2020-01-06 14:50:40.000000000 +0000 @@ -97,6 +97,7 @@ } virtual ~TParseContextBase() { } +#if !defined(GLSLANG_WEB) || defined(GLSLANG_WEB_DEVEL) virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...); virtual void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken, @@ -105,6 +106,7 @@ const char* szExtraInfoFormat, ...); virtual void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...); +#endif virtual void setLimits(const TBuiltInResource&) = 0; @@ -150,8 +152,10 @@ extensionCallback(line, extension, behavior); } +#ifdef ENABLE_HLSL // Manage the global uniform block (default uniforms in GLSL, $Global in HLSL) virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr); +#endif // Potentially rename shader entry point function void renameShaderFunction(TString*& name) const @@ -279,7 +283,7 @@ 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; @@ -297,10 +301,12 @@ TIntermTyped* handleBracketDereference(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); void handleIndexLimits(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); +#ifndef GLSLANG_WEB void makeEditable(TSymbol*&) override; + void ioArrayCheck(const TSourceLoc&, const TType&, const TString& identifier); +#endif bool isIoResizeArray(const TType&) const; void fixIoArraySize(const TSourceLoc&, TType&); - void ioArrayCheck(const TSourceLoc&, const TType&, const TString& identifier); void handleIoResizeArrayAccess(const TSourceLoc&, TIntermTyped* base); void checkIoArraysConsistency(const TSourceLoc&, bool tailOnly = false); int getIoArrayImplicitSize(const TQualifier&, TString* featureString = nullptr) const; @@ -404,6 +410,7 @@ TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&); TIntermTyped* constructAggregate(TIntermNode*, const TType&, int, const TSourceLoc&); TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermTyped*, const TSourceLoc&, bool subset); + void inheritMemoryQualifiers(const TQualifier& from, TQualifier& to); void declareBlock(const TSourceLoc&, TTypeList& typeList, const TString* instanceName = 0, TArraySizes* arraySizes = 0); void blockStageIoCheck(const TSourceLoc&, const TQualifier&); void blockQualifierCheck(const TSourceLoc&, const TQualifier&, bool instanceName); @@ -417,6 +424,7 @@ void wrapupSwitchSubsequence(TIntermAggregate* statements, TIntermNode* branchNode); TIntermNode* addSwitch(const TSourceLoc&, TIntermTyped* expression, TIntermAggregate* body); +#ifndef GLSLANG_WEB TAttributeType attributeFromName(const TString& name) const; TAttributes* makeAttributes(const TString& identifier) const; TAttributes* makeAttributes(const TString& identifier, TIntermNode* node) const; @@ -425,9 +433,9 @@ // Determine selection control from attributes void handleSelectionAttributes(const TAttributes& attributes, TIntermNode*); void handleSwitchAttributes(const TAttributes& attributes, TIntermNode*); - // Determine loop control from attributes void handleLoopAttributes(const TAttributes& attributes, TIntermNode*); +#endif void checkAndResizeMeshViewDim(const TSourceLoc&, TType&, bool isBlockMember); @@ -441,7 +449,9 @@ bool isRuntimeLength(const TIntermTyped&) const; TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); +#ifndef GLSLANG_WEB void finish() override; +#endif public: // @@ -467,10 +477,11 @@ TQualifier globalUniformDefaults; TQualifier globalInputDefaults; TQualifier globalOutputDefaults; - int* atomicUintOffsets; // to become an array of the right size to hold an offset per binding point TString currentCaller; // name of last function body entered (not valid when at global scope) - TIdSetType inductiveLoopIds; +#ifndef GLSLANG_WEB + int* atomicUintOffsets; // to become an array of the right size to hold an offset per binding point bool anyIndexLimits; + TIdSetType inductiveLoopIds; TVector needsIndexLimitationChecking; // @@ -506,6 +517,7 @@ // array-sizing declarations // TVector ioArraySymbolResizeList; +#endif }; } // end namespace glslang diff -Nru glslang-7.12.3352/glslang/MachineIndependent/parseVersions.h glslang-8.13.3559/glslang/MachineIndependent/parseVersions.h --- glslang-7.12.3352/glslang/MachineIndependent/parseVersions.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/parseVersions.h 2020-01-06 14:50:40.000000000 +0000 @@ -57,26 +57,91 @@ TParseVersions(TIntermediate& interm, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) - : infoSink(infoSink), version(version), profile(profile), language(language), - spvVersion(spvVersion), forwardCompatible(forwardCompatible), - intermediate(interm), messages(messages), numErrors(0), currentScanner(0) { } + : +#ifndef GLSLANG_WEB + forwardCompatible(forwardCompatible), + profile(profile), +#endif + infoSink(infoSink), version(version), + language(language), + spvVersion(spvVersion), + intermediate(interm), messages(messages), numErrors(0), currentScanner(0) { } virtual ~TParseVersions() { } + void requireStage(const TSourceLoc&, EShLanguageMask, const char* featureDesc); + void requireStage(const TSourceLoc&, EShLanguage, const char* featureDesc); +#ifdef GLSLANG_WEB + const EProfile profile = EEsProfile; + bool isEsProfile() const { return true; } + void requireProfile(const TSourceLoc& loc, int profileMask, const char* featureDesc) + { + if (! (EEsProfile & profileMask)) + error(loc, "not supported with this profile:", featureDesc, ProfileName(profile)); + } + void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, int numExtensions, + const char* const extensions[], const char* featureDesc) + { + if ((EEsProfile & profileMask) && (minVersion == 0 || version < minVersion)) + error(loc, "not supported for this version or the enabled extensions", featureDesc, ""); + } + void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, const char* extension, + const char* featureDesc) + { + profileRequires(loc, profileMask, minVersion, extension ? 1 : 0, &extension, featureDesc); + } + void initializeExtensionBehavior() { } + void checkDeprecated(const TSourceLoc&, int queryProfiles, int depVersion, const char* featureDesc) { } + void requireNotRemoved(const TSourceLoc&, int queryProfiles, int removedVersion, const char* featureDesc) { } + void requireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], + const char* featureDesc) { } + void ppRequireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], + const char* featureDesc) { } + TExtensionBehavior getExtensionBehavior(const char*) { return EBhMissing; } + bool extensionTurnedOn(const char* const extension) { return false; } + bool extensionsTurnedOn(int numExtensions, const char* const extensions[]) { return false; } + void updateExtensionBehavior(int line, const char* const extension, const char* behavior) { } + void updateExtensionBehavior(const char* const extension, TExtensionBehavior) { } + void checkExtensionStage(const TSourceLoc&, const char* const extension) { } + void fullIntegerCheck(const TSourceLoc&, const char* op) { } + void doubleCheck(const TSourceLoc&, const char* op) { } + bool float16Arithmetic() { return false; } + void requireFloat16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { } + bool int16Arithmetic() { return false; } + void requireInt16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { } + bool int8Arithmetic() { return false; } + void requireInt8Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { } + void int64Check(const TSourceLoc&, const char* op, bool builtIn = false) { } + void explicitFloat32Check(const TSourceLoc&, const char* op, bool builtIn = false) { } + void explicitFloat64Check(const TSourceLoc&, const char* op, bool builtIn = false) { } + bool relaxedErrors() const { return false; } + bool suppressWarnings() const { return true; } + bool isForwardCompatible() const { return false; } +#else + bool forwardCompatible; // true if errors are to be given for use of deprecated features + EProfile profile; // the declared profile in the shader (core by default) + bool isEsProfile() const { return profile == EEsProfile; } + void requireProfile(const TSourceLoc& loc, int profileMask, const char* featureDesc); + void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, int numExtensions, + const char* const extensions[], const char* featureDesc); + void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, const char* extension, + const char* featureDesc); virtual void initializeExtensionBehavior(); - virtual void requireProfile(const TSourceLoc&, int queryProfiles, const char* featureDesc); - virtual void profileRequires(const TSourceLoc&, int queryProfiles, int minVersion, int numExtensions, const char* const extensions[], const char* featureDesc); - virtual void profileRequires(const TSourceLoc&, int queryProfiles, int minVersion, const char* const extension, const char* featureDesc); - virtual void requireStage(const TSourceLoc&, EShLanguageMask, const char* featureDesc); - virtual void requireStage(const TSourceLoc&, EShLanguage, const char* featureDesc); virtual void checkDeprecated(const TSourceLoc&, int queryProfiles, int depVersion, const char* featureDesc); virtual void requireNotRemoved(const TSourceLoc&, int queryProfiles, int removedVersion, const char* featureDesc); - virtual void unimplemented(const TSourceLoc&, const char* featureDesc); - virtual void requireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc); - virtual void ppRequireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc); + virtual void requireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], + const char* featureDesc); + virtual void ppRequireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], + const char* featureDesc); virtual TExtensionBehavior getExtensionBehavior(const char*); virtual bool extensionTurnedOn(const char* const extension); virtual bool extensionsTurnedOn(int numExtensions, const char* const extensions[]); virtual void updateExtensionBehavior(int line, const char* const extension, const char* behavior); + virtual void updateExtensionBehavior(const char* const extension, TExtensionBehavior); + virtual bool checkExtensionsRequested(const TSourceLoc&, int numExtensions, const char* const extensions[], + const char* featureDesc); + virtual void checkExtensionStage(const TSourceLoc&, const char* const extension); virtual void fullIntegerCheck(const TSourceLoc&, const char* op); + + virtual void unimplemented(const TSourceLoc&, const char* featureDesc); virtual void doubleCheck(const TSourceLoc&, const char* op); virtual void float16Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void float16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false); @@ -88,24 +153,35 @@ virtual void int8ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual bool int8Arithmetic(); virtual void requireInt8Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc); -#ifdef AMD_EXTENSIONS virtual void float16OpaqueCheck(const TSourceLoc&, const char* op, bool builtIn = false); -#endif virtual void int64Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void explicitInt8Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void explicitInt16Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void explicitInt32Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void explicitFloat32Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void explicitFloat64Check(const TSourceLoc&, const char* op, bool builtIn = false); + virtual void fcoopmatCheck(const TSourceLoc&, const char* op, bool builtIn = false); + virtual void intcoopmatCheck(const TSourceLoc&, const char *op, bool builtIn = false); + bool relaxedErrors() const { return (messages & EShMsgRelaxedErrors) != 0; } + bool suppressWarnings() const { return (messages & EShMsgSuppressWarnings) != 0; } + bool isForwardCompatible() const { return forwardCompatible; } +#endif // GLSLANG_WEB virtual void spvRemoved(const TSourceLoc&, const char* op); virtual void vulkanRemoved(const TSourceLoc&, const char* op); virtual void requireVulkan(const TSourceLoc&, const char* op); virtual void requireSpv(const TSourceLoc&, const char* op); - virtual bool checkExtensionsRequested(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc); - virtual void updateExtensionBehavior(const char* const extension, TExtensionBehavior); - virtual void checkExtensionStage(const TSourceLoc&, const char* const extension); - virtual void fcoopmatCheck(const TSourceLoc&, const char* op, bool builtIn = false); + +#if defined(GLSLANG_WEB) && !defined(GLSLANG_WEB_DEVEL) + void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...) { addError(); } + void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...) { } + void C_DECL ppError(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...) { addError(); } + void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...) { } +#else virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) = 0; virtual void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken, @@ -114,6 +190,7 @@ const char* szExtraInfoFormat, ...) = 0; virtual void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) = 0; +#endif void addError() { ++numErrors; } int getNumErrors() const { return numErrors; } @@ -127,20 +204,20 @@ void setCurrentString(int string) { currentScanner->setString(string); } void getPreamble(std::string&); - bool relaxedErrors() const { return (messages & EShMsgRelaxedErrors) != 0; } - bool suppressWarnings() const { return (messages & EShMsgSuppressWarnings) != 0; } +#ifdef ENABLE_HLSL bool isReadingHLSL() const { return (messages & EShMsgReadHlsl) == EShMsgReadHlsl; } bool hlslEnable16BitTypes() const { return (messages & EShMsgHlslEnable16BitTypes) != 0; } bool hlslDX9Compatible() const { return (messages & EShMsgHlslDX9Compatible) != 0; } +#else + bool isReadingHLSL() const { return false; } +#endif TInfoSink& infoSink; // compilation mode int version; // version, updated by #version in the shader - EProfile profile; // the declared profile in the shader (core by default) EShLanguage language; // really the stage SpvVersion spvVersion; - bool forwardCompatible; // true if errors are to be given for use of deprecated features TIntermediate& intermediate; // helper for making and hooking up pieces of the parse tree protected: diff -Nru glslang-7.12.3352/glslang/MachineIndependent/preprocessor/Pp.cpp glslang-8.13.3559/glslang/MachineIndependent/preprocessor/Pp.cpp --- glslang-7.12.3352/glslang/MachineIndependent/preprocessor/Pp.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/preprocessor/Pp.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -545,7 +545,7 @@ case MacroExpandStarted: break; case MacroExpandUndef: - if (! shortCircuit && parseContext.profile == EEsProfile) { + if (! shortCircuit && parseContext.isEsProfile()) { const char* message = "undefined macro in expression not allowed in es profile"; if (parseContext.relaxedErrors()) parseContext.ppWarn(ppToken->loc, message, "preprocessor evaluation", ppToken->name); @@ -722,6 +722,7 @@ parseContext.setCurrentLine(lineRes); if (token != '\n') { +#ifndef GLSLANG_WEB if (token == PpAtomConstString) { parseContext.ppRequireExtensions(directiveLoc, 1, &E_GL_GOOGLE_cpp_style_line_directive, "filename-based #line"); // We need to save a copy of the string instead of pointing @@ -731,7 +732,9 @@ parseContext.setCurrentSourceName(sourceName); hasFile = true; token = scanToken(ppToken); - } else { + } else +#endif + { token = eval(token, MIN_PRECEDENCE, false, fileRes, fileErr, ppToken); if (! fileErr) { parseContext.setCurrentString(fileRes); @@ -792,10 +795,8 @@ case PpAtomConstUint: case PpAtomConstInt64: case PpAtomConstUint64: -#ifdef AMD_EXTENSIONS case PpAtomConstInt16: case PpAtomConstUint16: -#endif case PpAtomConstFloat: case PpAtomConstDouble: case PpAtomConstFloat16: @@ -954,18 +955,20 @@ case PpAtomIfndef: token = CPPifdef(0, ppToken); break; + case PpAtomLine: + token = CPPline(ppToken); + break; +#ifndef GLSLANG_WEB case PpAtomInclude: if(!parseContext.isReadingHLSL()) { parseContext.ppRequireExtensions(ppToken->loc, 1, &E_GL_GOOGLE_include_directive, "#include"); } token = CPPinclude(ppToken); break; - case PpAtomLine: - token = CPPline(ppToken); - break; case PpAtomPragma: token = CPPpragma(ppToken); break; +#endif case PpAtomUndef: token = CPPundef(ppToken); break; diff -Nru glslang-7.12.3352/glslang/MachineIndependent/preprocessor/PpScanner.cpp glslang-8.13.3559/glslang/MachineIndependent/preprocessor/PpScanner.cpp --- glslang-7.12.3352/glslang/MachineIndependent/preprocessor/PpScanner.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/preprocessor/PpScanner.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -142,6 +142,7 @@ ch = getChar(); int firstDecimal = len; +#ifdef ENABLE_HLSL // 1.#INF or -1.#INF if (ch == '#' && (ifdepth > 0 || parseContext.intermediate.getSource() == EShSourceHlsl)) { if ((len < 2) || @@ -169,6 +170,7 @@ } } } +#endif // Consume leading-zero digits after the decimal point while (ch == '0') { @@ -257,6 +259,7 @@ // Suffix: bool isDouble = false; bool isFloat16 = false; +#ifndef GLSLANG_WEB if (ch == 'l' || ch == 'L') { if (ifdepth == 0 && parseContext.intermediate.getSource() == EShSourceGlsl) parseContext.doubleCheck(ppToken->loc, "double floating-point suffix"); @@ -295,11 +298,15 @@ saveName(ch); isFloat16 = true; } - } else if (ch == 'f' || ch == 'F') { + } else +#endif + if (ch == 'f' || ch == 'F') { +#ifndef GLSLANG_WEB if (ifdepth == 0) parseContext.profileRequires(ppToken->loc, EEsProfile, 300, nullptr, "floating-point suffix"); if (ifdepth == 0 && !parseContext.relaxedErrors()) parseContext.profileRequires(ppToken->loc, ~EEsProfile, 120, nullptr, "floating-point suffix"); +#endif if (ifdepth == 0 && !hasDecimalOrExponent) parseContext.ppError(ppToken->loc, "float literal needs a decimal point or exponent", "", ""); saveName(ch); @@ -468,9 +475,7 @@ static const int Num_Int64_Extensions = sizeof(Int64_Extensions) / sizeof(Int64_Extensions[0]); static const char* const Int16_Extensions[] = { -#ifdef AMD_EXTENSIONS E_GL_AMD_gpu_shader_int16, -#endif E_GL_EXT_shader_explicit_arithmetic_types, E_GL_EXT_shader_explicit_arithmetic_types_int16 }; static const int Num_Int16_Extensions = sizeof(Int16_Extensions) / sizeof(Int16_Extensions[0]); @@ -579,6 +584,7 @@ ppToken->name[len++] = (char)ch; isUnsigned = true; +#ifndef GLSLANG_WEB int nextCh = getch(); if (nextCh == 'l' || nextCh == 'L') { if (len < MaxTokenLength) @@ -587,7 +593,6 @@ } else ungetch(); -#ifdef AMD_EXTENSIONS nextCh = getch(); if ((nextCh == 's' || nextCh == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { @@ -596,12 +601,10 @@ isInt16 = true; } else ungetch(); -#endif } else if (ch == 'l' || ch == 'L') { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt64 = true; -#ifdef AMD_EXTENSIONS } else if ((ch == 's' || ch == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (len < MaxTokenLength) @@ -689,6 +692,7 @@ ppToken->name[len++] = (char)ch; isUnsigned = true; +#ifndef GLSLANG_WEB int nextCh = getch(); if (nextCh == 'l' || nextCh == 'L') { if (len < MaxTokenLength) @@ -697,7 +701,6 @@ } else ungetch(); -#ifdef AMD_EXTENSIONS nextCh = getch(); if ((nextCh == 's' || nextCh == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { @@ -706,12 +709,10 @@ isInt16 = true; } else ungetch(); -#endif } else if (ch == 'l' || ch == 'L') { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt64 = true; -#ifdef AMD_EXTENSIONS } else if ((ch == 's' || ch == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (len < MaxTokenLength) @@ -780,6 +781,7 @@ ppToken->name[len++] = (char)ch; isUnsigned = true; +#ifndef GLSLANG_WEB int nextCh = getch(); if (nextCh == 'l' || nextCh == 'L') { if (len < MaxTokenLength) @@ -788,7 +790,6 @@ } else ungetch(); -#ifdef AMD_EXTENSIONS nextCh = getch(); if ((nextCh == 's' || nextCh == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { @@ -797,12 +798,10 @@ isInt16 = true; } else ungetch(); -#endif } else if (ch == 'l' || ch == 'L') { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt64 = true; -#ifdef AMD_EXTENSIONS } else if ((ch == 's' || ch == 'S') && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { if (len < MaxTokenLength) diff -Nru glslang-7.12.3352/glslang/MachineIndependent/preprocessor/PpTokens.cpp glslang-8.13.3559/glslang/MachineIndependent/preprocessor/PpTokens.cpp --- glslang-7.12.3352/glslang/MachineIndependent/preprocessor/PpTokens.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/preprocessor/PpTokens.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -116,6 +116,7 @@ int atom = stream[currentPos++].get(*ppToken); ppToken->loc = parseContext.getCurrentLoc(); +#ifndef GLSLANG_WEB // Check for ##, unless the current # is the last character if (atom == '#') { if (peekToken('#')) { @@ -125,6 +126,7 @@ atom = PpAtomPaste; } } +#endif return atom; } diff -Nru glslang-7.12.3352/glslang/MachineIndependent/propagateNoContraction.cpp glslang-8.13.3559/glslang/MachineIndependent/propagateNoContraction.cpp --- glslang-7.12.3352/glslang/MachineIndependent/propagateNoContraction.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/propagateNoContraction.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -37,6 +37,8 @@ // propagate the 'noContraction' qualifier. // +#ifndef GLSLANG_WEB + #include "propagateNoContraction.h" #include @@ -79,7 +81,7 @@ // the node has 'noContraction' qualifier, otherwise false. bool isPreciseObjectNode(glslang::TIntermTyped* node) { - return node->getType().getQualifier().noContraction; + return node->getType().getQualifier().isNoContraction(); } // Returns true if the opcode is a dereferencing one. @@ -864,3 +866,5 @@ } } }; + +#endif // GLSLANG_WEB \ No newline at end of file diff -Nru glslang-7.12.3352/glslang/MachineIndependent/reflection.cpp glslang-8.13.3559/glslang/MachineIndependent/reflection.cpp --- glslang-7.12.3352/glslang/MachineIndependent/reflection.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/reflection.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -33,6 +33,8 @@ // POSSIBILITY OF SUCH DAMAGE. // +#ifndef GLSLANG_WEB + #include "../Include/Common.h" #include "reflection.h" #include "LiveTraverser.h" @@ -110,6 +112,10 @@ TReflection::TMapIndexToReflection &ioItems = input ? reflection.indexToPipeInput : reflection.indexToPipeOutput; + + TReflection::TNameToIndex &ioMapper = + input ? reflection.pipeInNameToIndex : reflection.pipeOutNameToIndex; + if (reflection.options & EShReflectionUnwrapIOBlocks) { bool anonymous = IsAnonymous(name); @@ -127,12 +133,13 @@ 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()] = static_cast(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 { @@ -396,7 +403,7 @@ topLevelArrayStride = variables.back().arrayStride; } - if ((reflection.options & EShReflectionSeparateBuffers) && terminalType->getBasicType() == EbtAtomicUint) + if ((reflection.options & EShReflectionSeparateBuffers) && terminalType->isAtomic()) reflection.atomicCounterUniformIndices.push_back(uniformIndex); variables.back().topLevelArrayStride = topLevelArrayStride; @@ -554,15 +561,18 @@ bool blockParent = (base->getType().getBasicType() == EbtBlock && base->getQualifier().storage == EvqBuffer); if (strictArraySuffix && blockParent) { - const TTypeList& typeList = *base->getType().getStruct(); + TType structDerefType(base->getType(), 0); + + const TType &structType = base->getType().isArray() ? structDerefType : base->getType(); + const TTypeList& typeList = *structType.getStruct(); TVector memberOffsets; memberOffsets.resize(typeList.size()); - getOffsets(base->getType(), memberOffsets); + getOffsets(structType, memberOffsets); for (int i = 0; i < (int)typeList.size(); ++i) { - TType derefType(base->getType(), i); + TType derefType(structType, i); TString name = baseName; if (name.size() > 0) name.append("."); @@ -573,7 +583,7 @@ if (derefType.isArray() && derefType.isStruct()) { name.append("[0]"); blowUpActiveAggregate(TType(derefType, 0), name, derefs, derefs.end(), memberOffsets[i], - blockIndex, 0, getArrayStride(base->getType(), derefType), + blockIndex, 0, getArrayStride(structType, derefType), base->getQualifier().storage, false); } else { blowUpActiveAggregate(derefType, name, derefs, derefs.end(), memberOffsets[i], blockIndex, @@ -701,7 +711,6 @@ case EsdBuffer: return GL_SAMPLER_BUFFER; } -#ifdef AMD_EXTENSIONS case EbtFloat16: switch ((int)sampler.dim) { case Esd1D: @@ -730,7 +739,6 @@ case EsdBuffer: return GL_FLOAT16_SAMPLER_BUFFER_AMD; } -#endif case EbtInt: switch ((int)sampler.dim) { case Esd1D: @@ -793,7 +801,6 @@ case EsdBuffer: return GL_IMAGE_BUFFER; } -#ifdef AMD_EXTENSIONS case EbtFloat16: switch ((int)sampler.dim) { case Esd1D: @@ -812,7 +819,6 @@ case EsdBuffer: return GL_FLOAT16_IMAGE_BUFFER_AMD; } -#endif case EbtInt: switch ((int)sampler.dim) { case Esd1D: @@ -878,9 +884,7 @@ switch (type.getBasicType()) { case EbtFloat: return GL_FLOAT_VEC2 + offset; case EbtDouble: return GL_DOUBLE_VEC2 + offset; -#ifdef AMD_EXTENSIONS case EbtFloat16: return GL_FLOAT16_VEC2_NV + offset; -#endif case EbtInt: return GL_INT_VEC2 + offset; case EbtUint: return GL_UNSIGNED_INT_VEC2 + offset; case EbtInt64: return GL_INT64_ARB + offset; @@ -940,7 +944,6 @@ default: return 0; } } -#ifdef AMD_EXTENSIONS case EbtFloat16: switch (type.getMatrixCols()) { case 2: @@ -965,7 +968,6 @@ default: return 0; } } -#endif default: return 0; } @@ -974,9 +976,7 @@ switch (type.getBasicType()) { case EbtFloat: return GL_FLOAT; case EbtDouble: return GL_DOUBLE; -#ifdef AMD_EXTENSIONS case EbtFloat16: return GL_FLOAT16_NV; -#endif case EbtInt: return GL_INT; case EbtUint: return GL_UNSIGNED_INT; case EbtInt64: return GL_INT64_ARB; @@ -1093,6 +1093,7 @@ // build counter block index associations for buffers void TReflection::buildCounterIndices(const TIntermediate& intermediate) { +#ifdef ENABLE_HLSL // search for ones that have counters for (int i = 0; i < int(indexToUniformBlock.size()); ++i) { const TString counterName(intermediate.addCounterBufferName(indexToUniformBlock[i].name).c_str()); @@ -1101,6 +1102,7 @@ if (index >= 0) indexToUniformBlock[i].counterIndex = index; } +#endif } // build Shader Stages mask for all uniforms @@ -1198,3 +1200,5 @@ } } // end namespace glslang + +#endif // GLSLANG_WEB diff -Nru glslang-7.12.3352/glslang/MachineIndependent/reflection.h glslang-8.13.3559/glslang/MachineIndependent/reflection.h --- glslang-7.12.3352/glslang/MachineIndependent/reflection.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/reflection.h 2020-01-06 14:50:40.000000000 +0000 @@ -33,6 +33,8 @@ // POSSIBILITY OF SUCH DAMAGE. // +#ifndef GLSLANG_WEB + #ifndef _REFLECTION_INCLUDED #define _REFLECTION_INCLUDED @@ -150,6 +152,20 @@ // 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; } @@ -187,6 +203,8 @@ 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; @@ -201,3 +219,5 @@ } // end namespace glslang #endif // _REFLECTION_INCLUDED + +#endif // GLSLANG_WEB \ No newline at end of file diff -Nru glslang-7.12.3352/glslang/MachineIndependent/Scan.cpp glslang-8.13.3559/glslang/MachineIndependent/Scan.cpp --- glslang-7.12.3352/glslang/MachineIndependent/Scan.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/Scan.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -324,7 +324,9 @@ // A single global usable by all threads, by all versions, by all languages. // After a single process-level initialization, this is read only and thread safe std::unordered_map* KeywordMap = nullptr; +#ifndef GLSLANG_WEB std::unordered_set* ReservedSet = nullptr; +#endif }; @@ -341,9 +343,15 @@ (*KeywordMap)["const"] = CONST; (*KeywordMap)["uniform"] = UNIFORM; - (*KeywordMap)["nonuniformEXT"] = NONUNIFORM; + (*KeywordMap)["buffer"] = BUFFER; (*KeywordMap)["in"] = IN; (*KeywordMap)["out"] = OUT; + (*KeywordMap)["smooth"] = SMOOTH; + (*KeywordMap)["flat"] = FLAT; + (*KeywordMap)["centroid"] = CENTROID; + (*KeywordMap)["invariant"] = INVARIANT; + (*KeywordMap)["packed"] = PACKED; + (*KeywordMap)["resource"] = RESOURCE; (*KeywordMap)["inout"] = INOUT; (*KeywordMap)["struct"] = STRUCT; (*KeywordMap)["break"] = BREAK; @@ -356,7 +364,6 @@ (*KeywordMap)["default"] = DEFAULT; (*KeywordMap)["if"] = IF; (*KeywordMap)["else"] = ELSE; - (*KeywordMap)["demote"] = DEMOTE; (*KeywordMap)["discard"] = DISCARD; (*KeywordMap)["return"] = RETURN; (*KeywordMap)["void"] = VOID; @@ -377,9 +384,33 @@ (*KeywordMap)["mat4"] = MAT4; (*KeywordMap)["true"] = BOOLCONSTANT; (*KeywordMap)["false"] = BOOLCONSTANT; + (*KeywordMap)["layout"] = LAYOUT; + (*KeywordMap)["shared"] = SHARED; + (*KeywordMap)["highp"] = HIGH_PRECISION; + (*KeywordMap)["mediump"] = MEDIUM_PRECISION; + (*KeywordMap)["lowp"] = LOW_PRECISION; + (*KeywordMap)["superp"] = SUPERP; + (*KeywordMap)["precision"] = PRECISION; + (*KeywordMap)["mat2x2"] = MAT2X2; + (*KeywordMap)["mat2x3"] = MAT2X3; + (*KeywordMap)["mat2x4"] = MAT2X4; + (*KeywordMap)["mat3x2"] = MAT3X2; + (*KeywordMap)["mat3x3"] = MAT3X3; + (*KeywordMap)["mat3x4"] = MAT3X4; + (*KeywordMap)["mat4x2"] = MAT4X2; + (*KeywordMap)["mat4x3"] = MAT4X3; + (*KeywordMap)["mat4x4"] = MAT4X4; + (*KeywordMap)["uint"] = UINT; + (*KeywordMap)["uvec2"] = UVEC2; + (*KeywordMap)["uvec3"] = UVEC3; + (*KeywordMap)["uvec4"] = UVEC4; + +#ifndef GLSLANG_WEB + (*KeywordMap)["nonuniformEXT"] = NONUNIFORM; + (*KeywordMap)["demote"] = DEMOTE; (*KeywordMap)["attribute"] = ATTRIBUTE; (*KeywordMap)["varying"] = VARYING; - (*KeywordMap)["buffer"] = BUFFER; + (*KeywordMap)["noperspective"] = NOPERSPECTIVE; (*KeywordMap)["coherent"] = COHERENT; (*KeywordMap)["devicecoherent"] = DEVICECOHERENT; (*KeywordMap)["queuefamilycoherent"] = QUEUEFAMILYCOHERENT; @@ -391,24 +422,9 @@ (*KeywordMap)["writeonly"] = WRITEONLY; (*KeywordMap)["atomic_uint"] = ATOMIC_UINT; (*KeywordMap)["volatile"] = VOLATILE; - (*KeywordMap)["layout"] = LAYOUT; - (*KeywordMap)["shared"] = SHARED; (*KeywordMap)["patch"] = PATCH; (*KeywordMap)["sample"] = SAMPLE; (*KeywordMap)["subroutine"] = SUBROUTINE; - (*KeywordMap)["highp"] = HIGH_PRECISION; - (*KeywordMap)["mediump"] = MEDIUM_PRECISION; - (*KeywordMap)["lowp"] = LOW_PRECISION; - (*KeywordMap)["precision"] = PRECISION; - (*KeywordMap)["mat2x2"] = MAT2X2; - (*KeywordMap)["mat2x3"] = MAT2X3; - (*KeywordMap)["mat2x4"] = MAT2X4; - (*KeywordMap)["mat3x2"] = MAT3X2; - (*KeywordMap)["mat3x3"] = MAT3X3; - (*KeywordMap)["mat3x4"] = MAT3X4; - (*KeywordMap)["mat4x2"] = MAT4X2; - (*KeywordMap)["mat4x3"] = MAT4X3; - (*KeywordMap)["mat4x4"] = MAT4X4; (*KeywordMap)["dmat2"] = DMAT2; (*KeywordMap)["dmat3"] = DMAT3; (*KeywordMap)["dmat4"] = DMAT4; @@ -458,11 +474,6 @@ (*KeywordMap)["dvec2"] = DVEC2; (*KeywordMap)["dvec3"] = DVEC3; (*KeywordMap)["dvec4"] = DVEC4; - (*KeywordMap)["uint"] = UINT; - (*KeywordMap)["uvec2"] = UVEC2; - (*KeywordMap)["uvec3"] = UVEC3; - (*KeywordMap)["uvec4"] = UVEC4; - (*KeywordMap)["int64_t"] = INT64_T; (*KeywordMap)["uint64_t"] = UINT64_T; (*KeywordMap)["i64vec2"] = I64VEC2; @@ -549,19 +560,10 @@ (*KeywordMap)["f64mat4x2"] = F64MAT4X2; (*KeywordMap)["f64mat4x3"] = F64MAT4X3; (*KeywordMap)["f64mat4x4"] = F64MAT4X4; +#endif (*KeywordMap)["sampler2D"] = SAMPLER2D; (*KeywordMap)["samplerCube"] = SAMPLERCUBE; - (*KeywordMap)["samplerCubeArray"] = SAMPLERCUBEARRAY; - (*KeywordMap)["samplerCubeArrayShadow"] = SAMPLERCUBEARRAYSHADOW; - (*KeywordMap)["isamplerCubeArray"] = ISAMPLERCUBEARRAY; - (*KeywordMap)["usamplerCubeArray"] = USAMPLERCUBEARRAY; - (*KeywordMap)["sampler1DArrayShadow"] = SAMPLER1DARRAYSHADOW; - (*KeywordMap)["isampler1DArray"] = ISAMPLER1DARRAY; - (*KeywordMap)["usampler1D"] = USAMPLER1D; - (*KeywordMap)["isampler1D"] = ISAMPLER1D; - (*KeywordMap)["usampler1DArray"] = USAMPLER1DARRAY; - (*KeywordMap)["samplerBuffer"] = SAMPLERBUFFER; (*KeywordMap)["samplerCubeShadow"] = SAMPLERCUBESHADOW; (*KeywordMap)["sampler2DArray"] = SAMPLER2DARRAY; (*KeywordMap)["sampler2DArrayShadow"] = SAMPLER2DARRAYSHADOW; @@ -573,6 +575,39 @@ (*KeywordMap)["usampler3D"] = USAMPLER3D; (*KeywordMap)["usamplerCube"] = USAMPLERCUBE; (*KeywordMap)["usampler2DArray"] = USAMPLER2DARRAY; + (*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; + (*KeywordMap)["isampler1D"] = ISAMPLER1D; + (*KeywordMap)["usampler1DArray"] = USAMPLER1DARRAY; + (*KeywordMap)["samplerBuffer"] = SAMPLERBUFFER; (*KeywordMap)["isampler2DRect"] = ISAMPLER2DRECT; (*KeywordMap)["usampler2DRect"] = USAMPLER2DRECT; (*KeywordMap)["isamplerBuffer"] = ISAMPLERBUFFER; @@ -585,8 +620,6 @@ (*KeywordMap)["usampler2DMSArray"] = USAMPLER2DMSARRAY; (*KeywordMap)["sampler1D"] = SAMPLER1D; (*KeywordMap)["sampler1DShadow"] = SAMPLER1DSHADOW; - (*KeywordMap)["sampler3D"] = SAMPLER3D; - (*KeywordMap)["sampler2DShadow"] = SAMPLER2DSHADOW; (*KeywordMap)["sampler2DRect"] = SAMPLER2DRECT; (*KeywordMap)["sampler2DRectShadow"] = SAMPLER2DRECTSHADOW; (*KeywordMap)["sampler1DArray"] = SAMPLER1DARRAY; @@ -595,28 +628,11 @@ (*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; @@ -628,7 +644,6 @@ (*KeywordMap)["itexture2DMSArray"] = ITEXTURE2DMSARRAY; (*KeywordMap)["utexture2DMSArray"] = UTEXTURE2DMSARRAY; (*KeywordMap)["texture1D"] = TEXTURE1D; - (*KeywordMap)["texture3D"] = TEXTURE3D; (*KeywordMap)["texture2DRect"] = TEXTURE2DRECT; (*KeywordMap)["texture1DArray"] = TEXTURE1DARRAY; @@ -639,7 +654,6 @@ (*KeywordMap)["usubpassInput"] = USUBPASSINPUT; (*KeywordMap)["usubpassInputMS"] = USUBPASSINPUTMS; -#ifdef AMD_EXTENSIONS (*KeywordMap)["f16sampler1D"] = F16SAMPLER1D; (*KeywordMap)["f16sampler2D"] = F16SAMPLER2D; (*KeywordMap)["f16sampler3D"] = F16SAMPLER3D; @@ -685,25 +699,10 @@ (*KeywordMap)["f16subpassInput"] = F16SUBPASSINPUT; (*KeywordMap)["f16subpassInputMS"] = F16SUBPASSINPUTMS; -#endif - - (*KeywordMap)["noperspective"] = NOPERSPECTIVE; - (*KeywordMap)["smooth"] = SMOOTH; - (*KeywordMap)["flat"] = FLAT; -#ifdef AMD_EXTENSIONS (*KeywordMap)["__explicitInterpAMD"] = EXPLICITINTERPAMD; -#endif - (*KeywordMap)["centroid"] = CENTROID; -#ifdef NV_EXTENSIONS (*KeywordMap)["pervertexNV"] = PERVERTEXNV; -#endif (*KeywordMap)["precise"] = PRECISE; - (*KeywordMap)["invariant"] = INVARIANT; - (*KeywordMap)["packed"] = PACKED; - (*KeywordMap)["resource"] = RESOURCE; - (*KeywordMap)["superp"] = SUPERP; -#ifdef NV_EXTENSIONS (*KeywordMap)["rayPayloadNV"] = PAYLOADNV; (*KeywordMap)["rayPayloadInNV"] = PAYLOADINNV; (*KeywordMap)["hitAttributeNV"] = HITATTRNV; @@ -713,9 +712,10 @@ (*KeywordMap)["perprimitiveNV"] = PERPRIMITIVENV; (*KeywordMap)["perviewNV"] = PERVIEWNV; (*KeywordMap)["taskNV"] = PERTASKNV; -#endif (*KeywordMap)["fcoopmatNV"] = FCOOPMATNV; + (*KeywordMap)["icoopmatNV"] = ICOOPMATNV; + (*KeywordMap)["ucoopmatNV"] = UCOOPMATNV; ReservedSet = new std::unordered_set; @@ -756,14 +756,17 @@ ReservedSet->insert("cast"); ReservedSet->insert("namespace"); ReservedSet->insert("using"); +#endif } void TScanContext::deleteKeywordMap() { delete KeywordMap; KeywordMap = nullptr; +#ifndef GLSLANG_WEB delete ReservedSet; ReservedSet = nullptr; +#endif } // Called by yylex to get the next token. @@ -842,13 +845,15 @@ case PpAtomConstInt: parserToken->sType.lex.i = ppToken.ival; return INTCONSTANT; case PpAtomConstUint: parserToken->sType.lex.i = ppToken.ival; return UINTCONSTANT; + case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT; +#ifndef GLSLANG_WEB case PpAtomConstInt16: parserToken->sType.lex.i = ppToken.ival; return INT16CONSTANT; case PpAtomConstUint16: parserToken->sType.lex.i = ppToken.ival; return UINT16CONSTANT; case PpAtomConstInt64: parserToken->sType.lex.i64 = ppToken.i64val; return INT64CONSTANT; case PpAtomConstUint64: parserToken->sType.lex.i64 = ppToken.i64val; return UINT64CONSTANT; - case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT; case PpAtomConstDouble: parserToken->sType.lex.d = ppToken.dval; return DOUBLECONSTANT; case PpAtomConstFloat16: parserToken->sType.lex.d = ppToken.dval; return FLOAT16CONSTANT; +#endif case PpAtomIdentifier: { int token = tokenizeIdentifier(); @@ -870,8 +875,10 @@ int TScanContext::tokenizeIdentifier() { +#ifndef GLSLANG_WEB if (ReservedSet->find(tokenText) != ReservedSet->end()) return reservedWord(); +#endif auto it = KeywordMap->find(tokenText); if (it == KeywordMap->end()) { @@ -898,20 +905,21 @@ 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; - case NONUNIFORM: - if (parseContext.extensionTurnedOn(E_GL_EXT_nonuniform_qualifier)) - return keyword; - else - return identifierOrType(); - case SWITCH: case DEFAULT: - if ((parseContext.profile == EEsProfile && parseContext.version < 300) || - (parseContext.profile != EEsProfile && parseContext.version < 130)) + if ((parseContext.isEsProfile() && parseContext.version < 300) || + (!parseContext.isEsProfile() && parseContext.version < 130)) reservedWord(); return keyword; @@ -943,20 +951,59 @@ parserToken->sType.lex.b = false; return keyword; - case ATTRIBUTE: - case VARYING: - if (parseContext.profile == EEsProfile && parseContext.version >= 300) + case SMOOTH: + if ((parseContext.isEsProfile() && parseContext.version < 300) || + (!parseContext.isEsProfile() && parseContext.version < 130)) + return identifierOrType(); + return keyword; + case FLAT: + if (parseContext.isEsProfile() && parseContext.version < 300) reservedWord(); + else if (!parseContext.isEsProfile() && parseContext.version < 130) + return identifierOrType(); return keyword; - - case BUFFER: - afterBuffer = true; - if ((parseContext.profile == EEsProfile && parseContext.version < 310) || - (parseContext.profile != EEsProfile && parseContext.version < 430)) + case CENTROID: + if (parseContext.version < 120) return identifierOrType(); return keyword; + case INVARIANT: + if (!parseContext.isEsProfile() && parseContext.version < 120) + return identifierOrType(); + return keyword; + case PACKED: + if ((parseContext.isEsProfile() && parseContext.version < 300) || + (!parseContext.isEsProfile() && parseContext.version < 330)) + return reservedWord(); + return identifierOrType(); + + case RESOURCE: + { + bool reserved = (parseContext.isEsProfile() && parseContext.version >= 300) || + (!parseContext.isEsProfile() && parseContext.version >= 420); + return identifierOrReserved(reserved); + } + case SUPERP: + { + bool reserved = parseContext.isEsProfile() || parseContext.version >= 130; + return identifierOrReserved(reserved); + } -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB + case NOPERSPECTIVE: + if (parseContext.extensionTurnedOn(E_GL_NV_shader_noperspective_interpolation)) + return keyword; + return es30ReservedFromGLSL(130); + + case NONUNIFORM: + if (parseContext.extensionTurnedOn(E_GL_EXT_nonuniform_qualifier)) + return keyword; + else + return identifierOrType(); + case ATTRIBUTE: + case VARYING: + if (parseContext.isEsProfile() && parseContext.version >= 300) + reservedWord(); + return keyword; case PAYLOADNV: case PAYLOADINNV: case HITATTRNV: @@ -964,14 +1011,11 @@ case CALLDATAINNV: case ACCSTRUCTNV: if (parseContext.symbolTable.atBuiltInLevel() || - (parseContext.profile != EEsProfile && parseContext.version >= 460 - && parseContext.extensionTurnedOn(E_GL_NV_ray_tracing))) + parseContext.extensionTurnedOn(E_GL_NV_ray_tracing)) return keyword; return identifierOrType(); -#endif - case ATOMIC_UINT: - if ((parseContext.profile == EEsProfile && parseContext.version >= 310) || + if ((parseContext.isEsProfile() && parseContext.version >= 310) || parseContext.extensionTurnedOn(E_GL_ARB_shader_atomic_counters)) return keyword; return es30ReservedFromGLSL(420); @@ -985,53 +1029,51 @@ case RESTRICT: case READONLY: case WRITEONLY: - if (parseContext.profile == EEsProfile && parseContext.version >= 310) + if (parseContext.isEsProfile() && parseContext.version >= 310) return keyword; return es30ReservedFromGLSL(parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store) ? 130 : 420); - case VOLATILE: - if (parseContext.profile == EEsProfile && parseContext.version >= 310) + if (parseContext.isEsProfile() && parseContext.version >= 310) return keyword; - if (! parseContext.symbolTable.atBuiltInLevel() && (parseContext.profile == EEsProfile || + if (! parseContext.symbolTable.atBuiltInLevel() && (parseContext.isEsProfile() || (parseContext.version < 420 && ! parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store)))) reservedWord(); return keyword; - - case LAYOUT: - { - const int numLayoutExts = 2; - const char* layoutExts[numLayoutExts] = { E_GL_ARB_shading_language_420pack, - E_GL_ARB_explicit_attrib_location }; - if ((parseContext.profile == EEsProfile && parseContext.version < 300) || - (parseContext.profile != EEsProfile && parseContext.version < 140 && - ! parseContext.extensionsTurnedOn(numLayoutExts, layoutExts))) - return identifierOrType(); - return keyword; - } - case SHARED: - if ((parseContext.profile == EEsProfile && parseContext.version < 300) || - (parseContext.profile != EEsProfile && parseContext.version < 140)) - return identifierOrType(); - return keyword; - case PATCH: if (parseContext.symbolTable.atBuiltInLevel() || - (parseContext.profile == EEsProfile && + (parseContext.isEsProfile() && (parseContext.version >= 320 || parseContext.extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader))) || - (parseContext.profile != EEsProfile && parseContext.extensionTurnedOn(E_GL_ARB_tessellation_shader))) + (!parseContext.isEsProfile() && parseContext.extensionTurnedOn(E_GL_ARB_tessellation_shader))) return keyword; return es30ReservedFromGLSL(400); case SAMPLE: - if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(1, &E_GL_OES_shader_multisample_interpolation)) return keyword; return es30ReservedFromGLSL(400); case SUBROUTINE: return es30ReservedFromGLSL(400); +#endif + case SHARED: + if ((parseContext.isEsProfile() && parseContext.version < 300) || + (!parseContext.isEsProfile() && parseContext.version < 140)) + return identifierOrType(); + return keyword; + case LAYOUT: + { + const int numLayoutExts = 2; + const char* layoutExts[numLayoutExts] = { E_GL_ARB_shading_language_420pack, + E_GL_ARB_explicit_attrib_location }; + if ((parseContext.isEsProfile() && parseContext.version < 300) || + (!parseContext.isEsProfile() && parseContext.version < 140 && + ! parseContext.extensionsTurnedOn(numLayoutExts, layoutExts))) + return identifierOrType(); + return keyword; + } case HIGH_PRECISION: case MEDIUM_PRECISION: @@ -1050,6 +1092,7 @@ case MAT4X4: return matNxM(); +#ifndef GLSLANG_WEB case DMAT2: case DMAT3: case DMAT4: @@ -1080,7 +1123,7 @@ case IIMAGEBUFFER: case UIMAGEBUFFER: afterType = true; - if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) return keyword; return firstGenerationImage(false); @@ -1104,7 +1147,7 @@ case IIMAGECUBEARRAY: case UIMAGECUBEARRAY: afterType = true; - if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) return keyword; return secondGenerationImage(); @@ -1123,7 +1166,7 @@ case DVEC3: case DVEC4: afterType = true; - if (parseContext.profile == EEsProfile || parseContext.version < 400) + if (parseContext.isEsProfile() || parseContext.version < 400) reservedWord(); return keyword; @@ -1137,10 +1180,9 @@ case U64VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - (parseContext.profile != EEsProfile && 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(); @@ -1154,10 +1196,9 @@ 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.profile != EEsProfile && 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(); @@ -1171,14 +1212,10 @@ case U16VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - (parseContext.profile != EEsProfile && parseContext.version >= 450 && - ( -#ifdef AMD_EXTENSIONS - parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) || -#endif - 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: @@ -1191,9 +1228,8 @@ 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.profile != EEsProfile && 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: @@ -1214,9 +1250,8 @@ 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.profile != EEsProfile && 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(); @@ -1238,9 +1273,8 @@ 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.profile != EEsProfile && 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(); @@ -1250,14 +1284,10 @@ case F16VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - (parseContext.profile != EEsProfile && parseContext.version >= 450 && - ( -#ifdef AMD_EXTENSIONS - parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) || -#endif - 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(); @@ -1276,13 +1306,9 @@ case F16MAT4X4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - (parseContext.profile != EEsProfile && parseContext.version >= 450 && - ( -#ifdef AMD_EXTENSIONS - parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) || -#endif - 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(); @@ -1292,20 +1318,21 @@ case ISAMPLERCUBEARRAY: case USAMPLERCUBEARRAY: afterType = true; - if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) return keyword; - if (parseContext.profile == EEsProfile || (parseContext.version < 400 && ! parseContext.extensionTurnedOn(E_GL_ARB_texture_cube_map_array))) + if (parseContext.isEsProfile() || (parseContext.version < 400 && ! parseContext.extensionTurnedOn(E_GL_ARB_texture_cube_map_array))) reservedWord(); return keyword; - case ISAMPLER1D: - case ISAMPLER1DARRAY: - case SAMPLER1DARRAYSHADOW: - case USAMPLER1D: - case USAMPLER1DARRAY: - afterType = true; - return es30ReservedFromGLSL(130); + case TEXTURECUBEARRAY: + case ITEXTURECUBEARRAY: + case UTEXTURECUBEARRAY: + if (parseContext.spvVersion.vulkan > 0) + return keyword; + else + return identifierOrType(); +#endif case UINT: case UVEC2: @@ -1325,6 +1352,49 @@ afterType = true; return nonreservedKeyword(300, 130); + case SAMPLER3D: + afterType = true; + if (parseContext.isEsProfile() && parseContext.version < 300) { + if (!parseContext.extensionTurnedOn(E_GL_OES_texture_3D)) + reservedWord(); + } + return keyword; + + case SAMPLER2DSHADOW: + afterType = true; + if (parseContext.isEsProfile() && parseContext.version < 300) { + if (!parseContext.extensionTurnedOn(E_GL_EXT_shadow_samplers)) + reservedWord(); + } + 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: + case SAMPLER1DARRAYSHADOW: + case USAMPLER1D: + case USAMPLER1DARRAY: + afterType = true; + return es30ReservedFromGLSL(130); case ISAMPLER2DRECT: case USAMPLER2DRECT: afterType = true; @@ -1332,7 +1402,7 @@ case SAMPLERBUFFER: afterType = true; - if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) return keyword; return es30ReservedFromGLSL(130); @@ -1340,7 +1410,7 @@ case ISAMPLERBUFFER: case USAMPLERBUFFER: afterType = true; - if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) return keyword; return es30ReservedFromGLSL(140); @@ -1349,7 +1419,10 @@ case ISAMPLER2DMS: case USAMPLER2DMS: afterType = true; - if (parseContext.profile == EEsProfile && parseContext.version >= 310) + if (parseContext.isEsProfile() && parseContext.version >= 310) + return keyword; + if (!parseContext.isEsProfile() && (parseContext.version > 140 || + (parseContext.version == 140 && parseContext.extensionsTurnedOn(1, &E_GL_ARB_texture_multisample)))) return keyword; return es30ReservedFromGLSL(150); @@ -1357,38 +1430,25 @@ case ISAMPLER2DMSARRAY: case USAMPLER2DMSARRAY: afterType = true; - if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + if ((parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionsTurnedOn(1, &E_GL_OES_texture_storage_multisample_2d_array)) return keyword; + if (!parseContext.isEsProfile() && (parseContext.version > 140 || + (parseContext.version == 140 && parseContext.extensionsTurnedOn(1, &E_GL_ARB_texture_multisample)))) + return keyword; return es30ReservedFromGLSL(150); case SAMPLER1D: case SAMPLER1DSHADOW: afterType = true; - if (parseContext.profile == EEsProfile) + if (parseContext.isEsProfile()) reservedWord(); return keyword; - case SAMPLER3D: - afterType = true; - if (parseContext.profile == EEsProfile && parseContext.version < 300) { - if (!parseContext.extensionTurnedOn(E_GL_OES_texture_3D)) - reservedWord(); - } - return keyword; - - case SAMPLER2DSHADOW: - afterType = true; - if (parseContext.profile == EEsProfile && parseContext.version < 300) { - if (!parseContext.extensionTurnedOn(E_GL_EXT_shadow_samplers)) - reservedWord(); - } - return keyword; - case SAMPLER2DRECT: case SAMPLER2DRECTSHADOW: afterType = true; - if (parseContext.profile == EEsProfile) + if (parseContext.isEsProfile()) reservedWord(); else if (parseContext.version < 140 && ! parseContext.symbolTable.atBuiltInLevel() && ! parseContext.extensionTurnedOn(E_GL_ARB_texture_rectangle)) { if (parseContext.relaxedErrors()) @@ -1400,10 +1460,10 @@ case SAMPLER1DARRAY: afterType = true; - if (parseContext.profile == EEsProfile && parseContext.version == 300) + if (parseContext.isEsProfile() && parseContext.version == 300) reservedWord(); - else if ((parseContext.profile == EEsProfile && parseContext.version < 300) || - (parseContext.profile != EEsProfile && parseContext.version < 130)) + else if ((parseContext.isEsProfile() && parseContext.version < 300) || + (!parseContext.isEsProfile() && parseContext.version < 130)) return identifierOrType(); return keyword; @@ -1422,25 +1482,11 @@ 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: @@ -1452,11 +1498,8 @@ case ITEXTURE2DMSARRAY: case UTEXTURE2DMSARRAY: case TEXTURE1D: - case TEXTURE3D: case TEXTURE2DRECT: case TEXTURE1DARRAY: - case SAMPLER: - case SAMPLERSHADOW: if (parseContext.spvVersion.vulkan > 0) return keyword; else @@ -1473,7 +1516,6 @@ else return identifierOrType(); -#ifdef AMD_EXTENSIONS case F16SAMPLER1D: case F16SAMPLER2D: case F16SAMPLER3D: @@ -1521,99 +1563,40 @@ case F16SUBPASSINPUTMS: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float_fetch) && - parseContext.profile != EEsProfile && parseContext.version >= 450)) + parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float_fetch)) return keyword; return identifierOrType(); -#endif - - case NOPERSPECTIVE: -#ifdef NV_EXTENSIONS - if (parseContext.profile == EEsProfile && parseContext.version >= 300 && - parseContext.extensionTurnedOn(E_GL_NV_shader_noperspective_interpolation)) - return keyword; -#endif - return es30ReservedFromGLSL(130); - case SMOOTH: - if ((parseContext.profile == EEsProfile && parseContext.version < 300) || - (parseContext.profile != EEsProfile && parseContext.version < 130)) - return identifierOrType(); - return keyword; - -#ifdef AMD_EXTENSIONS case EXPLICITINTERPAMD: - if (parseContext.profile != EEsProfile && 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(); -#endif -#ifdef NV_EXTENSIONS case PERVERTEXNV: - if (((parseContext.profile != EEsProfile && parseContext.version >= 450) || - (parseContext.profile == EEsProfile && parseContext.version >= 320)) && + if ((!parseContext.isEsProfile() && parseContext.version >= 450) || parseContext.extensionTurnedOn(E_GL_NV_fragment_shader_barycentric)) return keyword; return identifierOrType(); -#endif - - case FLAT: - if (parseContext.profile == EEsProfile && parseContext.version < 300) - reservedWord(); - else if (parseContext.profile != EEsProfile && parseContext.version < 130) - return identifierOrType(); - return keyword; - - case CENTROID: - if (parseContext.version < 120) - return identifierOrType(); - return keyword; case PRECISE: - if ((parseContext.profile == EEsProfile && + if ((parseContext.isEsProfile() && (parseContext.version >= 320 || parseContext.extensionsTurnedOn(Num_AEP_gpu_shader5, AEP_gpu_shader5))) || - (parseContext.profile != EEsProfile && parseContext.version >= 400)) + (!parseContext.isEsProfile() && parseContext.version >= 400)) return keyword; - if (parseContext.profile == EEsProfile && parseContext.version == 310) { + if (parseContext.isEsProfile() && parseContext.version == 310) { reservedWord(); return keyword; } return identifierOrType(); - case INVARIANT: - if (parseContext.profile != EEsProfile && parseContext.version < 120) - return identifierOrType(); - return keyword; - - case PACKED: - if ((parseContext.profile == EEsProfile && parseContext.version < 300) || - (parseContext.profile != EEsProfile && parseContext.version < 330)) - return reservedWord(); - return identifierOrType(); - - case RESOURCE: - { - bool reserved = (parseContext.profile == EEsProfile && parseContext.version >= 300) || - (parseContext.profile != EEsProfile && parseContext.version >= 420); - return identifierOrReserved(reserved); - } - case SUPERP: - { - bool reserved = parseContext.profile == EEsProfile || parseContext.version >= 130; - return identifierOrReserved(reserved); - } - -#ifdef NV_EXTENSIONS case PERPRIMITIVENV: case PERVIEWNV: case PERTASKNV: - if ((parseContext.profile != EEsProfile && parseContext.version >= 450) || - (parseContext.profile == EEsProfile && parseContext.version >= 320) || + if ((!parseContext.isEsProfile() && parseContext.version >= 450) || + (parseContext.isEsProfile() && parseContext.version >= 320) || parseContext.extensionTurnedOn(E_GL_NV_mesh_shader)) return keyword; return identifierOrType(); -#endif case FCOOPMATNV: afterType = true; @@ -1622,11 +1605,20 @@ return keyword; return identifierOrType(); + case UCOOPMATNV: + case ICOOPMATNV: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_NV_integer_cooperative_matrix)) + return keyword; + return identifierOrType(); + case DEMOTE: if (parseContext.extensionTurnedOn(E_GL_EXT_demote_to_helper_invocation)) return keyword; else return identifierOrType(); +#endif default: parseContext.infoSink.info.message(EPrefixInternalError, "Unknown glslang keyword", loc); @@ -1645,7 +1637,7 @@ if (const TVariable* variable = parserToken->sType.lex.symbol->getAsVariable()) { if (variable->isUserType() && // treat redeclaration of forward-declared buffer/uniform reference as an identifier - !(variable->getType().getBasicType() == EbtReference && afterBuffer)) { + !(variable->getType().isReference() && afterBuffer)) { afterType = true; return TYPE_NAME; @@ -1675,7 +1667,7 @@ return 0; } - if (parseContext.forwardCompatible) + if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using future reserved keyword", tokenText, ""); return identifierOrType(); @@ -1688,13 +1680,13 @@ if (parseContext.symbolTable.atBuiltInLevel()) return keyword; - if ((parseContext.profile == EEsProfile && parseContext.version < 300) || - (parseContext.profile != EEsProfile && parseContext.version < version)) { - if (parseContext.forwardCompatible) + if ((parseContext.isEsProfile() && parseContext.version < 300) || + (!parseContext.isEsProfile() && parseContext.version < version)) { + if (parseContext.isForwardCompatible()) parseContext.warn(loc, "future reserved word in ES 300 and keyword in GLSL", tokenText, ""); return identifierOrType(); - } else if (parseContext.profile == EEsProfile && parseContext.version >= 300) + } else if (parseContext.isEsProfile() && parseContext.version >= 300) reservedWord(); return keyword; @@ -1704,9 +1696,9 @@ // showed up, both in an es version and a non-ES version. int TScanContext::nonreservedKeyword(int esVersion, int nonEsVersion) { - if ((parseContext.profile == EEsProfile && parseContext.version < esVersion) || - (parseContext.profile != EEsProfile && parseContext.version < nonEsVersion)) { - if (parseContext.forwardCompatible) + if ((parseContext.isEsProfile() && parseContext.version < esVersion) || + (!parseContext.isEsProfile() && parseContext.version < nonEsVersion)) { + if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using future keyword", tokenText, ""); return identifierOrType(); @@ -1717,10 +1709,10 @@ int TScanContext::precisionKeyword() { - if (parseContext.profile == EEsProfile || parseContext.version >= 130) + if (parseContext.isEsProfile() || parseContext.version >= 130) return keyword; - if (parseContext.forwardCompatible) + if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using ES precision qualifier keyword", tokenText, ""); return identifierOrType(); @@ -1733,7 +1725,7 @@ if (parseContext.version > 110) return keyword; - if (parseContext.forwardCompatible) + if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using future non-square matrix type keyword", tokenText, ""); return identifierOrType(); @@ -1743,16 +1735,16 @@ { afterType = true; - if (parseContext.profile == EEsProfile && parseContext.version >= 300) { + if (parseContext.isEsProfile() && parseContext.version >= 300) { reservedWord(); return keyword; } - if (parseContext.profile != EEsProfile && parseContext.version >= 400) + if (!parseContext.isEsProfile() && parseContext.version >= 400) return keyword; - if (parseContext.forwardCompatible) + if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using future type keyword", tokenText, ""); return identifierOrType(); @@ -1761,19 +1753,19 @@ int TScanContext::firstGenerationImage(bool inEs310) { if (parseContext.symbolTable.atBuiltInLevel() || - (parseContext.profile != EEsProfile && (parseContext.version >= 420 || + (!parseContext.isEsProfile() && (parseContext.version >= 420 || parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store))) || - (inEs310 && parseContext.profile == EEsProfile && parseContext.version >= 310)) + (inEs310 && parseContext.isEsProfile() && parseContext.version >= 310)) return keyword; - if ((parseContext.profile == EEsProfile && parseContext.version >= 300) || - (parseContext.profile != EEsProfile && parseContext.version >= 130)) { + if ((parseContext.isEsProfile() && parseContext.version >= 300) || + (!parseContext.isEsProfile() && parseContext.version >= 130)) { reservedWord(); return keyword; } - if (parseContext.forwardCompatible) + if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using future type keyword", tokenText, ""); return identifierOrType(); @@ -1781,17 +1773,17 @@ int TScanContext::secondGenerationImage() { - if (parseContext.profile == EEsProfile && parseContext.version >= 310) { + if (parseContext.isEsProfile() && parseContext.version >= 310) { reservedWord(); return keyword; } if (parseContext.symbolTable.atBuiltInLevel() || - (parseContext.profile != EEsProfile && + (!parseContext.isEsProfile() && (parseContext.version >= 420 || parseContext.extensionTurnedOn(E_GL_ARB_shader_image_load_store)))) return keyword; - if (parseContext.forwardCompatible) + if (parseContext.isForwardCompatible()) parseContext.warn(loc, "using future type keyword", tokenText, ""); return identifierOrType(); diff -Nru glslang-7.12.3352/glslang/MachineIndependent/ShaderLang.cpp glslang-8.13.3559/glslang/MachineIndependent/ShaderLang.cpp --- glslang-7.12.3352/glslang/MachineIndependent/ShaderLang.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/ShaderLang.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -288,6 +288,11 @@ 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 @@ // 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) @@ -326,6 +336,7 @@ InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangFragment, source, infoSink, commonTable, symbolTables); +#ifndef GLSLANG_WEB // check for tessellation if ((profile != EEsProfile && version >= 150) || (profile == EEsProfile && version >= 310)) { @@ -340,6 +351,7 @@ (profile == EEsProfile && version >= 310)) InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangGeometry, source, infoSink, commonTable, symbolTables); +#endif // check for compute if ((profile != EEsProfile && version >= 420) || @@ -347,7 +359,6 @@ InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, source, infoSink, commonTable, symbolTables); -#ifdef NV_EXTENSIONS // check for ray tracing stages if (profile != EEsProfile && version >= 450) { InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGenNV, source, @@ -375,9 +386,6 @@ (profile == EEsProfile && version >= 320)) InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTaskNV, source, infoSink, commonTable, symbolTables); -#endif - - return true; } @@ -479,11 +487,13 @@ // Function to Print all builtins void DumpBuiltinSymbolTable(TInfoSink& infoSink, const TSymbolTable& symbolTable) { +#ifndef GLSLANG_WEB infoSink.debug << "BuiltinSymbolTable {\n"; symbolTable.dump(infoSink, true); infoSink.debug << "}\n"; +#endif } // Return true if the shader was correctly specified for version/profile/stage. @@ -581,6 +591,7 @@ break; } +#ifndef GLSLANG_WEB // Correct for stage type... switch (stage) { case EShLangGeometry: @@ -612,7 +623,6 @@ version = profile == EEsProfile ? 310 : 420; } break; -#ifdef NV_EXTENSIONS case EShLangRayGenNV: case EShLangIntersectNV: case EShLangAnyHitNV: @@ -633,7 +643,6 @@ infoSink.info.message(EPrefixError, "#version: mesh/task shaders require es profile with version 320 or above, or non-es profile with version 450 or above"); version = profile == EEsProfile ? 320 : 450; } -#endif default: break; } @@ -646,15 +655,10 @@ // Check for SPIR-V compatibility if (spvVersion.spv != 0) { switch (profile) { - case EEsProfile: - if (spvVersion.vulkan > 0 && version < 310) { + case EEsProfile: + if (version < 310) { correct = false; - infoSink.info.message(EPrefixError, "#version: ES shaders for Vulkan SPIR-V require version 310 or higher"); - version = 310; - } - if (spvVersion.openGl >= 100) { - correct = false; - infoSink.info.message(EPrefixError, "#version: ES shaders for OpenGL SPIR-V are not supported"); + infoSink.info.message(EPrefixError, "#version: ES shaders for SPIR-V require version 310 or higher"); version = 310; } break; @@ -675,6 +679,7 @@ break; } } +#endif return correct; } @@ -833,13 +838,17 @@ // Get all the stages, languages, clients, and other environment // stuff sorted out. - EShSource source = (messages & EShMsgReadHlsl) != 0 ? EShSourceHlsl : EShSourceGlsl; + EShSource sourceGuess = (messages & EShMsgReadHlsl) != 0 ? EShSourceHlsl : EShSourceGlsl; SpvVersion spvVersion; EShLanguage stage = compiler->getLanguage(); - TranslateEnvironment(environment, messages, source, stage, spvVersion); + TranslateEnvironment(environment, messages, sourceGuess, stage, spvVersion); +#ifdef ENABLE_HLSL + EShSource source = sourceGuess; if (environment != nullptr && environment->target.hlslFunctionality1) intermediate.setHlslFunctionality1(); - +#else + const EShSource source = EShSourceGlsl; +#endif // First, without using the preprocessor or parser, find the #version, so we know what // symbol tables, processing rules, etc. to set up. This does not need the extra strings // outlined above, just the user shader, after the system and user preambles. @@ -852,6 +861,7 @@ : userInput.scanVersion(version, profile, versionNotFirstToken); bool versionNotFound = version == 0; if (forceDefaultVersionAndProfile && source == EShSourceGlsl) { +#ifndef GLSLANG_WEB if (! (messages & EShMsgSuppressWarnings) && ! versionNotFound && (version != defaultVersion || profile != defaultProfile)) { compiler->infoSink.info << "Warning, (version, profile) forced to be (" @@ -859,7 +869,7 @@ << "), while in source code it is (" << version << ", " << ProfileName(profile) << ")\n"; } - +#endif if (versionNotFound) { versionNotFirstToken = false; versionNotFirst = false; @@ -871,7 +881,13 @@ 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; if (! versionWillBeError && versionNotFirstToken) { if (messages & EShMsgRelaxedErrors) @@ -879,6 +895,7 @@ else versionWillBeError = true; } +#endif intermediate.setSource(source); intermediate.setVersion(version); @@ -887,8 +904,10 @@ RecordProcesses(intermediate, messages, sourceEntryPointName); if (spvVersion.vulkan > 0) intermediate.setOriginUpperLeft(); +#ifdef ENABLE_HLSL if ((messages & EShMsgHlslOffsets) || source == EShSourceHlsl) intermediate.setHlslOffsets(); +#endif if (messages & EShMsgDebugInfo) { intermediate.setSourceFile(names[numPre]); for (int s = 0; s < numStrings; ++s) { @@ -938,11 +957,13 @@ parseContext->setLimits(*resources); if (! goodVersion) parseContext->addError(); +#ifndef GLSLANG_WEB if (warnVersionNotFirst) { TSourceLoc loc; loc.init(); parseContext->warn(loc, "Illegal to have non-comment, non-whitespace tokens before #version", "#version", ""); } +#endif parseContext->initializeExtensionBehavior(); @@ -973,6 +994,8 @@ return success; } +#ifndef GLSLANG_WEB + // Responsible for keeping track of the most recent source string and line in // the preprocessor and outputting newlines appropriately if the source string // or line changes. @@ -1169,6 +1192,8 @@ std::string* outputString; }; +#endif + // DoFullParse is a valid ProcessingConext template argument for fully // parsing the shader. It populates the "intermediate" with the AST. struct DoFullParse{ @@ -1199,6 +1224,7 @@ } }; +#ifndef GLSLANG_WEB // Take a single compilation unit, and run the preprocessor on it. // Return: True if there were no issues found in preprocessing, // False if during preprocessing any unknown version, pragmas or @@ -1231,6 +1257,7 @@ forwardCompatible, messages, intermediate, parser, false, includer); } +#endif // // do a partial compile on the given strings for a single compilation unit @@ -1749,6 +1776,11 @@ intermediate->addProcesses(p); } +void TShader::setInvertY(bool invert) { intermediate->setInvertY(invert); } +void TShader::setNanMinMaxClamp(bool useNonNan) { intermediate->setNanMinMaxClamp(useNonNan); } + +#ifndef GLSLANG_WEB + // Set binding base for given resource type void TShader::setShiftBinding(TResourceType res, unsigned int base) { intermediate->setShiftBinding(res, base); @@ -1776,7 +1808,7 @@ // Enables binding automapping using TIoMapper void TShader::setAutoMapBindings(bool map) { intermediate->setAutoMapBindings(map); } // Enables position.Y output negation in vertex shader -void TShader::setInvertY(bool invert) { intermediate->setInvertY(invert); } + // Fragile: currently within one stage: simple auto-assignment of location void TShader::setAutoMapLocations(bool map) { intermediate->setAutoMapLocations(map); } void TShader::addUniformLocationOverride(const char* name, int loc) @@ -1787,13 +1819,16 @@ { intermediate->setUniformLocationBase(base); } -// See comment above TDefaultHlslIoMapper in iomapper.cpp: -void TShader::setHlslIoMapping(bool hlslIoMap) { intermediate->setHlslIoMapping(hlslIoMap); } -void TShader::setFlattenUniformArrays(bool flatten) { intermediate->setFlattenUniformArrays(flatten); } void TShader::setNoStorageFormat(bool useUnknownFormat) { intermediate->setNoStorageFormat(useUnknownFormat); } -void TShader::setNanMinMaxClamp(bool useNonNan) { intermediate->setNanMinMaxClamp(useNonNan); } void TShader::setResourceSetBinding(const std::vector& base) { intermediate->setResourceSetBinding(base); } void TShader::setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { intermediate->setTextureSamplerTransformMode(mode); } +#endif + +#ifdef ENABLE_HLSL +// See comment above TDefaultHlslIoMapper in iomapper.cpp: +void TShader::setHlslIoMapping(bool hlslIoMap) { intermediate->setHlslIoMapping(hlslIoMap); } +void TShader::setFlattenUniformArrays(bool flatten) { intermediate->setFlattenUniformArrays(flatten); } +#endif // // Turn the shader strings into a parse tree in the TIntermediate. @@ -1817,6 +1852,7 @@ &environment); } +#ifndef GLSLANG_WEB // Fill in a string with the result of preprocessing ShaderStrings // Returns true if all extensions, pragmas and version strings were valid. // @@ -1841,6 +1877,7 @@ defaultProfile, forceDefaultVersionAndProfile, forwardCompatible, message, includer, *intermediate, output_string); } +#endif const char* TShader::getInfoLog() { @@ -1852,7 +1889,11 @@ return infoSink->debug.c_str(); } -TProgram::TProgram() : reflection(0), linked(false) +TProgram::TProgram() : +#ifndef GLSLANG_WEB + reflection(0), +#endif + linked(false) { pool = new TPoolAllocator; infoSink = new TInfoSink; @@ -1865,7 +1906,9 @@ TProgram::~TProgram() { delete infoSink; +#ifndef GLSLANG_WEB delete reflection; +#endif for (int s = 0; s < EShLangCount; ++s) if (newedIntermediate[s]) @@ -1910,6 +1953,7 @@ if (stages[stage].size() == 0) return true; +#ifndef GLSLANG_WEB int numEsShaders = 0, numNonEsShaders = 0; for (auto it = stages[stage].begin(); it != stages[stage].end(); ++it) { if ((*it)->intermediate->getProfile() == EEsProfile) { @@ -1958,7 +2002,9 @@ for (it = stages[stage].begin(); it != stages[stage].end(); ++it) intermediate[stage]->merge(*infoSink, *(*it)->intermediate); } - +#else + intermediate[stage] = stages[stage].front()->intermediate; +#endif intermediate[stage]->finalCheck(*infoSink, (messages & EShMsgKeepUncalled) != 0); if (messages & EShMsgAST) @@ -1977,6 +2023,8 @@ return infoSink->debug.c_str(); } +#ifndef GLSLANG_WEB + // // Reflection implementation. // @@ -2015,6 +2063,9 @@ 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(); } @@ -2054,4 +2105,6 @@ return ioMapper->doMap(pResolver, *infoSink); } +#endif // GLSLANG_WEB + } // end namespace glslang diff -Nru glslang-7.12.3352/glslang/MachineIndependent/SymbolTable.cpp glslang-8.13.3559/glslang/MachineIndependent/SymbolTable.cpp --- glslang-7.12.3352/glslang/MachineIndependent/SymbolTable.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/SymbolTable.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -61,63 +61,66 @@ switch (basicType) { case EbtFloat: mangledName += 'f'; break; - case EbtDouble: mangledName += 'd'; break; - case EbtFloat16: mangledName += "f16"; break; case EbtInt: mangledName += 'i'; break; case EbtUint: mangledName += 'u'; break; + case EbtBool: mangledName += 'b'; break; +#ifndef GLSLANG_WEB + case EbtDouble: mangledName += 'd'; break; + case EbtFloat16: mangledName += "f16"; break; case EbtInt8: mangledName += "i8"; break; case EbtUint8: mangledName += "u8"; break; case EbtInt16: mangledName += "i16"; break; case EbtUint16: mangledName += "u16"; break; case EbtInt64: mangledName += "i64"; break; case EbtUint64: mangledName += "u64"; break; - case EbtBool: mangledName += 'b'; break; case EbtAtomicUint: mangledName += "au"; break; -#ifdef NV_EXTENSIONS case EbtAccStructNV: mangledName += "asnv"; break; #endif case EbtSampler: switch (sampler.type) { -#ifdef AMD_EXTENSIONS +#ifndef GLSLANG_WEB case EbtFloat16: mangledName += "f16"; break; #endif case EbtInt: mangledName += "i"; break; case EbtUint: mangledName += "u"; break; default: break; // some compilers want this } - if (sampler.image) - mangledName += "I"; // a normal image - else if (sampler.sampler) + if (sampler.isImageClass()) + mangledName += "I"; // a normal image or subpass + else if (sampler.isPureSampler()) mangledName += "p"; // a "pure" sampler - else if (!sampler.combined) + else if (!sampler.isCombined()) mangledName += "t"; // a "pure" texture else mangledName += "s"; // traditional combined sampler - if (sampler.arrayed) + if (sampler.isArrayed()) mangledName += "A"; - if (sampler.shadow) + if (sampler.isShadow()) mangledName += "S"; - if (sampler.external) + if (sampler.isExternal()) mangledName += "E"; - if (sampler.yuv) + if (sampler.isYuv()) mangledName += "Y"; switch (sampler.dim) { - case Esd1D: mangledName += "1"; break; case Esd2D: mangledName += "2"; break; case Esd3D: mangledName += "3"; break; case EsdCube: mangledName += "C"; break; +#ifndef GLSLANG_WEB + case Esd1D: mangledName += "1"; break; case EsdRect: mangledName += "R2"; break; case EsdBuffer: mangledName += "B"; break; case EsdSubpass: mangledName += "P"; break; +#endif 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"; char text[16]; // plenty enough space for the small integers. - snprintf(text, sizeof(text), "%d-", sampler.structReturnIndex); + snprintf(text, sizeof(text), "%d-", sampler.getStructReturnIndex()); mangledName += text; } else { switch (sampler.getVectorSize()) { @@ -127,8 +130,9 @@ case 4: break; // default to prior name mangle behavior } } +#endif - if (sampler.ms) + if (sampler.isMultiSample()) mangledName += "M"; break; case EbtStruct: @@ -172,6 +176,8 @@ } } +#ifndef GLSLANG_WEB + // // Dump functions. // @@ -250,6 +256,8 @@ } } +#endif + // // Functions have buried pointers to delete. // diff -Nru glslang-7.12.3352/glslang/MachineIndependent/SymbolTable.h glslang-8.13.3559/glslang/MachineIndependent/SymbolTable.h --- glslang-7.12.3352/glslang/MachineIndependent/SymbolTable.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/SymbolTable.h 2020-01-06 14:50:40.000000000 +0000 @@ -116,8 +116,11 @@ } virtual int getNumExtensions() const { return extensions == nullptr ? 0 : (int)extensions->size(); } virtual const char** getExtensions() const { return extensions->data(); } + +#ifndef GLSLANG_WEB virtual void dump(TInfoSink& infoSink, bool complete = false) const = 0; void dumpExtensions(TInfoSink& infoSink) const; +#endif virtual bool isReadOnly() const { return ! writable; } virtual void makeReadOnly() { writable = false; } @@ -193,7 +196,9 @@ } virtual const char** getMemberExtensions(int member) const { return (*memberExtensions)[member].data(); } +#ifndef GLSLANG_WEB virtual void dump(TInfoSink& infoSink, bool complete = false) const; +#endif protected: explicit TVariable(const TVariable&); @@ -314,7 +319,9 @@ virtual TParameter& operator[](int i) { assert(writable); return parameters[i]; } virtual const TParameter& operator[](int i) const { return parameters[i]; } +#ifndef GLSLANG_WEB virtual void dump(TInfoSink& infoSink, bool complete = false) const override; +#endif protected: explicit TFunction(const TFunction&); @@ -374,7 +381,9 @@ virtual const char** getExtensions() const override { return anonContainer.getMemberExtensions(memberNumber); } virtual int getAnonId() const { return anonId; } +#ifndef GLSLANG_WEB virtual void dump(TInfoSink& infoSink, bool complete = false) const override; +#endif protected: explicit TAnonMember(const TAnonMember&); @@ -542,7 +551,9 @@ void relateToOperator(const char* name, TOperator op); void setFunctionExtensions(const char* name, int num, const char* const extensions[]); +#ifndef GLSLANG_WEB void dump(TInfoSink& infoSink, bool complete = false) const; +#endif TSymbolTableLevel* clone() const; void readOnly(); @@ -843,7 +854,9 @@ } int getMaxSymbolId() { return uniqueId; } +#ifndef GLSLANG_WEB void dump(TInfoSink& infoSink, bool complete = false) const; +#endif void copyTable(const TSymbolTable& copyOf); void setPreviousDefaultPrecisions(TPrecisionQualifier *p) { table[currentLevel()]->setPreviousDefaultPrecisions(p); } diff -Nru glslang-7.12.3352/glslang/MachineIndependent/Versions.cpp glslang-8.13.3559/glslang/MachineIndependent/Versions.cpp --- glslang-7.12.3352/glslang/MachineIndependent/Versions.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/Versions.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -145,6 +145,8 @@ namespace glslang { +#ifndef GLSLANG_WEB + // // Initialize all extensions, almost always to 'disable', as once their features // are incorporated into a core version, their features are supported through allowing that @@ -170,8 +172,10 @@ extensionBehavior[E_GL_ARB_tessellation_shader] = EBhDisable; extensionBehavior[E_GL_ARB_enhanced_layouts] = EBhDisable; extensionBehavior[E_GL_ARB_texture_cube_map_array] = EBhDisable; + extensionBehavior[E_GL_ARB_texture_multisample] = 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; @@ -189,6 +193,8 @@ extensionBehavior[E_GL_ARB_shader_viewport_layer_array] = EBhDisable; extensionBehavior[E_GL_ARB_fragment_shader_interlock] = EBhDisable; extensionBehavior[E_GL_ARB_shader_clock] = EBhDisable; + extensionBehavior[E_GL_ARB_uniform_buffer_object] = EBhDisable; + extensionBehavior[E_GL_ARB_sample_shading] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_basic] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_vote] = EBhDisable; @@ -212,6 +218,7 @@ 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; @@ -221,7 +228,6 @@ extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhDisable; extensionBehavior[E_GL_GOOGLE_include_directive] = EBhDisable; -#ifdef AMD_EXTENSIONS extensionBehavior[E_GL_AMD_shader_ballot] = EBhDisable; extensionBehavior[E_GL_AMD_shader_trinary_minmax] = EBhDisable; extensionBehavior[E_GL_AMD_shader_explicit_vertex_parameter] = EBhDisable; @@ -232,9 +238,9 @@ extensionBehavior[E_GL_AMD_shader_image_load_store_lod] = EBhDisable; extensionBehavior[E_GL_AMD_shader_fragment_mask] = EBhDisable; extensionBehavior[E_GL_AMD_gpu_shader_half_float_fetch] = EBhDisable; -#endif -#ifdef NV_EXTENSIONS + 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; @@ -250,10 +256,10 @@ extensionBehavior[E_GL_NV_compute_shader_derivatives] = EBhDisable; extensionBehavior[E_GL_NV_shader_texture_footprint] = EBhDisable; extensionBehavior[E_GL_NV_mesh_shader] = EBhDisable; -#endif extensionBehavior[E_GL_NV_cooperative_matrix] = EBhDisable; extensionBehavior[E_GL_NV_shader_sm_builtins] = EBhDisable; + extensionBehavior[E_GL_NV_integer_cooperative_matrix] = EBhDisable; // AEP extensionBehavior[E_GL_ANDROID_extension_pack_es31a] = EBhDisable; @@ -301,16 +307,26 @@ 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 // Get code that is not part of a shared symbol table, is specific to this shader, // or needed by the preprocessor (which does not use a shared symbol table). void TParseVersions::getPreamble(std::string& preamble) { - if (profile == EEsProfile) { + if (isEsProfile()) { preamble = "#define GL_ES 1\n" "#define GL_FRAGMENT_PRECISION_HIGH 1\n" +#ifdef GLSLANG_WEB + ; +#else "#define GL_OES_texture_3D 1\n" "#define GL_OES_standard_derivatives 1\n" "#define GL_EXT_frag_depth 1\n" @@ -350,11 +366,9 @@ "#define GL_EXT_shader_non_constant_global_initializers 1\n" ; -#ifdef NV_EXTENSIONS - if (profile == EEsProfile && version >= 300) { + if (isEsProfile() && version >= 300) { preamble += "#define GL_NV_shader_noperspective_interpolation 1\n"; } -#endif } else { preamble = @@ -368,8 +382,10 @@ "#define GL_ARB_tessellation_shader 1\n" "#define GL_ARB_enhanced_layouts 1\n" "#define GL_ARB_texture_cube_map_array 1\n" + "#define GL_ARB_texture_multisample 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" @@ -382,9 +398,11 @@ "#define GL_ARB_sparse_texture2 1\n" "#define GL_ARB_sparse_texture_clamp 1\n" "#define GL_ARB_shader_stencil_export 1\n" + "#define GL_ARB_sample_shading 1\n" // "#define GL_ARB_cull_distance 1\n" // present for 4.5, but need extension control over block members "#define GL_ARB_post_depth_coverage 1\n" "#define GL_ARB_fragment_shader_interlock 1\n" + "#define GL_ARB_uniform_buffer_object 1\n" "#define GL_EXT_shader_non_constant_global_initializers 1\n" "#define GL_EXT_shader_image_load_formatted 1\n" "#define GL_EXT_post_depth_coverage 1\n" @@ -397,6 +415,7 @@ "#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 @@ -412,7 +431,6 @@ "#define E_GL_EXT_shader_atomic_int64 1\n" "#define E_GL_EXT_shader_realtime_clock 1\n" -#ifdef AMD_EXTENSIONS "#define GL_AMD_shader_ballot 1\n" "#define GL_AMD_shader_trinary_minmax 1\n" "#define GL_AMD_shader_explicit_vertex_parameter 1\n" @@ -423,9 +441,9 @@ "#define GL_AMD_shader_image_load_store_lod 1\n" "#define GL_AMD_shader_fragment_mask 1\n" "#define GL_AMD_gpu_shader_half_float_fetch 1\n" -#endif -#ifdef NV_EXTENSIONS + "#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" @@ -438,8 +456,8 @@ "#define GL_NV_compute_shader_derivatives 1\n" "#define GL_NV_shader_texture_footprint 1\n" "#define GL_NV_mesh_shader 1\n" -#endif "#define GL_NV_cooperative_matrix 1\n" + "#define GL_NV_integer_cooperative_matrix 1\n" "#define GL_EXT_shader_explicit_arithmetic_types 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_int8 1\n" @@ -449,6 +467,11 @@ "#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) { @@ -458,10 +481,12 @@ if (profile == ECompatibilityProfile) preamble += "#define GL_compatibility_profile 1\n"; } +#endif // GLSLANG_WEB } - if ((profile != EEsProfile && version >= 140) || - (profile == EEsProfile && version >= 310)) { +#ifndef GLSLANG_WEB + if ((!isEsProfile() && version >= 140) || + (isEsProfile() && version >= 310)) { preamble += "#define GL_EXT_device_group 1\n" "#define GL_EXT_multiview 1\n" @@ -481,6 +506,7 @@ "#define GL_GOOGLE_cpp_style_line_directive 1\n" "#define GL_GOOGLE_include_directive 1\n" ; +#endif // #define VULKAN XXXX const int numberBufSize = 12; @@ -491,6 +517,8 @@ preamble += numberBuf; preamble += "\n"; } + +#ifndef GLSLANG_WEB // #define GL_SPIRV XXXX if (spvVersion.openGl > 0) { preamble += "#define GL_SPIRV "; @@ -498,22 +526,7 @@ preamble += numberBuf; preamble += "\n"; } - -} - -// -// When to use requireProfile(): -// -// Use if only some profiles support a feature. However, if within a profile the feature -// is version or extension specific, follow this call with calls to profileRequires(). -// -// Operation: If the current profile is not one of the profileMask, -// give an error message. -// -void TParseVersions::requireProfile(const TSourceLoc& loc, int profileMask, const char* featureDesc) -{ - if (! (profile & profileMask)) - error(loc, "not supported with this profile:", featureDesc, ProfileName(profile)); +#endif } // @@ -523,12 +536,12 @@ { 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 EShLangFragment: return "fragment"; - case EShLangCompute: return "compute"; -#ifdef NV_EXTENSIONS case EShLangRayGenNV: return "ray-generation"; case EShLangIntersectNV: return "intersection"; case EShLangAnyHitNV: return "any-hit"; @@ -543,6 +556,42 @@ } // +// When to use requireStage() +// +// If only some stages support a feature. +// +// Operation: If the current stage is not present, give an error message. +// +void TParseVersions::requireStage(const TSourceLoc& loc, EShLanguageMask languageMask, const char* featureDesc) +{ + if (((1 << language) & languageMask) == 0) + error(loc, "not supported in this stage:", featureDesc, StageName(language)); +} + +// If only one stage supports a feature, this can be called. But, all supporting stages +// must be specified with one call. +void TParseVersions::requireStage(const TSourceLoc& loc, EShLanguage stage, const char* featureDesc) +{ + requireStage(loc, static_cast(1 << stage), featureDesc); +} + +#ifndef GLSLANG_WEB +// +// When to use requireProfile(): +// +// Use if only some profiles support a feature. However, if within a profile the feature +// is version or extension specific, follow this call with calls to profileRequires(). +// +// Operation: If the current profile is not one of the profileMask, +// give an error message. +// +void TParseVersions::requireProfile(const TSourceLoc& loc, int profileMask, const char* featureDesc) +{ + if (! (profile & profileMask)) + error(loc, "not supported with this profile:", featureDesc, ProfileName(profile)); +} + +// // When to use profileRequires(): // // If a set of profiles have the same requirements for what version or extensions @@ -559,12 +608,12 @@ // // entry point that takes multiple extensions -void TParseVersions::profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, int numExtensions, const char* const extensions[], const char* featureDesc) +void TParseVersions::profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, int numExtensions, + const char* const extensions[], const char* featureDesc) { if (profile & profileMask) { - bool okay = false; - if (minVersion > 0 && version >= minVersion) - okay = true; + bool okay = minVersion > 0 && version >= minVersion; +#ifndef GLSLANG_WEB for (int i = 0; i < numExtensions; ++i) { switch (getExtensionBehavior(extensions[i])) { case EBhWarn: @@ -577,36 +626,22 @@ default: break; // some compilers want this } } - +#endif if (! okay) error(loc, "not supported for this version or the enabled extensions", featureDesc, ""); } } // entry point for the above that takes a single extension -void TParseVersions::profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, const char* extension, const char* featureDesc) +void TParseVersions::profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, const char* extension, + const char* featureDesc) { profileRequires(loc, profileMask, minVersion, extension ? 1 : 0, &extension, featureDesc); } -// -// When to use requireStage() -// -// If only some stages support a feature. -// -// Operation: If the current stage is not present, give an error message. -// -void TParseVersions::requireStage(const TSourceLoc& loc, EShLanguageMask languageMask, const char* featureDesc) -{ - if (((1 << language) & languageMask) == 0) - error(loc, "not supported in this stage:", featureDesc, StageName(language)); -} - -// If only one stage supports a feature, this can be called. But, all supporting stages -// must be specified with one call. -void TParseVersions::requireStage(const TSourceLoc& loc, EShLanguage stage, const char* featureDesc) +void TParseVersions::unimplemented(const TSourceLoc& loc, const char* featureDesc) { - requireStage(loc, static_cast(1 << stage), featureDesc); + error(loc, "feature not yet implemented", featureDesc, ""); } // @@ -642,11 +677,6 @@ } } -void TParseVersions::unimplemented(const TSourceLoc& loc, const char* featureDesc) -{ - error(loc, "feature not yet implemented", featureDesc, ""); -} - // Returns true if at least one of the extensions in the extensions parameter is requested. Otherwise, returns false. // Warns appropriately if the requested behavior of an extension is "warn". bool TParseVersions::checkExtensionsRequested(const TSourceLoc& loc, int numExtensions, const char* const extensions[], const char* featureDesc) @@ -815,12 +845,22 @@ updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); else if (strcmp(extension, "GL_KHR_shader_subgroup_quad") == 0) updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); -#ifdef NV_EXTENSIONS else if (strcmp(extension, "GL_NV_shader_subgroup_partitioned") == 0) updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); -#endif - 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); + // 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) @@ -866,7 +906,6 @@ // Check if extension is used with correct shader stage. void TParseVersions::checkExtensionStage(const TSourceLoc& loc, const char * const extension) { -#ifdef NV_EXTENSIONS // GL_NV_mesh_shader extension is only allowed in task/mesh shaders if (strcmp(extension, "GL_NV_mesh_shader") == 0) { requireStage(loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask | EShLangFragmentMask), @@ -874,7 +913,6 @@ profileRequires(loc, ECoreProfile, 450, 0, "#extension GL_NV_mesh_shader"); profileRequires(loc, EEsProfile, 320, 0, "#extension GL_NV_mesh_shader"); } -#endif } // Call for any operation needing full GLSL integer data-type support. @@ -896,9 +934,7 @@ { if (!builtIn) { const char* const extensions[] = { -#if AMD_EXTENSIONS E_GL_AMD_gpu_shader_half_float, -#endif E_GL_EXT_shader_explicit_arithmetic_types, E_GL_EXT_shader_explicit_arithmetic_types_float16}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); @@ -908,9 +944,7 @@ bool TParseVersions::float16Arithmetic() { const char* const extensions[] = { -#if AMD_EXTENSIONS E_GL_AMD_gpu_shader_half_float, -#endif E_GL_EXT_shader_explicit_arithmetic_types, E_GL_EXT_shader_explicit_arithmetic_types_float16}; return extensionsTurnedOn(sizeof(extensions)/sizeof(extensions[0]), extensions); @@ -919,9 +953,7 @@ bool TParseVersions::int16Arithmetic() { const char* const extensions[] = { -#if AMD_EXTENSIONS E_GL_AMD_gpu_shader_int16, -#endif E_GL_EXT_shader_explicit_arithmetic_types, E_GL_EXT_shader_explicit_arithmetic_types_int16}; return extensionsTurnedOn(sizeof(extensions)/sizeof(extensions[0]), extensions); @@ -943,9 +975,7 @@ combined += featureDesc; const char* const extensions[] = { -#if AMD_EXTENSIONS E_GL_AMD_gpu_shader_half_float, -#endif E_GL_EXT_shader_explicit_arithmetic_types, E_GL_EXT_shader_explicit_arithmetic_types_float16}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, combined.c_str()); @@ -959,9 +989,7 @@ combined += featureDesc; const char* const extensions[] = { -#if AMD_EXTENSIONS E_GL_AMD_gpu_shader_int16, -#endif E_GL_EXT_shader_explicit_arithmetic_types, E_GL_EXT_shader_explicit_arithmetic_types_int16}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, combined.c_str()); @@ -984,9 +1012,7 @@ { if (!builtIn) { const char* const extensions[] = { -#if AMD_EXTENSIONS E_GL_AMD_gpu_shader_half_float, -#endif E_GL_EXT_shader_16bit_storage, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_EXT_shader_explicit_arithmetic_types_float16}; @@ -1026,7 +1052,6 @@ } } -#ifdef AMD_EXTENSIONS // Call for any operation needing GLSL float16 opaque-type support void TParseVersions::float16OpaqueCheck(const TSourceLoc& loc, const char* op, bool builtIn) { @@ -1036,16 +1061,13 @@ profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op); } } -#endif // Call for any operation needing GLSL explicit int16 data-type support. void TParseVersions::explicitInt16Check(const TSourceLoc& loc, const char* op, bool builtIn) { if (! builtIn) { const char* const extensions[] = { -#if AMD_EXTENSIONS E_GL_AMD_gpu_shader_int16, -#endif E_GL_EXT_shader_explicit_arithmetic_types, E_GL_EXT_shader_explicit_arithmetic_types_int16}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); @@ -1056,9 +1078,7 @@ { if (! builtIn) { const char* const extensions[] = { -#if AMD_EXTENSIONS E_GL_AMD_gpu_shader_int16, -#endif E_GL_EXT_shader_16bit_storage, E_GL_EXT_shader_explicit_arithmetic_types, E_GL_EXT_shader_explicit_arithmetic_types_int16}; @@ -1108,6 +1128,14 @@ } } +void TParseVersions::intcoopmatCheck(const TSourceLoc& loc, const char* op, bool builtIn) +{ + if (!builtIn) { + const char* const extensions[] = {E_GL_NV_integer_cooperative_matrix}; + requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); + } +} +#endif // GLSLANG_WEB // Call for any operation removed because SPIR-V is in use. void TParseVersions::spvRemoved(const TSourceLoc& loc, const char* op) { @@ -1125,15 +1153,19 @@ // Call for any operation that requires Vulkan. void TParseVersions::requireVulkan(const TSourceLoc& loc, const char* op) { +#ifndef GLSLANG_WEB if (spvVersion.vulkan == 0) error(loc, "only allowed when using GLSL for Vulkan", op, ""); +#endif } // Call for any operation that requires SPIR-V. void TParseVersions::requireSpv(const TSourceLoc& loc, const char* op) { +#ifndef GLSLANG_WEB if (spvVersion.spv == 0) error(loc, "only allowed when generating SPIR-V", op, ""); +#endif } } // end namespace glslang diff -Nru glslang-7.12.3352/glslang/MachineIndependent/Versions.h glslang-8.13.3559/glslang/MachineIndependent/Versions.h --- glslang-7.12.3352/glslang/MachineIndependent/Versions.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/MachineIndependent/Versions.h 2020-01-06 14:50:40.000000000 +0000 @@ -124,8 +124,10 @@ const char* const E_GL_ARB_tessellation_shader = "GL_ARB_tessellation_shader"; const char* const E_GL_ARB_enhanced_layouts = "GL_ARB_enhanced_layouts"; const char* const E_GL_ARB_texture_cube_map_array = "GL_ARB_texture_cube_map_array"; +const char* const E_GL_ARB_texture_multisample = "GL_ARB_texture_multisample"; 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"; @@ -143,6 +145,8 @@ const char* const E_GL_ARB_shader_viewport_layer_array = "GL_ARB_shader_viewport_layer_array"; const char* const E_GL_ARB_fragment_shader_interlock = "GL_ARB_fragment_shader_interlock"; const char* const E_GL_ARB_shader_clock = "GL_ARB_shader_clock"; +const char* const E_GL_ARB_uniform_buffer_object = "GL_ARB_uniform_buffer_object"; +const char* const E_GL_ARB_sample_shading = "GL_ARB_sample_shading"; const char* const E_GL_KHR_shader_subgroup_basic = "GL_KHR_shader_subgroup_basic"; const char* const E_GL_KHR_shader_subgroup_vote = "GL_KHR_shader_subgroup_vote"; @@ -174,6 +178,7 @@ 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"; @@ -193,7 +198,6 @@ const char* const E_GL_GOOGLE_cpp_style_line_directive = "GL_GOOGLE_cpp_style_line_directive"; const char* const E_GL_GOOGLE_include_directive = "GL_GOOGLE_include_directive"; -#ifdef AMD_EXTENSIONS const char* const E_GL_AMD_shader_ballot = "GL_AMD_shader_ballot"; const char* const E_GL_AMD_shader_trinary_minmax = "GL_AMD_shader_trinary_minmax"; const char* const E_GL_AMD_shader_explicit_vertex_parameter = "GL_AMD_shader_explicit_vertex_parameter"; @@ -204,9 +208,8 @@ const char* const E_GL_AMD_shader_image_load_store_lod = "GL_AMD_shader_image_load_store_lod"; 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"; -#endif -#ifdef NV_EXTENSIONS +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"; @@ -228,10 +231,10 @@ const char* const viewportEXTs[] = { E_GL_ARB_shader_viewport_layer_array, E_GL_NV_viewport_array2 }; const int Num_viewportEXTs = sizeof(viewportEXTs) / sizeof(viewportEXTs[0]); -#endif const char* const E_GL_NV_cooperative_matrix = "GL_NV_cooperative_matrix"; const char* const E_GL_NV_shader_sm_builtins = "GL_NV_shader_sm_builtins"; +const char* const E_GL_NV_integer_cooperative_matrix = "GL_NV_integer_cooperative_matrix"; // AEP const char* const E_GL_ANDROID_extension_pack_es31a = "GL_ANDROID_extension_pack_es31a"; @@ -261,7 +264,7 @@ 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"; @@ -271,6 +274,11 @@ 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 -Nru glslang-7.12.3352/glslang/OSDependent/Unix/CMakeLists.txt glslang-8.13.3559/glslang/OSDependent/Unix/CMakeLists.txt --- glslang-7.12.3352/glslang/OSDependent/Unix/CMakeLists.txt 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/OSDependent/Unix/CMakeLists.txt 2020-01-06 14:50:40.000000000 +0000 @@ -20,6 +20,7 @@ endif() if(ENABLE_GLSLANG_INSTALL) - install(TARGETS OSDependent + install(TARGETS OSDependent EXPORT OSDependentTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) diff -Nru glslang-7.12.3352/glslang/OSDependent/Web/CMakeLists.txt glslang-8.13.3559/glslang/OSDependent/Web/CMakeLists.txt --- glslang-7.12.3352/glslang/OSDependent/Web/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/glslang/OSDependent/Web/CMakeLists.txt 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,24 @@ +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") + 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 -Nru glslang-7.12.3352/glslang/OSDependent/Web/glslang.after.js glslang-8.13.3559/glslang/OSDependent/Web/glslang.after.js --- glslang-7.12.3352/glslang/OSDependent/Web/glslang.after.js 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/glslang/OSDependent/Web/glslang.after.js 2020-01-06 14:50:40.000000000 +0000 @@ -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; + }; +})(); diff -Nru glslang-7.12.3352/glslang/OSDependent/Web/glslang.js.cpp glslang-8.13.3559/glslang/OSDependent/Web/glslang.js.cpp --- glslang-7.12.3352/glslang/OSDependent/Web/glslang.js.cpp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/glslang/OSDependent/Web/glslang.js.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,269 @@ +// +// 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 3Dlabs Inc. Ltd. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// + +#include +#include +#include + +#ifdef __EMSCRIPTEN__ +#include +#endif + +#include "../../../SPIRV/GlslangToSpv.h" +#include "../../../glslang/Public/ShaderLang.h" + +#ifndef __EMSCRIPTEN__ +#define EMSCRIPTEN_KEEPALIVE +#endif + +const TBuiltInResource DefaultTBuiltInResource = { + /* .MaxLights = */ 32, + /* .MaxClipPlanes = */ 6, + /* .MaxTextureUnits = */ 32, + /* .MaxTextureCoords = */ 32, + /* .MaxVertexAttribs = */ 64, + /* .MaxVertexUniformComponents = */ 4096, + /* .MaxVaryingFloats = */ 64, + /* .MaxVertexTextureImageUnits = */ 32, + /* .MaxCombinedTextureImageUnits = */ 80, + /* .MaxTextureImageUnits = */ 32, + /* .MaxFragmentUniformComponents = */ 4096, + /* .MaxDrawBuffers = */ 32, + /* .MaxVertexUniformVectors = */ 128, + /* .MaxVaryingVectors = */ 8, + /* .MaxFragmentUniformVectors = */ 16, + /* .MaxVertexOutputVectors = */ 16, + /* .MaxFragmentInputVectors = */ 15, + /* .MinProgramTexelOffset = */ -8, + /* .MaxProgramTexelOffset = */ 7, + /* .MaxClipDistances = */ 8, + /* .MaxComputeWorkGroupCountX = */ 65535, + /* .MaxComputeWorkGroupCountY = */ 65535, + /* .MaxComputeWorkGroupCountZ = */ 65535, + /* .MaxComputeWorkGroupSizeX = */ 1024, + /* .MaxComputeWorkGroupSizeY = */ 1024, + /* .MaxComputeWorkGroupSizeZ = */ 64, + /* .MaxComputeUniformComponents = */ 1024, + /* .MaxComputeTextureImageUnits = */ 16, + /* .MaxComputeImageUniforms = */ 8, + /* .MaxComputeAtomicCounters = */ 8, + /* .MaxComputeAtomicCounterBuffers = */ 1, + /* .MaxVaryingComponents = */ 60, + /* .MaxVertexOutputComponents = */ 64, + /* .MaxGeometryInputComponents = */ 64, + /* .MaxGeometryOutputComponents = */ 128, + /* .MaxFragmentInputComponents = */ 128, + /* .MaxImageUnits = */ 8, + /* .MaxCombinedImageUnitsAndFragmentOutputs = */ 8, + /* .MaxCombinedShaderOutputResources = */ 8, + /* .MaxImageSamples = */ 0, + /* .MaxVertexImageUniforms = */ 0, + /* .MaxTessControlImageUniforms = */ 0, + /* .MaxTessEvaluationImageUniforms = */ 0, + /* .MaxGeometryImageUniforms = */ 0, + /* .MaxFragmentImageUniforms = */ 8, + /* .MaxCombinedImageUniforms = */ 8, + /* .MaxGeometryTextureImageUnits = */ 16, + /* .MaxGeometryOutputVertices = */ 256, + /* .MaxGeometryTotalOutputComponents = */ 1024, + /* .MaxGeometryUniformComponents = */ 1024, + /* .MaxGeometryVaryingComponents = */ 64, + /* .MaxTessControlInputComponents = */ 128, + /* .MaxTessControlOutputComponents = */ 128, + /* .MaxTessControlTextureImageUnits = */ 16, + /* .MaxTessControlUniformComponents = */ 1024, + /* .MaxTessControlTotalOutputComponents = */ 4096, + /* .MaxTessEvaluationInputComponents = */ 128, + /* .MaxTessEvaluationOutputComponents = */ 128, + /* .MaxTessEvaluationTextureImageUnits = */ 16, + /* .MaxTessEvaluationUniformComponents = */ 1024, + /* .MaxTessPatchComponents = */ 120, + /* .MaxPatchVertices = */ 32, + /* .MaxTessGenLevel = */ 64, + /* .MaxViewports = */ 16, + /* .MaxVertexAtomicCounters = */ 0, + /* .MaxTessControlAtomicCounters = */ 0, + /* .MaxTessEvaluationAtomicCounters = */ 0, + /* .MaxGeometryAtomicCounters = */ 0, + /* .MaxFragmentAtomicCounters = */ 8, + /* .MaxCombinedAtomicCounters = */ 8, + /* .MaxAtomicCounterBindings = */ 1, + /* .MaxVertexAtomicCounterBuffers = */ 0, + /* .MaxTessControlAtomicCounterBuffers = */ 0, + /* .MaxTessEvaluationAtomicCounterBuffers = */ 0, + /* .MaxGeometryAtomicCounterBuffers = */ 0, + /* .MaxFragmentAtomicCounterBuffers = */ 1, + /* .MaxCombinedAtomicCounterBuffers = */ 1, + /* .MaxAtomicCounterBufferSize = */ 16384, + /* .MaxTransformFeedbackBuffers = */ 4, + /* .MaxTransformFeedbackInterleavedComponents = */ 64, + /* .MaxCullDistances = */ 8, + /* .MaxCombinedClipAndCullDistances = */ 8, + /* .MaxSamples = */ 4, + /* .maxMeshOutputVerticesNV = */ 256, + /* .maxMeshOutputPrimitivesNV = */ 512, + /* .maxMeshWorkGroupSizeX_NV = */ 32, + /* .maxMeshWorkGroupSizeY_NV = */ 1, + /* .maxMeshWorkGroupSizeZ_NV = */ 1, + /* .maxTaskWorkGroupSizeX_NV = */ 32, + /* .maxTaskWorkGroupSizeY_NV = */ 1, + /* .maxTaskWorkGroupSizeZ_NV = */ 1, + /* .maxMeshViewCountNV = */ 4, + + /* .limits = */ { + /* .nonInductiveForLoops = */ 1, + /* .whileLoops = */ 1, + /* .doWhileLoops = */ 1, + /* .generalUniformIndexing = */ 1, + /* .generalAttributeMatrixVectorIndexing = */ 1, + /* .generalVaryingIndexing = */ 1, + /* .generalSamplerIndexing = */ 1, + /* .generalVariableIndexing = */ 1, + /* .generalConstantMatrixVectorIndexing = */ 1, + }}; + +static bool initialized = false; + +extern "C" { + +/* + * Takes in a GLSL shader as a string and converts it to SPIR-V in binary form. + * + * |glsl| Null-terminated string containing the shader to be converted. + * |stage_int| Magic number indicating the type of shader being processed. +* Legal values are as follows: + * Vertex = 0 + * Fragment = 4 + * Compute = 5 + * |gen_debug| Flag to indicate if debug information should be generated. + * |spirv| Output parameter for a pointer to the resulting SPIR-V data. + * |spirv_len| Output parameter for the length of the output binary buffer. + * + * Returns a void* pointer which, if not null, must be destroyed by + * destroy_output_buffer.o. (This is not the same pointer returned in |spirv|.) + * If null, the compilation failed. + */ +EMSCRIPTEN_KEEPALIVE +void* convert_glsl_to_spirv(const char* glsl, int stage_int, bool gen_debug, uint32_t** spirv, size_t* spirv_len) +{ + if (glsl == nullptr) { + fprintf(stderr, "Input pointer null\n"); + return nullptr; + } + if (spirv == nullptr || spirv_len == nullptr) { + fprintf(stderr, "Output pointer null\n"); + return nullptr; + } + *spirv = nullptr; + *spirv_len = 0; + + if (stage_int != 0 && stage_int != 4 && stage_int != 5) { + fprintf(stderr, "Invalid shader stage\n"); + return nullptr; + } + EShLanguage stage = static_cast(stage_int); + + if (!initialized) { + glslang::InitializeProcess(); + initialized = true; + } + + glslang::TShader shader(stage); + shader.setStrings(&glsl, 1); + shader.setEnvInput(glslang::EShSourceGlsl, stage, glslang::EShClientVulkan, 100); + shader.setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_1); + shader.setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_3); + if (!shader.parse(&DefaultTBuiltInResource, 100, true, EShMsgDefault)) { + fprintf(stderr, "Parse failed\n"); + fprintf(stderr, "%s\n", shader.getInfoLog()); + return nullptr; + } + + glslang::TProgram program; + program.addShader(&shader); + if (!program.link(EShMsgDefault)) { + fprintf(stderr, "Link failed\n"); + fprintf(stderr, "%s\n", program.getInfoLog()); + return nullptr; + } + + glslang::SpvOptions spvOptions; + spvOptions.generateDebugInfo = gen_debug; + spvOptions.optimizeSize = false; + spvOptions.disassemble = false; + spvOptions.validate = false; + + std::vector* output = new std::vector; + glslang::GlslangToSpv(*program.getIntermediate(stage), *output, nullptr, &spvOptions); + + *spirv_len = output->size(); + *spirv = output->data(); + return output; +} + +/* + * Destroys a buffer created by convert_glsl_to_spirv + */ +EMSCRIPTEN_KEEPALIVE +void destroy_output_buffer(void* p) +{ + delete static_cast*>(p); +} + +} // extern "C" + +/* + * For non-Emscripten builds we supply a generic main, so that the glslang.js + * build target can generate an executable with a trivial use case instead of + * generating a WASM binary. This is done so that there is a target that can be + * built and output analyzed using desktop tools, since WASM binaries are + * specific to the Emscripten toolchain. + */ +#ifndef __EMSCRIPTEN__ +int main() { + const char* input = R"(#version 310 es + +void main() { })"; + + uint32_t* output; + size_t output_len; + + void* id = convert_glsl_to_spirv(input, 4, false, &output, &output_len); + assert(output != nullptr); + assert(output_len != 0); + destroy_output_buffer(id); + return 0; +} +#endif // ifndef __EMSCRIPTEN__ diff -Nru glslang-7.12.3352/glslang/OSDependent/Web/glslang.pre.js glslang-8.13.3559/glslang/OSDependent/Web/glslang.pre.js --- glslang-7.12.3352/glslang/OSDependent/Web/glslang.pre.js 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/glslang/OSDependent/Web/glslang.pre.js 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,45 @@ +Module['compileGLSLZeroCopy'] = function(glsl, shader_stage, gen_debug) { + gen_debug = !!gen_debug; + + var shader_stage_int; + if (shader_stage === 'vertex') { + shader_stage_int = 0; + } else if (shader_stage === 'fragment') { + shader_stage_int = 4; + } else if (shader_stage === 'compute') { + shader_stage_int = 5; + } else { + throw new Error("shader_stage must be 'vertex', 'fragment', or 'compute'"); + } + + var p_output = Module['_malloc'](4); + var p_output_len = Module['_malloc'](4); + var id = ccall('convert_glsl_to_spirv', + 'number', + ['string', 'number', 'boolean', 'number', 'number'], + [glsl, shader_stage_int, gen_debug, p_output, p_output_len]); + var output = getValue(p_output, 'i32'); + var output_len = getValue(p_output_len, 'i32'); + Module['_free'](p_output); + Module['_free'](p_output_len); + + if (id === 0) { + throw new Error('GLSL compilation failed'); + } + + var ret = {}; + var outputIndexU32 = output / 4; + ret['data'] = Module['HEAPU32'].subarray(outputIndexU32, outputIndexU32 + output_len); + ret['free'] = function() { + Module['_destroy_output_buffer'](id); + }; + + return ret; +}; + +Module['compileGLSL'] = function(glsl, shader_stage, gen_debug) { + var compiled = Module['compileGLSLZeroCopy'](glsl, shader_stage, gen_debug); + var ret = compiled['data'].slice() + compiled['free'](); + return ret; +}; diff -Nru glslang-7.12.3352/glslang/OSDependent/Windows/CMakeLists.txt glslang-8.13.3559/glslang/OSDependent/Windows/CMakeLists.txt --- glslang-7.12.3352/glslang/OSDependent/Windows/CMakeLists.txt 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/OSDependent/Windows/CMakeLists.txt 2020-01-06 14:50:40.000000000 +0000 @@ -15,6 +15,7 @@ endif(WIN32) if(ENABLE_GLSLANG_INSTALL) - install(TARGETS OSDependent + install(TARGETS OSDependent EXPORT OSDependentTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) diff -Nru glslang-7.12.3352/glslang/Public/ShaderLang.h glslang-8.13.3559/glslang/Public/ShaderLang.h --- glslang-7.12.3352/glslang/Public/ShaderLang.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/Public/ShaderLang.h 2020-01-06 14:50:40.000000000 +0000 @@ -68,7 +68,7 @@ // This should always increase, as some paths to do not consume // a more major number. // It should increment by one when new functionality is added. -#define GLSLANG_MINOR_VERSION 12 +#define GLSLANG_MINOR_VERSION 13 // // Call before doing any other compiler/linker operations. @@ -126,36 +126,37 @@ typedef enum { EShSourceNone, - EShSourceGlsl, - EShSourceHlsl, -} EShSource; // if EShLanguage were EShStage, this could be EShLanguage instead + EShSourceGlsl, // GLSL, includes ESSL (OpenGL ES GLSL) + EShSourceHlsl, // HLSL +} EShSource; // if EShLanguage were EShStage, this could be EShLanguage instead typedef enum { - EShClientNone, + EShClientNone, // use when there is no client, e.g. for validation EShClientVulkan, EShClientOpenGL, } EShClient; typedef enum { EShTargetNone, - EShTargetSpv, // preferred spelling + EShTargetSpv, // SPIR-V (preferred spelling) EshTargetSpv = EShTargetSpv, // legacy spelling } EShTargetLanguage; typedef enum { - EShTargetVulkan_1_0 = (1 << 22), - EShTargetVulkan_1_1 = (1 << 22) | (1 << 12), - EShTargetOpenGL_450 = 450, + EShTargetVulkan_1_0 = (1 << 22), // Vulkan 1.0 + EShTargetVulkan_1_1 = (1 << 22) | (1 << 12), // Vulkan 1.1 + EShTargetOpenGL_450 = 450, // OpenGL } EShTargetClientVersion; typedef EShTargetClientVersion EshTargetClientVersion; typedef enum { - EShTargetSpv_1_0 = (1 << 16), - EShTargetSpv_1_1 = (1 << 16) | (1 << 8), - EShTargetSpv_1_2 = (1 << 16) | (2 << 8), - EShTargetSpv_1_3 = (1 << 16) | (3 << 8), - EShTargetSpv_1_4 = (1 << 16) | (4 << 8), + EShTargetSpv_1_0 = (1 << 16), // SPIR-V 1.0 + EShTargetSpv_1_1 = (1 << 16) | (1 << 8), // SPIR-V 1.1 + 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 { @@ -432,8 +433,10 @@ void addUniformLocationOverride(const char* name, int loc); void setUniformLocationBase(int base); void setInvertY(bool invert); +#ifdef ENABLE_HLSL void setHlslIoMapping(bool hlslIoMap); void setFlattenUniformArrays(bool flatten); +#endif void setNoStorageFormat(bool useUnknownFormat); void setNanMinMaxClamp(bool nanMinMaxClamp); void setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode); @@ -442,6 +445,30 @@ // These must be called so that parsing is done for the right source language and // target environment, either indirectly through TranslateEnvironment() based on // EShMessages et. al., or directly by the user. + // + // setEnvInput: The input source language and stage. If generating code for a + // specific client, the input client semantics to use and the + // version of the that client's input semantics to use, otherwise + // use EShClientNone and version of 0, e.g. for validation mode. + // Note 'version' does not describe the target environment, + // just the version of the source dialect to compile under. + // + // See the definitions of TEnvironment, EShSource, EShLanguage, + // and EShClient for choices and more detail. + // + // setEnvClient: The client that will be hosting the execution, and it's version. + // Note 'version' is not the version of the languages involved, but + // the version of the client environment. + // Use EShClientNone and version of 0 if there is no client, e.g. + // for validation mode. + // + // See EShTargetClientVersion for choices. + // + // setEnvTarget: The language to translate to when generating code, and that + // language's version. + // Use EShTargetNone and version of 0 if there is no client, e.g. + // for validation mode. + // void setEnvInput(EShSource lang, EShLanguage envStage, EShClient client, int version) { environment.input.languageFamily = lang; @@ -459,8 +486,15 @@ environment.target.language = lang; 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; } +#else + bool getEnvTargetHlslFunctionality1() const { return false; } +#endif // Interface to #include handlers. // @@ -611,6 +645,8 @@ TShader& operator=(TShader&); }; +#ifndef GLSLANG_WEB + // // A reflection database and its interface, consistent with the OpenGL API reflection queries. // @@ -726,6 +762,8 @@ virtual void addStage(EShLanguage stage) = 0; }; +#endif // GLSLANG_WEB + // Make one TProgram per set of shaders that will get linked together. Add all // the shaders that are to be linked together. After calling shader.parse() // for all shaders, call link(). @@ -737,7 +775,7 @@ 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(); @@ -745,14 +783,15 @@ TIntermediate* getIntermediate(EShLanguage stage) const { return intermediate[stage]; } +#ifndef GLSLANG_WEB + // Reflection Interface // call first, to do liveness analysis, index mapping, etc.; returns false on failure 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; @@ -782,6 +821,9 @@ // 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(); } @@ -831,11 +873,11 @@ const TType *getAttributeTType(int index) const { return getPipeInput(index).getType(); } void dumpReflection(); - // I/O mapping: apply base offsets and map live unbound variables // If resolver is not provided it uses the previous approach // and respects auto assignment and offsets. bool mapIO(TIoMapResolver* pResolver = nullptr, TIoMapper* pIoMapper = nullptr); +#endif protected: bool linkStage(EShLanguage, EShMessages); @@ -845,7 +887,9 @@ TIntermediate* intermediate[EShLangCount]; bool newedIntermediate[EShLangCount]; // track which intermediate were "new" versus reusing a singleton unit in a stage TInfoSink* infoSink; +#ifndef GLSLANG_WEB TReflection* reflection; +#endif bool linked; private: diff -Nru glslang-7.12.3352/glslang/updateGrammar glslang-8.13.3559/glslang/updateGrammar --- glslang-7.12.3352/glslang/updateGrammar 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/glslang/updateGrammar 2020-01-06 14:50:40.000000000 +0000 @@ -1,3 +1,16 @@ -#!/usr/bin/env bash +#!/bin/bash + +if [ "$1" = 'web' ] +then + m4 -P -DGLSLANG_WEB MachineIndependent/glslang.m4 > MachineIndependent/glslang.y +elif [ "$#" -eq 0 ] +then + m4 -P MachineIndependent/glslang.m4 > MachineIndependent/glslang.y +else + echo usage: + echo $0 web + echo $0 + exit +fi bison --defines=MachineIndependent/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o MachineIndependent/glslang_tab.cpp diff -Nru glslang-7.12.3352/gtests/AST.FromFile.cpp glslang-8.13.3559/gtests/AST.FromFile.cpp --- glslang-7.12.3352/gtests/AST.FromFile.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/gtests/AST.FromFile.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -41,9 +41,7 @@ using CompileToAstTest = GlslangTest<::testing::TestWithParam>; -#ifdef NV_EXTENSIONS using CompileToAstTestNV = GlslangTest<::testing::TestWithParam>; -#endif TEST_P(CompileToAstTest, FromFile) { @@ -52,7 +50,6 @@ Target::AST); } -#ifdef NV_EXTENSIONS // Compiling GLSL to SPIR-V under OpenGL semantics (NV extensions enabled). TEST_P(CompileToAstTestNV, FromFile) { @@ -60,7 +57,6 @@ Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::AST); } -#endif // clang-format off INSTANTIATE_TEST_CASE_P( @@ -125,6 +121,7 @@ "310.tesc", "310.tese", "310implicitSizeArrayError.vert", + "310.inheritMemory.frag", "310AofA.vert", "310runtimeArray.vert", "320.comp", @@ -281,7 +278,6 @@ FileNameAsCustomTestSuffix ); -#ifdef NV_EXTENSIONS INSTANTIATE_TEST_CASE_P( Glsl, CompileToAstTestNV, ::testing::ValuesIn(std::vector({ @@ -289,7 +285,6 @@ })), FileNameAsCustomTestSuffix ); -#endif // clang-format on } // anonymous namespace diff -Nru glslang-7.12.3352/gtests/CMakeLists.txt glslang-8.13.3559/gtests/CMakeLists.txt --- glslang-7.12.3352/gtests/CMakeLists.txt 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/gtests/CMakeLists.txt 2020-01-06 14:50:40.000000000 +0000 @@ -20,10 +20,12 @@ ${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) @@ -31,8 +33,9 @@ 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 ${CMAKE_INSTALL_LIBDIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") @@ -48,8 +51,13 @@ ${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) diff -Nru glslang-7.12.3352/gtests/Hlsl.FromFile.cpp glslang-8.13.3559/gtests/Hlsl.FromFile.cpp --- glslang-7.12.3352/gtests/Hlsl.FromFile.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/gtests/Hlsl.FromFile.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -230,6 +230,7 @@ {"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 -Nru glslang-7.12.3352/gtests/Spv.FromFile.cpp glslang-8.13.3559/gtests/Spv.FromFile.cpp --- glslang-7.12.3352/gtests/Spv.FromFile.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/gtests/Spv.FromFile.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -1,5 +1,6 @@ // // Copyright (C) 2016 Google, Inc. +// Copyright (C) 2019 ARM Limited. // // All rights reserved. // @@ -63,6 +64,7 @@ } 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>; @@ -72,12 +74,8 @@ using VulkanAstSemantics = GlslangTest<::testing::TestWithParam>; using HlslIoMap = GlslangTest<::testing::TestWithParam>; using GlslIoMap = GlslangTest<::testing::TestWithParam>; -#ifdef AMD_EXTENSIONS using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam>; -#endif -#ifdef NV_EXTENSIONS using CompileVulkanToSpirvTestNV = GlslangTest<::testing::TestWithParam>; -#endif using CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::testing::TestWithParam>; // Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully @@ -89,6 +87,13 @@ 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) @@ -179,7 +184,6 @@ GetParam().flattenUniforms); } -#ifdef AMD_EXTENSIONS // Compiling GLSL to SPIR-V under Vulkan semantics (AMD extensions enabled). // Expected to successfully generate SPIR-V. TEST_P(CompileVulkanToSpirvTestAMD, FromFile) @@ -188,9 +192,7 @@ Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv); } -#endif -#ifdef NV_EXTENSIONS // Compiling GLSL to SPIR-V under Vulkan semantics (NV extensions enabled). // Expected to successfully generate SPIR-V. TEST_P(CompileVulkanToSpirvTestNV, FromFile) @@ -199,7 +201,6 @@ Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv); } -#endif TEST_P(CompileUpgradeTextureToSampledTextureAndDropSamplersTest, FromFile) { @@ -263,6 +264,7 @@ "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", @@ -292,6 +294,7 @@ "spv.bufferhandle7.frag", "spv.bufferhandle8.frag", "spv.bufferhandle9.frag", + "spv.bufferhandleUvec2.frag", "spv.bufferhandle_Error.frag", "spv.builtInXFB.vert", "spv.conditionalDemote.frag", @@ -333,6 +336,7 @@ "spv.GeometryShaderPassthrough.geom", "spv.interpOps.frag", "spv.int64.frag", + "spv.intcoopmat.comp", "spv.intOps.vert", "spv.layoutNested.vert", "spv.length.frag", @@ -410,6 +414,7 @@ "spv.storageBuffer.vert", "spv.precise.tese", "spv.precise.tesc", + "spv.volatileAtomic.comp", "spv.vulkan100.subgroupArithmetic.comp", "spv.vulkan100.subgroupPartitioned.comp", "spv.xfb.vert", @@ -422,6 +427,23 @@ 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, @@ -466,6 +488,22 @@ "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 @@ -572,7 +610,6 @@ FileNameAsCustomTestSuffix ); -#ifdef AMD_EXTENSIONS INSTANTIATE_TEST_CASE_P( Glsl, CompileVulkanToSpirvTestAMD, ::testing::ValuesIn(std::vector({ @@ -588,9 +625,7 @@ })), FileNameAsCustomTestSuffix ); -#endif -#ifdef NV_EXTENSIONS INSTANTIATE_TEST_CASE_P( Glsl, CompileVulkanToSpirvTestNV, ::testing::ValuesIn(std::vector({ @@ -638,7 +673,6 @@ })), FileNameAsCustomTestSuffix ); -#endif INSTANTIATE_TEST_CASE_P( Glsl, CompileUpgradeTextureToSampledTextureAndDropSamplersTest, diff -Nru glslang-7.12.3352/gtests/TestFixture.cpp glslang-8.13.3559/gtests/TestFixture.cpp --- glslang-7.12.3352/gtests/TestFixture.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/gtests/TestFixture.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -60,7 +60,6 @@ return EShLangFragment; } else if (stage == "comp") { return EShLangCompute; -#ifdef NV_EXTENSIONS } else if (stage == "rgen") { return EShLangRayGenNV; } else if (stage == "rint") { @@ -77,7 +76,6 @@ return EShLangTaskNV; } else if (stage == "mesh") { return EShLangMeshNV; -#endif } else { assert(0 && "Unknown shader stage"); return EShLangCount; diff -Nru glslang-7.12.3352/gtests/TestFixture.h glslang-8.13.3559/gtests/TestFixture.h --- glslang-7.12.3352/gtests/TestFixture.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/gtests/TestFixture.h 2020-01-06 14:50:40.000000000 +0000 @@ -113,7 +113,7 @@ 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, @@ -227,7 +227,9 @@ shader.setAutoMapBindings(true); } shader.setTextureSamplerTransformMode(texSampTransMode); +#ifdef ENABLE_HLSL shader.setFlattenUniformArrays(flattenUniformArrays); +#endif if (controls & EShMsgSpvRules) { if (controls & EShMsgVulkanRules) { @@ -300,7 +302,9 @@ shader.setShiftSsboBinding(baseSsboBinding); shader.setAutoMapBindings(autoMapBindings); shader.setAutoMapLocations(true); +#ifdef ENABLE_HLSL shader.setFlattenUniformArrays(flattenUniformArrays); +#endif bool success = compile(&shader, code, entryPointName, controls); @@ -308,7 +312,9 @@ program.addShader(&shader); success &= program.link(controls); +#ifndef GLSLANG_WEB success &= program.mapIO(); +#endif spv::SpvBuildLogger logger; @@ -687,14 +693,14 @@ 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 diff -Nru glslang-7.12.3352/hlsl/CMakeLists.txt glslang-8.13.3559/hlsl/CMakeLists.txt --- glslang-7.12.3352/hlsl/CMakeLists.txt 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/hlsl/CMakeLists.txt 2020-01-06 14:50:40.000000000 +0000 @@ -33,12 +33,13 @@ 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 ${CMAKE_INSTALL_LIBDIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) diff -Nru glslang-7.12.3352/hlsl/hlslAttributes.cpp glslang-8.13.3559/hlsl/hlslAttributes.cpp --- glslang-7.12.3352/hlsl/hlslAttributes.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/hlsl/hlslAttributes.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -58,6 +58,49 @@ 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; + + if (name == "nonwritable") return EatNonWritable; + if (name == "nonreadable") return EatNonReadable; } else if (nameSpace.size() > 0) return EatNone; diff -Nru glslang-7.12.3352/hlsl/hlslGrammar.cpp glslang-8.13.3559/hlsl/hlslGrammar.cpp --- glslang-7.12.3352/hlsl/hlslGrammar.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/hlsl/hlslGrammar.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -3221,6 +3221,11 @@ return false; } + if (arguments == nullptr) { + expected("one or more arguments"); + return false; + } + // hook it up node = parseContext.handleFunctionCall(arguments->getLoc(), constructorFunction, arguments); diff -Nru glslang-7.12.3352/hlsl/hlslParseHelper.cpp glslang-8.13.3559/hlsl/hlslParseHelper.cpp --- glslang-7.12.3352/hlsl/hlslParseHelper.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/hlsl/hlslParseHelper.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -1950,6 +1950,52 @@ 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; + + 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", "", ""); @@ -8703,25 +8749,19 @@ for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); bool contains64BitType = false; -#ifdef AMD_EXTENSIONS bool contains32BitType = false; bool contains16BitType = false; int memberSize = intermediate.computeTypeXfbSize(*typeList[member].type, contains64BitType, contains32BitType, contains16BitType); -#else - int memberSize = intermediate.computeTypeXfbSize(*typeList[member].type, contains64BitType); -#endif // see if we need to auto-assign an offset to this member if (! memberQualifier.hasXfbOffset()) { // "if applied to an aggregate containing a double or 64-bit integer, the offset must also be a multiple of 8" if (contains64BitType) RoundToPow2(nextOffset, 8); -#ifdef AMD_EXTENSIONS else if (contains32BitType) RoundToPow2(nextOffset, 4); // "if applied to an aggregate containing a half float or 16-bit integer, the offset must also be a multiple of 2" else if (contains16BitType) RoundToPow2(nextOffset, 2); -#endif memberQualifier.layoutXfbOffset = nextOffset; } else nextOffset = memberQualifier.layoutXfbOffset; diff -Nru glslang-7.12.3352/known_good.json glslang-8.13.3559/known_good.json --- glslang-7.12.3352/known_good.json 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/known_good.json 2020-01-06 14:50:40.000000000 +0000 @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "aa9e8f538041db3055ea443080e0ccc315fa114f" + "commit" : "5c019b5923c1f6bf00a3ac28114ec4a7b1faa0e2" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "45c2cc37276d69e5b257507d97fd90d2a5684ccc" + "commit" : "204cd131c42b90d129073719f2766293ce35c081" } ] } diff -Nru glslang-7.12.3352/kokoro/linux-clang-release-bazel/build.sh glslang-8.13.3559/kokoro/linux-clang-release-bazel/build.sh --- glslang-7.12.3352/kokoro/linux-clang-release-bazel/build.sh 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/kokoro/linux-clang-release-bazel/build.sh 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,60 @@ +#!/bin/bash + +# 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. + +# 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 -Nru glslang-7.12.3352/kokoro/linux-clang-release-bazel/continuous.cfg glslang-8.13.3559/kokoro/linux-clang-release-bazel/continuous.cfg --- glslang-7.12.3352/kokoro/linux-clang-release-bazel/continuous.cfg 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/kokoro/linux-clang-release-bazel/continuous.cfg 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,35 @@ +# 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. + +# Continuous build configuration. +build_file: "glslang/kokoro/linux-clang-release-bazel/build.sh" diff -Nru glslang-7.12.3352/kokoro/linux-clang-release-bazel/presubmit.cfg glslang-8.13.3559/kokoro/linux-clang-release-bazel/presubmit.cfg --- glslang-7.12.3352/kokoro/linux-clang-release-bazel/presubmit.cfg 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/kokoro/linux-clang-release-bazel/presubmit.cfg 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,35 @@ +# 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. + +# Presubmit build configuration. +build_file: "glslang/kokoro/linux-clang-release-bazel/build.sh" diff -Nru glslang-7.12.3352/kokoro/macos-clang-release-bazel/build.sh glslang-8.13.3559/kokoro/macos-clang-release-bazel/build.sh --- glslang-7.12.3352/kokoro/macos-clang-release-bazel/build.sh 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/kokoro/macos-clang-release-bazel/build.sh 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,60 @@ +#!/bin/bash + +# 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. + +# 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 + +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 + +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 -Nru glslang-7.12.3352/kokoro/macos-clang-release-bazel/continuous.cfg glslang-8.13.3559/kokoro/macos-clang-release-bazel/continuous.cfg --- glslang-7.12.3352/kokoro/macos-clang-release-bazel/continuous.cfg 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/kokoro/macos-clang-release-bazel/continuous.cfg 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,35 @@ +# 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. + +# Continuous build configuration. +build_file: "glslang/kokoro/macos-clang-release-bazel/build.sh" diff -Nru glslang-7.12.3352/kokoro/macos-clang-release-bazel/presubmit.cfg glslang-8.13.3559/kokoro/macos-clang-release-bazel/presubmit.cfg --- glslang-7.12.3352/kokoro/macos-clang-release-bazel/presubmit.cfg 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/kokoro/macos-clang-release-bazel/presubmit.cfg 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,35 @@ +# 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. + +# Presubmit build configuration. +build_file: "glslang/kokoro/macos-clang-release-bazel/build.sh" diff -Nru glslang-7.12.3352/kokoro/windows-msvc-2015-release-bazel/build.bat glslang-8.13.3559/kokoro/windows-msvc-2015-release-bazel/build.bat --- glslang-7.12.3352/kokoro/windows-msvc-2015-release-bazel/build.bat 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/kokoro/windows-msvc-2015-release-bazel/build.bat 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,75 @@ +:: 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. +:: +:: Windows Build Script. + +@echo on + +set SRC=%cd%\github\glslang + +:: Force usage of python 3.6 +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 + +:: 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%" + +:: ############## +:: 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 -Nru glslang-7.12.3352/kokoro/windows-msvc-2015-release-bazel/continuous.cfg glslang-8.13.3559/kokoro/windows-msvc-2015-release-bazel/continuous.cfg --- glslang-7.12.3352/kokoro/windows-msvc-2015-release-bazel/continuous.cfg 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/kokoro/windows-msvc-2015-release-bazel/continuous.cfg 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,35 @@ +# 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. + +# Continuous build configuration. +build_file: "glslang/kokoro/windows-msvc-2015-release-bazel/build.bat" diff -Nru glslang-7.12.3352/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg glslang-8.13.3559/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg --- glslang-7.12.3352/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,35 @@ +# 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. + +# Presubmit build configuration. +build_file: "glslang/kokoro/windows-msvc-2015-release-bazel/build.bat" diff -Nru glslang-7.12.3352/OGLCompilersDLL/CMakeLists.txt glslang-8.13.3559/OGLCompilersDLL/CMakeLists.txt --- glslang-7.12.3352/OGLCompilersDLL/CMakeLists.txt 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/OGLCompilersDLL/CMakeLists.txt 2020-01-06 14:50:40.000000000 +0000 @@ -9,6 +9,7 @@ endif(WIN32) if(ENABLE_GLSLANG_INSTALL) - install(TARGETS OGLCompiler + install(TARGETS OGLCompiler EXPORT OGLCompilerTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(EXPORT OGLCompilerTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) diff -Nru glslang-7.12.3352/README.md glslang-8.13.3559/README.md --- glslang-7.12.3352/README.md 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/README.md 2020-01-06 14:50:40.000000000 +0000 @@ -28,6 +28,15 @@ 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 ------------------------------- @@ -94,8 +103,8 @@ ``` 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 @@ -155,30 +164,41 @@ The command to rebuild is: ```bash +m4 -P MachineIndependent/glslang.m4 > MachineIndependent/glslang.y bison --defines=MachineIndependent/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o MachineIndependent/glslang_tab.cpp ``` -The above command is also available in the bash script at -`glslang/updateGrammar`. - -### WASM for the the Web - -Use the steps in [Build Steps](#build-steps), which following notes/exceptions: +The above commands are also available in the bash script in `updateGrammar`, +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). + +### Building to WASM for the Web and Node + +Use the steps in [Build Steps](#build-steps), with the following notes/exceptions: +* For building the web subset of core glslang: + + execute `updateGrammar web` from the glslang subdirectory + (or if using your own scripts, `m4` needs a `-DGLSLANG_WEB` argument) + + 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" ..` -* To get a 'true' minimized build, make sure to use `brotli` to compress the .js + + [Instructions located + here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install) +* Wrap cmake call: `emcmake cmake` +* To get a fully 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 ------- @@ -216,6 +236,11 @@ 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 @@ -260,7 +285,8 @@ ### C++ Class Interface (new, preferred) This interface is in roughly the last 1/3 of `ShaderLang.h`. It is in the -glslang namespace and contains the following. +glslang namespace and contains the following, here with suggested calls +for generating SPIR-V: ```cxx const char* GetEsslVersionString(); @@ -283,10 +309,19 @@ Reflection queries ``` +For just validating (not generating code), subsitute these calls: + +```cxx + setEnvInput(EShSourceHlsl or EShSourceGlsl, stage, EShClientNone, 0); + setEnvClient(EShClientNone, 0); + setEnvTarget(EShTargetNone, 0); +``` + See `ShaderLang.h` and the usage of it in `StandAlone/StandAlone.cpp` for more -details. +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`. diff -Nru glslang-7.12.3352/SPIRV/CMakeLists.txt glslang-8.13.3559/SPIRV/CMakeLists.txt --- glslang-7.12.3352/SPIRV/CMakeLists.txt 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/CMakeLists.txt 2020-01-06 14:50:40.000000000 +0000 @@ -25,28 +25,20 @@ spvIR.h doc.h SpvTools.h - disassemble.h) + disassemble.h + GLSL.ext.AMD.h + GLSL.ext.NV.h) set(SPVREMAP_HEADERS SPVRemapper.h doc.h) -if(ENABLE_AMD_EXTENSIONS) - list(APPEND - HEADERS - GLSL.ext.AMD.h) -endif(ENABLE_AMD_EXTENSIONS) - -if(ENABLE_NV_EXTENSIONS) - list(APPEND - HEADERS - GLSL.ext.NV.h) -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 +59,9 @@ 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) @@ -80,22 +74,29 @@ 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() + if (ENABLE_SPVREMAPPER) + install(EXPORT SPVRemapperTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + endif() + + 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/) endif(ENABLE_GLSLANG_INSTALL) diff -Nru glslang-7.12.3352/SPIRV/disassemble.cpp glslang-8.13.3559/SPIRV/disassemble.cpp --- glslang-7.12.3352/SPIRV/disassemble.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/disassemble.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -52,26 +52,16 @@ extern "C" { // Include C-based headers that don't have a namespace #include "GLSL.std.450.h" -#ifdef AMD_EXTENSIONS #include "GLSL.ext.AMD.h" -#endif - -#ifdef NV_EXTENSIONS #include "GLSL.ext.NV.h" -#endif } } const char* GlslStd450DebugNames[spv::GLSLstd450Count]; namespace spv { -#ifdef AMD_EXTENSIONS static const char* GLSLextAMDGetDebugNames(const char*, unsigned); -#endif - -#ifdef NV_EXTENSIONS static const char* GLSLextNVGetDebugNames(const char*, unsigned); -#endif static void Kill(std::ostream& out, const char* message) { @@ -82,15 +72,8 @@ // used to identify the extended instruction library imported when printing enum ExtInstSet { GLSL450Inst, - -#ifdef AMD_EXTENSIONS GLSLextAMDInst, -#endif - -#ifdef NV_EXTENSIONS GLSLextNVInst, -#endif - OpenCLExtInst, }; @@ -499,37 +482,29 @@ const char* name = idDescriptor[stream[word - 2]].c_str(); if (0 == memcmp("OpenCL", name, 6)) { extInstSet = OpenCLExtInst; -#ifdef AMD_EXTENSIONS } else if (strcmp(spv::E_SPV_AMD_shader_ballot, name) == 0 || strcmp(spv::E_SPV_AMD_shader_trinary_minmax, name) == 0 || strcmp(spv::E_SPV_AMD_shader_explicit_vertex_parameter, name) == 0 || strcmp(spv::E_SPV_AMD_gcn_shader, name) == 0) { extInstSet = GLSLextAMDInst; -#endif -#ifdef NV_EXTENSIONS - }else if (strcmp(spv::E_SPV_NV_sample_mask_override_coverage, name) == 0 || + } else if (strcmp(spv::E_SPV_NV_sample_mask_override_coverage, name) == 0 || strcmp(spv::E_SPV_NV_geometry_shader_passthrough, name) == 0 || strcmp(spv::E_SPV_NV_viewport_array2, name) == 0 || strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 || strcmp(spv::E_SPV_NV_fragment_shader_barycentric, name) == 0 || strcmp(spv::E_SPV_NV_mesh_shader, name) == 0) { extInstSet = GLSLextNVInst; -#endif } unsigned entrypoint = stream[word - 1]; if (extInstSet == GLSL450Inst) { if (entrypoint < GLSLstd450Count) { out << "(" << GlslStd450DebugNames[entrypoint] << ")"; } -#ifdef AMD_EXTENSIONS } else if (extInstSet == GLSLextAMDInst) { out << "(" << GLSLextAMDGetDebugNames(name, entrypoint) << ")"; -#endif -#ifdef NV_EXTENSIONS } else if (extInstSet == GLSLextNVInst) { out << "(" << GLSLextNVGetDebugNames(name, entrypoint) << ")"; -#endif } } break; @@ -653,7 +628,6 @@ names[GLSLstd450NClamp] = "NClamp"; } -#ifdef AMD_EXTENSIONS static const char* GLSLextAMDGetDebugNames(const char* name, unsigned entrypoint) { if (strcmp(name, spv::E_SPV_AMD_shader_ballot) == 0) { @@ -695,9 +669,7 @@ return "Bad"; } -#endif -#ifdef NV_EXTENSIONS static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint) { if (strcmp(name, spv::E_SPV_NV_sample_mask_override_coverage) == 0 || @@ -751,7 +723,6 @@ } return "Bad"; } -#endif void Disassemble(std::ostream& out, const std::vector& stream) { diff -Nru glslang-7.12.3352/SPIRV/doc.cpp glslang-8.13.3559/SPIRV/doc.cpp --- glslang-7.12.3352/SPIRV/doc.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/doc.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -50,12 +50,8 @@ // Include C-based headers that don't have a namespace #include "GLSL.ext.KHR.h" #include "GLSL.ext.EXT.h" -#ifdef AMD_EXTENSIONS #include "GLSL.ext.AMD.h" -#endif -#ifdef NV_EXTENSIONS #include "GLSL.ext.NV.h" -#endif } } @@ -98,22 +94,17 @@ case 4: return "Fragment"; case 5: return "GLCompute"; case 6: return "Kernel"; -#ifdef NV_EXTENSIONS case ExecutionModelTaskNV: return "TaskNV"; case ExecutionModelMeshNV: return "MeshNV"; -#endif default: return "Bad"; -#ifdef NV_EXTENSIONS case ExecutionModelRayGenerationNV: return "RayGenerationNV"; case ExecutionModelIntersectionNV: return "IntersectionNV"; case ExecutionModelAnyHitNV: return "AnyHitNV"; case ExecutionModelClosestHitNV: return "ClosestHitNV"; case ExecutionModelMissNV: return "MissNV"; case ExecutionModelCallableNV: return "CallableNV"; -#endif - } } @@ -183,13 +174,11 @@ case 4446: return "PostDepthCoverage"; -#ifdef NV_EXTENSIONS case ExecutionModeOutputLinesNV: return "OutputLinesNV"; case ExecutionModeOutputPrimitivesNV: return "OutputPrimitivesNV"; case ExecutionModeOutputTrianglesNV: return "OutputTrianglesNV"; case ExecutionModeDerivativeGroupQuadsNV: return "DerivativeGroupQuadsNV"; case ExecutionModeDerivativeGroupLinearNV: return "DerivativeGroupLinearNV"; -#endif case ExecutionModePixelInterlockOrderedEXT: return "PixelInterlockOrderedEXT"; case ExecutionModePixelInterlockUnorderedEXT: return "PixelInterlockUnorderedEXT"; @@ -220,14 +209,12 @@ case 11: return "Image"; case 12: return "StorageBuffer"; -#ifdef NV_EXTENSIONS case StorageClassRayPayloadNV: return "RayPayloadNV"; case StorageClassHitAttributeNV: return "HitAttributeNV"; case StorageClassIncomingRayPayloadNV: return "IncomingRayPayloadNV"; case StorageClassShaderRecordBufferNV: return "ShaderRecordBufferNV"; case StorageClassCallableDataNV: return "CallableDataNV"; case StorageClassIncomingCallableDataNV: return "IncomingCallableDataNV"; -#endif case StorageClassPhysicalStorageBufferEXT: return "PhysicalStorageBufferEXT"; @@ -289,10 +276,7 @@ case DecorationCeiling: default: return "Bad"; -#ifdef AMD_EXTENSIONS case DecorationExplicitInterpAMD: return "ExplicitInterpAMD"; -#endif -#ifdef NV_EXTENSIONS case DecorationOverrideCoverageNV: return "OverrideCoverageNV"; case DecorationPassthroughNV: return "PassthroughNV"; case DecorationViewportRelativeNV: return "ViewportRelativeNV"; @@ -301,7 +285,6 @@ case DecorationPerViewNV: return "PerViewNV"; case DecorationPerTaskNV: return "PerTaskNV"; case DecorationPerVertexNV: return "PerVertexNV"; -#endif case DecorationNonUniformEXT: return "DecorationNonUniformEXT"; case DecorationHlslCounterBufferGOOGLE: return "DecorationHlslCounterBufferGOOGLE"; @@ -371,7 +354,6 @@ case 4426: return "DrawIndex"; case 5014: return "FragStencilRefEXT"; -#ifdef AMD_EXTENSIONS case 4992: return "BaryCoordNoPerspAMD"; case 4993: return "BaryCoordNoPerspCentroidAMD"; case 4994: return "BaryCoordNoPerspSampleAMD"; @@ -379,9 +361,6 @@ case 4996: return "BaryCoordSmoothCentroidAMD"; case 4997: return "BaryCoordSmoothSampleAMD"; case 4998: return "BaryCoordPullModelAMD"; -#endif - -#ifdef NV_EXTENSIONS case BuiltInLaunchIdNV: return "LaunchIdNV"; case BuiltInLaunchSizeNV: return "LaunchSizeNV"; case BuiltInWorldRayOriginNV: return "WorldRayOriginNV"; @@ -405,14 +384,12 @@ // case BuiltInInvocationsPerPixelNV: return "InvocationsPerPixelNV"; // superseded by BuiltInFragInvocationCountEXT case BuiltInBaryCoordNV: return "BaryCoordNV"; case BuiltInBaryCoordNoPerspNV: return "BaryCoordNoPerspNV"; -#endif case BuiltInFragSizeEXT: return "FragSizeEXT"; case BuiltInFragInvocationCountEXT: return "FragInvocationCountEXT"; case 5264: return "FullyCoveredEXT"; -#ifdef NV_EXTENSIONS case BuiltInTaskCountNV: return "TaskCountNV"; case BuiltInPrimitiveCountNV: return "PrimitiveCountNV"; case BuiltInPrimitiveIndicesNV: return "PrimitiveIndicesNV"; @@ -421,7 +398,6 @@ case BuiltInLayerPerViewNV: return "LayerPerViewNV"; case BuiltInMeshViewCountNV: return "MeshViewCountNV"; case BuiltInMeshViewIndicesNV: return "MeshViewIndicesNV"; -#endif case BuiltInWarpsPerSMNV: return "WarpsPerSMNV"; case BuiltInSMCountNV: return "SMCountNV"; case BuiltInWarpIDNV: return "WarpIDNV"; @@ -780,11 +756,9 @@ case GroupOperationInclusiveScan: return "InclusiveScan"; case GroupOperationExclusiveScan: return "ExclusiveScan"; case GroupOperationClusteredReduce: return "ClusteredReduce"; -#ifdef NV_EXTENSIONS case GroupOperationPartitionedReduceNV: return "PartitionedReduceNV"; case GroupOperationPartitionedInclusiveScanNV: return "PartitionedInclusiveScanNV"; case GroupOperationPartitionedExclusiveScanNV: return "PartitionedExclusiveScanNV"; -#endif default: return "Bad"; } @@ -901,17 +875,14 @@ case CapabilityStencilExportEXT: return "StencilExportEXT"; -#ifdef AMD_EXTENSIONS case CapabilityFloat16ImageAMD: return "Float16ImageAMD"; case CapabilityImageGatherBiasLodAMD: return "ImageGatherBiasLodAMD"; case CapabilityFragmentMaskAMD: return "FragmentMaskAMD"; case CapabilityImageReadWriteLodAMD: return "ImageReadWriteLodAMD"; -#endif case CapabilityAtomicStorageOps: return "AtomicStorageOps"; case CapabilitySampleMaskPostDepthCoverage: return "SampleMaskPostDepthCoverage"; -#ifdef NV_EXTENSIONS case CapabilityGeometryShaderPassthroughNV: return "GeometryShaderPassthroughNV"; case CapabilityShaderViewportIndexLayerNV: return "ShaderViewportIndexLayerNV"; case CapabilityShaderViewportMaskNV: return "ShaderViewportMaskNV"; @@ -926,7 +897,6 @@ case CapabilityImageFootprintNV: return "ImageFootprintNV"; // case CapabilityShadingRateNV: return "ShadingRateNV"; // superseded by FragmentDensityEXT case CapabilitySampleMaskOverrideCoverageNV: return "SampleMaskOverrideCoverageNV"; -#endif case CapabilityFragmentDensityEXT: return "FragmentDensityEXT"; case CapabilityFragmentFullyCoveredEXT: return "FragmentFullyCoveredEXT"; @@ -961,6 +931,8 @@ case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; case CapabilityShaderClockKHR: return "ShaderClockKHR"; + case CapabilityIntegerFunctions2INTEL: return "CapabilityIntegerFunctions2INTEL"; + default: return "Bad"; } } @@ -1336,7 +1308,6 @@ case 4430: return "OpSubgroupAllEqualKHR"; case 4432: return "OpSubgroupReadInvocationKHR"; -#ifdef AMD_EXTENSIONS case 5000: return "OpGroupIAddNonUniformAMD"; case 5001: return "OpGroupFAddNonUniformAMD"; case 5002: return "OpGroupFMinNonUniformAMD"; @@ -1348,14 +1319,12 @@ case 5011: return "OpFragmentMaskFetchAMD"; case 5012: return "OpFragmentFetchAMD"; -#endif case OpReadClockKHR: return "OpReadClockKHR"; case OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE"; case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE"; -#ifdef NV_EXTENSIONS case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV"; case OpReportIntersectionNV: return "OpReportIntersectionNV"; case OpIgnoreIntersectionNV: return "OpIgnoreIntersectionNV"; @@ -1365,7 +1334,6 @@ case OpExecuteCallableNV: return "OpExecuteCallableNV"; case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV"; case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV"; -#endif case OpTypeCooperativeMatrixNV: return "OpTypeCooperativeMatrixNV"; case OpCooperativeMatrixLoadNV: return "OpCooperativeMatrixLoadNV"; @@ -2685,7 +2653,6 @@ InstructionDesc[OpModuleProcessed].operands.push(OperandLiteralString, "'process'"); -#ifdef AMD_EXTENSIONS InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandId, "'X'"); @@ -2724,9 +2691,7 @@ InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Image'"); InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'"); InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'"); -#endif -#ifdef NV_EXTENSIONS InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X"); InstructionDesc[OpTypeAccelerationStructureNV].setResultAndType(true, false); @@ -2764,7 +2729,6 @@ InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'"); InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'"); -#endif InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Component Type'"); InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Scope'"); diff -Nru glslang-7.12.3352/SPIRV/GlslangToSpv.cpp glslang-8.13.3559/SPIRV/GlslangToSpv.cpp --- glslang-7.12.3352/SPIRV/GlslangToSpv.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/GlslangToSpv.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -46,9 +46,7 @@ #include "GLSL.std.450.h" #include "GLSL.ext.KHR.h" #include "GLSL.ext.EXT.h" -#ifdef AMD_EXTENSIONS #include "GLSL.ext.AMD.h" -#endif #include "GLSL.ext.NV.h" } @@ -89,9 +87,29 @@ }; struct OpDecorations { + public: + OpDecorations(spv::Decoration precision, spv::Decoration noContraction, spv::Decoration nonUniform) : + precision(precision) +#ifndef GLSLANG_WEB + , + noContraction(noContraction), + nonUniform(nonUniform) +#endif + { } + spv::Decoration precision; - spv::Decoration noContraction; - spv::Decoration nonUniform; + +#ifdef GLSLANG_WEB + 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); } + protected: + spv::Decoration noContraction; + spv::Decoration nonUniform; +#endif + }; } // namespace @@ -192,22 +210,13 @@ spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); spv::Id createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId); spv::Id getSymbolId(const glslang::TIntermSymbol* node); -#ifdef NV_EXTENSIONS void addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier & qualifier); -#endif spv::Id createSpvConstant(const glslang::TIntermTyped&); spv::Id createSpvConstantFromConstUnionArray(const glslang::TType& type, const glslang::TConstUnionArray&, int& nextConst, bool specConstant); bool isTrivialLeaf(const glslang::TIntermTyped* node); bool isTrivial(const glslang::TIntermTyped* node); spv::Id createShortCircuit(glslang::TOperator, glslang::TIntermTyped& left, glslang::TIntermTyped& right); -#ifdef AMD_EXTENSIONS spv::Id getExtBuiltins(const char* name); -#endif - 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); @@ -254,6 +263,10 @@ // Translate glslang profile to SPIR-V source language. spv::SourceLanguage TranslateSourceLanguage(glslang::EShSource source, EProfile profile) { +#ifdef GLSLANG_WEB + return spv::SourceLanguageESSL; +#endif + switch (source) { case glslang::EShSourceGlsl: switch (profile) { @@ -278,12 +291,12 @@ { switch (stage) { case EShLangVertex: return spv::ExecutionModelVertex; + case EShLangFragment: return spv::ExecutionModelFragment; + case EShLangCompute: return spv::ExecutionModelGLCompute; +#ifndef GLSLANG_WEB case EShLangTessControl: return spv::ExecutionModelTessellationControl; case EShLangTessEvaluation: return spv::ExecutionModelTessellationEvaluation; case EShLangGeometry: return spv::ExecutionModelGeometry; - case EShLangFragment: return spv::ExecutionModelFragment; - case EShLangCompute: return spv::ExecutionModelGLCompute; -#ifdef NV_EXTENSIONS case EShLangRayGenNV: return spv::ExecutionModelRayGenerationNV; case EShLangIntersectNV: return spv::ExecutionModelIntersectionNV; case EShLangAnyHitNV: return spv::ExecutionModelAnyHitNV; @@ -342,7 +355,7 @@ case glslang::EvqBuffer: return useStorageBuffer ? spv::DecorationBlock : spv::DecorationBufferBlock; case glslang::EvqVaryingIn: return spv::DecorationBlock; case glslang::EvqVaryingOut: return spv::DecorationBlock; -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB case glslang::EvqPayloadNV: return spv::DecorationBlock; case glslang::EvqPayloadInNV: return spv::DecorationBlock; case glslang::EvqHitAttrNV: return spv::DecorationBlock; @@ -362,18 +375,18 @@ void TranslateMemoryDecoration(const glslang::TQualifier& qualifier, std::vector& memory, bool useVulkanMemoryModel) { 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.readonly) + if (qualifier.isReadOnly()) memory.push_back(spv::DecorationNonWritable); - if (qualifier.writeonly) + if (qualifier.isWriteOnly()) memory.push_back(spv::DecorationNonReadable); } @@ -417,7 +430,7 @@ assert(type.getQualifier().layoutPacking == glslang::ElpNone); } return spv::DecorationMax; -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB case glslang::EvqPayloadNV: case glslang::EvqPayloadInNV: case glslang::EvqHitAttrNV: @@ -441,16 +454,14 @@ if (qualifier.smooth) // Smooth decoration doesn't exist in SPIR-V 1.0 return spv::DecorationMax; - else if (qualifier.nopersp) + else if (qualifier.isNonPerspective()) return spv::DecorationNoPerspective; else if (qualifier.flat) return spv::DecorationFlat; -#ifdef AMD_EXTENSIONS - else if (qualifier.explicitInterp) { + else if (qualifier.isExplicitInterpolation()) { builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); return spv::DecorationExplicitInterpAMD; } -#endif else return spv::DecorationMax; } @@ -460,15 +471,18 @@ // should be applied. spv::Decoration TGlslangToSpvTraverser::TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier) { - if (qualifier.patch) - return spv::DecorationPatch; - else if (qualifier.centroid) + if (qualifier.centroid) return spv::DecorationCentroid; +#ifndef GLSLANG_WEB + else if (qualifier.patch) + return spv::DecorationPatch; else if (qualifier.sample) { builder.addCapability(spv::CapabilitySampleRateShading); return spv::DecorationSample; - } else - return spv::DecorationMax; + } +#endif + + return spv::DecorationMax; } // If glslang type is invariant, return SPIR-V invariant decoration. @@ -483,29 +497,36 @@ // If glslang type is noContraction, return SPIR-V NoContraction decoration. spv::Decoration TranslateNoContractionDecoration(const glslang::TQualifier& qualifier) { - if (qualifier.noContraction) +#ifndef GLSLANG_WEB + if (qualifier.isNoContraction()) return spv::DecorationNoContraction; else +#endif return spv::DecorationMax; } // If glslang type is nonUniform, return SPIR-V NonUniform decoration. spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration(const glslang::TQualifier& qualifier) { +#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 +#endif return spv::DecorationMax; } -spv::MemoryAccessMask TGlslangToSpvTraverser::TranslateMemoryAccess(const spv::Builder::AccessChain::CoherentFlags &coherentFlags) +spv::MemoryAccessMask TGlslangToSpvTraverser::TranslateMemoryAccess( + const spv::Builder::AccessChain::CoherentFlags &coherentFlags) { - if (!glslangIntermediate->usingVulkanMemoryModel() || coherentFlags.isImage) { - return spv::MemoryAccessMaskNone; - } spv::MemoryAccessMask mask = spv::MemoryAccessMaskNone; + +#ifndef GLSLANG_WEB + if (!glslangIntermediate->usingVulkanMemoryModel() || coherentFlags.isImage) + return mask; + if (coherentFlags.volatil || coherentFlags.coherent || coherentFlags.devicecoherent || @@ -524,15 +545,20 @@ if (mask != spv::MemoryAccessMaskNone) { builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); } +#endif + return mask; } -spv::ImageOperandsMask TGlslangToSpvTraverser::TranslateImageOperands(const spv::Builder::AccessChain::CoherentFlags &coherentFlags) +spv::ImageOperandsMask TGlslangToSpvTraverser::TranslateImageOperands( + const spv::Builder::AccessChain::CoherentFlags &coherentFlags) { - if (!glslangIntermediate->usingVulkanMemoryModel()) { - return spv::ImageOperandsMaskNone; - } spv::ImageOperandsMask mask = spv::ImageOperandsMaskNone; + +#ifndef GLSLANG_WEB + if (!glslangIntermediate->usingVulkanMemoryModel()) + return mask; + if (coherentFlags.volatil || coherentFlags.coherent || coherentFlags.devicecoherent || @@ -551,12 +577,15 @@ if (mask != spv::ImageOperandsMaskNone) { builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); } +#endif + return mask; } spv::Builder::AccessChain::CoherentFlags TGlslangToSpvTraverser::TranslateCoherent(const glslang::TType& type) { - spv::Builder::AccessChain::CoherentFlags flags; + spv::Builder::AccessChain::CoherentFlags flags = {}; +#ifndef GLSLANG_WEB flags.coherent = type.getQualifier().coherent; flags.devicecoherent = type.getQualifier().devicecoherent; flags.queuefamilycoherent = type.getQualifier().queuefamilycoherent; @@ -574,12 +603,16 @@ flags.coherent || flags.volatil; flags.isImage = type.getBasicType() == glslang::EbtSampler; +#endif return flags; } -spv::Scope TGlslangToSpvTraverser::TranslateMemoryScope(const spv::Builder::AccessChain::CoherentFlags &coherentFlags) +spv::Scope TGlslangToSpvTraverser::TranslateMemoryScope( + const spv::Builder::AccessChain::CoherentFlags &coherentFlags) { - spv::Scope scope; + spv::Scope scope = spv::ScopeMax; + +#ifndef GLSLANG_WEB if (coherentFlags.volatil || coherentFlags.coherent) { // coherent defaults to Device scope in the old model, QueueFamilyKHR scope in the new model scope = glslangIntermediate->usingVulkanMemoryModel() ? spv::ScopeQueueFamilyKHR : spv::ScopeDevice; @@ -591,12 +624,12 @@ scope = spv::ScopeWorkgroup; } else if (coherentFlags.subgroupcoherent) { scope = spv::ScopeSubgroup; - } else { - scope = spv::ScopeMax; } if (glslangIntermediate->usingVulkanMemoryModel() && scope == spv::ScopeDevice) { builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); } +#endif + return scope; } @@ -609,6 +642,7 @@ { switch (builtIn) { case glslang::EbvPointSize: +#ifndef GLSLANG_WEB // Defer adding the capability until the built-in is actually used. if (! memberDeclaration) { switch (glslangIntermediate->getStage()) { @@ -623,8 +657,28 @@ break; } } +#endif return spv::BuiltInPointSize; + case glslang::EbvPosition: return spv::BuiltInPosition; + case glslang::EbvVertexId: return spv::BuiltInVertexId; + case glslang::EbvInstanceId: return spv::BuiltInInstanceId; + case glslang::EbvVertexIndex: return spv::BuiltInVertexIndex; + case glslang::EbvInstanceIndex: return spv::BuiltInInstanceIndex; + + case glslang::EbvFragCoord: return spv::BuiltInFragCoord; + case glslang::EbvPointCoord: return spv::BuiltInPointCoord; + 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. // They are now generated when used, rather than here when declared. @@ -647,7 +701,7 @@ 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; @@ -664,39 +718,31 @@ return spv::BuiltInSampleMask; case glslang::EbvLayer: -#ifdef NV_EXTENSIONS if (glslangIntermediate->getStage() == EShLangMeshNV) { return spv::BuiltInLayer; } -#endif builder.addCapability(spv::CapabilityGeometry); if (glslangIntermediate->getStage() == EShLangVertex || 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::EbvPosition: return spv::BuiltInPosition; - case glslang::EbvVertexId: return spv::BuiltInVertexId; - case glslang::EbvInstanceId: return spv::BuiltInInstanceId; - case glslang::EbvVertexIndex: return spv::BuiltInVertexIndex; - case glslang::EbvInstanceIndex: return spv::BuiltInInstanceIndex; - 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; @@ -715,17 +761,7 @@ case glslang::EbvTessLevelOuter: return spv::BuiltInTessLevelOuter; case glslang::EbvTessCoord: return spv::BuiltInTessCoord; case glslang::EbvPatchVertices: return spv::BuiltInPatchVertices; - case glslang::EbvFragCoord: return spv::BuiltInFragCoord; - case glslang::EbvPointCoord: return spv::BuiltInPointCoord; - case glslang::EbvFace: return spv::BuiltInFrontFacing; - case glslang::EbvFragDepth: return spv::BuiltInFragDepth; 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); @@ -803,7 +839,6 @@ builder.addCapability(spv::CapabilityGroupNonUniformBallot); return spv::BuiltInSubgroupLtMask; -#ifdef AMD_EXTENSIONS case glslang::EbvBaryCoordNoPersp: builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); return spv::BuiltInBaryCoordNoPerspAMD; @@ -831,15 +866,14 @@ case glslang::EbvBaryCoordPullModel: builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); return spv::BuiltInBaryCoordPullModelAMD; -#endif 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; @@ -853,7 +887,6 @@ builder.addCapability(spv::CapabilityFragmentDensityEXT); return spv::BuiltInFragInvocationCountEXT; -#ifdef NV_EXTENSIONS case glslang::EbvViewportMaskNV: if (!memberDeclaration) { builder.addExtension(spv::E_SPV_NV_viewport_array2); @@ -954,7 +987,6 @@ return spv::BuiltInMeshViewCountNV; case glslang::EbvMeshViewIndicesNV: return spv::BuiltInMeshViewIndicesNV; -#endif // sm builtins case glslang::EbvWarpsPerSM: @@ -973,6 +1005,8 @@ builder.addExtension(spv::E_SPV_NV_shader_sm_builtins); builder.addCapability(spv::CapabilityShaderSMBuiltinsNV); return spv::BuiltInSMIDNV; +#endif + default: return spv::BuiltInMax; } @@ -983,8 +1017,12 @@ { assert(type.getBasicType() == glslang::EbtSampler); +#ifdef GLSLANG_WEB + return spv::ImageFormatUnknown; +#endif + // Check for capabilities - switch (type.getQualifier().layoutFormat) { + switch (type.getQualifier().getFormat()) { case glslang::ElfRg32f: case glslang::ElfRg16f: case glslang::ElfR11fG11fB10f: @@ -1021,7 +1059,7 @@ } // do the translation - switch (type.getQualifier().layoutFormat) { + switch (type.getQualifier().getFormat()) { case glslang::ElfNone: return spv::ImageFormatUnknown; case glslang::ElfRgba32f: return spv::ImageFormatRgba32f; case glslang::ElfRgba16f: return spv::ImageFormatRgba16f; @@ -1135,27 +1173,25 @@ return spv::StorageClassOutput; if (glslangIntermediate->getSource() != glslang::EShSourceHlsl || - type.getQualifier().storage == glslang::EvqUniform) { - if (type.getBasicType() == glslang::EbtAtomicUint) + type.getQualifier().storage == glslang::EvqUniform) { + if (type.isAtomic()) return spv::StorageClassAtomicCounter; if (type.containsOpaque()) return spv::StorageClassUniformConstant; } -#ifdef NV_EXTENSIONS if (type.getQualifier().isUniformOrBuffer() && - type.getQualifier().layoutShaderRecordNV) { + type.getQualifier().isShaderRecordNV()) { return spv::StorageClassShaderRecordBufferNV; } -#endif 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; } if (type.getQualifier().isUniformOrBuffer()) { - if (type.getQualifier().layoutPushConstant) + if (type.getQualifier().isPushConstant()) return spv::StorageClassPushConstant; if (type.getBasicType() == glslang::EbtBlock) return spv::StorageClassUniform; @@ -1163,11 +1199,11 @@ } switch (type.getQualifier().storage) { - case glslang::EvqShared: return spv::StorageClassWorkgroup; case glslang::EvqGlobal: return spv::StorageClassPrivate; case glslang::EvqConstReadOnly: return spv::StorageClassFunction; case glslang::EvqTemporary: return spv::StorageClassFunction; -#ifdef NV_EXTENSIONS + 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; @@ -1186,15 +1222,16 @@ void TGlslangToSpvTraverser::addIndirectionIndexCapabilities(const glslang::TType& baseType, const glslang::TType& indexType) { +#ifndef GLSLANG_WEB if (indexType.getQualifier().isNonUniform()) { // deal with an asserted non-uniform index // SPV_EXT_descriptor_indexing already added in TranslateNonUniformDecoration if (baseType.getBasicType() == glslang::EbtSampler) { if (baseType.getQualifier().hasAttachment()) builder.addCapability(spv::CapabilityInputAttachmentArrayNonUniformIndexingEXT); - else if (baseType.isImage() && baseType.getSampler().dim == glslang::EsdBuffer) + else if (baseType.isImage() && baseType.getSampler().isBuffer()) builder.addCapability(spv::CapabilityStorageTexelBufferArrayNonUniformIndexingEXT); - else if (baseType.isTexture() && baseType.getSampler().dim == glslang::EsdBuffer) + else if (baseType.isTexture() && baseType.getSampler().isBuffer()) builder.addCapability(spv::CapabilityUniformTexelBufferArrayNonUniformIndexingEXT); else if (baseType.isImage()) builder.addCapability(spv::CapabilityStorageImageArrayNonUniformIndexingEXT); @@ -1210,17 +1247,18 @@ // 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().dim == glslang::EsdBuffer) { - builder.addExtension("SPV_EXT_descriptor_indexing"); + } else if (baseType.isImage() && baseType.getSampler().isBuffer()) { + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityStorageTexelBufferArrayDynamicIndexingEXT); - } else if (baseType.isTexture() && baseType.getSampler().dim == glslang::EsdBuffer) { - builder.addExtension("SPV_EXT_descriptor_indexing"); + } else if (baseType.isTexture() && baseType.getSampler().isBuffer()) { + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityUniformTexelBufferArrayDynamicIndexingEXT); } } } +#endif } // Return whether or not the given type is something that should be tied to a @@ -1230,10 +1268,8 @@ // uniform and buffer blocks are included, unless it is a push_constant if (type.getBasicType() == glslang::EbtBlock) return type.getQualifier().isUniformOrBuffer() && -#ifdef NV_EXTENSIONS - ! type.getQualifier().layoutShaderRecordNV && -#endif - ! type.getQualifier().layoutPushConstant; + ! type.getQualifier().isShaderRecordNV() && + ! type.getQualifier().isPushConstant(); // non block... // basically samplerXXX/subpass/sampler/texture are all included @@ -1253,16 +1289,21 @@ if (parent.invariant) child.invariant = true; - if (parent.nopersp) - child.nopersp = true; -#ifdef AMD_EXTENSIONS - if (parent.explicitInterp) - child.explicitInterp = true; -#endif if (parent.flat) child.flat = true; if (parent.centroid) child.centroid = true; +#ifndef GLSLANG_WEB + if (parent.nopersp) + child.nopersp = true; + if (parent.explicitInterp) + child.explicitInterp = true; + if (parent.perPrimitiveNV) + child.perPrimitiveNV = true; + if (parent.perViewNV) + child.perViewNV = true; + if (parent.perTaskNV) + child.perTaskNV = true; if (parent.patch) child.patch = true; if (parent.sample) @@ -1287,13 +1328,6 @@ child.readonly = true; if (parent.writeonly) child.writeonly = true; -#ifdef NV_EXTENSIONS - if (parent.perPrimitiveNV) - child.perPrimitiveNV = true; - if (parent.perViewNV) - child.perViewNV = true; - if (parent.perTaskNV) - child.perTaskNV = true; #endif } @@ -1364,13 +1398,13 @@ 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); @@ -1399,6 +1433,84 @@ builder.addCapability(spv::CapabilityShader); break; + case EShLangFragment: + builder.addCapability(spv::CapabilityShader); + if (glslangIntermediate->getPixelCenterInteger()) + builder.addExecutionMode(shaderEntry, spv::ExecutionModePixelCenterInteger); + + if (glslangIntermediate->getOriginUpperLeft()) + builder.addExecutionMode(shaderEntry, spv::ExecutionModeOriginUpperLeft); + else + builder.addExecutionMode(shaderEntry, spv::ExecutionModeOriginLowerLeft); + + if (glslangIntermediate->getEarlyFragmentTests()) + builder.addExecutionMode(shaderEntry, spv::ExecutionModeEarlyFragmentTests); + + if (glslangIntermediate->getPostDepthCoverage()) { + builder.addCapability(spv::CapabilitySampleMaskPostDepthCoverage); + builder.addExecutionMode(shaderEntry, spv::ExecutionModePostDepthCoverage); + builder.addExtension(spv::E_SPV_KHR_post_depth_coverage); + } + + if (glslangIntermediate->getDepth() != glslang::EldUnchanged && glslangIntermediate->isDepthReplacing()) + builder.addExecutionMode(shaderEntry, spv::ExecutionModeDepthReplacing); + +#ifndef GLSLANG_WEB + switch(glslangIntermediate->getDepth()) { + case glslang::EldGreater: mode = spv::ExecutionModeDepthGreater; break; + case glslang::EldLess: mode = spv::ExecutionModeDepthLess; break; + default: mode = spv::ExecutionModeMax; break; + } + 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; + } + if (mode != spv::ExecutionModeMax) { + builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); + if (mode == spv::ExecutionModeShadingRateInterlockOrderedEXT || + mode == spv::ExecutionModeShadingRateInterlockUnorderedEXT) { + builder.addCapability(spv::CapabilityFragmentShaderShadingRateInterlockEXT); + } else if (mode == spv::ExecutionModePixelInterlockOrderedEXT || + mode == spv::ExecutionModePixelInterlockUnorderedEXT) { + builder.addCapability(spv::CapabilityFragmentShaderPixelInterlockEXT); + } else { + builder.addCapability(spv::CapabilityFragmentShaderSampleInterlockEXT); + } + builder.addExtension(spv::E_SPV_EXT_fragment_shader_interlock); + } +#endif + break; + + case EShLangCompute: + builder.addCapability(spv::CapabilityShader); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), + glslangIntermediate->getLocalSize(1), + glslangIntermediate->getLocalSize(2)); + if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupQuads) { + builder.addCapability(spv::CapabilityComputeDerivativeGroupQuadsNV); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupQuadsNV); + builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives); + } else if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupLinear) { + builder.addCapability(spv::CapabilityComputeDerivativeGroupLinearNV); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupLinearNV); + builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives); + } + break; +#ifndef GLSLANG_WEB case EShLangTessEvaluation: case EShLangTessControl: builder.addCapability(spv::CapabilityTessellation); @@ -1468,80 +1580,6 @@ builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices()); break; - case EShLangFragment: - builder.addCapability(spv::CapabilityShader); - if (glslangIntermediate->getPixelCenterInteger()) - builder.addExecutionMode(shaderEntry, spv::ExecutionModePixelCenterInteger); - - if (glslangIntermediate->getOriginUpperLeft()) - builder.addExecutionMode(shaderEntry, spv::ExecutionModeOriginUpperLeft); - else - builder.addExecutionMode(shaderEntry, spv::ExecutionModeOriginLowerLeft); - - if (glslangIntermediate->getEarlyFragmentTests()) - builder.addExecutionMode(shaderEntry, spv::ExecutionModeEarlyFragmentTests); - - if (glslangIntermediate->getPostDepthCoverage()) { - builder.addCapability(spv::CapabilitySampleMaskPostDepthCoverage); - builder.addExecutionMode(shaderEntry, spv::ExecutionModePostDepthCoverage); - builder.addExtension(spv::E_SPV_KHR_post_depth_coverage); - } - - switch(glslangIntermediate->getDepth()) { - case glslang::EldGreater: mode = spv::ExecutionModeDepthGreater; break; - case glslang::EldLess: mode = spv::ExecutionModeDepthLess; break; - default: mode = spv::ExecutionModeMax; break; - } - if (mode != spv::ExecutionModeMax) - builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); - - if (glslangIntermediate->getDepth() != glslang::EldUnchanged && glslangIntermediate->isDepthReplacing()) - builder.addExecutionMode(shaderEntry, spv::ExecutionModeDepthReplacing); - - 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; - } - if (mode != spv::ExecutionModeMax) { - builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); - if (mode == spv::ExecutionModeShadingRateInterlockOrderedEXT || - mode == spv::ExecutionModeShadingRateInterlockUnorderedEXT) { - builder.addCapability(spv::CapabilityFragmentShaderShadingRateInterlockEXT); - } else if (mode == spv::ExecutionModePixelInterlockOrderedEXT || - mode == spv::ExecutionModePixelInterlockUnorderedEXT) { - builder.addCapability(spv::CapabilityFragmentShaderPixelInterlockEXT); - } else { - builder.addCapability(spv::CapabilityFragmentShaderSampleInterlockEXT); - } - builder.addExtension(spv::E_SPV_EXT_fragment_shader_interlock); - } - - break; - - case EShLangCompute: - builder.addCapability(spv::CapabilityShader); - builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), - glslangIntermediate->getLocalSize(1), - glslangIntermediate->getLocalSize(2)); -#ifdef NV_EXTENSIONS - if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupQuads) { - builder.addCapability(spv::CapabilityComputeDerivativeGroupQuadsNV); - builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupQuadsNV); - builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives); - } else if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupLinear) { - builder.addCapability(spv::CapabilityComputeDerivativeGroupLinearNV); - builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupLinearNV); - builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives); - } -#endif - break; - -#ifdef NV_EXTENSIONS case EShLangRayGenNV: case EShLangIntersectNV: case EShLangAnyHitNV: @@ -1592,8 +1630,10 @@ for (auto it = iOSet.cbegin(); it != iOSet.cend(); ++it) entryPoint->addIdOperand(*it); - // 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(); } @@ -1675,6 +1715,7 @@ builder.setAccessChainLValue(id); } +#ifdef ENABLE_HLSL // Process linkage-only nodes for any special additional interface work. if (linkageOnly) { if (glslangIntermediate->getHlslFunctionality1()) { @@ -1706,6 +1747,7 @@ } } } +#endif } bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::TIntermBinary* node) @@ -1800,7 +1842,7 @@ // Load through a block reference is performed with a dot operator that // is mapped to EOpIndexDirectStruct. When we get to the actual reference, // do a load and reset the access chain. - if (node->getLeft()->getBasicType() == glslang::EbtReference && + if (node->getLeft()->isReference() && !node->getLeft()->getType().isArray() && node->getOp() == glslang::EOpIndexDirectStruct) { @@ -2078,6 +2120,7 @@ spv::Builder::AccessChain::CoherentFlags lvalueCoherentFlags; +#ifndef GLSLANG_WEB if (node->getOp() == glslang::EOpAtomicCounterIncrement || node->getOp() == glslang::EOpAtomicCounterDecrement || node->getOp() == glslang::EOpAtomicCounter || @@ -2086,7 +2129,10 @@ lvalueCoherentFlags = builder.getAccessChain().coherentFlags; lvalueCoherentFlags |= TranslateCoherent(operandNode->getAsTyped()->getType()); } else +#endif + { operand = accessChainLoad(node->getOperand()->getType()); + } OpDecorations decorations = { TranslatePrecisionDecoration(node->getOperationPrecision()), TranslateNoContractionDecoration(node->getType().getQualifier()), @@ -2103,7 +2149,7 @@ if (result) { if (invertedType) { result = createInvertedSwizzle(decorations.precision, *node->getOperand(), result); - builder.addDecoration(result, decorations.nonUniform); + decorations.addNonUniform(builder, result); } builder.clearAccessChain(); @@ -2123,6 +2169,7 @@ spv::Id one = 0; if (node->getBasicType() == glslang::EbtFloat) one = builder.makeFloatConstant(1.0F); +#ifndef GLSLANG_WEB else if (node->getBasicType() == glslang::EbtDouble) one = builder.makeDoubleConstant(1.0); else if (node->getBasicType() == glslang::EbtFloat16) @@ -2133,6 +2180,7 @@ one = builder.makeInt16Constant(1); else if (node->getBasicType() == glslang::EbtInt64 || node->getBasicType() == glslang::EbtUint64) one = builder.makeInt64Constant(1); +#endif else one = builder.makeIntConstant(1); glslang::TOperator op; @@ -2160,12 +2208,14 @@ return false; +#ifndef GLSLANG_WEB case glslang::EOpEmitStreamVertex: builder.createNoResultOp(spv::OpEmitStreamVertex, operand); return false; case glslang::EOpEndStreamPrimitive: builder.createNoResultOp(spv::OpEndStreamPrimitive, operand); return false; +#endif default: logger->missingFunctionality("unknown glslang unary"); @@ -2223,14 +2273,15 @@ builder.setAccessChainRValue(result); return false; - } else if (node->getOp() == glslang::EOpImageStore || -#ifdef AMD_EXTENSIONS + } +#ifndef GLSLANG_WEB + else if (node->getOp() == glslang::EOpImageStore || node->getOp() == glslang::EOpImageStoreLod || -#endif node->getOp() == glslang::EOpImageAtomicStore) { // "imageStore" is a special case, which has no result return false; } +#endif glslang::TOperator binOp = glslang::EOpNull; bool reduceComparison = true; @@ -2500,6 +2551,7 @@ // which can be emitted by the one in createBinaryOperation() binOp = glslang::EOpMod; break; + case glslang::EOpEmitVertex: case glslang::EOpEndPrimitive: case glslang::EOpBarrier: @@ -2523,10 +2575,6 @@ // These all have 0 operands and will naturally finish up in the code below for 0 operands break; - case glslang::EOpAtomicStore: - noReturnValue = true; - // fallthrough - case glslang::EOpAtomicLoad: case glslang::EOpAtomicAdd: case glslang::EOpAtomicMin: case glslang::EOpAtomicMax: @@ -2538,6 +2586,14 @@ 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: @@ -2552,7 +2608,17 @@ atomic = true; break; -#ifdef NV_EXTENSIONS + 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: @@ -2560,7 +2626,6 @@ case glslang::EOpWritePackedPrimitiveIndices4x8NV: noReturnValue = true; break; -#endif case glslang::EOpCooperativeMatrixLoad: case glslang::EOpCooperativeMatrixStore: noReturnValue = true; @@ -2570,6 +2635,7 @@ builder.addExtension(spv::E_SPV_EXT_fragment_shader_interlock); noReturnValue = true; break; +#endif default: break; @@ -2617,16 +2683,31 @@ // special case l-value operands; there are just a few bool lvalue = false; switch (node->getOp()) { - case glslang::EOpFrexp: case glslang::EOpModf: 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) + lvalue = true; + break; case glslang::EOpInterpolateAtSample: case glslang::EOpInterpolateAtOffset: -#ifdef AMD_EXTENSIONS case glslang::EOpInterpolateAtVertex: -#endif if (arg == 0) { lvalue = true; @@ -2637,14 +2718,6 @@ 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: @@ -2677,6 +2750,7 @@ if (arg == 1) lvalue = true; break; +#endif default: break; } @@ -2686,6 +2760,7 @@ else glslangOperands[arg]->traverse(this); +#ifndef GLSLANG_WEB if (node->getOp() == glslang::EOpCooperativeMatrixLoad || node->getOp() == glslang::EOpCooperativeMatrixStore) { @@ -2728,6 +2803,7 @@ continue; } } +#endif if (lvalue) { operands.push_back(builder.accessChainGetLValue()); @@ -2740,6 +2816,7 @@ } builder.setLine(node->getLoc().line, node->getLoc().getFilename()); +#ifndef GLSLANG_WEB if (node->getOp() == glslang::EOpCooperativeMatrixLoad) { std::vector idImmOps; @@ -2766,7 +2843,9 @@ builder.createNoResultOp(spv::OpCooperativeMatrixStoreNV, idImmOps); result = 0; - } else if (atomic) { + } else +#endif + if (atomic) { // Handle all atomics result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), lvalueCoherentFlags); } else { @@ -3145,11 +3224,13 @@ builder.clearAccessChain(); break; +#ifndef GLSLANG_WEB case glslang::EOpDemote: builder.createNoResultOp(spv::OpDemoteToHelperInvocationEXT); builder.addExtension(spv::E_SPV_EXT_demote_to_helper_invocation); builder.addCapability(spv::CapabilityDemoteToHelperInvocationEXT); break; +#endif default: assert(0); @@ -3175,53 +3256,51 @@ spv::Id spvType = forcedType == spv::NoType ? convertGlslangToSpvType(node->getType()) : forcedType; - const bool contains16BitType = node->getType().containsBasicType(glslang::EbtFloat16) || - node->getType().containsBasicType(glslang::EbtInt16) || - node->getType().containsBasicType(glslang::EbtUint16); + const bool contains16BitType = node->getType().contains16BitFloat() || + node->getType().contains16BitInt(); if (contains16BitType) { 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::StorageClassPushConstant: - addPre13Extension(spv::E_SPV_KHR_16bit_storage); - builder.addCapability(spv::CapabilityStoragePushConstant16); - 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 builder.addCapability(spv::CapabilityStorageUniform16); break; +#ifndef GLSLANG_WEB + case spv::StorageClassPushConstant: + 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 default: - if (node->getType().containsBasicType(glslang::EbtFloat16)) + if (node->getType().contains16BitFloat()) builder.addCapability(spv::CapabilityFloat16); - if (node->getType().containsBasicType(glslang::EbtInt16) || - node->getType().containsBasicType(glslang::EbtUint16)) + if (node->getType().contains16BitInt()) builder.addCapability(spv::CapabilityInt16); break; } } - const bool contains8BitType = node->getType().containsBasicType(glslang::EbtInt8) || - node->getType().containsBasicType(glslang::EbtUint8); - if (contains8BitType) { + 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); @@ -3239,15 +3318,15 @@ spv::Id TGlslangToSpvTraverser::getSampledType(const glslang::TSampler& sampler) { switch (sampler.type) { + case glslang::EbtInt: return builder.makeIntType(32); + case glslang::EbtUint: return builder.makeUintType(32); case glslang::EbtFloat: return builder.makeFloatType(32); -#ifdef AMD_EXTENSIONS +#ifndef GLSLANG_WEB case glslang::EbtFloat16: builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float_fetch); builder.addCapability(spv::CapabilityFloat16ImageAMD); return builder.makeFloatType(16); #endif - case glslang::EbtInt: return builder.makeIntType(32); - case glslang::EbtUint: return builder.makeUintType(32); default: assert(0); return builder.makeFloatType(32); @@ -3305,23 +3384,30 @@ spvType = builder.makeVoidType(); assert (! type.isArray()); break; + case glslang::EbtBool: + // "transparent" bool doesn't exist in SPIR-V. The GLSL convention is + // a 32-bit int where non-0 means true. + if (explicitLayout != glslang::ElpNone) + spvType = builder.makeUintType(32); + else + spvType = builder.makeBoolType(); + break; + case glslang::EbtInt: + spvType = builder.makeIntType(32); + break; + case glslang::EbtUint: + spvType = builder.makeUintType(32); + break; case glslang::EbtFloat: spvType = builder.makeFloatType(32); break; +#ifndef GLSLANG_WEB case glslang::EbtDouble: spvType = builder.makeFloatType(64); break; case glslang::EbtFloat16: spvType = builder.makeFloatType(16); break; - case glslang::EbtBool: - // "transparent" bool doesn't exist in SPIR-V. The GLSL convention is - // a 32-bit int where non-0 means true. - if (explicitLayout != glslang::ElpNone) - spvType = builder.makeUintType(32); - else - spvType = builder.makeBoolType(); - break; case glslang::EbtInt8: spvType = builder.makeIntType(8); break; @@ -3334,12 +3420,6 @@ case glslang::EbtUint16: spvType = builder.makeUintType(16); break; - case glslang::EbtInt: - spvType = builder.makeIntType(32); - break; - case glslang::EbtUint: - spvType = builder.makeUintType(32); - break; case glslang::EbtInt64: spvType = builder.makeIntType(64); break; @@ -3350,22 +3430,38 @@ builder.addCapability(spv::CapabilityAtomicStorage); spvType = builder.makeUintType(32); break; -#ifdef NV_EXTENSIONS case glslang::EbtAccStructNV: spvType = builder.makeAccelerationStructureNVType(); break; + case glslang::EbtReference: + { + // Make the forward pointer, then recurse to convert the structure type, then + // patch up the forward pointer with a real pointer type. + if (forwardPointers.find(type.getReferentType()) == forwardPointers.end()) { + spv::Id forwardId = builder.makeForwardPointer(spv::StorageClassPhysicalStorageBufferEXT); + forwardPointers[type.getReferentType()] = forwardId; + } + spvType = forwardPointers[type.getReferentType()]; + if (!forwardReferenceOnly) { + spv::Id referentType = convertGlslangToSpvType(*type.getReferentType()); + builder.makePointerFromForwardPointer(spv::StorageClassPhysicalStorageBufferEXT, + forwardPointers[type.getReferentType()], + referentType); + } + } + break; #endif case glslang::EbtSampler: { const glslang::TSampler& sampler = type.getSampler(); - if (sampler.sampler) { - // pure sampler + if (sampler.isPureSampler()) { spvType = builder.makeSamplerType(); } else { // an image is present, make its type - spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler), sampler.shadow, sampler.arrayed, sampler.ms, - sampler.image ? 2 : 1, TranslateImageFormat(type)); - if (sampler.combined) { + spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler), + sampler.isShadow(), sampler.isArrayed(), sampler.isMultiSample(), + sampler.isImageClass() ? 2 : 1, TranslateImageFormat(type)); + if (sampler.isCombined()) { // already has both image and sampler, make the combined type spvType = builder.makeSampledImageType(spvType); } @@ -3391,23 +3487,6 @@ spvType = convertGlslangStructToSpvType(type, glslangMembers, explicitLayout, qualifier); } break; - case glslang::EbtReference: - { - // Make the forward pointer, then recurse to convert the structure type, then - // patch up the forward pointer with a real pointer type. - if (forwardPointers.find(type.getReferentType()) == forwardPointers.end()) { - spv::Id forwardId = builder.makeForwardPointer(spv::StorageClassPhysicalStorageBufferEXT); - forwardPointers[type.getReferentType()] = forwardId; - } - spvType = forwardPointers[type.getReferentType()]; - if (!forwardReferenceOnly) { - spv::Id referentType = convertGlslangToSpvType(*type.getReferentType()); - builder.makePointerFromForwardPointer(spv::StorageClassPhysicalStorageBufferEXT, - forwardPointers[type.getReferentType()], - referentType); - } - } - break; default: assert(0); break; @@ -3426,6 +3505,10 @@ builder.addExtension(spv::E_SPV_NV_cooperative_matrix); if (type.getBasicType() == glslang::EbtFloat16) builder.addCapability(spv::CapabilityFloat16); + if (type.getBasicType() == glslang::EbtUint8 || + type.getBasicType() == glslang::EbtInt8) { + builder.addCapability(spv::CapabilityInt8); + } spv::Id scope = makeArraySizeId(*type.getTypeParameters(), 1); spv::Id rows = makeArraySizeId(*type.getTypeParameters(), 2); @@ -3472,10 +3555,12 @@ if (type.isSizedArray()) spvType = builder.makeArrayType(spvType, makeArraySizeId(*type.getArraySizes(), 0), stride); 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); } +#endif spvType = builder.makeRuntimeArray(spvType); } if (stride > 0) @@ -3491,7 +3576,7 @@ // bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member) { -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB auto& extensions = glslangIntermediate->getRequestedExtensions(); if (member.getFieldName() == "gl_SecondaryViewportMaskNV" && @@ -3558,7 +3643,7 @@ // Make forward pointers for any pointer members, and create a list of members to // convert to spirv types after creating the struct. - if (glslangMember.getBasicType() == glslang::EbtReference) { + if (glslangMember.isReference()) { if (forwardPointers.find(glslangMember.getReferentType()) == forwardPointers.end()) { deferredForwardPointers.push_back(std::make_pair(&glslangMember, memberQualifier)); } @@ -3625,13 +3710,14 @@ glslangIntermediate->getSource() == glslang::EShSourceHlsl) { builder.addMemberDecoration(spvType, member, TranslateInterpolationDecoration(memberQualifier)); builder.addMemberDecoration(spvType, member, TranslateAuxiliaryStorageDecoration(memberQualifier)); -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB addMeshNVDecoration(spvType, member, memberQualifier); #endif } } builder.addMemberDecoration(spvType, member, TranslateInvariantDecoration(memberQualifier)); +#ifndef GLSLANG_WEB if (type.getBasicType() == glslang::EbtBlock && qualifier.storage == glslang::EvqBuffer) { // Add memory decorations only to top-level members of shader storage block @@ -3641,6 +3727,8 @@ builder.addMemberDecoration(spvType, member, memory[i]); } +#endif + // Location assignment was already completed correctly by the front end, // just track whether a member needs to be decorated. // Ignore member locations if the container is an array, as that's @@ -3677,6 +3765,7 @@ if (builtIn != spv::BuiltInMax) builder.addMemberDecoration(spvType, member, spv::DecorationBuiltIn, (int)builtIn); +#ifndef GLSLANG_WEB // nonuniform builder.addMemberDecoration(spvType, member, TranslateNonUniformDecoration(glslangMember.getQualifier())); @@ -3686,7 +3775,6 @@ memberQualifier.semanticName); } -#ifdef NV_EXTENSIONS if (builtIn == spv::BuiltInLayer) { // SPV_NV_viewport_array2 extension if (glslangMember.getQualifier().layoutViewportRelative){ @@ -4025,10 +4113,10 @@ const glslang::TBuiltInVariable glslangBuiltIn = members[glslangMember].type->getQualifier().builtIn; switch (glslangBuiltIn) { + case glslang::EbvPointSize: +#ifndef GLSLANG_WEB case glslang::EbvClipDistance: case glslang::EbvCullDistance: - case glslang::EbvPointSize: -#ifdef NV_EXTENSIONS case glslang::EbvViewportMaskNV: case glslang::EbvSecondaryPositionNV: case glslang::EbvSecondaryViewportMaskNV: @@ -4091,15 +4179,17 @@ if (paramPrecision != spv::NoPrecision) decorations.push_back(paramPrecision); TranslateMemoryDecoration(type.getQualifier(), decorations, useVulkanMemoryModel); - if (type.getBasicType() == glslang::EbtReference) { + if (type.isReference()) { // Original and non-writable params pass the pointer directly and // use restrict/aliased, others are stored to a pointer in Function // 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); } } }; @@ -4127,8 +4217,12 @@ std::vector> paramDecorations; // list of decorations per parameter glslang::TIntermSequence& parameters = glslFunction->getSequence()[0]->getAsAggregate()->getSequence(); +#ifdef ENABLE_HLSL bool implicitThis = (int)parameters.size() > 0 && parameters[0]->getAsSymbolNode()->getName() == glslangIntermediate->implicitThisName; +#else + bool implicitThis = false; +#endif paramDecorations.resize(parameters.size()); for (int p = 0; p < (int)parameters.size(); ++p) { @@ -4162,13 +4256,11 @@ builder.addName(function->getParamId(p), parameters[p]->getAsSymbolNode()->getName().c_str()); const glslang::TType& paramType = parameters[p]->getAsTyped()->getType(); - if (paramType.containsBasicType(glslang::EbtInt8) || - paramType.containsBasicType(glslang::EbtUint8)) + if (paramType.contains8BitInt()) builder.addCapability(spv::CapabilityInt8); - if (paramType.containsBasicType(glslang::EbtInt16) || - paramType.containsBasicType(glslang::EbtUint16)) + if (paramType.contains16BitInt()) builder.addCapability(spv::CapabilityInt16); - if (paramType.containsBasicType(glslang::EbtFloat16)) + if (paramType.contains16BitFloat()) builder.addCapability(spv::CapabilityFloat16); } } @@ -4214,13 +4306,13 @@ glslang::TSampler sampler = {}; bool cubeCompare = false; -#ifdef AMD_EXTENSIONS +#ifndef GLSLANG_WEB bool f16ShadowCompare = false; #endif if (node.isTexture() || node.isImage()) { sampler = glslangArguments[0]->getAsTyped()->getType().getSampler(); cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow; -#ifdef AMD_EXTENSIONS +#ifndef GLSLANG_WEB f16ShadowCompare = sampler.shadow && glslangArguments[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16; #endif } @@ -4229,6 +4321,7 @@ builder.clearAccessChain(); glslangArguments[i]->traverse(this); +#ifndef GLSLANG_WEB // Special case l-value operands bool lvalue = false; switch (node.getOp()) { @@ -4249,7 +4342,6 @@ if ((sampler.ms && i == 3) || (! sampler.ms && i == 2)) lvalue = true; break; -#ifdef AMD_EXTENSIONS case glslang::EOpSparseTexture: if (((cubeCompare || f16ShadowCompare) && i == 3) || (! (cubeCompare || f16ShadowCompare) && i == 2)) lvalue = true; @@ -4263,21 +4355,6 @@ if ((f16ShadowCompare && i == 4) || (! f16ShadowCompare && i == 3)) lvalue = true; break; -#else - case glslang::EOpSparseTexture: - if ((cubeCompare && i == 3) || (! cubeCompare && i == 2)) - lvalue = true; - break; - case glslang::EOpSparseTextureClamp: - if ((cubeCompare && i == 4) || (! cubeCompare && i == 3)) - lvalue = true; - break; - case glslang::EOpSparseTextureLod: - case glslang::EOpSparseTextureOffset: - if (i == 3) - lvalue = true; - break; -#endif case glslang::EOpSparseTextureFetch: if ((sampler.dim != glslang::EsdRect && i == 3) || (sampler.dim == glslang::EsdRect && i == 2)) lvalue = true; @@ -4286,7 +4363,6 @@ if ((sampler.dim != glslang::EsdRect && i == 4) || (sampler.dim == glslang::EsdRect && i == 3)) lvalue = true; break; -#ifdef AMD_EXTENSIONS case glslang::EOpSparseTextureLodOffset: case glslang::EOpSparseTextureGrad: case glslang::EOpSparseTextureOffsetClamp: @@ -4302,23 +4378,6 @@ if ((f16ShadowCompare && i == 7) || (! f16ShadowCompare && i == 6)) lvalue = true; break; -#else - case glslang::EOpSparseTextureLodOffset: - case glslang::EOpSparseTextureGrad: - case glslang::EOpSparseTextureOffsetClamp: - if (i == 4) - lvalue = true; - break; - case glslang::EOpSparseTextureGradOffset: - case glslang::EOpSparseTextureGradClamp: - if (i == 5) - lvalue = true; - break; - case glslang::EOpSparseTextureGradOffsetClamp: - if (i == 6) - lvalue = true; - break; -#endif case glslang::EOpSparseTextureGather: if ((sampler.shadow && i == 3) || (! sampler.shadow && i == 2)) lvalue = true; @@ -4328,7 +4387,6 @@ if ((sampler.shadow && i == 4) || (! sampler.shadow && i == 3)) lvalue = true; break; -#ifdef AMD_EXTENSIONS case glslang::EOpSparseTextureGatherLod: if (i == 3) lvalue = true; @@ -4342,8 +4400,6 @@ if (i == 3) lvalue = true; break; -#endif -#ifdef NV_EXTENSIONS case glslang::EOpImageSampleFootprintNV: if (i == 4) lvalue = true; @@ -4361,7 +4417,6 @@ if (i == 7) lvalue = true; break; -#endif default: break; } @@ -4371,6 +4426,7 @@ lvalueCoherentFlags = builder.getAccessChain().coherentFlags; lvalueCoherentFlags |= TranslateCoherent(glslangArguments[i]->getAsTyped()->getType()); } else +#endif arguments.push_back(accessChainLoad(glslangArguments[i]->getAsTyped()->getType())); } } @@ -4395,7 +4451,9 @@ ? node->getAsAggregate()->getSequence()[0]->getAsTyped()->getType() : node->getAsUnaryNode()->getOperand()->getAsTyped()->getType(); const glslang::TSampler sampler = imageType.getSampler(); -#ifdef AMD_EXTENSIONS +#ifdef GLSLANG_WEB + const bool f16ShadowCompare = false; +#else bool f16ShadowCompare = (sampler.shadow && node->getAsAggregate()) ? node->getAsAggregate()->getSequence()[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16 : false; @@ -4442,6 +4500,7 @@ return builder.createTextureQueryCall(spv::OpImageQuerySizeLod, params, isUnsignedResult); } else return builder.createTextureQueryCall(spv::OpImageQuerySize, params, isUnsignedResult); +#ifndef GLSLANG_WEB case glslang::EOpImageQuerySamples: case glslang::EOpTextureQuerySamples: return builder.createTextureQueryCall(spv::OpImageQuerySamples, params, isUnsignedResult); @@ -4452,6 +4511,7 @@ return builder.createTextureQueryCall(spv::OpImageQueryLevels, params, isUnsignedResult); case glslang::EOpSparseTexelsResident: return builder.createUnaryOp(spv::OpImageSparseTexelsResident, builder.makeBoolType(), arguments[0]); +#endif default: assert(0); break; @@ -4493,12 +4553,12 @@ operands.push_back(coord); spv::IdImmediate imageOperands = { false, spv::ImageOperandsMaskNone }; imageOperands.word = imageOperands.word | signExtensionMask(); - if (sampler.ms) { + if (sampler.isMultiSample()) { imageOperands.word = imageOperands.word | spv::ImageOperandsSampleMask; } if (imageOperands.word != spv::ImageOperandsMaskNone) { operands.push_back(imageOperands); - if (sampler.ms) { + if (sampler.isMultiSample()) { spv::IdImmediate imageOperand = { true, *(opIt++) }; operands.push_back(imageOperand); } @@ -4510,22 +4570,16 @@ spv::IdImmediate coord = { true, *(opIt++) }; operands.push_back(coord); -#ifdef AMD_EXTENSIONS if (node->getOp() == glslang::EOpImageLoad || node->getOp() == glslang::EOpImageLoadLod) { -#else - if (node->getOp() == glslang::EOpImageLoad) { -#endif spv::ImageOperandsMask mask = spv::ImageOperandsMaskNone; - if (sampler.ms) { + if (sampler.isMultiSample()) { mask = mask | spv::ImageOperandsSampleMask; } -#ifdef AMD_EXTENSIONS if (cracked.lod) { builder.addExtension(spv::E_SPV_AMD_shader_image_load_store_lod); builder.addCapability(spv::CapabilityImageReadWriteLodAMD); mask = mask | spv::ImageOperandsLodMask; } -#endif mask = mask | TranslateImageOperands(TranslateCoherent(imageType)); mask = (spv::ImageOperandsMask)(mask & ~spv::ImageOperandsMakeTexelAvailableKHRMask); mask = mask | signExtensionMask(); @@ -4537,12 +4591,10 @@ spv::IdImmediate imageOperand = { true, *opIt++ }; operands.push_back(imageOperand); } -#ifdef AMD_EXTENSIONS if (mask & spv::ImageOperandsLodMask) { spv::IdImmediate imageOperand = { true, *opIt++ }; operands.push_back(imageOperand); } -#endif if (mask & spv::ImageOperandsMakeTexelVisibleKHRMask) { spv::IdImmediate imageOperand = { true, builder.makeUintConstant(TranslateMemoryScope(TranslateCoherent(imageType))) }; @@ -4560,18 +4612,10 @@ result[0] = builder.createConstructor(precision, result, convertGlslangToSpvType(node->getType())); return result[0]; -#ifdef AMD_EXTENSIONS } else if (node->getOp() == glslang::EOpImageStore || node->getOp() == glslang::EOpImageStoreLod) { -#else - } else if (node->getOp() == glslang::EOpImageStore) { -#endif // Push the texel value before the operands -#ifdef AMD_EXTENSIONS - if (sampler.ms || cracked.lod) { -#else - if (sampler.ms) { -#endif + if (sampler.isMultiSample() || cracked.lod) { spv::IdImmediate texel = { true, *(opIt + 1) }; operands.push_back(texel); } else { @@ -4580,16 +4624,14 @@ } spv::ImageOperandsMask mask = spv::ImageOperandsMaskNone; - if (sampler.ms) { + if (sampler.isMultiSample()) { mask = mask | spv::ImageOperandsSampleMask; } -#ifdef AMD_EXTENSIONS if (cracked.lod) { builder.addExtension(spv::E_SPV_AMD_shader_image_load_store_lod); builder.addCapability(spv::CapabilityImageReadWriteLodAMD); mask = mask | spv::ImageOperandsLodMask; } -#endif mask = mask | TranslateImageOperands(TranslateCoherent(imageType)); mask = (spv::ImageOperandsMask)(mask & ~spv::ImageOperandsMakeTexelVisibleKHRMask); mask = mask | signExtensionMask(); @@ -4601,12 +4643,10 @@ spv::IdImmediate imageOperand = { true, *opIt++ }; operands.push_back(imageOperand); } -#ifdef AMD_EXTENSIONS if (mask & spv::ImageOperandsLodMask) { spv::IdImmediate imageOperand = { true, *opIt++ }; operands.push_back(imageOperand); } -#endif if (mask & spv::ImageOperandsMakeTexelAvailableKHRMask) { spv::IdImmediate imageOperand = { true, builder.makeUintConstant(TranslateMemoryScope(TranslateCoherent(imageType))) }; @@ -4617,28 +4657,22 @@ if (builder.getImageTypeFormat(builder.getImageType(operands.front().word)) == spv::ImageFormatUnknown) builder.addCapability(spv::CapabilityStorageImageWriteWithoutFormat); return spv::NoResult; -#ifdef AMD_EXTENSIONS } else if (node->getOp() == glslang::EOpSparseImageLoad || node->getOp() == glslang::EOpSparseImageLoadLod) { -#else - } else if (node->getOp() == glslang::EOpSparseImageLoad) { -#endif builder.addCapability(spv::CapabilitySparseResidency); if (builder.getImageTypeFormat(builder.getImageType(operands.front().word)) == spv::ImageFormatUnknown) builder.addCapability(spv::CapabilityStorageImageReadWithoutFormat); spv::ImageOperandsMask mask = spv::ImageOperandsMaskNone; - if (sampler.ms) { + if (sampler.isMultiSample()) { mask = mask | spv::ImageOperandsSampleMask; } -#ifdef AMD_EXTENSIONS if (cracked.lod) { builder.addExtension(spv::E_SPV_AMD_shader_image_load_store_lod); builder.addCapability(spv::CapabilityImageReadWriteLodAMD); mask = mask | spv::ImageOperandsLodMask; } -#endif mask = mask | TranslateImageOperands(TranslateCoherent(imageType)); mask = (spv::ImageOperandsMask)(mask & ~spv::ImageOperandsMakeTexelAvailableKHRMask); mask = mask | signExtensionMask(); @@ -4650,12 +4684,10 @@ spv::IdImmediate imageOperand = { true, *opIt++ }; operands.push_back(imageOperand); } -#ifdef AMD_EXTENSIONS if (mask & spv::ImageOperandsLodMask) { spv::IdImmediate imageOperand = { true, *opIt++ }; operands.push_back(imageOperand); } -#endif if (mask & spv::ImageOperandsMakeTexelVisibleKHRMask) { spv::IdImmediate imageOperand = { true, builder.makeUintConstant(TranslateMemoryScope(TranslateCoherent(imageType))) }; operands.push_back(imageOperand); @@ -4678,7 +4710,7 @@ // GLSL "IMAGE_PARAMS" will involve in constructing an image texel pointer and this pointer, // as the first source operand, is required by SPIR-V atomic operations. // For non-MS, the sample value should be 0 - spv::IdImmediate sample = { true, sampler.ms ? *(opIt++) : builder.makeUintConstant(0) }; + spv::IdImmediate sample = { true, sampler.isMultiSample() ? *(opIt++) : builder.makeUintConstant(0) }; operands.push_back(sample); spv::Id resultTypeId; @@ -4700,7 +4732,7 @@ } } -#ifdef AMD_EXTENSIONS +#ifndef GLSLANG_WEB // Check for fragment mask functions other than queries if (cracked.fragMask) { assert(sampler.ms); @@ -4741,45 +4773,32 @@ // Check for texture functions other than queries bool sparse = node->isSparseTexture(); -#ifdef NV_EXTENSIONS bool imageFootprint = node->isImageFootprint(); -#endif - - bool cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow; + bool cubeCompare = sampler.dim == glslang::EsdCube && sampler.isArrayed() && sampler.isShadow(); // check for bias argument bool bias = false; -#ifdef AMD_EXTENSIONS if (! cracked.lod && ! cracked.grad && ! cracked.fetch && ! cubeCompare) { -#else - if (! cracked.lod && ! cracked.gather && ! cracked.grad && ! cracked.fetch && ! cubeCompare) { -#endif int nonBiasArgCount = 2; -#ifdef AMD_EXTENSIONS if (cracked.gather) ++nonBiasArgCount; // comp argument should be present when bias argument is present if (f16ShadowCompare) ++nonBiasArgCount; -#endif if (cracked.offset) ++nonBiasArgCount; -#ifdef AMD_EXTENSIONS else if (cracked.offsets) ++nonBiasArgCount; -#endif if (cracked.grad) nonBiasArgCount += 2; if (cracked.lodClamp) ++nonBiasArgCount; if (sparse) ++nonBiasArgCount; -#ifdef NV_EXTENSIONS if (imageFootprint) //Following three extra arguments // int granularity, bool coarse, out gl_TextureFootprint2DNV footprint nonBiasArgCount += 3; -#endif if ((int)arguments.size() > nonBiasArgCount) bias = true; } @@ -4791,7 +4810,7 @@ params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); } -#ifdef AMD_EXTENSIONS +#ifndef GLSLANG_WEB if (cracked.gather) { const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions(); if (bias || cracked.lod || @@ -4809,11 +4828,7 @@ bool noImplicitLod = false; // sort out where Dref is coming from -#ifdef AMD_EXTENSIONS if (cubeCompare || f16ShadowCompare) { -#else - if (cubeCompare) { -#endif params.Dref = arguments[2]; ++extraArgs; } else if (sampler.shadow && cracked.gather) { @@ -4834,19 +4849,15 @@ if (cracked.lod) { params.lod = arguments[2 + extraArgs]; ++extraArgs; - } else if (glslangIntermediate->getStage() != EShLangFragment -#ifdef NV_EXTENSIONS - // NV_compute_shader_derivatives layout qualifiers allow for implicit LODs - && !(glslangIntermediate->getStage() == EShLangCompute && - (glslangIntermediate->getLayoutDerivativeModeNone() != glslang::LayoutDerivativeNone)) -#endif - ) { + } else if (glslangIntermediate->getStage() != EShLangFragment && + !(glslangIntermediate->getStage() == EShLangCompute && + glslangIntermediate->hasLayoutDerivativeModeNone())) { // we need to invent the default lod for an explicit lod instruction for a non-fragment stage noImplicitLod = true; } // multisample - if (sampler.ms) { + if (sampler.isMultiSample()) { params.sample = arguments[2 + extraArgs]; // For MS, "sample" should be specified ++extraArgs; } @@ -4867,6 +4878,7 @@ ++extraArgs; } +#ifndef GLSLANG_WEB // lod clamp if (cracked.lodClamp) { params.lodClamp = arguments[2 + extraArgs]; @@ -4877,7 +4889,6 @@ params.texelOut = arguments[2 + extraArgs]; ++extraArgs; } - // gather component if (cracked.gather && ! sampler.shadow) { // default component is 0, if missing, otherwise an argument @@ -4887,7 +4898,6 @@ } else params.component = builder.makeIntConstant(0); } -#ifdef NV_EXTENSIONS spv::Id resultStruct = spv::NoResult; if (imageFootprint) { //Following three extra arguments @@ -4904,7 +4914,7 @@ ++extraArgs; } -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB if (imageFootprint) { builder.addExtension(spv::E_SPV_NV_shader_image_footprint); builder.addCapability(spv::CapabilityImageFootprintNV); @@ -4987,6 +4997,7 @@ } } +#ifndef GLSLANG_WEB // nonprivate if (imageType.getQualifier().nonprivate) { params.nonprivate = true; @@ -4996,6 +5007,7 @@ if (imageType.getQualifier().volatil) { params.volatil = true; } +#endif std::vector result( 1, builder.createTextureCall(precision, resultType(), sparse, cracked.fetch, cracked.proj, cracked.gather, @@ -5230,6 +5242,30 @@ 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: @@ -5256,8 +5292,8 @@ builder.promoteScalar(decorations.precision, left, right); spv::Id result = builder.createBinOp(binOp, typeId, left, right); - builder.addDecoration(result, decorations.noContraction); - builder.addDecoration(result, decorations.nonUniform); + decorations.addNoContraction(builder, result); + decorations.addNonUniform(builder, result); return builder.setPrecision(result, decorations.precision); } @@ -5269,7 +5305,7 @@ if (reduceComparison && (op == glslang::EOpEqual || op == glslang::EOpNotEqual) && (builder.isVector(left) || builder.isMatrix(left) || builder.isAggregate(left))) { spv::Id result = builder.createCompositeCompare(decorations.precision, left, right, op == glslang::EOpEqual); - builder.addDecoration(result, decorations.nonUniform); + decorations.addNonUniform(builder, result); return result; } @@ -5330,8 +5366,8 @@ if (binOp != spv::OpNop) { spv::Id result = builder.createBinOp(binOp, typeId, left, right); - builder.addDecoration(result, decorations.noContraction); - builder.addDecoration(result, decorations.nonUniform); + decorations.addNoContraction(builder, result); + decorations.addNonUniform(builder, result); return builder.setPrecision(result, decorations.precision); } @@ -5395,8 +5431,8 @@ if (firstClass) { spv::Id result = builder.createBinOp(op, typeId, left, right); - builder.addDecoration(result, decorations.noContraction); - builder.addDecoration(result, decorations.nonUniform); + decorations.addNoContraction(builder, result); + decorations.addNonUniform(builder, result); return builder.setPrecision(result, decorations.precision); } @@ -5435,14 +5471,14 @@ spv::Id leftVec = leftMat ? builder.createCompositeExtract( left, vecType, indexes) : smearVec; spv::Id rightVec = rightMat ? builder.createCompositeExtract(right, vecType, indexes) : smearVec; spv::Id result = builder.createBinOp(op, vecType, leftVec, rightVec); - builder.addDecoration(result, decorations.noContraction); - builder.addDecoration(result, decorations.nonUniform); + decorations.addNoContraction(builder, result); + decorations.addNonUniform(builder, result); results.push_back(builder.setPrecision(result, decorations.precision)); } // put the pieces together spv::Id result = builder.setPrecision(builder.createCompositeConstruct(typeId, results), decorations.precision); - builder.addDecoration(result, decorations.nonUniform); + decorations.addNonUniform(builder, result); return result; } default: @@ -5620,6 +5656,7 @@ case glslang::EOpUnpackHalf2x16: libCall = spv::GLSLstd450UnpackHalf2x16; break; +#ifndef GLSLANG_WEB case glslang::EOpPackSnorm4x8: libCall = spv::GLSLstd450PackSnorm4x8; break; @@ -5638,6 +5675,7 @@ case glslang::EOpUnpackDouble2x32: libCall = spv::GLSLstd450UnpackDouble2x32; break; +#endif case glslang::EOpPackInt2x32: case glslang::EOpUnpackInt2x32: @@ -5671,6 +5709,28 @@ case glslang::EOpFwidth: unaryOp = spv::OpFwidth; break; + + case glslang::EOpAny: + unaryOp = spv::OpAny; + break; + case glslang::EOpAll: + unaryOp = spv::OpAll; + break; + + case glslang::EOpAbs: + if (isFloat) + libCall = spv::GLSLstd450FAbs; + else + libCall = spv::GLSLstd450SAbs; + break; + case glslang::EOpSign: + if (isFloat) + libCall = spv::GLSLstd450FSign; + else + libCall = spv::GLSLstd450SSign; + break; + +#ifndef GLSLANG_WEB case glslang::EOpDPdxFine: unaryOp = spv::OpDPdxFine; break; @@ -5690,32 +5750,10 @@ unaryOp = spv::OpFwidthCoarse; break; case glslang::EOpInterpolateAtCentroid: -#ifdef AMD_EXTENSIONS if (typeProxy == glslang::EbtFloat16) builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float); -#endif libCall = spv::GLSLstd450InterpolateAtCentroid; break; - case glslang::EOpAny: - unaryOp = spv::OpAny; - break; - case glslang::EOpAll: - unaryOp = spv::OpAll; - break; - - case glslang::EOpAbs: - if (isFloat) - libCall = spv::GLSLstd450FAbs; - else - libCall = spv::GLSLstd450SAbs; - break; - case glslang::EOpSign: - if (isFloat) - libCall = spv::GLSLstd450FSign; - else - libCall = spv::GLSLstd450SSign; - break; - case glslang::EOpAtomicCounterIncrement: case glslang::EOpAtomicCounterDecrement: case glslang::EOpAtomicCounter: @@ -5742,12 +5780,23 @@ 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: case glslang::EOpAllInvocations: case glslang::EOpAllInvocationsEqual: -#ifdef AMD_EXTENSIONS case glslang::EOpMinInvocations: case glslang::EOpMaxInvocations: case glslang::EOpAddInvocations: @@ -5766,7 +5815,6 @@ case glslang::EOpMinInvocationsExclusiveScanNonUniform: case glslang::EOpMaxInvocationsExclusiveScanNonUniform: case glslang::EOpAddInvocationsExclusiveScanNonUniform: -#endif { std::vector operands; operands.push_back(operand); @@ -5811,7 +5859,6 @@ operands.push_back(operand); return createSubgroupOperation(op, typeId, operands, typeProxy); } -#ifdef AMD_EXTENSIONS case glslang::EOpMbcnt: extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot); libCall = spv::MbcntAMD; @@ -5826,15 +5873,13 @@ extBuiltins = getExtBuiltins(spv::E_SPV_AMD_gcn_shader); libCall = spv::CubeFaceCoordAMD; break; -#endif -#ifdef NV_EXTENSIONS case glslang::EOpSubgroupPartition: unaryOp = spv::OpGroupNonUniformPartitionNV; break; -#endif case glslang::EOpConstructReference: unaryOp = spv::OpBitcast; break; +#endif case glslang::EOpCopyObject: unaryOp = spv::OpCopyObject; @@ -5853,8 +5898,8 @@ id = builder.createUnaryOp(unaryOp, typeId, operand); } - builder.addDecoration(id, decorations.noContraction); - builder.addDecoration(id, decorations.nonUniform); + decorations.addNoContraction(builder, id); + decorations.addNonUniform(builder, id); return builder.setPrecision(id, decorations.precision); } @@ -5882,14 +5927,14 @@ indexes.push_back(c); spv::Id srcVec = builder.createCompositeExtract(operand, srcVecType, indexes); spv::Id destVec = builder.createUnaryOp(op, destVecType, srcVec); - builder.addDecoration(destVec, decorations.noContraction); - builder.addDecoration(destVec, decorations.nonUniform); + decorations.addNoContraction(builder, destVec); + decorations.addNonUniform(builder, destVec); results.push_back(builder.setPrecision(destVec, decorations.precision)); } // put the pieces together spv::Id result = builder.setPrecision(builder.createCompositeConstruct(typeId, results), decorations.precision); - builder.addDecoration(result, decorations.nonUniform); + decorations.addNonUniform(builder, result); return result; } @@ -5981,110 +6026,49 @@ int vectorSize = builder.isVectorType(destType) ? builder.getNumTypeComponents(destType) : 0; switch (op) { - case glslang::EOpConvInt8ToBool: - case glslang::EOpConvUint8ToBool: - zero = builder.makeUint8Constant(0); - zero = makeSmearedConstant(zero, vectorSize); - return builder.createBinOp(spv::OpINotEqual, destType, operand, zero); - case glslang::EOpConvInt16ToBool: - case glslang::EOpConvUint16ToBool: - zero = builder.makeUint16Constant(0); - zero = makeSmearedConstant(zero, vectorSize); - return builder.createBinOp(spv::OpINotEqual, destType, operand, zero); case glslang::EOpConvIntToBool: case glslang::EOpConvUintToBool: zero = builder.makeUintConstant(0); zero = makeSmearedConstant(zero, vectorSize); return builder.createBinOp(spv::OpINotEqual, destType, operand, zero); - case glslang::EOpConvInt64ToBool: - case glslang::EOpConvUint64ToBool: - zero = builder.makeUint64Constant(0); - zero = makeSmearedConstant(zero, vectorSize); - return builder.createBinOp(spv::OpINotEqual, destType, operand, zero); - case glslang::EOpConvFloatToBool: zero = builder.makeFloatConstant(0.0F); zero = makeSmearedConstant(zero, vectorSize); return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero); - - case glslang::EOpConvDoubleToBool: - zero = builder.makeDoubleConstant(0.0); - zero = makeSmearedConstant(zero, vectorSize); - return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero); - - case glslang::EOpConvFloat16ToBool: - zero = builder.makeFloat16Constant(0.0F); - zero = makeSmearedConstant(zero, vectorSize); - return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero); - case glslang::EOpConvBoolToFloat: convOp = spv::OpSelect; zero = builder.makeFloatConstant(0.0F); one = builder.makeFloatConstant(1.0F); break; - case glslang::EOpConvBoolToDouble: - convOp = spv::OpSelect; - zero = builder.makeDoubleConstant(0.0); - one = builder.makeDoubleConstant(1.0); - break; - - case glslang::EOpConvBoolToFloat16: - convOp = spv::OpSelect; - zero = builder.makeFloat16Constant(0.0F); - one = builder.makeFloat16Constant(1.0F); - break; - - case glslang::EOpConvBoolToInt8: - zero = builder.makeInt8Constant(0); - one = builder.makeInt8Constant(1); - convOp = spv::OpSelect; - break; - - case glslang::EOpConvBoolToUint8: - zero = builder.makeUint8Constant(0); - one = builder.makeUint8Constant(1); - convOp = spv::OpSelect; - break; - - case glslang::EOpConvBoolToInt16: - zero = builder.makeInt16Constant(0); - one = builder.makeInt16Constant(1); - convOp = spv::OpSelect; - break; - - case glslang::EOpConvBoolToUint16: - zero = builder.makeUint16Constant(0); - one = builder.makeUint16Constant(1); - convOp = spv::OpSelect; - break; - case glslang::EOpConvBoolToInt: case glslang::EOpConvBoolToInt64: - if (op == glslang::EOpConvBoolToInt64) +#ifndef GLSLANG_WEB + if (op == glslang::EOpConvBoolToInt64) { zero = builder.makeInt64Constant(0); - else - zero = builder.makeIntConstant(0); - - if (op == glslang::EOpConvBoolToInt64) one = builder.makeInt64Constant(1); - else + } else +#endif + { + zero = builder.makeIntConstant(0); one = builder.makeIntConstant(1); + } convOp = spv::OpSelect; break; case glslang::EOpConvBoolToUint: case glslang::EOpConvBoolToUint64: - if (op == glslang::EOpConvBoolToUint64) +#ifndef GLSLANG_WEB + if (op == glslang::EOpConvBoolToUint64) { zero = builder.makeUint64Constant(0); - else - zero = builder.makeUintConstant(0); - - if (op == glslang::EOpConvBoolToUint64) one = builder.makeUint64Constant(1); - else + } else +#endif + { + zero = builder.makeUintConstant(0); one = builder.makeUintConstant(1); + } convOp = spv::OpSelect; break; @@ -6119,17 +6103,6 @@ convOp = spv::OpConvertUToF; break; - case glslang::EOpConvDoubleToFloat: - case glslang::EOpConvFloatToDouble: - case glslang::EOpConvDoubleToFloat16: - case glslang::EOpConvFloat16ToDouble: - case glslang::EOpConvFloatToFloat16: - case glslang::EOpConvFloat16ToFloat: - convOp = spv::OpFConvert; - if (builder.isMatrixType(destType)) - return createUnaryMatrixOperation(convOp, decorations, destType, operand, typeProxy); - break; - case glslang::EOpConvFloat16ToInt8: case glslang::EOpConvFloatToInt8: case glslang::EOpConvDoubleToInt8: @@ -6155,13 +6128,16 @@ case glslang::EOpConvInt64ToUint64: if (builder.isInSpecConstCodeGenMode()) { // Build zero scalar or vector for OpIAdd. +#ifndef GLSLANG_WEB if(op == glslang::EOpConvUint8ToInt8 || op == glslang::EOpConvInt8ToUint8) { zero = builder.makeUint8Constant(0); } else if (op == glslang::EOpConvUint16ToInt16 || op == glslang::EOpConvInt16ToUint16) { zero = builder.makeUint16Constant(0); } else if (op == glslang::EOpConvUint64ToInt64 || op == glslang::EOpConvInt64ToUint64) { zero = builder.makeUint64Constant(0); - } else { + } else +#endif + { zero = builder.makeUintConstant(0); } zero = makeSmearedConstant(zero, vectorSize); @@ -6188,6 +6164,71 @@ convOp = spv::OpConvertFToU; break; +#ifndef GLSLANG_WEB + case glslang::EOpConvInt8ToBool: + case glslang::EOpConvUint8ToBool: + zero = builder.makeUint8Constant(0); + zero = makeSmearedConstant(zero, vectorSize); + return builder.createBinOp(spv::OpINotEqual, destType, operand, zero); + case glslang::EOpConvInt16ToBool: + case glslang::EOpConvUint16ToBool: + zero = builder.makeUint16Constant(0); + zero = makeSmearedConstant(zero, vectorSize); + return builder.createBinOp(spv::OpINotEqual, destType, operand, zero); + case glslang::EOpConvInt64ToBool: + case glslang::EOpConvUint64ToBool: + zero = builder.makeUint64Constant(0); + zero = makeSmearedConstant(zero, vectorSize); + return builder.createBinOp(spv::OpINotEqual, destType, operand, zero); + case glslang::EOpConvDoubleToBool: + zero = builder.makeDoubleConstant(0.0); + zero = makeSmearedConstant(zero, vectorSize); + return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero); + case glslang::EOpConvFloat16ToBool: + zero = builder.makeFloat16Constant(0.0F); + zero = makeSmearedConstant(zero, vectorSize); + return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero); + case glslang::EOpConvBoolToDouble: + convOp = spv::OpSelect; + zero = builder.makeDoubleConstant(0.0); + one = builder.makeDoubleConstant(1.0); + break; + case glslang::EOpConvBoolToFloat16: + convOp = spv::OpSelect; + zero = builder.makeFloat16Constant(0.0F); + one = builder.makeFloat16Constant(1.0F); + break; + case glslang::EOpConvBoolToInt8: + zero = builder.makeInt8Constant(0); + one = builder.makeInt8Constant(1); + convOp = spv::OpSelect; + break; + case glslang::EOpConvBoolToUint8: + zero = builder.makeUint8Constant(0); + one = builder.makeUint8Constant(1); + convOp = spv::OpSelect; + break; + case glslang::EOpConvBoolToInt16: + zero = builder.makeInt16Constant(0); + one = builder.makeInt16Constant(1); + convOp = spv::OpSelect; + break; + case glslang::EOpConvBoolToUint16: + zero = builder.makeUint16Constant(0); + one = builder.makeUint16Constant(1); + convOp = spv::OpSelect; + break; + case glslang::EOpConvDoubleToFloat: + case glslang::EOpConvFloatToDouble: + case glslang::EOpConvDoubleToFloat16: + case glslang::EOpConvFloat16ToDouble: + case glslang::EOpConvFloatToFloat16: + case glslang::EOpConvFloat16ToFloat: + convOp = spv::OpFConvert; + if (builder.isMatrixType(destType)) + return createUnaryMatrixOperation(convOp, decorations, destType, operand, typeProxy); + break; + case glslang::EOpConvInt8ToInt16: case glslang::EOpConvInt8ToInt: case glslang::EOpConvInt8ToInt64: @@ -6298,6 +6339,15 @@ case glslang::EOpConvPtrToUint64: convOp = spv::OpConvertPtrToU; 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 + default: break; } @@ -6314,7 +6364,7 @@ result = builder.createUnaryOp(convOp, destType, operand); result = builder.setPrecision(result, decorations.precision); - builder.addDecoration(result, decorations.nonUniform); + decorations.addNonUniform(builder, result); return result; } @@ -6417,7 +6467,9 @@ scopeId = builder.makeUintConstant(spv::ScopeDevice); } // semantics default to relaxed - spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.volatil ? spv::MemorySemanticsVolatileMask : spv::MemorySemanticsMaskNone); + spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.isVolatile() && glslangIntermediate->usingVulkanMemoryModel() ? + spv::MemorySemanticsVolatileMask : + spv::MemorySemanticsMaskNone); spv::Id semanticsId2 = semanticsId; pointerId = operands[0]; @@ -6488,10 +6540,8 @@ // Create group invocation operations. spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { -#ifdef AMD_EXTENSIONS bool isUnsigned = isTypeUnsignedInt(typeProxy); bool isFloat = isTypeFloat(typeProxy); -#endif spv::Op opCode = spv::OpNop; std::vector spvGroupOperands; @@ -6508,7 +6558,6 @@ builder.addCapability(spv::CapabilitySubgroupVoteKHR); } else { builder.addCapability(spv::CapabilityGroups); -#ifdef AMD_EXTENSIONS if (op == glslang::EOpMinInvocationsNonUniform || op == glslang::EOpMaxInvocationsNonUniform || op == glslang::EOpAddInvocationsNonUniform || @@ -6519,9 +6568,7 @@ op == glslang::EOpMaxInvocationsExclusiveScanNonUniform || op == glslang::EOpAddInvocationsExclusiveScanNonUniform) builder.addExtension(spv::E_SPV_AMD_shader_ballot); -#endif -#ifdef AMD_EXTENSIONS switch (op) { case glslang::EOpMinInvocations: case glslang::EOpMaxInvocations: @@ -6556,7 +6603,6 @@ spv::IdImmediate groupOp = { false, (unsigned)groupOperation }; spvGroupOperands.push_back(groupOp); } -#endif } for (auto opIt = operands.begin(); opIt != operands.end(); ++opIt) { @@ -6603,7 +6649,6 @@ builder.createCompositeConstruct(uvec2Type, components)); } -#ifdef AMD_EXTENSIONS case glslang::EOpMinInvocations: case glslang::EOpMaxInvocations: case glslang::EOpAddInvocations: @@ -6690,7 +6735,6 @@ return CreateInvocationsVectorOperation(opCode, groupOperation, typeId, operands); break; -#endif default: logger->missingFunctionality("invocation operation"); return spv::NoResult; @@ -6704,7 +6748,6 @@ spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation, spv::Id typeId, std::vector& operands) { -#ifdef AMD_EXTENSIONS assert(op == spv::OpGroupFMin || op == spv::OpGroupUMin || op == spv::OpGroupSMin || op == spv::OpGroupFMax || op == spv::OpGroupUMax || op == spv::OpGroupSMax || op == spv::OpGroupFAdd || op == spv::OpGroupIAdd || op == spv::OpGroupBroadcast || @@ -6712,12 +6755,6 @@ op == spv::OpGroupFMinNonUniformAMD || op == spv::OpGroupUMinNonUniformAMD || op == spv::OpGroupSMinNonUniformAMD || op == spv::OpGroupFMaxNonUniformAMD || op == spv::OpGroupUMaxNonUniformAMD || op == spv::OpGroupSMaxNonUniformAMD || op == spv::OpGroupFAddNonUniformAMD || op == spv::OpGroupIAddNonUniformAMD); -#else - assert(op == spv::OpGroupFMin || op == spv::OpGroupUMin || op == spv::OpGroupSMin || - op == spv::OpGroupFMax || op == spv::OpGroupUMax || op == spv::OpGroupSMax || - op == spv::OpGroupFAdd || op == spv::OpGroupIAdd || op == spv::OpGroupBroadcast || - op == spv::OpSubgroupReadInvocationKHR); -#endif // Handle group invocation operations scalar by scalar. // The result type is the same type as the original type. @@ -6841,7 +6878,6 @@ builder.addCapability(spv::CapabilityGroupNonUniform); builder.addCapability(spv::CapabilityGroupNonUniformQuad); break; -#ifdef NV_EXTENSIONS case glslang::EOpSubgroupPartitionedAdd: case glslang::EOpSubgroupPartitionedMul: case glslang::EOpSubgroupPartitionedMin: @@ -6866,12 +6902,12 @@ builder.addExtension(spv::E_SPV_NV_shader_subgroup_partitioned); builder.addCapability(spv::CapabilityGroupNonUniformPartitionedNV); break; -#endif 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; @@ -6900,11 +6936,9 @@ case glslang::EOpSubgroupInclusiveAdd: case glslang::EOpSubgroupExclusiveAdd: case glslang::EOpSubgroupClusteredAdd: -#ifdef NV_EXTENSIONS case glslang::EOpSubgroupPartitionedAdd: case glslang::EOpSubgroupPartitionedInclusiveAdd: case glslang::EOpSubgroupPartitionedExclusiveAdd: -#endif if (isFloat) { opCode = spv::OpGroupNonUniformFAdd; } else { @@ -6915,11 +6949,9 @@ case glslang::EOpSubgroupInclusiveMul: case glslang::EOpSubgroupExclusiveMul: case glslang::EOpSubgroupClusteredMul: -#ifdef NV_EXTENSIONS case glslang::EOpSubgroupPartitionedMul: case glslang::EOpSubgroupPartitionedInclusiveMul: case glslang::EOpSubgroupPartitionedExclusiveMul: -#endif if (isFloat) { opCode = spv::OpGroupNonUniformFMul; } else { @@ -6930,11 +6962,9 @@ case glslang::EOpSubgroupInclusiveMin: case glslang::EOpSubgroupExclusiveMin: case glslang::EOpSubgroupClusteredMin: -#ifdef NV_EXTENSIONS case glslang::EOpSubgroupPartitionedMin: case glslang::EOpSubgroupPartitionedInclusiveMin: case glslang::EOpSubgroupPartitionedExclusiveMin: -#endif if (isFloat) { opCode = spv::OpGroupNonUniformFMin; } else if (isUnsigned) { @@ -6947,11 +6977,9 @@ case glslang::EOpSubgroupInclusiveMax: case glslang::EOpSubgroupExclusiveMax: case glslang::EOpSubgroupClusteredMax: -#ifdef NV_EXTENSIONS case glslang::EOpSubgroupPartitionedMax: case glslang::EOpSubgroupPartitionedInclusiveMax: case glslang::EOpSubgroupPartitionedExclusiveMax: -#endif if (isFloat) { opCode = spv::OpGroupNonUniformFMax; } else if (isUnsigned) { @@ -6964,11 +6992,9 @@ case glslang::EOpSubgroupInclusiveAnd: case glslang::EOpSubgroupExclusiveAnd: case glslang::EOpSubgroupClusteredAnd: -#ifdef NV_EXTENSIONS case glslang::EOpSubgroupPartitionedAnd: case glslang::EOpSubgroupPartitionedInclusiveAnd: case glslang::EOpSubgroupPartitionedExclusiveAnd: -#endif if (isBool) { opCode = spv::OpGroupNonUniformLogicalAnd; } else { @@ -6979,11 +7005,9 @@ case glslang::EOpSubgroupInclusiveOr: case glslang::EOpSubgroupExclusiveOr: case glslang::EOpSubgroupClusteredOr: -#ifdef NV_EXTENSIONS case glslang::EOpSubgroupPartitionedOr: case glslang::EOpSubgroupPartitionedInclusiveOr: case glslang::EOpSubgroupPartitionedExclusiveOr: -#endif if (isBool) { opCode = spv::OpGroupNonUniformLogicalOr; } else { @@ -6994,11 +7018,9 @@ case glslang::EOpSubgroupInclusiveXor: case glslang::EOpSubgroupExclusiveXor: case glslang::EOpSubgroupClusteredXor: -#ifdef NV_EXTENSIONS case glslang::EOpSubgroupPartitionedXor: case glslang::EOpSubgroupPartitionedInclusiveXor: case glslang::EOpSubgroupPartitionedExclusiveXor: -#endif if (isBool) { opCode = spv::OpGroupNonUniformLogicalXor; } else { @@ -7056,7 +7078,6 @@ case glslang::EOpSubgroupClusteredXor: groupOperation = spv::GroupOperationClusteredReduce; break; -#ifdef NV_EXTENSIONS case glslang::EOpSubgroupPartitionedAdd: case glslang::EOpSubgroupPartitionedMul: case glslang::EOpSubgroupPartitionedMin: @@ -7084,7 +7105,6 @@ case glslang::EOpSubgroupPartitionedExclusiveXor: groupOperation = spv::GroupOperationPartitionedExclusiveScanNV; break; -#endif } // build the instruction @@ -7216,18 +7236,57 @@ 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: -#ifdef AMD_EXTENSIONS if (typeProxy == glslang::EbtFloat16) builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float); -#endif libCall = spv::GLSLstd450InterpolateAtSample; break; case glslang::EOpInterpolateAtOffset: -#ifdef AMD_EXTENSIONS if (typeProxy == glslang::EbtFloat16) builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float); -#endif libCall = spv::GLSLstd450InterpolateAtOffset; break; case glslang::EOpAddCarry: @@ -7269,11 +7328,9 @@ assert(builder.isPointerType(typeId1)); typeId1 = builder.getContainedTypeId(typeId1); int width = builder.getScalarTypeWidth(typeId1); -#ifdef AMD_EXTENSIONS if (width == 16) // Using 16-bit exp operand, enable extension SPV_AMD_gpu_shader_int16 builder.addExtension(spv::E_SPV_AMD_gpu_shader_int16); -#endif if (builder.getNumComponents(operands[0]) == 1) frexpIntType = builder.makeIntegerType(width, true); else @@ -7303,7 +7360,6 @@ case glslang::EOpSubgroupClusteredOr: case glslang::EOpSubgroupClusteredXor: case glslang::EOpSubgroupQuadBroadcast: -#ifdef NV_EXTENSIONS case glslang::EOpSubgroupPartitionedAdd: case glslang::EOpSubgroupPartitionedMul: case glslang::EOpSubgroupPartitionedMin: @@ -7325,10 +7381,8 @@ case glslang::EOpSubgroupPartitionedExclusiveAnd: case glslang::EOpSubgroupPartitionedExclusiveOr: case glslang::EOpSubgroupPartitionedExclusiveXor: -#endif return createSubgroupOperation(op, typeId, operands, typeProxy); -#ifdef AMD_EXTENSIONS case glslang::EOpSwizzleInvocations: extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot); libCall = spv::SwizzleInvocationsAMD; @@ -7382,50 +7436,7 @@ extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_explicit_vertex_parameter); libCall = spv::InterpolateAtVertexAMD; break; -#endif - 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; -#ifdef NV_EXTENSIONS case glslang::EOpReportIntersectionNV: { typeId = builder.makeBoolType(); @@ -7447,11 +7458,10 @@ case glslang::EOpWritePackedPrimitiveIndices4x8NV: builder.createNoResultOp(spv::OpWritePackedPrimitiveIndices4x8NV, operands); return 0; -#endif case glslang::EOpCooperativeMatrixMulAdd: opCode = spv::OpCooperativeMatrixMulAddNV; break; - +#endif // GLSLANG_WEB default: return 0; } @@ -7472,7 +7482,7 @@ id = builder.createCompositeExtract(mulOp, typeId, 0); for (int i = 1; i < componentCount; ++i) { builder.setPrecision(id, precision); - id = builder.createBinOp(spv::OpIAdd, typeId, id, builder.createCompositeExtract(operands[0], typeId, i)); + id = builder.createBinOp(spv::OpIAdd, typeId, id, builder.createCompositeExtract(mulOp, typeId, i)); } } else { switch (consumedOperands) { @@ -7495,6 +7505,7 @@ } } +#ifndef GLSLANG_WEB // Decode the return types that were structures switch (op) { case glslang::EOpAddCarry: @@ -7524,6 +7535,7 @@ default: break; } +#endif return builder.setPrecision(id, precision); } @@ -7535,12 +7547,6 @@ spv::Scope memoryBarrierScope = glslangIntermediate->usingVulkanMemoryModel() ? spv::ScopeQueueFamilyKHR : spv::ScopeDevice; switch (op) { - case glslang::EOpEmitVertex: - builder.createNoResultOp(spv::OpEmitVertex); - return 0; - case glslang::EOpEndPrimitive: - builder.createNoResultOp(spv::OpEndPrimitive); - return 0; case glslang::EOpBarrier: if (glslangIntermediate->getStage() == EShLangTessControl) { if (glslangIntermediate->usingVulkanMemoryModel()) { @@ -7561,18 +7567,10 @@ 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); @@ -7581,6 +7579,15 @@ 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 | @@ -7625,26 +7632,30 @@ 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); } -#ifdef AMD_EXTENSIONS case glslang::EOpTime: { std::vector args; // Dummy arguments spv::Id id = builder.createBuiltinCall(typeId, getExtBuiltins(spv::E_SPV_AMD_gcn_shader), spv::TimeAMD, args); return builder.setPrecision(id, precision); } -#endif -#ifdef NV_EXTENSIONS case glslang::EOpIgnoreIntersectionNV: builder.createNoResultOp(spv::OpIgnoreIntersectionNV); return 0; case glslang::EOpTerminateRayNV: builder.createNoResultOp(spv::OpTerminateRayNV); return 0; -#endif case glslang::EOpBeginInvocationInterlock: builder.createNoResultOp(spv::OpBeginInvocationInterlockEXT); @@ -7676,11 +7687,14 @@ builder.addCapability(spv::CapabilityShaderClockKHR); return builder.createOp(spv::OpReadClockKHR, typeId, args); } - +#endif default: - logger->missingFunctionality("unknown operation with no arguments"); - return 0; + break; } + + logger->missingFunctionality("unknown operation with no arguments"); + + return 0; } spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol) @@ -7704,15 +7718,15 @@ builder.addDecoration(id, TranslatePrecisionDecoration(symbol->getType())); builder.addDecoration(id, TranslateInterpolationDecoration(symbol->getType().getQualifier())); builder.addDecoration(id, TranslateAuxiliaryStorageDecoration(symbol->getType().getQualifier())); -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB addMeshNVDecoration(id, /*member*/ -1, symbol->getType().getQualifier()); + if (symbol->getQualifier().hasComponent()) + builder.addDecoration(id, spv::DecorationComponent, symbol->getQualifier().layoutComponent); + if (symbol->getQualifier().hasIndex()) + builder.addDecoration(id, spv::DecorationIndex, symbol->getQualifier().layoutIndex); #endif if (symbol->getType().getQualifier().hasSpecConstantId()) builder.addDecoration(id, spv::DecorationSpecId, symbol->getType().getQualifier().layoutSpecConstantId); - if (symbol->getQualifier().hasIndex()) - builder.addDecoration(id, spv::DecorationIndex, symbol->getQualifier().layoutIndex); - if (symbol->getQualifier().hasComponent()) - builder.addDecoration(id, spv::DecorationComponent, symbol->getQualifier().layoutComponent); // atomic counters use this: if (symbol->getQualifier().hasOffset()) builder.addDecoration(id, spv::DecorationOffset, symbol->getQualifier().layoutOffset); @@ -7751,6 +7765,12 @@ builder.addDecoration(id, spv::DecorationOffset, symbol->getQualifier().layoutXfbOffset); } + // add built-in variable decoration + if (builtIn != spv::BuiltInMax) { + builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn); + } + +#ifndef GLSLANG_WEB if (symbol->getType().isImage()) { std::vector memory; TranslateMemoryDecoration(symbol->getType().getQualifier(), memory, glslangIntermediate->usingVulkanMemoryModel()); @@ -7758,15 +7778,9 @@ builder.addDecoration(id, memory[i]); } - // add built-in variable decoration - if (builtIn != spv::BuiltInMax) { - builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn); - } - // nonuniform builder.addDecoration(id, TranslateNonUniformDecoration(symbol->getType().getQualifier())); -#ifdef NV_EXTENSIONS if (builtIn == spv::BuiltInSampleMask) { spv::Decoration decoration; // GL_NV_sample_mask_override_coverage extension @@ -7805,7 +7819,6 @@ builder.addCapability(spv::CapabilityFragmentBarycentricNV); builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric); } -#endif if (glslangIntermediate->getHlslFunctionality1() && symbol->getType().getQualifier().semanticName != nullptr) { builder.addExtension("SPV_GOOGLE_hlsl_functionality1"); @@ -7813,14 +7826,15 @@ symbol->getType().getQualifier().semanticName); } - if (symbol->getBasicType() == glslang::EbtReference) { + if (symbol->isReference()) { builder.addDecoration(id, symbol->getType().getQualifier().restrict ? spv::DecorationRestrictPointerEXT : spv::DecorationAliasedPointerEXT); } +#endif return id; } -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB // add per-primitive, per-view. per-task decorations to a struct member (member >= 0) or an object void TGlslangToSpvTraverser::addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier& qualifier) { @@ -7956,6 +7970,19 @@ for (unsigned int i = 0; i < (unsigned int)glslangType.getVectorSize(); ++i) { bool zero = nextConst >= consts.size(); switch (glslangType.getBasicType()) { + case glslang::EbtInt: + spvConsts.push_back(builder.makeIntConstant(zero ? 0 : consts[nextConst].getIConst())); + break; + case glslang::EbtUint: + spvConsts.push_back(builder.makeUintConstant(zero ? 0 : consts[nextConst].getUConst())); + break; + case glslang::EbtFloat: + spvConsts.push_back(builder.makeFloatConstant(zero ? 0.0F : (float)consts[nextConst].getDConst())); + break; + case glslang::EbtBool: + spvConsts.push_back(builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst())); + break; +#ifndef GLSLANG_WEB case glslang::EbtInt8: spvConsts.push_back(builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const())); break; @@ -7968,30 +7995,19 @@ case glslang::EbtUint16: spvConsts.push_back(builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const())); break; - case glslang::EbtInt: - spvConsts.push_back(builder.makeIntConstant(zero ? 0 : consts[nextConst].getIConst())); - break; - case glslang::EbtUint: - spvConsts.push_back(builder.makeUintConstant(zero ? 0 : consts[nextConst].getUConst())); - break; case glslang::EbtInt64: spvConsts.push_back(builder.makeInt64Constant(zero ? 0 : consts[nextConst].getI64Const())); break; case glslang::EbtUint64: spvConsts.push_back(builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const())); break; - case glslang::EbtFloat: - spvConsts.push_back(builder.makeFloatConstant(zero ? 0.0F : (float)consts[nextConst].getDConst())); - break; case glslang::EbtDouble: spvConsts.push_back(builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst())); break; case glslang::EbtFloat16: spvConsts.push_back(builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); break; - case glslang::EbtBool: - spvConsts.push_back(builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst())); - break; +#endif default: assert(0); break; @@ -8003,6 +8019,19 @@ bool zero = nextConst >= consts.size(); spv::Id scalar = 0; switch (glslangType.getBasicType()) { + case glslang::EbtInt: + scalar = builder.makeIntConstant(zero ? 0 : consts[nextConst].getIConst(), specConstant); + break; + case glslang::EbtUint: + scalar = builder.makeUintConstant(zero ? 0 : consts[nextConst].getUConst(), specConstant); + break; + case glslang::EbtFloat: + scalar = builder.makeFloatConstant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); + break; + case glslang::EbtBool: + scalar = builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst(), specConstant); + break; +#ifndef GLSLANG_WEB case glslang::EbtInt8: scalar = builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const(), specConstant); break; @@ -8015,34 +8044,23 @@ case glslang::EbtUint16: scalar = builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const(), specConstant); break; - case glslang::EbtInt: - scalar = builder.makeIntConstant(zero ? 0 : consts[nextConst].getIConst(), specConstant); - break; - case glslang::EbtUint: - scalar = builder.makeUintConstant(zero ? 0 : consts[nextConst].getUConst(), specConstant); - break; case glslang::EbtInt64: scalar = builder.makeInt64Constant(zero ? 0 : consts[nextConst].getI64Const(), specConstant); break; case glslang::EbtUint64: scalar = builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const(), specConstant); break; - case glslang::EbtFloat: - scalar = builder.makeFloatConstant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); - break; case glslang::EbtDouble: scalar = builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst(), specConstant); break; case glslang::EbtFloat16: scalar = builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); break; - case glslang::EbtBool: - scalar = builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst(), specConstant); - break; case glslang::EbtReference: scalar = builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const(), specConstant); scalar = builder.createUnaryOp(spv::OpBitcast, typeId, scalar); break; +#endif default: assert(0); break; @@ -8186,7 +8204,7 @@ return builder.createOp(spv::OpPhi, boolTypeId, phiOperands); } -#ifdef AMD_EXTENSIONS +#ifndef GLSLANG_WEB // Return type Id of the imported set of extended instructions corresponds to the name. // Import this set if it has not been imported yet. spv::Id TGlslangToSpvTraverser::getExtBuiltins(const char* name) @@ -8226,7 +8244,8 @@ // 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 @@ -8246,6 +8265,7 @@ // Write SPIR-V out to a text file with 32-bit hexadecimal words void OutputSpvHex(const std::vector& spirv, const char* baseName, const char* varName) { +#ifndef GLSLANG_WEB std::ofstream out; out.open(baseName, std::ios::binary | std::ios::out); if (out.fail()) @@ -8273,6 +8293,7 @@ out << "};"; } out.close(); +#endif } // diff -Nru glslang-7.12.3352/SPIRV/GlslangToSpv.h glslang-8.13.3559/SPIRV/GlslangToSpv.h --- glslang-7.12.3352/SPIRV/GlslangToSpv.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/GlslangToSpv.h 2020-01-06 14:50:40.000000000 +0000 @@ -40,7 +40,7 @@ #endif #include "SpvTools.h" -#include "../glslang/Include/intermediate.h" +#include "glslang/Include/intermediate.h" #include #include diff -Nru glslang-7.12.3352/SPIRV/GLSL.ext.KHR.h glslang-8.13.3559/SPIRV/GLSL.ext.KHR.h --- glslang-7.12.3352/SPIRV/GLSL.ext.KHR.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/GLSL.ext.KHR.h 2020-01-06 14:50:40.000000000 +0000 @@ -41,6 +41,7 @@ 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 -Nru glslang-7.12.3352/SPIRV/InReadableOrder.cpp glslang-8.13.3559/SPIRV/InReadableOrder.cpp --- glslang-7.12.3352/SPIRV/InReadableOrder.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/InReadableOrder.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -61,17 +61,22 @@ // 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 @@ 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 -Nru glslang-7.12.3352/SPIRV/Logger.cpp glslang-8.13.3559/SPIRV/Logger.cpp --- glslang-7.12.3352/SPIRV/Logger.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/Logger.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -32,6 +32,8 @@ // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. +#ifndef GLSLANG_WEB + #include "Logger.h" #include @@ -66,3 +68,5 @@ } } // end spv namespace + +#endif \ No newline at end of file diff -Nru glslang-7.12.3352/SPIRV/Logger.h glslang-8.13.3559/SPIRV/Logger.h --- glslang-7.12.3352/SPIRV/Logger.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/Logger.h 2020-01-06 14:50:40.000000000 +0000 @@ -46,6 +46,14 @@ public: SpvBuildLogger() {} +#ifdef GLSLANG_WEB + void tbdFunctionality(const std::string& f) { } + void missingFunctionality(const std::string& f) { } + void warning(const std::string& w) { } + void error(const std::string& e) { errors.push_back(e); } + std::string getAllMessages() { return ""; } +#else + // Registers a TBD functionality. void tbdFunctionality(const std::string& f); // Registers a missing functionality. @@ -59,6 +67,7 @@ // Returns all messages accumulated in the order of: // TBD functionalities, missing functionalities, warnings, errors. std::string getAllMessages() const; +#endif private: SpvBuildLogger(const SpvBuildLogger&); diff -Nru glslang-7.12.3352/SPIRV/spirv.hpp glslang-8.13.3559/SPIRV/spirv.hpp --- glslang-7.12.3352/SPIRV/spirv.hpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/spirv.hpp 2020-01-06 14:50:40.000000000 +0000 @@ -91,6 +91,7 @@ AddressingModelLogical = 0, AddressingModelPhysical32 = 1, AddressingModelPhysical64 = 2, + AddressingModelPhysicalStorageBuffer64 = 5348, AddressingModelPhysicalStorageBuffer64EXT = 5348, AddressingModelMax = 0x7fffffff, }; @@ -99,6 +100,7 @@ MemoryModelSimple = 0, MemoryModelGLSL450 = 1, MemoryModelOpenCL = 2, + MemoryModelVulkan = 3, MemoryModelVulkanKHR = 3, MemoryModelMax = 0x7fffffff, }; @@ -183,6 +185,7 @@ StorageClassHitAttributeNV = 5339, StorageClassIncomingRayPayloadNV = 5342, StorageClassShaderRecordBufferNV = 5343, + StorageClassPhysicalStorageBuffer = 5349, StorageClassPhysicalStorageBufferEXT = 5349, StorageClassMax = 0x7fffffff, }; @@ -311,9 +314,13 @@ 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 @@ 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 @@ 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 @@ 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 @@ MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200, MemorySemanticsAtomicCounterMemoryMask = 0x00000400, MemorySemanticsImageMemoryMask = 0x00000800, + MemorySemanticsOutputMemoryMask = 0x00001000, MemorySemanticsOutputMemoryKHRMask = 0x00001000, + MemorySemanticsMakeAvailableMask = 0x00002000, MemorySemanticsMakeAvailableKHRMask = 0x00002000, + MemorySemanticsMakeVisibleMask = 0x00004000, MemorySemanticsMakeVisibleKHRMask = 0x00004000, MemorySemanticsVolatileMask = 0x00008000, }; @@ -659,8 +679,11 @@ MemoryAccessVolatileShift = 0, MemoryAccessAlignedShift = 1, MemoryAccessNontemporalShift = 2, + MemoryAccessMakePointerAvailableShift = 3, MemoryAccessMakePointerAvailableKHRShift = 3, + MemoryAccessMakePointerVisibleShift = 4, MemoryAccessMakePointerVisibleKHRShift = 4, + MemoryAccessNonPrivatePointerShift = 5, MemoryAccessNonPrivatePointerKHRShift = 5, MemoryAccessMax = 0x7fffffff, }; @@ -670,8 +693,11 @@ MemoryAccessVolatileMask = 0x00000001, MemoryAccessAlignedMask = 0x00000002, MemoryAccessNontemporalMask = 0x00000004, + MemoryAccessMakePointerAvailableMask = 0x00000008, MemoryAccessMakePointerAvailableKHRMask = 0x00000008, + MemoryAccessMakePointerVisibleMask = 0x00000010, MemoryAccessMakePointerVisibleKHRMask = 0x00000010, + MemoryAccessNonPrivatePointerMask = 0x00000020, MemoryAccessNonPrivatePointerKHRMask = 0x00000020, }; @@ -681,6 +707,7 @@ ScopeWorkgroup = 2, ScopeSubgroup = 3, ScopeInvocation = 4, + ScopeQueueFamily = 5, ScopeQueueFamilyKHR = 5, ScopeMax = 0x7fffffff, }; @@ -781,6 +808,8 @@ CapabilityGroupNonUniformShuffleRelative = 66, CapabilityGroupNonUniformClustered = 67, CapabilityGroupNonUniformQuad = 68, + CapabilityShaderLayer = 69, + CapabilityShaderViewportIndex = 70, CapabilitySubgroupBallotKHR = 4423, CapabilityDrawParameters = 4427, CapabilitySubgroupVoteKHR = 4431, @@ -825,21 +854,36 @@ 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, diff -Nru glslang-7.12.3352/SPIRV/SpvBuilder.cpp glslang-8.13.3559/SPIRV/SpvBuilder.cpp --- glslang-7.12.3352/SPIRV/SpvBuilder.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/SpvBuilder.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -46,7 +46,9 @@ #include "SpvBuilder.h" +#ifndef GLSLANG_WEB #include "hex_float.h" +#endif #ifndef _WIN32 #include @@ -230,6 +232,11 @@ Id Builder::makeIntegerType(int width, bool hasSign) { +#ifdef GLSLANG_WEB + assert(width == 32); + width = 32; +#endif + // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[OpTypeInt].size(); ++t) { @@ -265,6 +272,11 @@ Id Builder::makeFloatType(int width) { +#ifdef GLSLANG_WEB + assert(width == 32); + width = 32; +#endif + // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[OpTypeFloat].size(); ++t) { @@ -516,6 +528,7 @@ constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); +#ifndef GLSLANG_WEB // deal with capabilities switch (dim) { case DimBuffer: @@ -561,6 +574,7 @@ addCapability(CapabilityImageMSArray); } } +#endif return type->getResultId(); } @@ -586,7 +600,7 @@ return type->getResultId(); } -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB Id Builder::makeAccelerationStructureNVType() { Instruction *type; @@ -602,6 +616,7 @@ return type->getResultId(); } #endif + Id Builder::getDerefTypeId(Id resultId) const { Id typeId = getTypeId(resultId); @@ -939,6 +954,10 @@ Id Builder::makeDoubleConstant(double d, bool specConstant) { +#ifdef GLSLANG_WEB + assert(0); + return NoResult; +#else Op opcode = specConstant ? OpSpecConstant : OpConstant; Id typeId = makeFloatType(64); union { double db; unsigned long long ull; } u; @@ -963,10 +982,15 @@ module.mapInstruction(c); return c->getResultId(); +#endif } Id Builder::makeFloat16Constant(float f16, bool specConstant) { +#ifdef GLSLANG_WEB + assert(0); + return NoResult; +#else Op opcode = specConstant ? OpSpecConstant : OpConstant; Id typeId = makeFloatType(16); @@ -991,25 +1015,33 @@ module.mapInstruction(c); return c->getResultId(); +#endif } Id Builder::makeFpConstant(Id type, double d, bool specConstant) { - assert(isFloatType(type)); +#ifdef GLSLANG_WEB + const int width = 32; + assert(width == getScalarTypeWidth(type)); +#else + const int width = getScalarTypeWidth(type); +#endif - switch (getScalarTypeWidth(type)) { - case 16: - return makeFloat16Constant((float)d, specConstant); - case 32: - return makeFloatConstant((float)d, specConstant); - case 64: - return makeDoubleConstant(d, specConstant); - default: - break; - } + assert(isFloatType(type)); - assert(false); - return NoResult; + switch (width) { + case 16: + return makeFloat16Constant((float)d, specConstant); + case 32: + return makeFloatConstant((float)d, specConstant); + case 64: + return makeDoubleConstant(d, specConstant); + default: + break; + } + + assert(false); + return NoResult; } Id Builder::findCompositeConstant(Op typeClass, Id typeId, const std::vector& comps) @@ -1825,7 +1857,7 @@ if (parameters.component != NoResult) texArgs[numArgs++] = parameters.component; -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB if (parameters.granularity != NoResult) texArgs[numArgs++] = parameters.granularity; if (parameters.coarse != NoResult) @@ -1872,6 +1904,7 @@ mask = (ImageOperandsMask)(mask | ImageOperandsConstOffsetsMask); texArgs[numArgs++] = parameters.offsets; } +#ifndef GLSLANG_WEB if (parameters.sample) { mask = (ImageOperandsMask)(mask | ImageOperandsSampleMask); texArgs[numArgs++] = parameters.sample; @@ -1889,6 +1922,7 @@ if (parameters.volatil) { mask = mask | ImageOperandsVolatileTexelKHRMask; } +#endif mask = mask | signExtensionMask; if (mask == ImageOperandsMaskNone) --numArgs; // undo speculative reservation for the mask argument @@ -1904,10 +1938,9 @@ opCode = OpImageSparseFetch; else opCode = OpImageFetch; -#ifdef NV_EXTENSIONS +#ifndef GLSLANG_WEB } else if (parameters.granularity && parameters.coarse) { opCode = OpImageSampleFootprintNV; -#endif } else if (gather) { if (parameters.Dref) if (sparse) @@ -1919,6 +1952,7 @@ opCode = OpImageSparseGather; else opCode = OpImageGather; +#endif } else if (explicitLod) { if (parameters.Dref) { if (proj) @@ -2067,11 +2101,7 @@ break; } case OpImageQueryLod: -#ifdef AMD_EXTENSIONS resultType = makeVectorType(getScalarTypeId(getTypeId(parameters.coords)), 2); -#else - resultType = makeVectorType(makeFloatType(32), 2); -#endif break; case OpImageQueryLevels: case OpImageQuerySamples: @@ -2089,6 +2119,7 @@ if (parameters.lod) query->addIdOperand(parameters.lod); buildPoint->addInstruction(std::unique_ptr(query)); + addCapability(CapabilityImageQuery); return query->getResultId(); } @@ -2282,7 +2313,12 @@ int numRows = getTypeNumRows(resultTypeId); Instruction* instr = module.getInstruction(componentTypeId); - unsigned bitCount = instr->getImmediateOperand(0); +#ifdef GLSLANG_WEB + const unsigned bitCount = 32; + assert(bitCount == instr->getImmediateOperand(0)); +#else + const unsigned bitCount = instr->getImmediateOperand(0); +#endif // Optimize matrix constructed from a bigger matrix if (isMatrix(sources[0]) && getNumColumns(sources[0]) >= numCols && getNumRows(sources[0]) >= numRows) { diff -Nru glslang-7.12.3352/SPIRV/SpvBuilder.h glslang-8.13.3559/SPIRV/SpvBuilder.h --- glslang-7.12.3352/SPIRV/SpvBuilder.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/SpvBuilder.h 2020-01-06 14:50:40.000000000 +0000 @@ -67,6 +67,7 @@ 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,20 @@ 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); @@ -201,7 +216,11 @@ bool isMatrixType(Id typeId) const { return getTypeClass(typeId) == OpTypeMatrix; } bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; } bool isArrayType(Id typeId) const { return getTypeClass(typeId) == OpTypeArray; } +#ifdef GLSLANG_WEB + bool isCooperativeMatrixType(Id typeId)const { return false; } +#else bool isCooperativeMatrixType(Id typeId)const { return getTypeClass(typeId) == OpTypeCooperativeMatrixNV; } +#endif bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId) || isCooperativeMatrixType(typeId); } bool isImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeImage; } bool isSamplerType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampler; } @@ -557,6 +576,14 @@ // Accumulate whether anything in the chain of structures has coherent decorations. struct CoherentFlags { + CoherentFlags() { clear(); } +#ifdef GLSLANG_WEB + void clear() { } + bool isVolatile() const { return false; } + CoherentFlags operator |=(const CoherentFlags &other) { return *this; } +#else + bool isVolatile() const { return volatil; } + unsigned coherent : 1; unsigned devicecoherent : 1; unsigned queuefamilycoherent : 1; @@ -577,7 +604,6 @@ isImage = 0; } - CoherentFlags() { clear(); } CoherentFlags operator |=(const CoherentFlags &other) { coherent |= other.coherent; devicecoherent |= other.devicecoherent; @@ -589,6 +615,7 @@ isImage |= other.isImage; return *this; } +#endif }; CoherentFlags coherentFlags; }; @@ -656,16 +683,21 @@ // 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(); + // 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 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); +#endif void dump(std::vector&) const; diff -Nru glslang-7.12.3352/SPIRV/spvIR.h glslang-8.13.3559/SPIRV/spvIR.h --- glslang-7.12.3352/SPIRV/spvIR.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/spvIR.h 2020-01-06 14:50:40.000000000 +0000 @@ -226,6 +226,36 @@ 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::unique_ptr(branch)); + successors.push_back(header); + } + bool isTerminated() const { switch (instructions.back()->getOpCode()) { @@ -235,6 +265,7 @@ case OpKill: case OpReturn: case OpReturnValue: + case OpUnreachable: return true; default: return false; @@ -268,10 +299,24 @@ bool unreachable; }; +// The different reasons for reaching a block in the inReadableOrder traversal. +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 @@ 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 -Nru glslang-7.12.3352/SPIRV/SpvPostProcess.cpp glslang-8.13.3559/SPIRV/SpvPostProcess.cpp --- glslang-7.12.3352/SPIRV/SpvPostProcess.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/SpvPostProcess.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -39,6 +39,7 @@ #include #include +#include #include #include @@ -51,16 +52,13 @@ #include "GLSL.std.450.h" #include "GLSL.ext.KHR.h" #include "GLSL.ext.EXT.h" -#ifdef AMD_EXTENSIONS #include "GLSL.ext.AMD.h" -#endif -#ifdef NV_EXTENSIONS #include "GLSL.ext.NV.h" -#endif } 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. @@ -160,7 +158,6 @@ } break; case OpExtInst: -#if AMD_EXTENSIONS switch (inst.getImmediateOperand(1)) { case GLSLstd450Frexp: case GLSLstd450FrexpStruct: @@ -176,7 +173,6 @@ default: break; } -#endif break; default: if (basicTypeOp == OpTypeFloat && width == 16) @@ -222,12 +218,10 @@ addCapability(CapabilityImageQuery); break; -#ifdef NV_EXTENSIONS case OpGroupNonUniformPartitionNV: addExtension(E_SPV_NV_shader_subgroup_partitioned); addCapability(CapabilityGroupNonUniformPartitionedNV); break; -#endif case OpLoad: case OpStore: @@ -326,17 +320,16 @@ } } } - -// 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 -} +#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. 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 @@ -344,16 +337,41 @@ 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 { @@ -361,7 +379,11 @@ 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 @@ -371,24 +393,17 @@ 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); } } } - // 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; @@ -422,5 +437,14 @@ } } } +#endif + +// comment in header +void Builder::postProcess() { + postProcessCFG(); +#ifndef GLSLANG_WEB + postProcessFeatures(); +#endif +} }; // end spv namespace diff -Nru glslang-7.12.3352/SPIRV/SpvTools.cpp glslang-8.13.3559/SPIRV/SpvTools.cpp --- glslang-7.12.3352/SPIRV/SpvTools.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/SpvTools.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -173,6 +173,7 @@ 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 @@ 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 -Nru glslang-7.12.3352/SPIRV/SpvTools.h glslang-8.13.3559/SPIRV/SpvTools.h --- glslang-7.12.3352/SPIRV/SpvTools.h 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/SPIRV/SpvTools.h 2020-01-06 14:50:40.000000000 +0000 @@ -41,10 +41,12 @@ #ifndef GLSLANG_SPV_TOOLS_H #define GLSLANG_SPV_TOOLS_H +#ifdef ENABLE_OPT #include #include +#endif -#include "../glslang/MachineIndependent/localintermediate.h" +#include "glslang/MachineIndependent/localintermediate.h" #include "Logger.h" namespace glslang { @@ -59,7 +61,7 @@ bool validate; }; -#if ENABLE_OPT +#ifdef ENABLE_OPT // Use the SPIRV-Tools disassembler to print SPIR-V. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv); diff -Nru glslang-7.12.3352/StandAlone/CMakeLists.txt glslang-8.13.3559/StandAlone/CMakeLists.txt --- glslang-7.12.3352/StandAlone/CMakeLists.txt 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/StandAlone/CMakeLists.txt 2020-01-06 14:50:40.000000000 +0000 @@ -4,25 +4,25 @@ 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) 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) @@ -32,22 +32,36 @@ 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(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) if(ENABLE_GLSLANG_INSTALL) - install(TARGETS glslangValidator + install(TARGETS glslangValidator EXPORT glslangValidatorTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(EXPORT glslangValidatorTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) - install(TARGETS spirv-remap + if(ENABLE_SPVREMAPPER) + install(TARGETS spirv-remap EXPORT spirv-remapTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - + install(EXPORT spirv-remapTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + endif() + 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 ${CMAKE_INSTALL_LIBDIR}/cmake) endif() endif(ENABLE_GLSLANG_INSTALL) diff -Nru glslang-7.12.3352/StandAlone/ResourceLimits.cpp glslang-8.13.3559/StandAlone/ResourceLimits.cpp --- glslang-7.12.3352/StandAlone/ResourceLimits.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/StandAlone/ResourceLimits.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -234,7 +234,6 @@ << "MaxCullDistances " << DefaultTBuiltInResource.maxCullDistances << "\n" << "MaxCombinedClipAndCullDistances " << DefaultTBuiltInResource.maxCombinedClipAndCullDistances << "\n" << "MaxSamples " << DefaultTBuiltInResource.maxSamples << "\n" -#ifdef NV_EXTENSIONS << "MaxMeshOutputVerticesNV " << DefaultTBuiltInResource.maxMeshOutputVerticesNV << "\n" << "MaxMeshOutputPrimitivesNV " << DefaultTBuiltInResource.maxMeshOutputPrimitivesNV << "\n" << "MaxMeshWorkGroupSizeX_NV " << DefaultTBuiltInResource.maxMeshWorkGroupSizeX_NV << "\n" @@ -244,7 +243,6 @@ << "MaxTaskWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_NV << "\n" << "MaxTaskWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_NV << "\n" << "MaxMeshViewCountNV " << DefaultTBuiltInResource.maxMeshViewCountNV << "\n" -#endif << "nonInductiveForLoops " << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n" << "whileLoops " << DefaultTBuiltInResource.limits.whileLoops << "\n" << "doWhileLoops " << DefaultTBuiltInResource.limits.doWhileLoops << "\n" @@ -451,7 +449,6 @@ resources->maxCombinedClipAndCullDistances = value; else if (tokenStr == "MaxSamples") resources->maxSamples = value; -#ifdef NV_EXTENSIONS else if (tokenStr == "MaxMeshOutputVerticesNV") resources->maxMeshOutputVerticesNV = value; else if (tokenStr == "MaxMeshOutputPrimitivesNV") @@ -470,7 +467,6 @@ resources->maxTaskWorkGroupSizeZ_NV = value; else if (tokenStr == "MaxMeshViewCountNV") resources->maxMeshViewCountNV = value; -#endif else if (tokenStr == "nonInductiveForLoops") resources->limits.nonInductiveForLoops = (value != 0); else if (tokenStr == "whileLoops") diff -Nru glslang-7.12.3352/StandAlone/StandAlone.cpp glslang-8.13.3559/StandAlone/StandAlone.cpp --- glslang-7.12.3352/StandAlone/StandAlone.cpp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/StandAlone/StandAlone.cpp 2020-01-06 14:50:40.000000000 +0000 @@ -146,11 +146,13 @@ { if (ConfigFile.size() == 0) Resources = glslang::DefaultTBuiltInResource; +#ifndef GLSLANG_WEB else { char* configString = ReadFileData(ConfigFile.c_str()); glslang::DecodeResourceLimits(&Resources, configString); FreeFileData(configString); } +#endif } int ReflectOptions = EShReflectionDefault; @@ -255,7 +257,6 @@ case EShLangGeometry: name = "geom.spv"; break; case EShLangFragment: name = "frag.spv"; break; case EShLangCompute: name = "comp.spv"; break; -#ifdef NV_EXTENSIONS case EShLangRayGenNV: name = "rgen.spv"; break; case EShLangIntersectNV: name = "rint.spv"; break; case EShLangAnyHitNV: name = "rahit.spv"; break; @@ -264,7 +265,6 @@ case EShLangCallableNV: name = "rcall.spv"; break; case EShLangMeshNV: name = "mesh.spv"; break; case EShLangTaskNV: name = "task.spv"; break; -#endif default: name = "unknown"; break; } } else @@ -292,9 +292,12 @@ // // Give error and exit with failure code. // -void Error(const char* message) +void Error(const char* message, const char* detail = nullptr) { - fprintf(stderr, "%s: Error %s (use -h for usage)\n", ExecutableName, message); + fprintf(stderr, "%s: Error: ", ExecutableName); + if (detail != nullptr) + fprintf(stderr, "%s: ", detail); + fprintf(stderr, "%s (use -h for usage)\n", message); exit(EFailUsage); } @@ -482,7 +485,7 @@ Options |= EOptionAutoMapLocations; } else if (lowerword == "uniform-base") { if (argc <= 1) - Error("no provided for --uniform-base"); + Error("no provided", lowerword.c_str()); uniformBase = ::strtol(argv[1], NULL, 10); bumpArg(); break; @@ -493,15 +496,16 @@ else if (strcmp(argv[1], "opengl100") == 0) setOpenGlSpv(); else - Error("--client expects vulkan100 or opengl100"); - } + Error("expects vulkan100 or opengl100", lowerword.c_str()); + } else + Error("expects vulkan100 or opengl100", lowerword.c_str()); bumpArg(); } else if (lowerword == "dump-builtin-symbols") { DumpBuiltinSymbols = true; } else if (lowerword == "entry-point") { entryPointName = argv[1]; if (argc <= 1) - Error("no provided for --entry-point"); + Error("no provided", lowerword.c_str()); bumpArg(); } else if (lowerword == "flatten-uniform-arrays" || // synonyms lowerword == "flatten-uniform-array" || @@ -576,7 +580,7 @@ } else if (lowerword == "source-entrypoint" || // synonyms lowerword == "sep") { if (argc <= 1) - Error("no provided for --source-entrypoint"); + Error("no provided", lowerword.c_str()); sourceEntryPointName = argv[1]; bumpArg(); break; @@ -615,22 +619,26 @@ } 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 lowerword == "vn") { Options |= EOptionOutputHexadecimal; if (argc <= 1) - Error("no provided for --variable-name"); + Error("no provided", lowerword.c_str()); variableName = argv[1]; bumpArg(); break; } else if (lowerword == "version") { Options |= EOptionDumpVersions; } else { - usage(); + Error("unrecognized command-line option", argv[0]); } } break; @@ -756,7 +764,7 @@ Options |= EOptionOutputHexadecimal; break; default: - usage(); + Error("unrecognized command-line option", argv[0]); break; } } else { @@ -977,43 +985,47 @@ shader->setPreamble(UserPreamble.get()); shader->addProcesses(Processes); +#ifndef GLSLANG_WEB // Set IO mapper binding shift values for (int r = 0; r < glslang::EResCount; ++r) { const glslang::TResourceType res = glslang::TResourceType(r); // 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(); i != baseBindingForSet[res][compUnit.stage].end(); ++i) shader->setShiftBindingForSet(res, i->second, i->first); } - - shader->setFlattenUniformArrays((Options & EOptionFlattenUniformArrays) != 0); shader->setNoStorageFormat((Options & EOptionNoStorageFormat) != 0); - shader->setNanMinMaxClamp(NaNClamp); shader->setResourceSetBinding(baseResourceSetBinding[compUnit.stage]); - if (Options & EOptionHlslIoMapping) - shader->setHlslIoMapping(true); - if (Options & EOptionAutoMapBindings) shader->setAutoMapBindings(true); if (Options & EOptionAutoMapLocations) shader->setAutoMapLocations(true); - if (Options & EOptionInvertY) - shader->setInvertY(true); - for (auto& uniOverride : uniformLocationOverrides) { shader->addUniformLocationOverride(uniOverride.first.c_str(), uniOverride.second); } shader->setUniformLocationBase(uniformBase); +#endif + + shader->setNanMinMaxClamp(NaNClamp); + +#ifdef ENABLE_HLSL + shader->setFlattenUniformArrays((Options & EOptionFlattenUniformArrays) != 0); + if (Options & EOptionHlslIoMapping) + shader->setHlslIoMapping(true); +#endif + + if (Options & EOptionInvertY) + shader->setInvertY(true); // Set up the environment, some subsettings take precedence over earlier // ways of setting things. @@ -1023,8 +1035,10 @@ compUnit.stage, Client, ClientInputSemanticsVersion); shader->setEnvClient(Client, ClientVersion); shader->setEnvTarget(TargetLanguage, TargetVersion); +#ifdef ENABLE_HLSL if (targetHlslFunctionality1) shader->setEnvTargetHlslFunctionality1(); +#endif } shaders.push_back(shader); @@ -1034,6 +1048,7 @@ DirStackFileIncluder includer; std::for_each(IncludeDirectoryList.rbegin(), IncludeDirectoryList.rend(), [&includer](const std::string& dir) { includer.pushExternalLocalDirectory(dir); }); +#ifndef GLSLANG_WEB if (Options & EOptionOutputPreprocessed) { std::string str; if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, false, messages, &str, includer)) { @@ -1045,6 +1060,7 @@ StderrIfNonEmpty(shader->getInfoDebugLog()); continue; } +#endif if (! shader->parse(&Resources, defaultVersion, false, messages, includer)) CompileFailed = true; @@ -1067,11 +1083,13 @@ if (! (Options & EOptionOutputPreprocessed) && ! program.link(messages)) LinkFailed = true; +#ifndef GLSLANG_WEB // Map IO if (Options & EOptionSpv) { if (!program.mapIO()) LinkFailed = true; } +#endif // Report if (! (Options & EOptionSuppressInfolog) && @@ -1080,11 +1098,13 @@ PutsIfNonEmpty(program.getInfoDebugLog()); } +#ifndef GLSLANG_WEB // Reflect if (Options & EOptionDumpReflection) { program.buildReflection(ReflectOptions); program.dumpReflection(); } +#endif // Dump SPIR-V if (Options & EOptionSpv) { @@ -1114,8 +1134,10 @@ } else { glslang::OutputSpvBin(spirv, GetBinaryName((EShLanguage)stage)); } +#ifndef GLSLANG_WEB if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv)) spv::Disassemble(std::cout, spirv); +#endif } } } @@ -1203,11 +1225,13 @@ workList.add(item.get()); }); +#ifndef GLSLANG_WEB if (Options & EOptionDumpConfig) { printf("%s", glslang::GetDefaultTBuiltInResourceString().c_str()); if (workList.empty()) return ESuccess; } +#endif if (Options & EOptionDumpBareVersion) { printf("%d.%d.%d\n", @@ -1243,7 +1267,7 @@ ProcessConfigFile(); if ((Options & EOptionReadHlsl) && !((Options & EOptionOutputPreprocessed) || (Options & EOptionSpv))) - Error("ERROR: HLSL requires SPIR-V code generation (or preprocessing only)"); + Error("HLSL requires SPIR-V code generation (or preprocessing only)"); // // Two modes: @@ -1379,7 +1403,6 @@ return EShLangFragment; else if (stageName == "comp") return EShLangCompute; -#ifdef NV_EXTENSIONS else if (stageName == "rgen") return EShLangRayGenNV; else if (stageName == "rint") @@ -1396,7 +1419,6 @@ return EShLangMeshNV; else if (stageName == "task") return EShLangTaskNV; -#endif usage(); return EShLangVertex; @@ -1466,7 +1488,6 @@ " .geom for a geometry shader\n" " .frag for a fragment shader\n" " .comp for a compute shader\n" -#ifdef NV_EXTENSIONS " .mesh for a mesh shader\n" " .task for a task shader\n" " .rgen for a ray generation shader\n" @@ -1475,7 +1496,6 @@ " .rchit for a ray closest hit shader\n" " .rmiss for a ray miss shader\n" " .rcall for a ray callable shader\n" -#endif " .glsl for .vert.glsl, .tesc.glsl, ..., .comp.glsl compound suffixes\n" " .hlsl for .vert.hlsl, .tesc.hlsl, ..., .comp.hlsl compound suffixes\n" "\n" @@ -1606,7 +1626,7 @@ " --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 -Nru glslang-7.12.3352/Test/100.frag glslang-8.13.3559/Test/100.frag --- glslang-7.12.3352/Test/100.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/100.frag 2020-01-06 14:50:40.000000000 +0000 @@ -219,6 +219,9 @@ int init2 = gl_FrontFacing ? 1 : 2; +#define A__B // error +int a__b; // error + #pragma STDGL invariant(all) #line 3000 diff -Nru glslang-7.12.3352/Test/120.vert glslang-8.13.3559/Test/120.vert --- glslang-7.12.3352/Test/120.vert 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/120.vert 2020-01-06 14:50:40.000000000 +0000 @@ -201,3 +201,15 @@ #define macr(A,B) A ## B int macr(qrs,tuv); + +layout(std140) uniform BlockName // ERROR +{ + int test; +}; + +#extension GL_ARB_uniform_buffer_object : enable + +layout(std140) uniform BlockName +{ + int test; +}; \ No newline at end of file diff -Nru glslang-7.12.3352/Test/130.frag glslang-8.13.3559/Test/130.frag --- glslang-7.12.3352/Test/130.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/130.frag 2020-01-06 14:50:40.000000000 +0000 @@ -62,12 +62,14 @@ b3 < b3; // ERROR uv3 > uv3; // ERROR uvec2(2, 3) >= uvec2(3,3); // ERROR + int samples = gl_NumSamples; // ERROR int(bl4) <= int(bl4); // true int(bl4.x) > int(bl4.y); // false } #extension GL_ARB_texture_gather : enable #extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_sample_shading : enable uniform sampler2D samp2D; uniform sampler2DShadow samp2DS; @@ -83,6 +85,7 @@ s = textureGatherOffset(samp2DA, vec3(0.3), ivec2(1)); s = textureGatherOffset(samp2DS, vec2(0.3), 1.3, ivec2(1)); // ERROR s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1), 2); // ERROR + int samples = gl_NumSamples; } #extension GL_ARB_gpu_shader5 : enable @@ -167,3 +170,12 @@ } 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 -Nru glslang-7.12.3352/Test/140.frag glslang-8.13.3559/Test/140.frag --- glslang-7.12.3352/Test/140.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/140.frag 2020-01-06 14:50:40.000000000 +0000 @@ -17,6 +17,7 @@ #error GL_ES is not set #endif + in struct S { float f; } s; // ERROR float patch = 3.1; @@ -51,3 +52,9 @@ { return i1 + i2; } + +uniform sampler2DMS aaa1; // ERROR + +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS aaa2; diff -Nru glslang-7.12.3352/Test/150.frag glslang-8.13.3559/Test/150.frag --- glslang-7.12.3352/Test/150.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/150.frag 2020-01-06 14:50:40.000000000 +0000 @@ -47,4 +47,5 @@ int primitiveID() { return gl_PrimitiveID; + gl_PerFragment; // ERROR, block name can't get reused } diff -Nru glslang-7.12.3352/Test/310.inheritMemory.frag glslang-8.13.3559/Test/310.inheritMemory.frag --- glslang-7.12.3352/Test/310.inheritMemory.frag 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/310.inheritMemory.frag 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,43 @@ +#version 310 es +precision mediump float; + +struct S { + float buff[10]; +}; + +layout(std430, binding=2) readonly buffer RoBuff { + float buff_ro[10]; + S s_ro; +} ro_buffer; + +layout(std430, binding=2) buffer Buff { + float buff[10]; + S s; +} non_ro_buffer; + +void non_ro_fun(float[10] buff) { } +void non_ro_funf(float el) { } +void non_ro_funS(S s) { } + +out vec4 fragColor; + +void main() +{ + S s; + + non_ro_fun(s.buff); + non_ro_funf(s.buff[3]); + non_ro_funS(s); + + non_ro_fun(non_ro_buffer.buff); + non_ro_fun(non_ro_buffer.s.buff); + non_ro_funf(non_ro_buffer.buff[3]); + non_ro_funf(non_ro_buffer.s.buff[3]); + non_ro_funS(non_ro_buffer.s); + + non_ro_fun(ro_buffer.buff_ro); + non_ro_fun(ro_buffer.s_ro.buff); + non_ro_funf(ro_buffer.buff_ro[3]); + non_ro_funf(ro_buffer.s_ro.buff[3]); + non_ro_funS(ro_buffer.s_ro); +} diff -Nru glslang-7.12.3352/Test/330.frag glslang-8.13.3559/Test/330.frag --- glslang-7.12.3352/Test/330.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/330.frag 2020-01-06 14:50:40.000000000 +0000 @@ -149,4 +149,17 @@ 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 -Nru glslang-7.12.3352/Test/430.comp glslang-8.13.3559/Test/430.comp --- glslang-7.12.3352/Test/430.comp 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/430.comp 2020-01-06 14:50:40.000000000 +0000 @@ -48,6 +48,9 @@ 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 -Nru glslang-7.12.3352/Test/atomic_uint.frag glslang-8.13.3559/Test/atomic_uint.frag --- glslang-7.12.3352/Test/atomic_uint.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/atomic_uint.frag 2020-01-06 14:50:40.000000000 +0000 @@ -1,6 +1,7 @@ #version 420 core layout(binding = 0) uniform atomic_uint counter; +layout(binding = 0, offset = 9) uniform atomic_uint counter; uint func(atomic_uint c) { @@ -41,7 +42,7 @@ layout(binding=0, offset=32) uniform atomic_uint aOffset; layout(binding=0, offset=4) uniform atomic_uint; layout(binding=0) uniform atomic_uint bar3; // offset is 4 -layout(binding=0) uniform atomic_uint ac[3]; // offset = 8 +layout(binding=0) uniform atomic_uint ac[2]; // offset = 8 layout(binding=0) uniform atomic_uint ad; // offset = 20 layout(offset=8) uniform atomic_uint bar4; // ERROR, no binding layout(binding = 0, offset = 12) uniform atomic_uint overlap; // ERROR, overlapping offsets diff -Nru glslang-7.12.3352/Test/baseLegalResults/hlsl.aliasOpaque.frag.out glslang-8.13.3559/Test/baseLegalResults/hlsl.aliasOpaque.frag.out --- glslang-7.12.3352/Test/baseLegalResults/hlsl.aliasOpaque.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseLegalResults/hlsl.aliasOpaque.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseLegalResults/hlsl.flattenOpaque.frag.out glslang-8.13.3559/Test/baseLegalResults/hlsl.flattenOpaque.frag.out --- glslang-7.12.3352/Test/baseLegalResults/hlsl.flattenOpaque.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseLegalResults/hlsl.flattenOpaque.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out glslang-8.13.3559/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out --- glslang-7.12.3352/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out glslang-8.13.3559/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out --- glslang-7.12.3352/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseLegalResults/hlsl.flattenSubset2.frag.out glslang-8.13.3559/Test/baseLegalResults/hlsl.flattenSubset2.frag.out --- glslang-7.12.3352/Test/baseLegalResults/hlsl.flattenSubset2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseLegalResults/hlsl.flattenSubset2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseLegalResults/hlsl.flattenSubset.frag.out glslang-8.13.3559/Test/baseLegalResults/hlsl.flattenSubset.frag.out --- glslang-7.12.3352/Test/baseLegalResults/hlsl.flattenSubset.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseLegalResults/hlsl.flattenSubset.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out glslang-8.13.3559/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out --- glslang-7.12.3352/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out glslang-8.13.3559/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out --- glslang-7.12.3352/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/100.frag.out glslang-8.13.3559/Test/baseResults/100.frag.out --- glslang-7.12.3352/Test/baseResults/100.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/100.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -83,9 +83,11 @@ 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 @@ 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 @@ 0:? 5.000000 0:? 'init1' ( global mediump int) 0:? 'init2' ( global mediump int) +0:? 'a__b' ( global mediump int) diff -Nru glslang-7.12.3352/Test/baseResults/120.vert.out glslang-8.13.3559/Test/baseResults/120.vert.out --- glslang-7.12.3352/Test/baseResults/120.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/120.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -79,7 +79,8 @@ ERROR: 0:195: 'gl_ModelViewMatrix' : identifiers starting with "gl_" are reserved ERROR: 0:200: 'token pasting (##)' : not supported for this version or the enabled extensions ERROR: 0:203: 'token pasting (##)' : not supported for this version or the enabled extensions -ERROR: 80 compilation errors. No code generated. +ERROR: 0:205: '' : syntax error, unexpected IDENTIFIER +ERROR: 81 compilation errors. No code generated. Shader version: 120 diff -Nru glslang-7.12.3352/Test/baseResults/130.frag.out glslang-8.13.3559/Test/baseResults/130.frag.out --- glslang-7.12.3352/Test/baseResults/130.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/130.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -7,33 +7,38 @@ ERROR: 0:62: '<' : wrong operand types: no operation '<' exists that takes a left-hand operand of type ' temp 3-component vector of bool' and a right operand of type ' temp 3-component vector of bool' (or there is no acceptable conversion) ERROR: 0:63: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type ' temp 3-component vector of uint' and a right operand of type ' temp 3-component vector of uint' (or there is no acceptable conversion) ERROR: 0:64: '>=' : wrong operand types: no operation '>=' exists that takes a left-hand operand of type ' const 2-component vector of uint' and a right operand of type ' const 2-component vector of uint' (or there is no acceptable conversion) -ERROR: 0:80: 'textureGatherOffset' : no matching overloaded function found -ERROR: 0:80: 'assign' : cannot convert from ' const float' to ' temp 4-component vector of float' -ERROR: 0:81: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions -ERROR: 0:84: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions -ERROR: 0:85: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions -WARNING: 0:88: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5 -ERROR: 0:120: 'line continuation' : not supported for this version or the enabled extensions -ERROR: 0:126: 'uniform block' : not supported for this version or the enabled extensions -ERROR: 0:140: 'length' : does not operate on this type: temp bool -ERROR: 0:140: 'boolb' : can't use function syntax on variable -ERROR: 0:141: 'length' : does not operate on this type: temp float -ERROR: 0:141: '' : function call, method, or subroutine call expected -ERROR: 0:141: '' : no matching overloaded function found -ERROR: 0:142: 'length' : incomplete method syntax -ERROR: 0:143: 'length' : method does not accept any arguments -ERROR: 0:146: 'gl_FogFragCoord' : identifiers starting with "gl_" are reserved -ERROR: 0:151: 'int' : must be qualified as flat in -ERROR: 0:151: 'redeclaration' : cannot change the type of gl_FogFragCoord -ERROR: 0:153: 'early_fragment_tests' : not supported for this version or the enabled extensions -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:65: 'gl_NumSamples' : required extension not requested: GL_ARB_sample_shading +ERROR: 0:82: 'textureGatherOffset' : no matching overloaded function found +ERROR: 0:82: 'assign' : cannot convert from ' const float' to ' temp 4-component vector of float' +ERROR: 0:83: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions +ERROR: 0:86: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions +ERROR: 0:87: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions +WARNING: 0:91: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5 +ERROR: 0:123: 'line continuation' : not supported for this version or the enabled extensions +ERROR: 0:129: 'uniform block' : not supported for this version or the enabled extensions +ERROR: 0:143: 'length' : does not operate on this type: temp bool +ERROR: 0:143: 'boolb' : can't use function syntax on variable +ERROR: 0:144: 'length' : does not operate on this type: temp float +ERROR: 0:144: '' : function call, method, or subroutine call expected +ERROR: 0:144: '' : no matching overloaded function found +ERROR: 0:145: 'length' : incomplete method syntax +ERROR: 0:146: 'length' : method does not accept any arguments +ERROR: 0:149: 'gl_FogFragCoord' : identifiers starting with "gl_" are reserved +ERROR: 0:154: 'int' : must be qualified as flat in +ERROR: 0:154: 'redeclaration' : cannot change the type of gl_FogFragCoord +ERROR: 0:156: 'early_fragment_tests' : not supported for this version or the enabled extensions +ERROR: 0:157: 'image load store' : not supported for this version or the enabled extensions +ERROR: 0:157: 'iimage2D' : Reserved word. +ERROR: 0:172: 'early_fragment_tests' : can only apply to 'in' +ERROR: 0:176: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions +ERROR: 30 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_sample_shading Requested GL_ARB_separate_shader_objects Requested GL_ARB_shader_image_load_store Requested GL_ARB_shading_language_420pack @@ -119,259 +124,267 @@ 0:63 false (const bool) 0:64 Constant: 0:64 false (const bool) -0:65 Constant: -0:65 true (const bool) +0:65 Sequence +0:65 move second child to first child ( temp int) +0:65 'samples' ( temp int) +0:65 'gl_NumSamples' ( uniform int SampleMaskIn) 0:66 Constant: -0:66 false (const bool) -0:77 Function Definition: bar23( ( global void) -0:77 Function Parameters: +0:66 true (const bool) +0:67 Constant: +0:67 false (const bool) +0:79 Function Definition: bar23( ( global void) +0:79 Function Parameters: 0:? Sequence -0:80 's' ( temp 4-component vector of float) -0:81 move second child to first child ( temp 4-component vector of float) -0:81 's' ( temp 4-component vector of float) -0:81 textureGatherOffset ( global 4-component vector of float) -0:81 'samp2DR' ( uniform sampler2DRect) -0:81 Constant: -0:81 0.300000 -0:81 0.300000 -0:81 Constant: -0:81 1 (const int) -0:81 1 (const int) -0:82 move second child to first child ( temp 4-component vector of float) -0:82 's' ( temp 4-component vector of float) -0:82 textureGatherOffset ( global 4-component vector of float) -0:82 'samp2D' ( uniform sampler2D) -0:82 Constant: -0:82 0.300000 -0:82 0.300000 -0:82 Constant: -0:82 1 (const int) -0:82 1 (const int) +0:82 's' ( temp 4-component vector of float) 0:83 move second child to first child ( temp 4-component vector of float) 0:83 's' ( temp 4-component vector of float) 0:83 textureGatherOffset ( global 4-component vector of float) -0:83 'samp2DA' ( uniform sampler2DArray) +0:83 'samp2DR' ( uniform sampler2DRect) 0:83 Constant: 0:83 0.300000 0:83 0.300000 -0:83 0.300000 0:83 Constant: 0:83 1 (const int) 0:83 1 (const int) 0:84 move second child to first child ( temp 4-component vector of float) 0:84 's' ( temp 4-component vector of float) 0:84 textureGatherOffset ( global 4-component vector of float) -0:84 'samp2DS' ( uniform sampler2DShadow) +0:84 'samp2D' ( uniform sampler2D) 0:84 Constant: 0:84 0.300000 0:84 0.300000 0:84 Constant: -0:84 1.300000 -0:84 Constant: 0:84 1 (const int) 0:84 1 (const int) 0:85 move second child to first child ( temp 4-component vector of float) 0:85 's' ( temp 4-component vector of float) 0:85 textureGatherOffset ( global 4-component vector of float) -0:85 'samp2D' ( uniform sampler2D) +0:85 'samp2DA' ( uniform sampler2DArray) 0:85 Constant: 0:85 0.300000 0:85 0.300000 +0:85 0.300000 0:85 Constant: 0:85 1 (const int) 0:85 1 (const int) -0:85 Constant: -0:85 2 (const int) -0:90 Function Definition: bar234( ( global void) -0:90 Function Parameters: +0:86 move second child to first child ( temp 4-component vector of float) +0:86 's' ( temp 4-component vector of float) +0:86 textureGatherOffset ( global 4-component vector of float) +0:86 'samp2DS' ( uniform sampler2DShadow) +0:86 Constant: +0:86 0.300000 +0:86 0.300000 +0:86 Constant: +0:86 1.300000 +0:86 Constant: +0:86 1 (const int) +0:86 1 (const int) +0:87 move second child to first child ( temp 4-component vector of float) +0:87 's' ( temp 4-component vector of float) +0:87 textureGatherOffset ( global 4-component vector of float) +0:87 'samp2D' ( uniform sampler2D) +0:87 Constant: +0:87 0.300000 +0:87 0.300000 +0:87 Constant: +0:87 1 (const int) +0:87 1 (const int) +0:87 Constant: +0:87 2 (const int) +0:88 Sequence +0:88 move second child to first child ( temp int) +0:88 'samples' ( temp int) +0:88 'gl_NumSamples' ( uniform int SampleMaskIn) +0:93 Function Definition: bar234( ( global void) +0:93 Function Parameters: 0:? Sequence -0:93 move second child to first child ( temp 4-component vector of float) -0:93 's' ( temp 4-component vector of float) -0:93 textureGatherOffset ( global 4-component vector of float) -0:93 'samp2D' ( uniform sampler2D) -0:93 Constant: -0:93 0.300000 -0:93 0.300000 -0:93 Constant: -0:93 1 (const int) -0:93 1 (const int) -0:94 move second child to first child ( temp 4-component vector of float) -0:94 's' ( temp 4-component vector of float) -0:94 textureGatherOffset ( global 4-component vector of float) -0:94 'samp2DA' ( uniform sampler2DArray) -0:94 Constant: -0:94 0.300000 -0:94 0.300000 -0:94 0.300000 -0:94 Constant: -0:94 1 (const int) -0:94 1 (const int) -0:95 move second child to first child ( temp 4-component vector of float) -0:95 's' ( temp 4-component vector of float) -0:95 textureGatherOffset ( global 4-component vector of float) -0:95 'samp2DR' ( uniform sampler2DRect) -0:95 Constant: -0:95 0.300000 -0:95 0.300000 -0:95 Constant: -0:95 1 (const int) -0:95 1 (const int) 0:96 move second child to first child ( temp 4-component vector of float) 0:96 's' ( temp 4-component vector of float) 0:96 textureGatherOffset ( global 4-component vector of float) -0:96 'samp2DS' ( uniform sampler2DShadow) +0:96 'samp2D' ( uniform sampler2D) 0:96 Constant: 0:96 0.300000 0:96 0.300000 0:96 Constant: -0:96 1.300000 -0:96 Constant: 0:96 1 (const int) 0:96 1 (const int) 0:97 move second child to first child ( temp 4-component vector of float) 0:97 's' ( temp 4-component vector of float) 0:97 textureGatherOffset ( global 4-component vector of float) -0:97 'samp2D' ( uniform sampler2D) +0:97 'samp2DA' ( uniform sampler2DArray) 0:97 Constant: 0:97 0.300000 0:97 0.300000 +0:97 0.300000 0:97 Constant: 0:97 1 (const int) 0:97 1 (const int) -0:97 Constant: -0:97 2 (const int) -0:107 Function Definition: bar235( ( global void) -0:107 Function Parameters: -0:109 Sequence -0:109 Sequence -0:109 move second child to first child ( temp 3-component vector of int) -0:109 'a' ( temp 3-component vector of int) -0:109 textureSize ( global 3-component vector of int) -0:109 'Sca' ( uniform samplerCubeArray) -0:109 Constant: -0:109 3 (const int) -0:110 Sequence -0:110 move second child to first child ( temp 4-component vector of float) -0:110 'b' ( temp 4-component vector of float) -0:110 texture ( global 4-component vector of float) -0:110 'Sca' ( uniform samplerCubeArray) -0:110 'i' ( smooth in 4-component vector of float) -0:111 Sequence -0:111 move second child to first child ( temp 4-component vector of int) -0:111 'c' ( temp 4-component vector of int) -0:111 texture ( global 4-component vector of int) -0:111 'Isca' ( uniform isamplerCubeArray) -0:111 'i' ( smooth in 4-component vector of float) -0:111 Constant: -0:111 0.700000 +0:98 move second child to first child ( temp 4-component vector of float) +0:98 's' ( temp 4-component vector of float) +0:98 textureGatherOffset ( global 4-component vector of float) +0:98 'samp2DR' ( uniform sampler2DRect) +0:98 Constant: +0:98 0.300000 +0:98 0.300000 +0:98 Constant: +0:98 1 (const int) +0:98 1 (const int) +0:99 move second child to first child ( temp 4-component vector of float) +0:99 's' ( temp 4-component vector of float) +0:99 textureGatherOffset ( global 4-component vector of float) +0:99 'samp2DS' ( uniform sampler2DShadow) +0:99 Constant: +0:99 0.300000 +0:99 0.300000 +0:99 Constant: +0:99 1.300000 +0:99 Constant: +0:99 1 (const int) +0:99 1 (const int) +0:100 move second child to first child ( temp 4-component vector of float) +0:100 's' ( temp 4-component vector of float) +0:100 textureGatherOffset ( global 4-component vector of float) +0:100 'samp2D' ( uniform sampler2D) +0:100 Constant: +0:100 0.300000 +0:100 0.300000 +0:100 Constant: +0:100 1 (const int) +0:100 1 (const int) +0:100 Constant: +0:100 2 (const int) +0:110 Function Definition: bar235( ( global void) +0:110 Function Parameters: +0:112 Sequence 0:112 Sequence -0:112 move second child to first child ( temp 4-component vector of uint) -0:112 'd' ( temp 4-component vector of uint) -0:112 texture ( global 4-component vector of uint) -0:112 'Usca' ( uniform usamplerCubeArray) -0:112 'i' ( smooth in 4-component vector of float) -0:114 move second child to first child ( temp 4-component vector of float) -0:114 'b' ( temp 4-component vector of float) -0:114 textureLod ( global 4-component vector of float) -0:114 'Sca' ( uniform samplerCubeArray) -0:114 'i' ( smooth in 4-component vector of float) -0:114 Constant: -0:114 1.700000 -0:115 move second child to first child ( temp 3-component vector of int) -0:115 'a' ( temp 3-component vector of int) -0:115 textureSize ( global 3-component vector of int) -0:115 'Scas' ( uniform samplerCubeArrayShadow) -0:115 direct index ( temp int) -0:115 'a' ( temp 3-component vector of int) -0:115 Constant: -0:115 0 (const int) -0:116 Sequence -0:116 move second child to first child ( temp float) -0:116 'f' ( temp float) -0:116 texture ( global float) -0:116 'Scas' ( uniform samplerCubeArrayShadow) -0:116 'i' ( smooth in 4-component vector of float) -0:116 direct index ( temp float) -0:116 'b' ( temp 4-component vector of float) -0:116 Constant: -0:116 1 (const int) -0:117 move second child to first child ( temp 4-component vector of int) -0:117 'c' ( temp 4-component vector of int) -0:117 textureGrad ( global 4-component vector of int) -0:117 'Isca' ( uniform isamplerCubeArray) +0:112 move second child to first child ( temp 3-component vector of int) +0:112 'a' ( temp 3-component vector of int) +0:112 textureSize ( global 3-component vector of int) +0:112 'Sca' ( uniform samplerCubeArray) +0:112 Constant: +0:112 3 (const int) +0:113 Sequence +0:113 move second child to first child ( temp 4-component vector of float) +0:113 'b' ( temp 4-component vector of float) +0:113 texture ( global 4-component vector of float) +0:113 'Sca' ( uniform samplerCubeArray) +0:113 'i' ( smooth in 4-component vector of float) +0:114 Sequence +0:114 move second child to first child ( temp 4-component vector of int) +0:114 'c' ( temp 4-component vector of int) +0:114 texture ( global 4-component vector of int) +0:114 'Isca' ( uniform isamplerCubeArray) +0:114 'i' ( smooth in 4-component vector of float) +0:114 Constant: +0:114 0.700000 +0:115 Sequence +0:115 move second child to first child ( temp 4-component vector of uint) +0:115 'd' ( temp 4-component vector of uint) +0:115 texture ( global 4-component vector of uint) +0:115 'Usca' ( uniform usamplerCubeArray) +0:115 'i' ( smooth in 4-component vector of float) +0:117 move second child to first child ( temp 4-component vector of float) +0:117 'b' ( temp 4-component vector of float) +0:117 textureLod ( global 4-component vector of float) +0:117 'Sca' ( uniform samplerCubeArray) 0:117 'i' ( smooth in 4-component vector of float) 0:117 Constant: -0:117 0.100000 -0:117 0.100000 -0:117 0.100000 -0:117 Constant: -0:117 0.200000 -0:117 0.200000 -0:117 0.200000 -0:129 Function Definition: bar23444( ( global void) -0:129 Function Parameters: +0:117 1.700000 +0:118 move second child to first child ( temp 3-component vector of int) +0:118 'a' ( temp 3-component vector of int) +0:118 textureSize ( global 3-component vector of int) +0:118 'Scas' ( uniform samplerCubeArrayShadow) +0:118 direct index ( temp int) +0:118 'a' ( temp 3-component vector of int) +0:118 Constant: +0:118 0 (const int) +0:119 Sequence +0:119 move second child to first child ( temp float) +0:119 'f' ( temp float) +0:119 texture ( global float) +0:119 'Scas' ( uniform samplerCubeArrayShadow) +0:119 'i' ( smooth in 4-component vector of float) +0:119 direct index ( temp float) +0:119 'b' ( temp 4-component vector of float) +0:119 Constant: +0:119 1 (const int) +0:120 move second child to first child ( temp 4-component vector of int) +0:120 'c' ( temp 4-component vector of int) +0:120 textureGrad ( global 4-component vector of int) +0:120 'Isca' ( uniform isamplerCubeArray) +0:120 'i' ( smooth in 4-component vector of float) +0:120 Constant: +0:120 0.100000 +0:120 0.100000 +0:120 0.100000 +0:120 Constant: +0:120 0.200000 +0:120 0.200000 +0:120 0.200000 +0:132 Function Definition: bar23444( ( global void) +0:132 Function Parameters: 0:? Sequence -0:132 Sequence -0:132 move second child to first child ( temp float) -0:132 'a1' ( temp float) -0:132 direct index ( temp float) -0:132 direct index ( temp 3-component vector of float) -0:132 'm43' ( temp 4X3 matrix of float) -0:132 Constant: -0:132 3 (const int) -0:132 Constant: -0:132 1 (const int) -0:134 Sequence -0:134 move second child to first child ( temp int) -0:134 'a2' ( temp int) -0:134 Constant: -0:134 4 (const int) -0:135 add second child into first child ( temp int) -0:135 'a2' ( temp int) -0:135 Constant: -0:135 3 (const int) -0:136 add second child into first child ( temp int) -0:136 'a2' ( temp int) -0:136 Constant: -0:136 3 (const int) +0:135 Sequence +0:135 move second child to first child ( temp float) +0:135 'a1' ( temp float) +0:135 direct index ( temp float) +0:135 direct index ( temp 3-component vector of float) +0:135 'm43' ( temp 4X3 matrix of float) +0:135 Constant: +0:135 3 (const int) +0:135 Constant: +0:135 1 (const int) 0:137 Sequence -0:137 move second child to first child ( temp float) -0:137 'b' ( const (read only) float) -0:137 component-wise multiply ( temp float) -0:137 Constant: -0:137 2.000000 -0:137 'a1' ( temp float) -0:138 move second child to first child ( temp float) -0:138 direct index ( temp float) -0:138 'a' ( global 3-component vector of float) -0:138 Constant: -0:138 0 (const int) +0:137 move second child to first child ( temp int) +0:137 'a2' ( temp int) +0:137 Constant: +0:137 4 (const int) +0:138 add second child into first child ( temp int) +0:138 'a2' ( temp int) 0:138 Constant: -0:138 -1.000000 -0:140 Constant: -0:140 0.000000 -0:141 Constant: -0:141 0.000000 +0:138 3 (const int) +0:139 add second child into first child ( temp int) +0:139 'a2' ( temp int) +0:139 Constant: +0:139 3 (const int) +0:140 Sequence +0:140 move second child to first child ( temp float) +0:140 'b' ( const (read only) float) +0:140 component-wise multiply ( temp float) +0:140 Constant: +0:140 2.000000 +0:140 'a1' ( temp float) +0:141 move second child to first child ( temp float) +0:141 direct index ( temp float) +0:141 'a' ( global 3-component vector of float) +0:141 Constant: +0:141 0 (const int) +0:141 Constant: +0:141 -1.000000 0:143 Constant: -0:143 1 (const int) -0:162 Function Definition: qux2( ( global void) -0:162 Function Parameters: +0:143 0.000000 +0:144 Constant: +0:144 0.000000 +0:146 Constant: +0:146 1 (const int) +0:165 Function Definition: qux2( ( global void) +0:165 Function Parameters: 0:? Sequence -0:165 imageAtomicCompSwap ( global int) -0:165 'iimg2D' (layout( r32i) uniform iimage2D) -0:165 Construct ivec2 ( temp 2-component vector of int) -0:165 'i' ( temp int) -0:165 'i' ( temp int) -0:165 'i' ( temp int) -0:165 'i' ( temp int) -0:166 Sequence -0:166 move second child to first child ( temp 4-component vector of int) -0:166 'pos' ( temp 4-component vector of int) -0:166 imageLoad ( global 4-component vector of int) -0:166 'iimg2D' (layout( r32i) uniform iimage2D) -0:166 Construct ivec2 ( temp 2-component vector of int) -0:166 'i' ( temp int) -0:166 'i' ( temp int) +0:168 imageAtomicCompSwap ( global int) +0:168 'iimg2D' (layout( r32i) uniform iimage2D) +0:168 Construct ivec2 ( temp 2-component vector of int) +0:168 'i' ( temp int) +0:168 'i' ( temp int) +0:168 'i' ( temp int) +0:168 'i' ( temp int) +0:169 Sequence +0:169 move second child to first child ( temp 4-component vector of int) +0:169 'pos' ( temp 4-component vector of int) +0:169 imageLoad ( global 4-component vector of int) +0:169 'iimg2D' (layout( r32i) uniform iimage2D) +0:169 Construct ivec2 ( temp 2-component vector of int) +0:169 'i' ( temp int) +0:169 'i' ( temp int) 0:? Linker Objects 0:? 'a' ( global 3-component vector of float) 0:? 'b' ( global float) @@ -402,13 +415,18 @@ 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_sample_shading Requested GL_ARB_separate_shader_objects Requested GL_ARB_shader_image_load_store Requested GL_ARB_shading_language_420pack @@ -457,4 +475,6 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/140.frag.out glslang-8.13.3559/Test/baseResults/140.frag.out --- glslang-7.12.3352/Test/baseResults/140.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/140.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -1,14 +1,15 @@ 140.frag WARNING: 0:3: varying deprecated in version 130; may be removed in future release ERROR: 0:17: '#error' : GL_ES is not set -ERROR: 0:20: 'fragment-shader struct input' : not supported for this version or the enabled extensions -ERROR: 0:24: 'location' : not supported for this version or the enabled extensions -ERROR: 0:24: 'location qualifier on input' : not supported for this version or the enabled extensions -ERROR: 0:26: 'location' : not supported for this version or the enabled extensions -ERROR: 0:26: 'location qualifier on output' : not supported for this version or the enabled extensions -ERROR: 0:40: 'assign' : l-value required "v" (can't modify shader input) -ERROR: 0:40: 'out' : Non-L-value cannot be passed for 'out' or 'inout' parameters. -ERROR: 8 compilation errors. No code generated. +ERROR: 0:21: 'fragment-shader struct input' : not supported for this version or the enabled extensions +ERROR: 0:25: 'location' : not supported for this version or the enabled extensions +ERROR: 0:25: 'location qualifier on input' : not supported for this version or the enabled extensions +ERROR: 0:27: 'location' : not supported for this version or the enabled extensions +ERROR: 0:27: 'location qualifier on output' : not supported for this version or the enabled extensions +ERROR: 0:41: 'assign' : l-value required "v" (can't modify shader input) +ERROR: 0:41: 'out' : Non-L-value cannot be passed for 'out' or 'inout' parameters. +ERROR: 0:56: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON +ERROR: 9 compilation errors. No code generated. Shader version: 140 @@ -25,80 +26,80 @@ 0:12 'gl_ClipDistance' ( smooth in 5-element array of float ClipDistance) 0:12 Constant: 0:12 2 (const int) -0:22 Sequence -0:22 move second child to first child ( temp float) -0:22 'patch' ( global float) -0:22 Constant: -0:22 3.100000 -0:38 Function Definition: foo( ( global void) -0:38 Function Parameters: -0:40 Sequence -0:40 Sequence -0:40 move second child to first child ( temp 2-component vector of float) -0:40 'r1' ( temp 2-component vector of float) -0:40 modf ( global 2-component vector of float) -0:40 vector swizzle ( temp 2-component vector of float) -0:40 'v' ( smooth in 4-component vector of float) -0:40 Sequence -0:40 Constant: -0:40 0 (const int) -0:40 Constant: -0:40 1 (const int) -0:40 vector swizzle ( temp 2-component vector of float) -0:40 'v' ( smooth in 4-component vector of float) -0:40 Sequence -0:40 Constant: -0:40 2 (const int) -0:40 Constant: -0:40 3 (const int) +0:23 Sequence +0:23 move second child to first child ( temp float) +0:23 'patch' ( global float) +0:23 Constant: +0:23 3.100000 +0:39 Function Definition: foo( ( global void) +0:39 Function Parameters: +0:41 Sequence 0:41 Sequence 0:41 move second child to first child ( temp 2-component vector of float) -0:41 'r2' ( temp 2-component vector of float) +0:41 'r1' ( temp 2-component vector of float) 0:41 modf ( global 2-component vector of float) 0:41 vector swizzle ( temp 2-component vector of float) -0:41 'o' ( out 4-component vector of float) +0:41 'v' ( smooth in 4-component vector of float) 0:41 Sequence 0:41 Constant: 0:41 0 (const int) 0:41 Constant: 0:41 1 (const int) 0:41 vector swizzle ( temp 2-component vector of float) -0:41 'o' ( out 4-component vector of float) +0:41 'v' ( smooth in 4-component vector of float) 0:41 Sequence 0:41 Constant: 0:41 2 (const int) 0:41 Constant: 0:41 3 (const int) -0:42 move second child to first child ( temp float) -0:42 direct index ( temp float) -0:42 'o' ( out 4-component vector of float) -0:42 Constant: -0:42 2 (const int) -0:42 Function Call: fooi( ( global float) -0:47 Sequence -0:47 move second child to first child ( temp float) -0:47 'i1' ( global float) -0:47 Test condition and select ( temp float) -0:47 Condition -0:47 'gl_FrontFacing' ( gl_FrontFacing bool Face) -0:47 true case -0:47 Constant: -0:47 -2.000000 -0:47 false case -0:47 Constant: -0:47 2.000000 +0:42 Sequence +0:42 move second child to first child ( temp 2-component vector of float) +0:42 'r2' ( temp 2-component vector of float) +0:42 modf ( global 2-component vector of float) +0:42 vector swizzle ( temp 2-component vector of float) +0:42 'o' ( out 4-component vector of float) +0:42 Sequence +0:42 Constant: +0:42 0 (const int) +0:42 Constant: +0:42 1 (const int) +0:42 vector swizzle ( temp 2-component vector of float) +0:42 'o' ( out 4-component vector of float) +0:42 Sequence +0:42 Constant: +0:42 2 (const int) +0:42 Constant: +0:42 3 (const int) +0:43 move second child to first child ( temp float) +0:43 direct index ( temp float) +0:43 'o' ( out 4-component vector of float) +0:43 Constant: +0:43 2 (const int) +0:43 Function Call: fooi( ( global float) 0:48 Sequence 0:48 move second child to first child ( temp float) -0:48 'i2' ( global float) -0:48 Constant: -0:48 102.000000 -0:50 Function Definition: fooi( ( global float) -0:50 Function Parameters: -0:52 Sequence -0:52 Branch: Return with expression -0:52 add ( temp float) -0:52 'i1' ( global float) -0:52 'i2' ( global float) +0:48 'i1' ( global float) +0:48 Test condition and select ( temp float) +0:48 Condition +0:48 'gl_FrontFacing' ( gl_FrontFacing bool Face) +0:48 true case +0:48 Constant: +0:48 -2.000000 +0:48 false case +0:48 Constant: +0:48 2.000000 +0:49 Sequence +0:49 move second child to first child ( temp float) +0:49 'i2' ( global float) +0:49 Constant: +0:49 102.000000 +0:51 Function Definition: fooi( ( global float) +0:51 Function Parameters: +0:53 Sequence +0:53 Branch: Return with expression +0:53 add ( temp float) +0:53 'i1' ( global float) +0:53 'i2' ( global float) 0:? Linker Objects 0:? 'v' ( smooth in 4-component vector of float) 0:? 'i' ( smooth in 4-component vector of float) @@ -131,28 +132,28 @@ 0:12 'gl_ClipDistance' ( smooth in 5-element array of float ClipDistance) 0:12 Constant: 0:12 2 (const int) -0:22 Sequence -0:22 move second child to first child ( temp float) -0:22 'patch' ( global float) -0:22 Constant: -0:22 3.100000 -0:47 Sequence -0:47 move second child to first child ( temp float) -0:47 'i1' ( global float) -0:47 Test condition and select ( temp float) -0:47 Condition -0:47 'gl_FrontFacing' ( gl_FrontFacing bool Face) -0:47 true case -0:47 Constant: -0:47 -2.000000 -0:47 false case -0:47 Constant: -0:47 2.000000 +0:23 Sequence +0:23 move second child to first child ( temp float) +0:23 'patch' ( global float) +0:23 Constant: +0:23 3.100000 0:48 Sequence 0:48 move second child to first child ( temp float) -0:48 'i2' ( global float) -0:48 Constant: -0:48 102.000000 +0:48 'i1' ( global float) +0:48 Test condition and select ( temp float) +0:48 Condition +0:48 'gl_FrontFacing' ( gl_FrontFacing bool Face) +0:48 true case +0:48 Constant: +0:48 -2.000000 +0:48 false case +0:48 Constant: +0:48 2.000000 +0:49 Sequence +0:49 move second child to first child ( temp float) +0:49 'i2' ( global float) +0:49 Constant: +0:49 102.000000 0:? Linker Objects 0:? 'v' ( smooth in 4-component vector of float) 0:? 'i' ( smooth in 4-component vector of float) diff -Nru glslang-7.12.3352/Test/baseResults/150.frag.out glslang-8.13.3559/Test/baseResults/150.frag.out --- glslang-7.12.3352/Test/baseResults/150.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/150.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -3,7 +3,9 @@ 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 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/300BuiltIns.frag.out glslang-8.13.3559/Test/baseResults/300BuiltIns.frag.out --- glslang-7.12.3352/Test/baseResults/300BuiltIns.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/300BuiltIns.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/310.comp.out glslang-8.13.3559/Test/baseResults/310.comp.out --- glslang-7.12.3352/Test/baseResults/310.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/310.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -119,9 +119,9 @@ 0:59 Function Parameters: 0:61 Sequence 0:61 move second child to first child ( temp highp float) -0:61 direct index (layout( column_major shared) temp highp float) -0:61 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:61 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:61 direct index (layout( column_major shared) readonly temp highp float) +0:61 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of highp float) +0:61 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp int value, layout( column_major shared) readonly buffer unsized 3-element array of highp float values}) 0:61 Constant: 0:61 1 (const int) 0:61 Constant: @@ -129,8 +129,8 @@ 0:61 Constant: 0:61 4.700000 0:62 array length ( temp int) -0:62 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:62 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:62 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of highp float) +0:62 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp int value, layout( column_major shared) readonly buffer unsized 3-element array of highp float values}) 0:62 Constant: 0:62 1 (const int) 0:63 Pre-Increment ( temp highp 4-component vector of float) @@ -282,9 +282,9 @@ 0:? Sequence 0:194 move second child to first child ( temp highp float) 0:194 'g' ( temp highp float) -0:194 direct index (layout( column_major shared) temp highp float) -0:194 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:194 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:194 direct index (layout( column_major shared) writeonly temp highp float) +0:194 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:194 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:194 Constant: 0:194 1 (const int) 0:194 Constant: @@ -292,42 +292,42 @@ 0:195 Sequence 0:195 move second child to first child ( temp highp float) 0:195 'f' ( temp highp float) -0:195 direct index (layout( column_major shared) temp highp float) -0:195 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:195 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:195 direct index (layout( column_major shared) writeonly temp highp float) +0:195 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:195 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:195 Constant: 0:195 1 (const int) 0:195 Constant: 0:195 2 (const int) 0:196 Pre-Increment ( temp highp float) -0:196 direct index (layout( column_major shared) temp highp float) -0:196 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:196 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:196 direct index (layout( column_major shared) writeonly temp highp float) +0:196 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:196 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:196 Constant: 0:196 1 (const int) 0:196 Constant: 0:196 2 (const int) 0:197 Post-Decrement ( temp highp float) -0:197 direct index (layout( column_major shared) temp highp float) -0:197 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:197 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:197 direct index (layout( column_major shared) writeonly temp highp float) +0:197 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:197 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:197 Constant: 0:197 1 (const int) 0:197 Constant: 0:197 2 (const int) 0:198 add ( temp highp float) 0:198 'f' ( temp highp float) -0:198 direct index (layout( column_major shared) temp highp float) -0:198 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:198 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:198 direct index (layout( column_major shared) writeonly temp highp float) +0:198 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:198 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:198 Constant: 0:198 1 (const int) 0:198 Constant: 0:198 2 (const int) 0:199 subtract ( temp highp float) -0:199 direct index (layout( column_major shared) temp highp float) -0:199 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:199 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:199 direct index (layout( column_major shared) writeonly temp highp float) +0:199 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:199 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:199 Constant: 0:199 1 (const int) 0:199 Constant: @@ -339,9 +339,9 @@ 0:201 true case 0:201 'f' ( temp highp float) 0:201 false case -0:201 direct index (layout( column_major shared) temp highp float) -0:201 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:201 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:201 direct index (layout( column_major shared) writeonly temp highp float) +0:201 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:201 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:201 Constant: 0:201 1 (const int) 0:201 Constant: @@ -350,9 +350,9 @@ 0:202 Condition 0:202 'b' ( temp bool) 0:202 true case -0:202 direct index (layout( column_major shared) temp highp float) -0:202 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:202 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:202 direct index (layout( column_major shared) writeonly temp highp float) +0:202 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:202 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:202 Constant: 0:202 1 (const int) 0:202 Constant: @@ -363,9 +363,9 @@ 0:203 Condition 0:203 Compare Equal ( temp bool) 0:203 'f' ( temp highp float) -0:203 direct index (layout( column_major shared) temp highp float) -0:203 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:203 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:203 direct index (layout( column_major shared) writeonly temp highp float) +0:203 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:203 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:203 Constant: 0:203 1 (const int) 0:203 Constant: @@ -377,9 +377,9 @@ 0:205 Condition 0:205 Compare Greater Than or Equal ( temp bool) 0:205 'f' ( temp highp float) -0:205 direct index (layout( column_major shared) temp highp float) -0:205 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:205 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:205 direct index (layout( column_major shared) writeonly temp highp float) +0:205 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:205 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:205 Constant: 0:205 1 (const int) 0:205 Constant: @@ -391,9 +391,9 @@ 0:207 'f' ( temp highp float) 0:207 direct index ( temp highp float) 0:207 Construct vec3 ( temp highp 3-component vector of float) -0:207 direct index (layout( column_major shared) temp highp float) -0:207 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:207 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:207 direct index (layout( column_major shared) writeonly temp highp float) +0:207 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:207 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:207 Constant: 0:207 1 (const int) 0:207 Constant: @@ -401,14 +401,14 @@ 0:207 Constant: 0:207 0 (const int) 0:208 Bitwise not ( temp highp int) -0:208 value: direct index for structure (layout( column_major shared) buffer highp int) -0:208 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:208 value: direct index for structure (layout( column_major shared) writeonly buffer highp int) +0:208 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:208 Constant: 0:208 0 (const int) 0:209 move second child to first child ( temp highp float) -0:209 direct index (layout( column_major shared) temp highp float) -0:209 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:209 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:209 direct index (layout( column_major shared) writeonly temp highp float) +0:209 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:209 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:209 Constant: 0:209 1 (const int) 0:209 Constant: @@ -420,22 +420,22 @@ 0:? Sequence 0:221 move second child to first child ( temp highp float) 0:221 'g' ( temp highp float) -0:221 direct index (layout( column_major shared) temp highp float) -0:221 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:221 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:221 direct index (layout( column_major shared) writeonly temp highp float) +0:221 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:221 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:221 Constant: 0:221 1 (const int) 0:221 Constant: 0:221 2 (const int) 0:222 Bitwise not ( temp highp int) -0:222 value: direct index for structure (layout( column_major shared) buffer highp int) -0:222 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:222 value: direct index for structure (layout( column_major shared) writeonly buffer highp int) +0:222 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:222 Constant: 0:222 0 (const int) 0:223 move second child to first child ( temp highp float) -0:223 direct index (layout( column_major shared) temp highp float) -0:223 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of highp float) -0:223 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:223 direct index (layout( column_major shared) writeonly temp highp float) +0:223 values: direct index for structure (layout( column_major shared) writeonly buffer unsized 3-element array of highp float) +0:223 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:223 Constant: 0:223 1 (const int) 0:223 Constant: @@ -443,8 +443,8 @@ 0:223 Constant: 0:223 3.400000 0:224 move second child to first child ( temp highp int) -0:224 value: direct index for structure (layout( column_major shared) buffer highp int) -0:224 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:224 value: direct index for structure (layout( column_major shared) writeonly buffer highp int) +0:224 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:224 Constant: 0:224 0 (const int) 0:224 Constant: @@ -477,7 +477,7 @@ 0:? 'arrX' ( global 2-element array of highp int) 0:? 'arrY' ( global 1-element array of highp int) 0:? 'arrZ' ( global 4096-element array of highp int) -0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp int value, layout( column_major shared) readonly buffer unsized 3-element array of highp float values}) 0:? 'v' ( buffer highp 4-component vector of float) 0:? 'us2dbad' ( uniform mediump usampler2D) 0:? 'us2d' ( uniform highp usampler2D) @@ -516,7 +516,7 @@ 0:? 'badQ1' (layout( rgba32f) coherent volatile restrict uniform highp image2D) 0:? 'badQ2' (layout( rgba8i) coherent volatile restrict uniform highp iimage2D) 0:? 'badQ3' (layout( rgba16ui) coherent volatile restrict uniform highp uimage2D) -0:? 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:? 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:? 'multio' (layout( column_major shared) buffer block{layout( column_major shared) readonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 1-element array of highp float values}) 0:? 'inbi' ( in block{ in highp int a}) 0:? 'outbi' ( out block{ out highp int a}) @@ -571,7 +571,7 @@ 0:? 'arrX' ( global 2-element array of highp int) 0:? 'arrY' ( global 1-element array of highp int) 0:? 'arrZ' ( global 4096-element array of highp int) -0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp int value, layout( column_major shared) readonly buffer unsized 3-element array of highp float values}) 0:? 'v' ( buffer highp 4-component vector of float) 0:? 'us2dbad' ( uniform mediump usampler2D) 0:? 'us2d' ( uniform highp usampler2D) @@ -610,7 +610,7 @@ 0:? 'badQ1' (layout( rgba32f) coherent volatile restrict uniform highp image2D) 0:? 'badQ2' (layout( rgba8i) coherent volatile restrict uniform highp iimage2D) 0:? 'badQ3' (layout( rgba16ui) coherent volatile restrict uniform highp uimage2D) -0:? 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) buffer highp int value, layout( column_major shared) buffer unsized 3-element array of highp float values}) +0:? 'wo' (layout( column_major shared) writeonly buffer block{layout( column_major shared) writeonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 3-element array of highp float values}) 0:? 'multio' (layout( column_major shared) buffer block{layout( column_major shared) readonly buffer highp int value, layout( column_major shared) writeonly buffer unsized 1-element array of highp float values}) 0:? 'inbi' ( in block{ in highp int a}) 0:? 'outbi' ( out block{ out highp int a}) diff -Nru glslang-7.12.3352/Test/baseResults/310.inheritMemory.frag.out glslang-8.13.3559/Test/baseResults/310.inheritMemory.frag.out --- glslang-7.12.3352/Test/baseResults/310.inheritMemory.frag.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/310.inheritMemory.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,221 @@ +310.inheritMemory.frag +Shader version: 310 +0:? Sequence +0:18 Function Definition: non_ro_fun(f1[10]; ( global void) +0:18 Function Parameters: +0:18 'buff' ( in 10-element array of mediump float) +0:19 Function Definition: non_ro_funf(f1; ( global void) +0:19 Function Parameters: +0:19 'el' ( in mediump float) +0:20 Function Definition: non_ro_funS(struct-S-f1[10]1; ( global void) +0:20 Function Parameters: +0:20 's' ( in structure{ global 10-element array of mediump float buff}) +0:24 Function Definition: main( ( global void) +0:24 Function Parameters: +0:? Sequence +0:28 Function Call: non_ro_fun(f1[10]; ( global void) +0:28 buff: direct index for structure ( global 10-element array of mediump float) +0:28 's' ( temp structure{ global 10-element array of mediump float buff}) +0:28 Constant: +0:28 0 (const int) +0:29 Function Call: non_ro_funf(f1; ( global void) +0:29 direct index ( temp mediump float) +0:29 buff: direct index for structure ( global 10-element array of mediump float) +0:29 's' ( temp structure{ global 10-element array of mediump float buff}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 3 (const int) +0:30 Function Call: non_ro_funS(struct-S-f1[10]1; ( global void) +0:30 's' ( temp structure{ global 10-element array of mediump float buff}) +0:32 Function Call: non_ro_fun(f1[10]; ( global void) +0:32 buff: direct index for structure (layout( column_major std430 offset=0) buffer 10-element array of mediump float) +0:32 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff} s}) +0:32 Constant: +0:32 0 (const int) +0:33 Function Call: non_ro_fun(f1[10]; ( global void) +0:33 buff: direct index for structure ( global 10-element array of mediump float) +0:33 s: direct index for structure (layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff}) +0:33 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff} s}) +0:33 Constant: +0:33 1 (const int) +0:33 Constant: +0:33 0 (const int) +0:34 Function Call: non_ro_funf(f1; ( global void) +0:34 direct index (layout( column_major std430 offset=0) temp mediump float) +0:34 buff: direct index for structure (layout( column_major std430 offset=0) buffer 10-element array of mediump float) +0:34 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff} s}) +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 3 (const int) +0:35 Function Call: non_ro_funf(f1; ( global void) +0:35 direct index ( temp mediump float) +0:35 buff: direct index for structure ( global 10-element array of mediump float) +0:35 s: direct index for structure (layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff}) +0:35 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff} s}) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 3 (const int) +0:36 Function Call: non_ro_funS(struct-S-f1[10]1; ( global void) +0:36 s: direct index for structure (layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff}) +0:36 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff} s}) +0:36 Constant: +0:36 1 (const int) +0:38 Function Call: non_ro_fun(f1[10]; ( global void) +0:38 buff_ro: direct index for structure (layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float) +0:38 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff} s_ro}) +0:38 Constant: +0:38 0 (const int) +0:39 Function Call: non_ro_fun(f1[10]; ( global void) +0:39 buff: direct index for structure ( readonly global 10-element array of mediump float) +0:39 s_ro: direct index for structure (layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff}) +0:39 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff} s_ro}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 0 (const int) +0:40 Function Call: non_ro_funf(f1; ( global void) +0:40 direct index (layout( column_major std430 offset=0) readonly temp mediump float) +0:40 buff_ro: direct index for structure (layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float) +0:40 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff} s_ro}) +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 3 (const int) +0:41 Function Call: non_ro_funf(f1; ( global void) +0:41 direct index ( readonly temp mediump float) +0:41 buff: direct index for structure ( readonly global 10-element array of mediump float) +0:41 s_ro: direct index for structure (layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff}) +0:41 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff} s_ro}) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 3 (const int) +0:42 Function Call: non_ro_funS(struct-S-f1[10]1; ( global void) +0:42 s_ro: direct index for structure (layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff}) +0:42 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff} s_ro}) +0:42 Constant: +0:42 1 (const int) +0:? Linker Objects +0:? 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff} s_ro}) +0:? 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff} s}) +0:? 'fragColor' ( out mediump 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 310 +0:? Sequence +0:18 Function Definition: non_ro_fun(f1[10]; ( global void) +0:18 Function Parameters: +0:18 'buff' ( in 10-element array of mediump float) +0:19 Function Definition: non_ro_funf(f1; ( global void) +0:19 Function Parameters: +0:19 'el' ( in mediump float) +0:20 Function Definition: non_ro_funS(struct-S-f1[10]1; ( global void) +0:20 Function Parameters: +0:20 's' ( in structure{ global 10-element array of mediump float buff}) +0:24 Function Definition: main( ( global void) +0:24 Function Parameters: +0:? Sequence +0:28 Function Call: non_ro_fun(f1[10]; ( global void) +0:28 buff: direct index for structure ( global 10-element array of mediump float) +0:28 's' ( temp structure{ global 10-element array of mediump float buff}) +0:28 Constant: +0:28 0 (const int) +0:29 Function Call: non_ro_funf(f1; ( global void) +0:29 direct index ( temp mediump float) +0:29 buff: direct index for structure ( global 10-element array of mediump float) +0:29 's' ( temp structure{ global 10-element array of mediump float buff}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 3 (const int) +0:30 Function Call: non_ro_funS(struct-S-f1[10]1; ( global void) +0:30 's' ( temp structure{ global 10-element array of mediump float buff}) +0:32 Function Call: non_ro_fun(f1[10]; ( global void) +0:32 buff: direct index for structure (layout( column_major std430 offset=0) buffer 10-element array of mediump float) +0:32 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff} s}) +0:32 Constant: +0:32 0 (const int) +0:33 Function Call: non_ro_fun(f1[10]; ( global void) +0:33 buff: direct index for structure ( global 10-element array of mediump float) +0:33 s: direct index for structure (layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff}) +0:33 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff} s}) +0:33 Constant: +0:33 1 (const int) +0:33 Constant: +0:33 0 (const int) +0:34 Function Call: non_ro_funf(f1; ( global void) +0:34 direct index (layout( column_major std430 offset=0) temp mediump float) +0:34 buff: direct index for structure (layout( column_major std430 offset=0) buffer 10-element array of mediump float) +0:34 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff} s}) +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 3 (const int) +0:35 Function Call: non_ro_funf(f1; ( global void) +0:35 direct index ( temp mediump float) +0:35 buff: direct index for structure ( global 10-element array of mediump float) +0:35 s: direct index for structure (layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff}) +0:35 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff} s}) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 3 (const int) +0:36 Function Call: non_ro_funS(struct-S-f1[10]1; ( global void) +0:36 s: direct index for structure (layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff}) +0:36 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff} s}) +0:36 Constant: +0:36 1 (const int) +0:38 Function Call: non_ro_fun(f1[10]; ( global void) +0:38 buff_ro: direct index for structure (layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float) +0:38 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff} s_ro}) +0:38 Constant: +0:38 0 (const int) +0:39 Function Call: non_ro_fun(f1[10]; ( global void) +0:39 buff: direct index for structure ( readonly global 10-element array of mediump float) +0:39 s_ro: direct index for structure (layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff}) +0:39 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff} s_ro}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 0 (const int) +0:40 Function Call: non_ro_funf(f1; ( global void) +0:40 direct index (layout( column_major std430 offset=0) readonly temp mediump float) +0:40 buff_ro: direct index for structure (layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float) +0:40 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff} s_ro}) +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 3 (const int) +0:41 Function Call: non_ro_funf(f1; ( global void) +0:41 direct index ( readonly temp mediump float) +0:41 buff: direct index for structure ( readonly global 10-element array of mediump float) +0:41 s_ro: direct index for structure (layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff}) +0:41 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff} s_ro}) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 3 (const int) +0:42 Function Call: non_ro_funS(struct-S-f1[10]1; ( global void) +0:42 s_ro: direct index for structure (layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff}) +0:42 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff} s_ro}) +0:42 Constant: +0:42 1 (const int) +0:? Linker Objects +0:? 'ro_buffer' (layout( binding=2 column_major std430) readonly buffer block{layout( column_major std430 offset=0) readonly buffer 10-element array of mediump float buff_ro, layout( column_major std430 offset=40) readonly buffer structure{ global 10-element array of mediump float buff} s_ro}) +0:? 'non_ro_buffer' (layout( binding=2 column_major std430) buffer block{layout( column_major std430 offset=0) buffer 10-element array of mediump float buff, layout( column_major std430 offset=40) buffer structure{ global 10-element array of mediump float buff} s}) +0:? 'fragColor' ( out mediump 4-component vector of float) + diff -Nru glslang-7.12.3352/Test/baseResults/330.frag.out glslang-8.13.3559/Test/baseResults/330.frag.out --- glslang-7.12.3352/Test/baseResults/330.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/330.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -40,11 +40,14 @@ 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 @@ 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 @@ 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 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/430.comp.out glslang-8.13.3559/Test/baseResults/430.comp.out --- glslang-7.12.3352/Test/baseResults/430.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/430.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -8,14 +8,15 @@ 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 @@ 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) temp float) -0:65 values: direct index for structure (layout( column_major shared) buffer unsized 3-element array of float) -0:65 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) buffer int value, layout( column_major shared) 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) buffer unsized 3-element array of float) -0:66 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) buffer int value, layout( column_major shared) 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) @@ -140,7 +141,7 @@ 0:? 'arrX' ( global 2-element array of int) 0:? 'arrY' ( global 1-element array of int) 0:? 'arrZ' ( global 4096-element array of int) -0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) buffer int value, layout( column_major shared) buffer unsized 3-element array of float values}) +0:? '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:? 'roll' ( uniform double) 0:? 'destTex' ( writeonly uniform image2D) 0:? 'inbi' ( in block{ in int a}) @@ -201,7 +202,7 @@ 0:? 'arrX' ( global 2-element array of int) 0:? 'arrY' ( global 1-element array of int) 0:? 'arrZ' ( global 4096-element array of int) -0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) buffer int value, layout( column_major shared) buffer unsized 3-element array of float values}) +0:? '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:? 'roll' ( uniform double) 0:? 'destTex' ( writeonly uniform image2D) 0:? 'inbi' ( in block{ in int a}) diff -Nru glslang-7.12.3352/Test/baseResults/atomic_uint.frag.out glslang-8.13.3559/Test/baseResults/atomic_uint.frag.out --- glslang-7.12.3352/Test/baseResults/atomic_uint.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/atomic_uint.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -1,64 +1,65 @@ atomic_uint.frag -ERROR: 0:10: 'atomic_uint' : samplers and atomic_uints cannot be output parameters -ERROR: 0:12: 'return' : type does not match, or is not convertible to, the function's return type -ERROR: 0:18: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: non_uniform_counter -ERROR: 0:23: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings -ERROR: 0:28: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( binding=0 offset=0) uniform atomic_uint' and a right operand of type 'layout( binding=0 offset=0) uniform atomic_uint' (or there is no acceptable conversion) -ERROR: 0:29: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( binding=0 offset=0) uniform atomic_uint (or there is no acceptable conversion) -ERROR: 0:31: '[]' : scalar integer expression required -ERROR: 0:34: 'assign' : l-value required "counter" (can't modify a uniform) -ERROR: 0:34: 'assign' : cannot convert from ' const int' to 'layout( binding=0 offset=0) uniform atomic_uint' -ERROR: 0:37: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: acin -ERROR: 0:38: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: acg -ERROR: 0:47: 'offset' : atomic counters sharing the same offset: 12 -ERROR: 0:48: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings -ERROR: 13 compilation errors. No code generated. +ERROR: 0:4: 'counter' : redefinition +ERROR: 0:11: 'atomic_uint' : samplers and atomic_uints cannot be output parameters +ERROR: 0:13: 'return' : type does not match, or is not convertible to, the function's return type +ERROR: 0:19: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: non_uniform_counter +ERROR: 0:24: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings +ERROR: 0:29: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout( binding=0 offset=0) uniform atomic_uint' and a right operand of type 'layout( binding=0 offset=0) uniform atomic_uint' (or there is no acceptable conversion) +ERROR: 0:30: '-' : wrong operand type no operation '-' exists that takes an operand of type layout( binding=0 offset=0) uniform atomic_uint (or there is no acceptable conversion) +ERROR: 0:32: '[]' : scalar integer expression required +ERROR: 0:35: 'assign' : l-value required "counter" (can't modify a uniform) +ERROR: 0:35: 'assign' : cannot convert from ' const int' to 'layout( binding=0 offset=0) uniform atomic_uint' +ERROR: 0:38: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: acin +ERROR: 0:39: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: acg +ERROR: 0:48: 'offset' : atomic counters sharing the same offset: 12 +ERROR: 0:49: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings +ERROR: 14 compilation errors. No code generated. Shader version: 420 ERROR: node is still EOpNull! -0:5 Function Definition: func(au1; ( global uint) -0:5 Function Parameters: -0:5 'c' ( in atomic_uint) -0:7 Sequence -0:7 Branch: Return with expression -0:7 AtomicCounterIncrement ( global uint) -0:7 'c' ( in atomic_uint) -0:10 Function Definition: func2(au1; ( global uint) -0:10 Function Parameters: -0:10 'c' ( out atomic_uint) -0:12 Sequence -0:12 Branch: Return with expression -0:12 'counter' (layout( binding=0 offset=0) uniform atomic_uint) +0:6 Function Definition: func(au1; ( global uint) +0:6 Function Parameters: +0:6 'c' ( in atomic_uint) +0:8 Sequence +0:8 Branch: Return with expression +0:8 AtomicCounterIncrement ( global uint) +0:8 'c' ( in atomic_uint) +0:11 Function Definition: func2(au1; ( global uint) +0:11 Function Parameters: +0:11 'c' ( out atomic_uint) +0:13 Sequence 0:13 Branch: Return with expression -0:13 AtomicCounter ( global uint) -0:13 'counter' (layout( binding=0 offset=0) uniform atomic_uint) -0:16 Function Definition: main( ( global void) -0:16 Function Parameters: +0:13 'counter' (layout( binding=0 offset=0) uniform atomic_uint) +0:14 Branch: Return with expression +0:14 AtomicCounter ( global uint) +0:14 'counter' (layout( binding=0 offset=0) uniform atomic_uint) +0:17 Function Definition: main( ( global void) +0:17 Function Parameters: 0:? Sequence -0:19 Sequence -0:19 move second child to first child ( temp uint) -0:19 'val' ( temp uint) -0:19 AtomicCounter ( global uint) -0:19 'counter' (layout( binding=0 offset=0) uniform atomic_uint) -0:20 AtomicCounterDecrement ( global uint) -0:20 'counter' (layout( binding=0 offset=0) uniform atomic_uint) -0:26 Function Definition: opac( ( global void) -0:26 Function Parameters: -0:28 Sequence -0:28 'counter' (layout( binding=0 offset=0) uniform atomic_uint) +0:20 Sequence +0:20 move second child to first child ( temp uint) +0:20 'val' ( temp uint) +0:20 AtomicCounter ( global uint) +0:20 'counter' (layout( binding=0 offset=0) uniform atomic_uint) +0:21 AtomicCounterDecrement ( global uint) +0:21 'counter' (layout( binding=0 offset=0) uniform atomic_uint) +0:27 Function Definition: opac( ( global void) +0:27 Function Parameters: +0:29 Sequence 0:29 'counter' (layout( binding=0 offset=0) uniform atomic_uint) -0:31 indirect index ( temp int) -0:31 'a' ( temp 3-element array of int) -0:31 'counter' (layout( binding=0 offset=0) uniform atomic_uint) -0:32 direct index (layout( binding=1 offset=3) temp atomic_uint) -0:32 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint) -0:32 Constant: -0:32 2 (const int) -0:33 indirect index (layout( binding=1 offset=3) temp atomic_uint) +0:30 'counter' (layout( binding=0 offset=0) uniform atomic_uint) +0:32 indirect index ( temp int) +0:32 'a' ( temp 3-element array of int) +0:32 'counter' (layout( binding=0 offset=0) uniform atomic_uint) +0:33 direct index (layout( binding=1 offset=3) temp atomic_uint) 0:33 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint) -0:33 'i' ( uniform int) -0:34 'counter' (layout( binding=0 offset=0) uniform atomic_uint) +0:33 Constant: +0:33 2 (const int) +0:34 indirect index (layout( binding=1 offset=3) temp atomic_uint) +0:34 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint) +0:34 'i' ( uniform int) +0:35 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:? Linker Objects 0:? 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:? 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint) @@ -68,8 +69,8 @@ 0:? 'aNoBind' ( uniform atomic_uint) 0:? 'aOffset' (layout( binding=0 offset=32) uniform atomic_uint) 0:? 'bar3' (layout( binding=0 offset=4) uniform atomic_uint) -0:? 'ac' (layout( binding=0 offset=8) uniform 3-element array of atomic_uint) -0:? 'ad' (layout( binding=0 offset=20) uniform atomic_uint) +0:? 'ac' (layout( binding=0 offset=8) uniform 2-element array of atomic_uint) +0:? 'ad' (layout( binding=0 offset=16) uniform atomic_uint) 0:? 'bar4' (layout( offset=8) uniform atomic_uint) 0:? 'overlap' (layout( binding=0 offset=12) uniform atomic_uint) 0:? 'bigBind' (layout( binding=20) uniform atomic_uint) @@ -80,16 +81,16 @@ Shader version: 420 ERROR: node is still EOpNull! -0:16 Function Definition: main( ( global void) -0:16 Function Parameters: +0:17 Function Definition: main( ( global void) +0:17 Function Parameters: 0:? Sequence -0:19 Sequence -0:19 move second child to first child ( temp uint) -0:19 'val' ( temp uint) -0:19 AtomicCounter ( global uint) -0:19 'counter' (layout( binding=0 offset=0) uniform atomic_uint) -0:20 AtomicCounterDecrement ( global uint) -0:20 'counter' (layout( binding=0 offset=0) uniform atomic_uint) +0:20 Sequence +0:20 move second child to first child ( temp uint) +0:20 'val' ( temp uint) +0:20 AtomicCounter ( global uint) +0:20 'counter' (layout( binding=0 offset=0) uniform atomic_uint) +0:21 AtomicCounterDecrement ( global uint) +0:21 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:? Linker Objects 0:? 'counter' (layout( binding=0 offset=0) uniform atomic_uint) 0:? 'countArr' (layout( binding=1 offset=3) uniform 4-element array of atomic_uint) @@ -99,8 +100,8 @@ 0:? 'aNoBind' ( uniform atomic_uint) 0:? 'aOffset' (layout( binding=0 offset=32) uniform atomic_uint) 0:? 'bar3' (layout( binding=0 offset=4) uniform atomic_uint) -0:? 'ac' (layout( binding=0 offset=8) uniform 3-element array of atomic_uint) -0:? 'ad' (layout( binding=0 offset=20) uniform atomic_uint) +0:? 'ac' (layout( binding=0 offset=8) uniform 2-element array of atomic_uint) +0:? 'ad' (layout( binding=0 offset=16) uniform atomic_uint) 0:? 'bar4' (layout( offset=8) uniform atomic_uint) 0:? 'overlap' (layout( binding=0 offset=12) uniform atomic_uint) 0:? 'bigBind' (layout( binding=20) uniform atomic_uint) diff -Nru glslang-7.12.3352/Test/baseResults/compoundsuffix.frag.hlsl glslang-8.13.3559/Test/baseResults/compoundsuffix.frag.hlsl --- glslang-7.12.3352/Test/baseResults/compoundsuffix.frag.hlsl 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/compoundsuffix.frag.hlsl 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/glsl.450.subgroup.frag.out glslang-8.13.3559/Test/baseResults/glsl.450.subgroup.frag.out --- glslang-7.12.3352/Test/baseResults/glsl.450.subgroup.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/glsl.450.subgroup.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -85,11 +85,13 @@ 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 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/glsl.entryPointRename.vert.bad.out glslang-8.13.3559/Test/baseResults/glsl.entryPointRename.vert.bad.out --- glslang-7.12.3352/Test/baseResults/glsl.entryPointRename.vert.bad.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/glsl.entryPointRename.vert.bad.out 2020-01-06 14:50:40.000000000 +0000 @@ -2,7 +2,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/glsl.entryPointRename.vert.out glslang-8.13.3559/Test/baseResults/glsl.entryPointRename.vert.out --- glslang-7.12.3352/Test/baseResults/glsl.entryPointRename.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/glsl.entryPointRename.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/glspv.esversion.vert.out glslang-8.13.3559/Test/baseResults/glspv.esversion.vert.out --- glslang-7.12.3352/Test/baseResults/glspv.esversion.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/glspv.esversion.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -1,6 +1,25 @@ glspv.esversion.vert -ERROR: #version: ES shaders for OpenGL SPIR-V are not supported -ERROR: 1 compilation errors. No code generated. +// Module Version 10000 +// Generated by (magic number): 80008 +// Id's are bound by 10 - -SPIR-V is not generated for failed compile or link + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 8 9 + Source ESSL 310 + Name 4 "main" + Name 8 "gl_VertexID" + Name 9 "gl_InstanceID" + Decorate 8(gl_VertexID) BuiltIn VertexId + Decorate 9(gl_InstanceID) BuiltIn InstanceId + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Input 6(int) + 8(gl_VertexID): 7(ptr) Variable Input +9(gl_InstanceID): 7(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/glspv.version.frag.out glslang-8.13.3559/Test/baseResults/glspv.version.frag.out --- glslang-7.12.3352/Test/baseResults/glspv.version.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/glspv.version.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -2,7 +2,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/glspv.vert.out glslang-8.13.3559/Test/baseResults/glspv.vert.out --- glslang-7.12.3352/Test/baseResults/glspv.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/glspv.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -2,12 +2,14 @@ ERROR: 0:3: 'push_constant' : only allowed when using GLSL for Vulkan ERROR: 0:6: 'descriptor set' : only allowed when using GLSL for Vulkan ERROR: 0:8: 'shared' : not allowed when generating SPIR-V +ERROR: 0:8: 'binding' : uniform/buffer blocks require layout(binding=X) ERROR: 0:9: 'packed' : not allowed when generating SPIR-V +ERROR: 0:9: 'binding' : uniform/buffer blocks require layout(binding=X) ERROR: 0:13: 'gl_VertexIndex' : undeclared identifier ERROR: 0:14: 'gl_InstanceIndex' : undeclared identifier ERROR: 0:17: 'gl_DepthRangeParameters' : undeclared identifier ERROR: 0:20: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON -ERROR: 8 compilation errors. No code generated. +ERROR: 10 compilation errors. No code generated. SPIR-V is not generated for failed compile or link diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.aliasOpaque.frag.out glslang-8.13.3559/Test/baseResults/hlsl.aliasOpaque.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.aliasOpaque.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.aliasOpaque.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -143,7 +143,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.amend.frag.out glslang-8.13.3559/Test/baseResults/hlsl.amend.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.amend.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.amend.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -160,7 +160,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.array.flatten.frag.out glslang-8.13.3559/Test/baseResults/hlsl.array.flatten.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.array.flatten.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.array.flatten.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -345,7 +345,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.array.frag.out glslang-8.13.3559/Test/baseResults/hlsl.array.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.array.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.array.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -290,7 +290,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.array.implicit-size.frag.out glslang-8.13.3559/Test/baseResults/hlsl.array.implicit-size.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.array.implicit-size.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.array.implicit-size.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -163,7 +163,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.array.multidim.frag.out glslang-8.13.3559/Test/baseResults/hlsl.array.multidim.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.array.multidim.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.array.multidim.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -134,7 +134,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.assoc.frag.out glslang-8.13.3559/Test/baseResults/hlsl.assoc.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.assoc.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.assoc.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -132,7 +132,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.attributeC11.frag.out glslang-8.13.3559/Test/baseResults/hlsl.attributeC11.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.attributeC11.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.attributeC11.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -95,7 +95,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 51 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.attribute.expression.comp.out glslang-8.13.3559/Test/baseResults/hlsl.attribute.expression.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.attribute.expression.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.attribute.expression.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -82,7 +82,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.attribute.frag.out glslang-8.13.3559/Test/baseResults/hlsl.attribute.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.attribute.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.attribute.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -50,7 +50,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out glslang-8.13.3559/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -56,7 +56,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.basic.comp.out glslang-8.13.3559/Test/baseResults/hlsl.basic.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.basic.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.basic.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -64,7 +64,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.basic.geom.out glslang-8.13.3559/Test/baseResults/hlsl.basic.geom.out --- glslang-7.12.3352/Test/baseResults/hlsl.basic.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.basic.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -188,7 +188,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.boolConv.vert.out glslang-8.13.3559/Test/baseResults/hlsl.boolConv.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.boolConv.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.boolConv.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -204,7 +204,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.buffer.frag.out glslang-8.13.3559/Test/baseResults/hlsl.buffer.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.buffer.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.buffer.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -147,7 +147,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 73 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.calculatelod.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.calculatelod.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.calculatelod.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.calculatelod.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -358,7 +358,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -358,7 +358,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.cast.frag.out glslang-8.13.3559/Test/baseResults/hlsl.cast.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.cast.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.cast.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -70,7 +70,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.cbuffer-identifier.vert.out glslang-8.13.3559/Test/baseResults/hlsl.cbuffer-identifier.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.cbuffer-identifier.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.cbuffer-identifier.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -250,7 +250,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.charLit.vert.out glslang-8.13.3559/Test/baseResults/hlsl.charLit.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.charLit.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.charLit.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -146,7 +146,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-1.frag.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-1.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-1.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-1.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -98,7 +98,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-1.geom.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-1.geom.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-1.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-1.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -550,7 +550,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-1.vert.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-1.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-1.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-1.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -108,7 +108,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-2.frag.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-2.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -290,7 +290,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-2.geom.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-2.geom.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-2.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-2.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -724,7 +724,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-2.vert.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-2.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-2.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-2.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -420,7 +420,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-3.frag.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-3.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-3.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-3.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -98,7 +98,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-3.geom.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-3.geom.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-3.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-3.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -630,7 +630,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-3.vert.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-3.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-3.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-3.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -136,7 +136,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-4.frag.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-4.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-4.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-4.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -174,7 +174,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-4.geom.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-4.geom.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-4.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-4.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -612,7 +612,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-4.vert.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-4.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-4.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-4.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -270,7 +270,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-5.frag.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-5.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-5.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-5.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -232,7 +232,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-5.vert.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-5.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-5.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-5.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -318,7 +318,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-6.frag.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-6.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-6.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-6.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -282,7 +282,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-6.vert.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-6.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-6.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-6.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -428,7 +428,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-7.frag.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-7.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-7.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-7.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -270,7 +270,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-7.vert.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-7.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-7.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-7.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -384,7 +384,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-8.frag.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-8.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-8.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-8.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -186,7 +186,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-8.vert.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-8.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-8.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-8.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -240,7 +240,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-9.frag.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-9.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-9.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-9.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -144,7 +144,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-9.vert.out glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-9.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.clipdistance-9.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clipdistance-9.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -194,7 +194,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.clip.frag.out glslang-8.13.3559/Test/baseResults/hlsl.clip.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.clip.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.clip.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -74,7 +74,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.color.hull.tesc.out glslang-8.13.3559/Test/baseResults/hlsl.color.hull.tesc.out --- glslang-7.12.3352/Test/baseResults/hlsl.color.hull.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.color.hull.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -356,7 +356,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.comparison.vec.frag.out glslang-8.13.3559/Test/baseResults/hlsl.comparison.vec.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.comparison.vec.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.comparison.vec.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -262,7 +262,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.conditional.frag.out glslang-8.13.3559/Test/baseResults/hlsl.conditional.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.conditional.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.conditional.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -522,7 +522,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.constantbuffer.frag.out glslang-8.13.3559/Test/baseResults/hlsl.constantbuffer.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.constantbuffer.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.constantbuffer.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -133,7 +133,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 66 Capability Shader @@ -240,6 +240,5 @@ 60: 7(fvec4) CompositeConstruct 59 59 59 59 ReturnValue 60 30: Label - 62: 7(fvec4) Undef - ReturnValue 62 + Unreachable FunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.constructArray.vert.out glslang-8.13.3559/Test/baseResults/hlsl.constructArray.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.constructArray.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.constructArray.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -268,7 +268,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.constructexpr.frag.out glslang-8.13.3559/Test/baseResults/hlsl.constructexpr.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.constructexpr.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.constructexpr.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -104,7 +104,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.constructimat.frag.out glslang-8.13.3559/Test/baseResults/hlsl.constructimat.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.constructimat.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.constructimat.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -545,7 +545,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 98 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.coverage.frag.out glslang-8.13.3559/Test/baseResults/hlsl.coverage.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.coverage.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.coverage.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -119,7 +119,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 52 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.dashI.vert.out glslang-8.13.3559/Test/baseResults/hlsl.dashI.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.dashI.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.dashI.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out glslang-8.13.3559/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.depthGreater.frag.out glslang-8.13.3559/Test/baseResults/hlsl.depthGreater.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.depthGreater.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.depthGreater.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -50,7 +50,7 @@ 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 @@ -58,8 +58,8 @@ MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 18 ExecutionMode 4 OriginUpperLeft - ExecutionMode 4 DepthGreater ExecutionMode 4 DepthReplacing + ExecutionMode 4 DepthGreater Source HLSL 500 Name 4 "PixelShaderFunction" Name 10 "@PixelShaderFunction(f1;" diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.depthLess.frag.out glslang-8.13.3559/Test/baseResults/hlsl.depthLess.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.depthLess.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.depthLess.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -42,7 +42,7 @@ 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 @@ -50,8 +50,8 @@ MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 14 ExecutionMode 4 OriginUpperLeft - ExecutionMode 4 DepthLess ExecutionMode 4 DepthReplacing + ExecutionMode 4 DepthLess Source HLSL 500 Name 4 "PixelShaderFunction" Name 8 "@PixelShaderFunction(" diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.discard.frag.out glslang-8.13.3559/Test/baseResults/hlsl.discard.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.discard.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.discard.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -108,7 +108,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.doLoop.frag.out glslang-8.13.3559/Test/baseResults/hlsl.doLoop.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.doLoop.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.doLoop.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -2,68 +2,95 @@ 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:? 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:1 Function Definition: f0( ( temp void) +0:1 Function Parameters: +0:? Sequence +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: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:2 move second child to first child ( temp float) +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,196 +103,272 @@ 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:? 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:1 Function Definition: f0( ( temp void) +0:1 Function Parameters: +0:? Sequence +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: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:2 move second child to first child ( temp float) +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) 0:? 'input' (layout( location=0) in float) // Module Version 10000 -// Generated by (magic number): 80007 -// Id's are bound by 71 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.domain.1.tese.out glslang-8.13.3559/Test/baseResults/hlsl.domain.1.tese.out --- glslang-7.12.3352/Test/baseResults/hlsl.domain.1.tese.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.domain.1.tese.out 2020-01-06 14:50:40.000000000 +0000 @@ -286,7 +286,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.domain.2.tese.out glslang-8.13.3559/Test/baseResults/hlsl.domain.2.tese.out --- glslang-7.12.3352/Test/baseResults/hlsl.domain.2.tese.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.domain.2.tese.out 2020-01-06 14:50:40.000000000 +0000 @@ -284,7 +284,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.domain.3.tese.out glslang-8.13.3559/Test/baseResults/hlsl.domain.3.tese.out --- glslang-7.12.3352/Test/baseResults/hlsl.domain.3.tese.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.domain.3.tese.out 2020-01-06 14:50:40.000000000 +0000 @@ -264,7 +264,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.earlydepthstencil.frag.out glslang-8.13.3559/Test/baseResults/hlsl.earlydepthstencil.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.earlydepthstencil.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.earlydepthstencil.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -108,7 +108,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.emptystruct.init.vert.out glslang-8.13.3559/Test/baseResults/hlsl.emptystruct.init.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.emptystruct.init.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.emptystruct.init.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -60,7 +60,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.emptystructreturn.frag.out glslang-8.13.3559/Test/baseResults/hlsl.emptystructreturn.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.emptystructreturn.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.emptystructreturn.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -51,7 +51,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.emptystructreturn.vert.out glslang-8.13.3559/Test/baseResults/hlsl.emptystructreturn.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.emptystructreturn.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.emptystructreturn.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -49,7 +49,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.entry-in.frag.out glslang-8.13.3559/Test/baseResults/hlsl.entry-in.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.entry-in.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.entry-in.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -166,7 +166,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.entry-out.frag.out glslang-8.13.3559/Test/baseResults/hlsl.entry-out.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.entry-out.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.entry-out.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -244,7 +244,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.entry.rename.frag.out glslang-8.13.3559/Test/baseResults/hlsl.entry.rename.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.entry.rename.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.entry.rename.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -72,7 +72,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out glslang-8.13.3559/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.explicitDescriptorSet.frag.out glslang-8.13.3559/Test/baseResults/hlsl.explicitDescriptorSet.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.explicitDescriptorSet.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.explicitDescriptorSet.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.flattenOpaque.frag.out glslang-8.13.3559/Test/baseResults/hlsl.flattenOpaque.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.flattenOpaque.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.flattenOpaque.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -295,7 +295,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out glslang-8.13.3559/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -107,7 +107,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.flattenOpaqueInit.vert.out glslang-8.13.3559/Test/baseResults/hlsl.flattenOpaqueInit.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.flattenOpaqueInit.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.flattenOpaqueInit.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -165,7 +165,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.flatten.return.frag.out glslang-8.13.3559/Test/baseResults/hlsl.flatten.return.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.flatten.return.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.flatten.return.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -118,7 +118,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.flattenSubset2.frag.out glslang-8.13.3559/Test/baseResults/hlsl.flattenSubset2.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.flattenSubset2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.flattenSubset2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -149,7 +149,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.flattenSubset.frag.out glslang-8.13.3559/Test/baseResults/hlsl.flattenSubset.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.flattenSubset.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.flattenSubset.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -115,7 +115,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.float1.frag.out glslang-8.13.3559/Test/baseResults/hlsl.float1.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.float1.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.float1.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -65,7 +65,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.float4.frag.out glslang-8.13.3559/Test/baseResults/hlsl.float4.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.float4.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.float4.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -42,7 +42,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.forLoop.frag.out glslang-8.13.3559/Test/baseResults/hlsl.forLoop.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.forLoop.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.forLoop.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -2,197 +2,251 @@ Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) -0:2 Function Parameters: -0:2 'input' ( in 4-component vector of float) -0:? Sequence -0:? 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:1 Function Definition: f0( ( temp void) +0:1 Function Parameters: +0:? Sequence 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:? 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:? 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: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: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: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: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:2 move second child to first child ( temp 4-component vector of float) +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,501 +259,654 @@ Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) -0:2 Function Parameters: -0:2 'input' ( in 4-component vector of float) -0:? Sequence -0:? 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:1 Function Definition: f0( ( temp void) +0:1 Function Parameters: +0:? Sequence 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:? 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:? 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: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: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: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: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:2 move second child to first child ( temp 4-component vector of float) +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) 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 -// Id's are bound by 183 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.format.rwtexture.frag.out glslang-8.13.3559/Test/baseResults/hlsl.format.rwtexture.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.format.rwtexture.frag.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.format.rwtexture.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,501 @@ +hlsl.format.rwtexture.frag +Shader version: 500 +gl_FragCoord origin is upper left +using depth_any +0:? Sequence +0:56 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 Function Parameters: +0:? Sequence +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: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: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: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) +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) 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) + + +Linked fragment stage: + + +Shader version: 500 +gl_FragCoord origin is upper left +using depth_any +0:? Sequence +0:56 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 Function Parameters: +0:? Sequence +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: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: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: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) +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) 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): 80008 +// Id's are bound by 160 + + 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" + 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 + 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 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 + 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 + 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 + 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 + 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 + 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.fraggeom.frag.out glslang-8.13.3559/Test/baseResults/hlsl.fraggeom.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.fraggeom.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.fraggeom.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -64,7 +64,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.gather.array.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.gather.array.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.gather.array.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.gather.array.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -262,7 +262,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.gather.basic.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.gather.basic.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.gather.basic.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.gather.basic.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -258,7 +258,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.gather.basic.dx10.vert.out glslang-8.13.3559/Test/baseResults/hlsl.gather.basic.dx10.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.gather.basic.dx10.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.gather.basic.dx10.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -220,7 +220,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -456,7 +456,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -202,7 +202,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.gather.offset.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.gather.offset.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.gather.offset.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.gather.offset.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -208,7 +208,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -750,7 +750,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -758,7 +758,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -1255,7 +1255,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 389 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -1263,7 +1263,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 399 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.getdimensions.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.getdimensions.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.getdimensions.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.getdimensions.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -2318,7 +2318,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.getdimensions.dx10.vert.out glslang-8.13.3559/Test/baseResults/hlsl.getdimensions.dx10.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.getdimensions.dx10.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.getdimensions.dx10.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -116,7 +116,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -718,7 +718,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.getsampleposition.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.getsampleposition.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.getsampleposition.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.getsampleposition.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -580,7 +580,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.global-const-init.frag.out glslang-8.13.3559/Test/baseResults/hlsl.global-const-init.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.global-const-init.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.global-const-init.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -102,7 +102,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.groupid.comp.out glslang-8.13.3559/Test/baseResults/hlsl.groupid.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.groupid.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.groupid.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -82,7 +82,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.gs-hs-mix.tesc.out glslang-8.13.3559/Test/baseResults/hlsl.gs-hs-mix.tesc.out --- glslang-7.12.3352/Test/baseResults/hlsl.gs-hs-mix.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.gs-hs-mix.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -798,7 +798,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.hlslOffset.vert.out glslang-8.13.3559/Test/baseResults/hlsl.hlslOffset.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.hlslOffset.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.hlslOffset.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -26,7 +26,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.hull.1.tesc.out glslang-8.13.3559/Test/baseResults/hlsl.hull.1.tesc.out --- glslang-7.12.3352/Test/baseResults/hlsl.hull.1.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.hull.1.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -224,7 +224,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.hull.2.tesc.out glslang-8.13.3559/Test/baseResults/hlsl.hull.2.tesc.out --- glslang-7.12.3352/Test/baseResults/hlsl.hull.2.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.hull.2.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -220,7 +220,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.hull.3.tesc.out glslang-8.13.3559/Test/baseResults/hlsl.hull.3.tesc.out --- glslang-7.12.3352/Test/baseResults/hlsl.hull.3.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.hull.3.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -220,7 +220,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.hull.4.tesc.out glslang-8.13.3559/Test/baseResults/hlsl.hull.4.tesc.out --- glslang-7.12.3352/Test/baseResults/hlsl.hull.4.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.hull.4.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -476,7 +476,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out glslang-8.13.3559/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out --- glslang-7.12.3352/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -396,7 +396,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out glslang-8.13.3559/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out --- glslang-7.12.3352/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -414,7 +414,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.hull.void.tesc.out glslang-8.13.3559/Test/baseResults/hlsl.hull.void.tesc.out --- glslang-7.12.3352/Test/baseResults/hlsl.hull.void.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.hull.void.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -108,7 +108,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.identifier.sample.frag.out glslang-8.13.3559/Test/baseResults/hlsl.identifier.sample.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.identifier.sample.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.identifier.sample.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -86,7 +86,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.if.frag.out glslang-8.13.3559/Test/baseResults/hlsl.if.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.if.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.if.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -2,104 +2,116 @@ 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: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 true case +0:? Sequence +0:10 Branch: Return with expression +0:10 'input' ( in 4-component vector of float) +0:9 false case 0:? Sequence -0:20 Branch: Return with expression -0:20 'input' ( in 4-component vector of float) +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:? Sequence -0:24 Branch: Return with expression -0:24 'input' ( in 4-component vector of float) -0:23 false 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: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,259 +124,295 @@ 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: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: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: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:10 Branch: Return with expression +0:10 'input' ( in 4-component vector of float) +0:9 false case 0:? Sequence -0:20 Branch: Return with expression -0:20 'input' ( in 4-component vector of float) +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) 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 -// Id's are bound by 103 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.imagefetch-subvec4.comp.out glslang-8.13.3559/Test/baseResults/hlsl.imagefetch-subvec4.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.imagefetch-subvec4.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.imagefetch-subvec4.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -72,7 +72,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.implicitBool.frag.out glslang-8.13.3559/Test/baseResults/hlsl.implicitBool.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.implicitBool.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.implicitBool.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -332,7 +332,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.include.vert.out glslang-8.13.3559/Test/baseResults/hlsl.include.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.include.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.include.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.inf.vert.out glslang-8.13.3559/Test/baseResults/hlsl.inf.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.inf.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.inf.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -112,7 +112,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.init2.frag.out glslang-8.13.3559/Test/baseResults/hlsl.init2.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.init2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.init2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -358,7 +358,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.init.frag.out glslang-8.13.3559/Test/baseResults/hlsl.init.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.init.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.init.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -331,7 +331,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.inoutquals.frag.out glslang-8.13.3559/Test/baseResults/hlsl.inoutquals.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.inoutquals.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.inoutquals.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -214,7 +214,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.int.dot.frag.out glslang-8.13.3559/Test/baseResults/hlsl.int.dot.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.int.dot.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.int.dot.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -224,7 +224,7 @@ 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 @@ -295,7 +295,7 @@ 39: 17(ivec2) Load 19(i3) 40: 17(ivec2) IMul 38 39 41: 11(int) CompositeExtract 40 0 - 42: 11(int) CompositeExtract 38 1 + 42: 11(int) CompositeExtract 40 1 43: 11(int) IAdd 41 42 44: 17(ivec2) CompositeConstruct 43 43 Store 19(i3) 44 @@ -303,9 +303,9 @@ 46: 22(ivec3) Load 24(i4) 47: 22(ivec3) IMul 45 46 48: 11(int) CompositeExtract 47 0 - 49: 11(int) CompositeExtract 45 1 + 49: 11(int) CompositeExtract 47 1 50: 11(int) IAdd 48 49 - 51: 11(int) CompositeExtract 45 2 + 51: 11(int) CompositeExtract 47 2 52: 11(int) IAdd 50 51 53: 22(ivec3) CompositeConstruct 52 52 52 Store 24(i4) 53 @@ -313,11 +313,11 @@ 55: 27(ivec4) Load 29(i5) 56: 27(ivec4) IMul 54 55 57: 11(int) CompositeExtract 56 0 - 58: 11(int) CompositeExtract 54 1 + 58: 11(int) CompositeExtract 56 1 59: 11(int) IAdd 57 58 - 60: 11(int) CompositeExtract 54 2 + 60: 11(int) CompositeExtract 56 2 61: 11(int) IAdd 59 60 - 62: 11(int) CompositeExtract 54 3 + 62: 11(int) CompositeExtract 56 3 63: 11(int) IAdd 61 62 64: 27(ivec4) CompositeConstruct 63 63 63 63 Store 29(i5) 64 diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsic.frexp.frag.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsic.frexp.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsic.frexp.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsic.frexp.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -190,7 +190,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsic.frexp.vert.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsic.frexp.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsic.frexp.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsic.frexp.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -113,7 +113,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.barriers.comp.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.barriers.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.barriers.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.barriers.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -52,7 +52,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.comp.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -717,7 +717,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 265 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -74,7 +74,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.double.frag.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.double.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.double.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.double.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -164,7 +164,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.evalfns.frag.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.evalfns.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.evalfns.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.evalfns.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -155,7 +155,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 80 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.f1632.frag.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.f1632.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.f1632.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.f1632.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -260,7 +260,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.f3216.frag.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.f3216.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.f3216.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.f3216.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -270,7 +270,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.frag.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -185,1073 +185,1068 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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) @@ -5645,14 +5659,14 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 -// Id's are bound by 1836 +// Generated by (magic number): 80008 +// 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.lit.frag.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.lit.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.lit.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.lit.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -118,7 +118,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.negative.comp.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.negative.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.negative.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.negative.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -180,7 +180,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.negative.vert.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.negative.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.negative.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.negative.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -308,7 +308,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.promote.down.frag.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.promote.down.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.promote.down.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.promote.down.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -104,7 +104,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.promote.frag.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.promote.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.promote.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.promote.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -888,7 +888,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -204,7 +204,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.vert.out glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.intrinsics.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.intrinsics.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -2780,7 +2780,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 1225 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.isfinite.frag.out glslang-8.13.3559/Test/baseResults/hlsl.isfinite.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.isfinite.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.isfinite.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -172,7 +172,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.layout.frag.out glslang-8.13.3559/Test/baseResults/hlsl.layout.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.layout.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.layout.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -88,7 +88,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 44 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.layoutOverride.vert.out glslang-8.13.3559/Test/baseResults/hlsl.layoutOverride.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.layoutOverride.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.layoutOverride.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -52,7 +52,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.load.2dms.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.load.2dms.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.load.2dms.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.load.2dms.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -358,7 +358,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.load.array.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.load.array.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.load.array.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.load.array.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -388,7 +388,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.load.basic.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.load.basic.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.load.basic.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.load.basic.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -490,7 +490,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.load.basic.dx10.vert.out glslang-8.13.3559/Test/baseResults/hlsl.load.basic.dx10.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.load.basic.dx10.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.load.basic.dx10.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -452,7 +452,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.load.buffer.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.load.buffer.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.load.buffer.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.load.buffer.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -166,7 +166,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -172,7 +172,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -436,7 +436,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.load.offset.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.load.offset.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.load.offset.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.load.offset.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -562,7 +562,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -110,7 +110,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -208,7 +208,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -244,7 +244,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.logical.binary.frag.out glslang-8.13.3559/Test/baseResults/hlsl.logical.binary.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.logical.binary.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.logical.binary.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -124,7 +124,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.logical.binary.vec.frag.out glslang-8.13.3559/Test/baseResults/hlsl.logical.binary.vec.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.logical.binary.vec.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.logical.binary.vec.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -254,7 +254,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.logicalConvert.frag.out glslang-8.13.3559/Test/baseResults/hlsl.logicalConvert.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.logicalConvert.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.logicalConvert.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -254,7 +254,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.logical.unary.frag.out glslang-8.13.3559/Test/baseResults/hlsl.logical.unary.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.logical.unary.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.logical.unary.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -184,7 +184,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.loopattr.frag.out glslang-8.13.3559/Test/baseResults/hlsl.loopattr.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.loopattr.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.loopattr.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -136,7 +136,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.matNx1.frag.out glslang-8.13.3559/Test/baseResults/hlsl.matNx1.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.matNx1.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.matNx1.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -153,7 +153,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 77 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.matpack-1.frag.out glslang-8.13.3559/Test/baseResults/hlsl.matpack-1.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.matpack-1.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.matpack-1.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -100,7 +100,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.matpack-pragma.frag.out glslang-8.13.3559/Test/baseResults/hlsl.matpack-pragma.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.matpack-pragma.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.matpack-pragma.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -170,7 +170,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.matrixindex.frag.out glslang-8.13.3559/Test/baseResults/hlsl.matrixindex.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.matrixindex.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.matrixindex.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -272,7 +272,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.matrixSwizzle.vert.out glslang-8.13.3559/Test/baseResults/hlsl.matrixSwizzle.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.matrixSwizzle.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.matrixSwizzle.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -677,7 +677,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 118 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.matType.bool.frag.out glslang-8.13.3559/Test/baseResults/hlsl.matType.bool.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.matType.bool.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.matType.bool.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -233,7 +233,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 130 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.matType.frag.out glslang-8.13.3559/Test/baseResults/hlsl.matType.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.matType.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.matType.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -32,7 +32,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 30 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.matType.int.frag.out glslang-8.13.3559/Test/baseResults/hlsl.matType.int.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.matType.int.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.matType.int.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -399,7 +399,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 232 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.max.frag.out glslang-8.13.3559/Test/baseResults/hlsl.max.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.max.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.max.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -66,7 +66,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.memberFunCall.frag.out glslang-8.13.3559/Test/baseResults/hlsl.memberFunCall.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.memberFunCall.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.memberFunCall.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -152,7 +152,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.mintypes.frag.out glslang-8.13.3559/Test/baseResults/hlsl.mintypes.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.mintypes.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.mintypes.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -98,7 +98,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.mip.operator.frag.out glslang-8.13.3559/Test/baseResults/hlsl.mip.operator.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.mip.operator.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.mip.operator.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -128,7 +128,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.multiDescriptorSet.frag.out glslang-8.13.3559/Test/baseResults/hlsl.multiDescriptorSet.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.multiDescriptorSet.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.multiDescriptorSet.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.multiEntry.vert.out glslang-8.13.3559/Test/baseResults/hlsl.multiEntry.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.multiEntry.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.multiEntry.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -70,7 +70,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.multiReturn.frag.out glslang-8.13.3559/Test/baseResults/hlsl.multiReturn.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.multiReturn.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.multiReturn.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -48,7 +48,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.mul-truncate.frag.out glslang-8.13.3559/Test/baseResults/hlsl.mul-truncate.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.mul-truncate.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.mul-truncate.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -383,7 +383,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.namespace.frag.out glslang-8.13.3559/Test/baseResults/hlsl.namespace.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.namespace.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.namespace.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -103,7 +103,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 54 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.nonint-index.frag.out glslang-8.13.3559/Test/baseResults/hlsl.nonint-index.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.nonint-index.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.nonint-index.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -88,7 +88,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out glslang-8.13.3559/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -268,7 +268,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.noSemantic.functionality1.comp.out glslang-8.13.3559/Test/baseResults/hlsl.noSemantic.functionality1.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.noSemantic.functionality1.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.noSemantic.functionality1.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.numericsuffixes.frag.out glslang-8.13.3559/Test/baseResults/hlsl.numericsuffixes.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.numericsuffixes.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.numericsuffixes.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -192,7 +192,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.numthreads.comp.out glslang-8.13.3559/Test/baseResults/hlsl.numthreads.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.numthreads.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.numthreads.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -44,7 +44,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.opaque-type-bug.frag.out glslang-8.13.3559/Test/baseResults/hlsl.opaque-type-bug.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.opaque-type-bug.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.opaque-type-bug.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -58,7 +58,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.overload.frag.out glslang-8.13.3559/Test/baseResults/hlsl.overload.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.overload.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.overload.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -734,7 +734,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.params.default.frag.out glslang-8.13.3559/Test/baseResults/hlsl.params.default.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.params.default.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.params.default.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -376,7 +376,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.partialFlattenLocal.vert.out glslang-8.13.3559/Test/baseResults/hlsl.partialFlattenLocal.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.partialFlattenLocal.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.partialFlattenLocal.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -237,7 +237,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.partialFlattenMixed.vert.out glslang-8.13.3559/Test/baseResults/hlsl.partialFlattenMixed.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.partialFlattenMixed.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.partialFlattenMixed.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -91,7 +91,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.partialInit.frag.out glslang-8.13.3559/Test/baseResults/hlsl.partialInit.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.partialInit.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.partialInit.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -400,7 +400,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 104 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.PointSize.geom.out glslang-8.13.3559/Test/baseResults/hlsl.PointSize.geom.out --- glslang-7.12.3352/Test/baseResults/hlsl.PointSize.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.PointSize.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -71,7 +71,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 36 Capability Geometry diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.PointSize.vert.out glslang-8.13.3559/Test/baseResults/hlsl.PointSize.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.PointSize.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.PointSize.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -38,7 +38,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.pp.line2.frag.out glslang-8.13.3559/Test/baseResults/hlsl.pp.line2.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.pp.line2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.pp.line2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.pp.line3.frag.out glslang-8.13.3559/Test/baseResults/hlsl.pp.line3.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.pp.line3.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.pp.line3.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.pp.line4.frag.out glslang-8.13.3559/Test/baseResults/hlsl.pp.line4.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.pp.line4.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.pp.line4.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.pp.line.frag.out glslang-8.13.3559/Test/baseResults/hlsl.pp.line.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.pp.line.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.pp.line.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -120,7 +120,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.pp.vert.out glslang-8.13.3559/Test/baseResults/hlsl.pp.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.pp.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.pp.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -26,7 +26,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.precedence2.frag.out glslang-8.13.3559/Test/baseResults/hlsl.precedence2.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.precedence2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.precedence2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -114,7 +114,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.precedence.frag.out glslang-8.13.3559/Test/baseResults/hlsl.precedence.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.precedence.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.precedence.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -148,7 +148,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.precise.frag.out glslang-8.13.3559/Test/baseResults/hlsl.precise.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.precise.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.precise.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -76,7 +76,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.preprocessor.frag.out glslang-8.13.3559/Test/baseResults/hlsl.preprocessor.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.preprocessor.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.preprocessor.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -94,7 +94,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.promote.atomic.frag.out glslang-8.13.3559/Test/baseResults/hlsl.promote.atomic.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.promote.atomic.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.promote.atomic.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -64,7 +64,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.promote.binary.frag.out glslang-8.13.3559/Test/baseResults/hlsl.promote.binary.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.promote.binary.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.promote.binary.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -172,7 +172,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.promote.vec1.frag.out glslang-8.13.3559/Test/baseResults/hlsl.promote.vec1.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.promote.vec1.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.promote.vec1.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -80,7 +80,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.promotions.frag.out glslang-8.13.3559/Test/baseResults/hlsl.promotions.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.promotions.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.promotions.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -1582,7 +1582,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.rw.atomics.frag.out glslang-8.13.3559/Test/baseResults/hlsl.rw.atomics.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.rw.atomics.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.rw.atomics.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -3946,7 +3946,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.rw.bracket.frag.out glslang-8.13.3559/Test/baseResults/hlsl.rw.bracket.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.rw.bracket.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.rw.bracket.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -1744,7 +1744,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.rw.register.frag.out glslang-8.13.3559/Test/baseResults/hlsl.rw.register.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.rw.register.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.rw.register.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -98,7 +98,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.rw.scalar.bracket.frag.out glslang-8.13.3559/Test/baseResults/hlsl.rw.scalar.bracket.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.rw.scalar.bracket.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.rw.scalar.bracket.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -1690,7 +1690,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.rw.swizzle.frag.out glslang-8.13.3559/Test/baseResults/hlsl.rw.swizzle.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.rw.swizzle.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.rw.swizzle.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -202,7 +202,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.rw.vec2.bracket.frag.out glslang-8.13.3559/Test/baseResults/hlsl.rw.vec2.bracket.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.rw.vec2.bracket.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.rw.vec2.bracket.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -1708,7 +1708,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.sample.array.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.sample.array.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.sample.array.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.sample.array.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -322,7 +322,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.sample.basic.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.sample.basic.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.sample.basic.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.sample.basic.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -550,7 +550,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplebias.array.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplebias.array.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplebias.array.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplebias.array.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -358,7 +358,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -424,7 +424,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -299,7 +299,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 118 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -401,7 +401,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 161 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -399,7 +399,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 209 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -381,7 +381,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 198 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplecmp.dualmode.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplecmp.dualmode.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplecmp.dualmode.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplecmp.dualmode.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -85,7 +85,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -435,7 +435,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 210 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -417,7 +417,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 199 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -363,7 +363,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 179 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -351,7 +351,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 168 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -339,7 +339,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 178 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -327,7 +327,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 167 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.sample.dx9.frag.out glslang-8.13.3559/Test/baseResults/hlsl.sample.dx9.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.sample.dx9.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.sample.dx9.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -378,7 +378,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.sample.dx9.vert.out glslang-8.13.3559/Test/baseResults/hlsl.sample.dx9.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.sample.dx9.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.sample.dx9.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -154,7 +154,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -430,7 +430,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -532,7 +532,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out glslang-8.13.3559/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -494,7 +494,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -340,7 +340,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -472,7 +472,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -358,7 +358,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -426,7 +426,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out glslang-8.13.3559/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -386,7 +386,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -298,7 +298,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -400,7 +400,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -274,7 +274,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.sample.offset.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.sample.offset.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.sample.offset.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.sample.offset.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -364,7 +364,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out glslang-8.13.3559/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -154,7 +154,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.scalar2matrix.frag.out glslang-8.13.3559/Test/baseResults/hlsl.scalar2matrix.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.scalar2matrix.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.scalar2matrix.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -374,7 +374,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.scalarCast.vert.out glslang-8.13.3559/Test/baseResults/hlsl.scalarCast.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.scalarCast.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.scalarCast.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -322,7 +322,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.scalar-length.frag.out glslang-8.13.3559/Test/baseResults/hlsl.scalar-length.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.scalar-length.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.scalar-length.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -64,7 +64,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.scope.frag.out glslang-8.13.3559/Test/baseResults/hlsl.scope.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.scope.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.scope.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -102,7 +102,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.self_cast.frag.out glslang-8.13.3559/Test/baseResults/hlsl.self_cast.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.self_cast.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.self_cast.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -68,7 +68,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.semantic-1.vert.out glslang-8.13.3559/Test/baseResults/hlsl.semantic-1.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.semantic-1.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.semantic-1.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -242,7 +242,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.semantic.geom.out glslang-8.13.3559/Test/baseResults/hlsl.semantic.geom.out --- glslang-7.12.3352/Test/baseResults/hlsl.semantic.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.semantic.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -157,7 +157,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 65 Capability Geometry diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.semantic.vert.out glslang-8.13.3559/Test/baseResults/hlsl.semantic.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.semantic.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.semantic.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -210,7 +210,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.semicolons.frag.out glslang-8.13.3559/Test/baseResults/hlsl.semicolons.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.semicolons.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.semicolons.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -74,7 +74,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.shapeConv.frag.out glslang-8.13.3559/Test/baseResults/hlsl.shapeConv.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.shapeConv.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.shapeConv.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -319,7 +319,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.shapeConvRet.frag.out glslang-8.13.3559/Test/baseResults/hlsl.shapeConvRet.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.shapeConvRet.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.shapeConvRet.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -68,7 +68,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.sin.frag.out glslang-8.13.3559/Test/baseResults/hlsl.sin.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.sin.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.sin.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -52,7 +52,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.snorm.uav.comp.out glslang-8.13.3559/Test/baseResults/hlsl.snorm.uav.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.snorm.uav.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.snorm.uav.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -112,7 +112,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.specConstant.frag.out glslang-8.13.3559/Test/baseResults/hlsl.specConstant.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.specConstant.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.specConstant.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -136,7 +136,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.staticFuncInit.frag.out glslang-8.13.3559/Test/baseResults/hlsl.staticFuncInit.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.staticFuncInit.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.staticFuncInit.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -130,7 +130,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.staticMemberFunction.frag.out glslang-8.13.3559/Test/baseResults/hlsl.staticMemberFunction.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.staticMemberFunction.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.staticMemberFunction.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -118,7 +118,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out glslang-8.13.3559/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -96,7 +96,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.string.frag.out glslang-8.13.3559/Test/baseResults/hlsl.string.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.string.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.string.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -50,7 +50,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.stringtoken.frag.out glslang-8.13.3559/Test/baseResults/hlsl.stringtoken.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.stringtoken.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.stringtoken.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -70,7 +70,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.structarray.flatten.frag.out glslang-8.13.3559/Test/baseResults/hlsl.structarray.flatten.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.structarray.flatten.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structarray.flatten.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -157,7 +157,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 80 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.structarray.flatten.geom.out glslang-8.13.3559/Test/baseResults/hlsl.structarray.flatten.geom.out --- glslang-7.12.3352/Test/baseResults/hlsl.structarray.flatten.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structarray.flatten.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -170,7 +170,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.append.fn.frag.out glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.append.fn.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.append.fn.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.append.fn.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -151,7 +151,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 70 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.append.frag.out glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.append.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.append.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.append.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -124,7 +124,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.atomics.frag.out glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.atomics.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.atomics.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.atomics.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -475,7 +475,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 87 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.byte.frag.out glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.byte.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.byte.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.byte.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -324,7 +324,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.coherent.frag.out glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.coherent.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.coherent.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.coherent.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -176,7 +176,7 @@ 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 @@ -305,6 +305,5 @@ 66: 9(fvec4) CompositeConstruct 65 65 65 65 ReturnValue 66 45: Label - 68: 9(fvec4) Undef - ReturnValue 68 + Unreachable FunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.floatidx.comp.out glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.floatidx.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.floatidx.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.floatidx.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -180,7 +180,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.fn2.comp.out glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.fn2.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.fn2.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.fn2.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -136,7 +136,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.fn.frag.out glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.fn.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.fn.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.fn.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -139,7 +139,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 78 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.frag.out glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -188,7 +188,7 @@ 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 @@ -344,6 +344,5 @@ 84: 9(fvec4) CompositeConstruct 83 83 83 83 ReturnValue 84 53: Label - 86: 9(fvec4) Undef - ReturnValue 86 + Unreachable FunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out --- glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.incdec.frag.out glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.incdec.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.incdec.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.incdec.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -204,7 +204,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -1004,7 +1004,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.rw.frag.out glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.rw.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.structbuffer.rw.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structbuffer.rw.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -176,7 +176,7 @@ 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 @@ -303,6 +303,5 @@ 66: 9(fvec4) CompositeConstruct 65 65 65 65 ReturnValue 66 45: Label - 68: 9(fvec4) Undef - ReturnValue 68 + Unreachable FunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.struct.frag.out glslang-8.13.3559/Test/baseResults/hlsl.struct.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.struct.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.struct.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -213,7 +213,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 102 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.structin.vert.out glslang-8.13.3559/Test/baseResults/hlsl.structin.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.structin.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structin.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -340,7 +340,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.structIoFourWay.frag.out glslang-8.13.3559/Test/baseResults/hlsl.structIoFourWay.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.structIoFourWay.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structIoFourWay.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -162,7 +162,7 @@ 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 @@ -170,8 +170,8 @@ MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 22 27 31 36 45 48 51 55 ExecutionMode 4 OriginUpperLeft - ExecutionMode 4 DepthGreater ExecutionMode 4 DepthReplacing + ExecutionMode 4 DepthGreater Source HLSL 500 Name 4 "main" Name 8 "T" diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.struct.split-1.vert.out glslang-8.13.3559/Test/baseResults/hlsl.struct.split-1.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.struct.split-1.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.struct.split-1.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -196,7 +196,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.struct.split.array.geom.out glslang-8.13.3559/Test/baseResults/hlsl.struct.split.array.geom.out --- glslang-7.12.3352/Test/baseResults/hlsl.struct.split.array.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.struct.split.array.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -160,7 +160,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.struct.split.assign.frag.out glslang-8.13.3559/Test/baseResults/hlsl.struct.split.assign.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.struct.split.assign.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.struct.split.assign.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -209,7 +209,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 66 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.struct.split.call.vert.out glslang-8.13.3559/Test/baseResults/hlsl.struct.split.call.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.struct.split.call.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.struct.split.call.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -214,7 +214,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.struct.split.nested.geom.out glslang-8.13.3559/Test/baseResults/hlsl.struct.split.nested.geom.out --- glslang-7.12.3352/Test/baseResults/hlsl.struct.split.nested.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.struct.split.nested.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -448,7 +448,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.struct.split.trivial.geom.out glslang-8.13.3559/Test/baseResults/hlsl.struct.split.trivial.geom.out --- glslang-7.12.3352/Test/baseResults/hlsl.struct.split.trivial.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.struct.split.trivial.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -192,7 +192,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.struct.split.trivial.vert.out glslang-8.13.3559/Test/baseResults/hlsl.struct.split.trivial.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.struct.split.trivial.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.struct.split.trivial.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -98,7 +98,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.structStructName.frag.out glslang-8.13.3559/Test/baseResults/hlsl.structStructName.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.structStructName.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.structStructName.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -44,7 +44,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.subpass.frag.out glslang-8.13.3559/Test/baseResults/hlsl.subpass.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.subpass.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.subpass.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -430,7 +430,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.switch.frag.out glslang-8.13.3559/Test/baseResults/hlsl.switch.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.switch.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.switch.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -296,7 +296,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.swizzle.frag.out glslang-8.13.3559/Test/baseResults/hlsl.swizzle.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.swizzle.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.swizzle.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -77,7 +77,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.synthesizeInput.frag.out glslang-8.13.3559/Test/baseResults/hlsl.synthesizeInput.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.synthesizeInput.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.synthesizeInput.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -98,7 +98,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.target.frag.out glslang-8.13.3559/Test/baseResults/hlsl.target.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.target.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.target.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -114,7 +114,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.targetStruct1.frag.out glslang-8.13.3559/Test/baseResults/hlsl.targetStruct1.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.targetStruct1.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.targetStruct1.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -184,7 +184,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.targetStruct2.frag.out glslang-8.13.3559/Test/baseResults/hlsl.targetStruct2.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.targetStruct2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.targetStruct2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -184,7 +184,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.templatetypes.frag.out glslang-8.13.3559/Test/baseResults/hlsl.templatetypes.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.templatetypes.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.templatetypes.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -508,7 +508,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.texturebuffer.frag.out glslang-8.13.3559/Test/baseResults/hlsl.texturebuffer.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.texturebuffer.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.texturebuffer.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -70,7 +70,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.texture.struct.frag.out glslang-8.13.3559/Test/baseResults/hlsl.texture.struct.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.texture.struct.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.texture.struct.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -839,7 +839,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 240 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.texture.subvec4.frag.out glslang-8.13.3559/Test/baseResults/hlsl.texture.subvec4.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.texture.subvec4.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.texture.subvec4.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -356,7 +356,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.this.frag.out glslang-8.13.3559/Test/baseResults/hlsl.this.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.this.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.this.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -240,7 +240,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.tristream-append.geom.out glslang-8.13.3559/Test/baseResults/hlsl.tristream-append.geom.out --- glslang-7.12.3352/Test/baseResults/hlsl.tristream-append.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.tristream-append.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -107,7 +107,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 57 Capability Geometry diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.tx.bracket.frag.out glslang-8.13.3559/Test/baseResults/hlsl.tx.bracket.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.tx.bracket.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.tx.bracket.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -422,7 +422,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.tx.overload.frag.out glslang-8.13.3559/Test/baseResults/hlsl.tx.overload.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.tx.overload.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.tx.overload.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -134,7 +134,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.typedef.frag.out glslang-8.13.3559/Test/baseResults/hlsl.typedef.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.typedef.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.typedef.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -79,7 +79,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.typeGraphCopy.vert.out glslang-8.13.3559/Test/baseResults/hlsl.typeGraphCopy.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.typeGraphCopy.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.typeGraphCopy.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -62,7 +62,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.type.half.frag.out glslang-8.13.3559/Test/baseResults/hlsl.type.half.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.type.half.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.type.half.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -164,7 +164,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.type.identifier.frag.out glslang-8.13.3559/Test/baseResults/hlsl.type.identifier.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.type.identifier.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.type.identifier.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -266,7 +266,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.type.type.conversion.valid.frag.out glslang-8.13.3559/Test/baseResults/hlsl.type.type.conversion.valid.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.type.type.conversion.valid.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.type.type.conversion.valid.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -1364,7 +1364,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.void.frag.out glslang-8.13.3559/Test/baseResults/hlsl.void.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.void.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.void.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -54,7 +54,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.wavebroadcast.comp.out glslang-8.13.3559/Test/baseResults/hlsl.wavebroadcast.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.wavebroadcast.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.wavebroadcast.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -2298,7 +2298,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.waveprefix.comp.out glslang-8.13.3559/Test/baseResults/hlsl.waveprefix.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.waveprefix.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.waveprefix.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -2322,7 +2322,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.wavequad.comp.out glslang-8.13.3559/Test/baseResults/hlsl.wavequad.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.wavequad.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.wavequad.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -8026,7 +8026,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.wavequery.comp.out glslang-8.13.3559/Test/baseResults/hlsl.wavequery.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.wavequery.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.wavequery.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -60,7 +60,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.wavequery.frag.out glslang-8.13.3559/Test/baseResults/hlsl.wavequery.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.wavequery.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.wavequery.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -72,7 +72,7 @@ 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 @@ -118,6 +118,5 @@ 23: Label ReturnValue 24 16: Label - 26: 7(fvec4) Undef - ReturnValue 26 + Unreachable FunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/hlsl.wavereduction.comp.out glslang-8.13.3559/Test/baseResults/hlsl.wavereduction.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.wavereduction.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.wavereduction.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -6186,7 +6186,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.wavevote.comp.out glslang-8.13.3559/Test/baseResults/hlsl.wavevote.comp.out --- glslang-7.12.3352/Test/baseResults/hlsl.wavevote.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.wavevote.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -204,7 +204,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.whileLoop.frag.out glslang-8.13.3559/Test/baseResults/hlsl.whileLoop.frag.out --- glslang-7.12.3352/Test/baseResults/hlsl.whileLoop.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.whileLoop.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -96,7 +96,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.y-negate-1.vert.out glslang-8.13.3559/Test/baseResults/hlsl.y-negate-1.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.y-negate-1.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.y-negate-1.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -72,7 +72,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.y-negate-2.vert.out glslang-8.13.3559/Test/baseResults/hlsl.y-negate-2.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.y-negate-2.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.y-negate-2.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -80,7 +80,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/hlsl.y-negate-3.vert.out glslang-8.13.3559/Test/baseResults/hlsl.y-negate-3.vert.out --- glslang-7.12.3352/Test/baseResults/hlsl.y-negate-3.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/hlsl.y-negate-3.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -126,7 +126,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/link1.vk.frag.out glslang-8.13.3559/Test/baseResults/link1.vk.frag.out --- glslang-7.12.3352/Test/baseResults/link1.vk.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/link1.vk.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -42,8 +42,8 @@ 0:? 'b' ( global 5-element array of highp int) 0:? 'c' ( global unsized 4-element array of highp int) 0:? 'i' ( global highp int) -0:? 'anon@0' (layout( column_major std430) buffer block{layout( column_major std430) buffer unsized 1-element array of highp float r}) -0:? 'anon@1' (layout( column_major std430) buffer block{layout( column_major std430) buffer unsized 1-element array of highp float m}) +0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430) buffer unsized 1-element array of highp float r}) +0:? 'anon@1' (layout( binding=1 column_major std430) buffer block{layout( column_major std430) buffer unsized 1-element array of highp float m}) link2.vk.frag Shader version: 450 @@ -99,8 +99,8 @@ 0:? 'b' ( global unsized 3-element array of highp int) 0:? 'c' ( global 7-element array of highp int) 0:? 'i' ( global highp int) -0:? 'anon@0' (layout( column_major std430) buffer block{layout( column_major std430) buffer unsized 1-element array of highp float r}) -0:? 'anon@1' (layout( column_major std430) buffer block{layout( column_major std430) buffer 4-element array of highp float m}) +0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430) buffer unsized 1-element array of highp float r}) +0:? 'anon@1' (layout( binding=1 column_major std430) buffer block{layout( column_major std430) buffer 4-element array of highp float m}) Linked fragment stage: @@ -192,12 +192,12 @@ 0:? 'b' ( global 5-element array of highp int) 0:? 'c' ( global 7-element array of highp int) 0:? 'i' ( global highp int) -0:? 'anon@0' (layout( column_major std430) buffer block{layout( column_major std430) buffer unsized 1-element array of highp float r}) -0:? 'anon@1' (layout( column_major std430) buffer block{layout( column_major std430) buffer 4-element array of highp float m}) +0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430) buffer unsized 1-element array of highp float r}) +0:? 'anon@1' (layout( binding=1 column_major std430) buffer block{layout( column_major std430) buffer 4-element array of highp float m}) 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 @@ -233,7 +233,7 @@ MemberDecorate 67(bnameImplicit) 0 Offset 0 Decorate 67(bnameImplicit) BufferBlock Decorate 69 DescriptorSet 0 - Decorate 69 Binding 0 + Decorate 69 Binding 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff -Nru glslang-7.12.3352/Test/baseResults/nonuniform.frag.out glslang-8.13.3559/Test/baseResults/nonuniform.frag.out --- glslang-7.12.3352/Test/baseResults/nonuniform.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/nonuniform.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -40,6 +40,13 @@ 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 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/reflection.options.vert.out glslang-8.13.3559/Test/baseResults/reflection.options.vert.out --- glslang-7.12.3352/Test/baseResults/reflection.options.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/reflection.options.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -51,10 +51,15 @@ MultipleArrays.vert[0].position[0]: offset 360, type 1406, size 3, index 1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24 MultipleArrays.vert[0].normal[0]: offset 372, type 1406, size 3, index 1, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24 MultipleArrays.f[0]: offset 480, type 1406, size 5, index 1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 4 +ArrayedBind[0].a: offset 0, type 1406, size 1, index 4, binding -1, stages 0 +ArrayedBind[0].b: offset 4, type 1406, size 1, index 4, binding -1, stages 1 Buffer block reflection: VertexCollection: offset -1, type ffffffff, size 400, index -1, binding -1, stages 1, numMembers 7 MultipleArrays: offset -1, type ffffffff, size 500, index -1, binding -1, stages 1, numMembers 9 +ArrayedBind[0]: offset -1, type ffffffff, size 8, index -1, binding -1, stages 1, numMembers 2 +ArrayedBind[1]: offset -1, type ffffffff, size 8, index -1, binding -1, stages 1, numMembers 2 +ArrayedBind[2]: offset -1, type ffffffff, size 8, index -1, binding -1, stages 1, numMembers 2 Pipeline input reflection: gl_InstanceID: offset 0, type 1404, size 1, index 0, binding -1, stages 1 diff -Nru glslang-7.12.3352/Test/baseResults/remap.basic.dcefunc.frag.out glslang-8.13.3559/Test/baseResults/remap.basic.dcefunc.frag.out --- glslang-7.12.3352/Test/baseResults/remap.basic.dcefunc.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.basic.dcefunc.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/remap.basic.everything.frag.out glslang-8.13.3559/Test/baseResults/remap.basic.everything.frag.out --- glslang-7.12.3352/Test/baseResults/remap.basic.everything.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.basic.everything.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/remap.basic.none.frag.out glslang-8.13.3559/Test/baseResults/remap.basic.none.frag.out --- glslang-7.12.3352/Test/baseResults/remap.basic.none.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.basic.none.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/remap.basic.strip.frag.out glslang-8.13.3559/Test/baseResults/remap.basic.strip.frag.out --- glslang-7.12.3352/Test/baseResults/remap.basic.strip.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.basic.strip.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out glslang-8.13.3559/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out --- glslang-7.12.3352/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -2,7 +2,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/remap.hlsl.sample.basic.none.frag.out glslang-8.13.3559/Test/baseResults/remap.hlsl.sample.basic.none.frag.out --- glslang-7.12.3352/Test/baseResults/remap.hlsl.sample.basic.none.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.hlsl.sample.basic.none.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -2,7 +2,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out glslang-8.13.3559/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out --- glslang-7.12.3352/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -2,7 +2,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out glslang-8.13.3559/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out --- glslang-7.12.3352/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/remap.hlsl.templatetypes.none.frag.out glslang-8.13.3559/Test/baseResults/remap.hlsl.templatetypes.none.frag.out --- glslang-7.12.3352/Test/baseResults/remap.hlsl.templatetypes.none.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.hlsl.templatetypes.none.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/remap.if.everything.frag.out glslang-8.13.3559/Test/baseResults/remap.if.everything.frag.out --- glslang-7.12.3352/Test/baseResults/remap.if.everything.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.if.everything.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/remap.if.none.frag.out glslang-8.13.3559/Test/baseResults/remap.if.none.frag.out --- glslang-7.12.3352/Test/baseResults/remap.if.none.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.if.none.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/remap.similar_1a.everything.frag.out glslang-8.13.3559/Test/baseResults/remap.similar_1a.everything.frag.out --- glslang-7.12.3352/Test/baseResults/remap.similar_1a.everything.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.similar_1a.everything.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 @@ -88,7 +88,7 @@ 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 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/remap.similar_1a.none.frag.out glslang-8.13.3559/Test/baseResults/remap.similar_1a.none.frag.out --- glslang-7.12.3352/Test/baseResults/remap.similar_1a.none.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.similar_1a.none.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 @@ -124,6 +124,5 @@ 68: 8(float) ConvertSToF 67 ReturnValue 68 43: Label - 70: 8(float) Undef - ReturnValue 70 + Unreachable FunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/remap.similar_1b.everything.frag.out glslang-8.13.3559/Test/baseResults/remap.similar_1b.everything.frag.out --- glslang-7.12.3352/Test/baseResults/remap.similar_1b.everything.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.similar_1b.everything.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 @@ -93,7 +93,7 @@ 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 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/remap.similar_1b.none.frag.out glslang-8.13.3559/Test/baseResults/remap.similar_1b.none.frag.out --- glslang-7.12.3352/Test/baseResults/remap.similar_1b.none.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.similar_1b.none.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 @@ -130,6 +130,5 @@ 73: 8(float) ConvertSToF 72 ReturnValue 73 46: Label - 75: 8(float) Undef - ReturnValue 75 + Unreachable FunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/remap.specconst.comp.out glslang-8.13.3559/Test/baseResults/remap.specconst.comp.out --- glslang-7.12.3352/Test/baseResults/remap.specconst.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.specconst.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/remap.switch.everything.frag.out glslang-8.13.3559/Test/baseResults/remap.switch.everything.frag.out --- glslang-7.12.3352/Test/baseResults/remap.switch.everything.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.switch.everything.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -3,7 +3,7 @@ "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 -Nru glslang-7.12.3352/Test/baseResults/remap.switch.none.frag.out glslang-8.13.3559/Test/baseResults/remap.switch.none.frag.out --- glslang-7.12.3352/Test/baseResults/remap.switch.none.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.switch.none.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -3,7 +3,7 @@ "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 -Nru glslang-7.12.3352/Test/baseResults/remap.uniformarray.everything.frag.out glslang-8.13.3559/Test/baseResults/remap.uniformarray.everything.frag.out --- glslang-7.12.3352/Test/baseResults/remap.uniformarray.everything.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.uniformarray.everything.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/remap.uniformarray.none.frag.out glslang-8.13.3559/Test/baseResults/remap.uniformarray.none.frag.out --- glslang-7.12.3352/Test/baseResults/remap.uniformarray.none.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/remap.uniformarray.none.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/size glslang-8.13.3559/Test/baseResults/size --- glslang-7.12.3352/Test/baseResults/size 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/size 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1 @@ +396288 ../build/install/bin/glslangValidator.exe diff -Nru glslang-7.12.3352/Test/baseResults/specExamplesConf.vert.out glslang-8.13.3559/Test/baseResults/specExamplesConf.vert.out --- glslang-7.12.3352/Test/baseResults/specExamplesConf.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/specExamplesConf.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -308,7 +308,7 @@ 0:? 'c' ( in 4-component vector of float) 0:? 'd' ( in 4-component vector of float) 0:? 'v' ( noContraction smooth out 4-component vector of float) -0:? 'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) readonly buffer 4-component vector of float member1, layout( column_major shared) buffer 4-component vector of float member2}) +0:? 'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1, layout( column_major shared) coherent buffer 4-component vector of float member2}) 0:? 'anon@7' (layout( column_major shared) buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1A, layout( column_major shared) coherent buffer 4-component vector of float member2A}) 0:? 'shv' ( shared 4-component vector of float) 0:? 'img1' (layout( rgba32f) uniform image2D) @@ -591,7 +591,7 @@ 0:? 'c' ( in 4-component vector of float) 0:? 'd' ( in 4-component vector of float) 0:? 'v' ( noContraction smooth out 4-component vector of float) -0:? 'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) readonly buffer 4-component vector of float member1, layout( column_major shared) buffer 4-component vector of float member2}) +0:? 'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1, layout( column_major shared) coherent buffer 4-component vector of float member2}) 0:? 'anon@7' (layout( column_major shared) buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1A, layout( column_major shared) coherent buffer 4-component vector of float member2A}) 0:? 'shv' ( shared 4-component vector of float) 0:? 'img1' (layout( rgba32f) uniform image2D) diff -Nru glslang-7.12.3352/Test/baseResults/specExamples.vert.out glslang-8.13.3559/Test/baseResults/specExamples.vert.out --- glslang-7.12.3352/Test/baseResults/specExamples.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/specExamples.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -307,7 +307,7 @@ 0:? 'c' ( in 4-component vector of float) 0:? 'd' ( in 4-component vector of float) 0:? 'v' ( noContraction smooth out 4-component vector of float) -0:? 'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) readonly buffer 4-component vector of float member1, layout( column_major shared) buffer 4-component vector of float member2}) +0:? 'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1, layout( column_major shared) coherent buffer 4-component vector of float member2}) 0:? 'anon@7' (layout( column_major shared) buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1A, layout( column_major shared) coherent buffer 4-component vector of float member2A}) 0:? 'shv' ( shared 4-component vector of float) 0:? 'img1' (layout( rgba32f) uniform image2D) @@ -590,7 +590,7 @@ 0:? 'c' ( in 4-component vector of float) 0:? 'd' ( in 4-component vector of float) 0:? 'v' ( noContraction smooth out 4-component vector of float) -0:? 'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) readonly buffer 4-component vector of float member1, layout( column_major shared) buffer 4-component vector of float member2}) +0:? 'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1, layout( column_major shared) coherent buffer 4-component vector of float member2}) 0:? 'anon@7' (layout( column_major shared) buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1A, layout( column_major shared) coherent buffer 4-component vector of float member2A}) 0:? 'shv' ( shared 4-component vector of float) 0:? 'img1' (layout( rgba32f) uniform image2D) diff -Nru glslang-7.12.3352/Test/baseResults/spv.100ops.frag.out glslang-8.13.3559/Test/baseResults/spv.100ops.frag.out --- glslang-7.12.3352/Test/baseResults/spv.100ops.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.100ops.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.130.frag.out glslang-8.13.3559/Test/baseResults/spv.130.frag.out --- glslang-7.12.3352/Test/baseResults/spv.130.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.130.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -3,7 +3,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 205 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out glslang-8.13.3559/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out --- glslang-7.12.3352/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out glslang-8.13.3559/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out --- glslang-7.12.3352/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.1.3.coopmat.comp.out glslang-8.13.3559/Test/baseResults/spv.1.3.coopmat.comp.out --- glslang-7.12.3352/Test/baseResults/spv.1.3.coopmat.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.3.coopmat.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.140.frag.out glslang-8.13.3559/Test/baseResults/spv.140.frag.out --- glslang-7.12.3352/Test/baseResults/spv.140.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.140.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.1.4.constructComposite.comp.out glslang-8.13.3559/Test/baseResults/spv.1.4.constructComposite.comp.out --- glslang-7.12.3352/Test/baseResults/spv.1.4.constructComposite.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.4.constructComposite.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.1.4.image.frag.out glslang-8.13.3559/Test/baseResults/spv.1.4.image.frag.out --- glslang-7.12.3352/Test/baseResults/spv.1.4.image.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.4.image.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.1.4.LoopControl.frag.out glslang-8.13.3559/Test/baseResults/spv.1.4.LoopControl.frag.out --- glslang-7.12.3352/Test/baseResults/spv.1.4.LoopControl.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.4.LoopControl.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -3,7 +3,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/spv.1.4.NonWritable.frag.out glslang-8.13.3559/Test/baseResults/spv.1.4.NonWritable.frag.out --- glslang-7.12.3352/Test/baseResults/spv.1.4.NonWritable.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.4.NonWritable.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out glslang-8.13.3559/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out --- glslang-7.12.3352/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.1.4.OpCopyLogical.comp.out glslang-8.13.3559/Test/baseResults/spv.1.4.OpCopyLogical.comp.out --- glslang-7.12.3352/Test/baseResults/spv.1.4.OpCopyLogical.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.4.OpCopyLogical.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out glslang-8.13.3559/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out --- glslang-7.12.3352/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.1.4.OpEntryPoint.frag.out glslang-8.13.3559/Test/baseResults/spv.1.4.OpEntryPoint.frag.out --- glslang-7.12.3352/Test/baseResults/spv.1.4.OpEntryPoint.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.4.OpEntryPoint.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.1.4.OpSelect.frag.out glslang-8.13.3559/Test/baseResults/spv.1.4.OpSelect.frag.out --- glslang-7.12.3352/Test/baseResults/spv.1.4.OpSelect.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.4.OpSelect.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.1.4.sparseTexture.frag.out glslang-8.13.3559/Test/baseResults/spv.1.4.sparseTexture.frag.out --- glslang-7.12.3352/Test/baseResults/spv.1.4.sparseTexture.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.4.sparseTexture.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.1.4.texture.frag.out glslang-8.13.3559/Test/baseResults/spv.1.4.texture.frag.out --- glslang-7.12.3352/Test/baseResults/spv.1.4.texture.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.1.4.texture.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.150.geom.out glslang-8.13.3559/Test/baseResults/spv.150.geom.out --- glslang-7.12.3352/Test/baseResults/spv.150.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.150.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.150.vert.out glslang-8.13.3559/Test/baseResults/spv.150.vert.out --- glslang-7.12.3352/Test/baseResults/spv.150.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.150.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.16bitstorage.frag.out glslang-8.13.3559/Test/baseResults/spv.16bitstorage.frag.out --- glslang-7.12.3352/Test/baseResults/spv.16bitstorage.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.16bitstorage.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.16bitstorage-int.frag.out glslang-8.13.3559/Test/baseResults/spv.16bitstorage-int.frag.out --- glslang-7.12.3352/Test/baseResults/spv.16bitstorage-int.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.16bitstorage-int.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.16bitstorage-uint.frag.out glslang-8.13.3559/Test/baseResults/spv.16bitstorage-uint.frag.out --- glslang-7.12.3352/Test/baseResults/spv.16bitstorage-uint.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.16bitstorage-uint.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.16bitxfb.vert.out glslang-8.13.3559/Test/baseResults/spv.16bitxfb.vert.out --- glslang-7.12.3352/Test/baseResults/spv.16bitxfb.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.16bitxfb.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.300BuiltIns.vert.out glslang-8.13.3559/Test/baseResults/spv.300BuiltIns.vert.out --- glslang-7.12.3352/Test/baseResults/spv.300BuiltIns.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.300BuiltIns.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.300layout.frag.out glslang-8.13.3559/Test/baseResults/spv.300layout.frag.out --- glslang-7.12.3352/Test/baseResults/spv.300layout.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.300layout.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.300layoutp.vert.out glslang-8.13.3559/Test/baseResults/spv.300layoutp.vert.out --- glslang-7.12.3352/Test/baseResults/spv.300layoutp.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.300layoutp.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.300layout.vert.out glslang-8.13.3559/Test/baseResults/spv.300layout.vert.out --- glslang-7.12.3352/Test/baseResults/spv.300layout.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.300layout.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.310.bitcast.frag.out glslang-8.13.3559/Test/baseResults/spv.310.bitcast.frag.out --- glslang-7.12.3352/Test/baseResults/spv.310.bitcast.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.310.bitcast.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.310.comp.out glslang-8.13.3559/Test/baseResults/spv.310.comp.out --- glslang-7.12.3352/Test/baseResults/spv.310.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.310.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out glslang-8.13.3559/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out --- glslang-7.12.3352/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.330.geom.out glslang-8.13.3559/Test/baseResults/spv.330.geom.out --- glslang-7.12.3352/Test/baseResults/spv.330.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.330.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.400.frag.nanclamp.out glslang-8.13.3559/Test/baseResults/spv.400.frag.nanclamp.out --- glslang-7.12.3352/Test/baseResults/spv.400.frag.nanclamp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.400.frag.nanclamp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.400.frag.out glslang-8.13.3559/Test/baseResults/spv.400.frag.out --- glslang-7.12.3352/Test/baseResults/spv.400.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.400.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.400.tesc.out glslang-8.13.3559/Test/baseResults/spv.400.tesc.out --- glslang-7.12.3352/Test/baseResults/spv.400.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.400.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.400.tese.out glslang-8.13.3559/Test/baseResults/spv.400.tese.out --- glslang-7.12.3352/Test/baseResults/spv.400.tese.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.400.tese.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.420.geom.out glslang-8.13.3559/Test/baseResults/spv.420.geom.out --- glslang-7.12.3352/Test/baseResults/spv.420.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.420.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.430.frag.out glslang-8.13.3559/Test/baseResults/spv.430.frag.out --- glslang-7.12.3352/Test/baseResults/spv.430.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.430.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.430.vert.out glslang-8.13.3559/Test/baseResults/spv.430.vert.out --- glslang-7.12.3352/Test/baseResults/spv.430.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.430.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.450.geom.out glslang-8.13.3559/Test/baseResults/spv.450.geom.out --- glslang-7.12.3352/Test/baseResults/spv.450.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.450.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.450.noRedecl.tesc.out glslang-8.13.3559/Test/baseResults/spv.450.noRedecl.tesc.out --- glslang-7.12.3352/Test/baseResults/spv.450.noRedecl.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.450.noRedecl.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.450.tesc.out glslang-8.13.3559/Test/baseResults/spv.450.tesc.out --- glslang-7.12.3352/Test/baseResults/spv.450.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.450.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.460.comp.out glslang-8.13.3559/Test/baseResults/spv.460.comp.out --- glslang-7.12.3352/Test/baseResults/spv.460.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.460.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.460.frag.out glslang-8.13.3559/Test/baseResults/spv.460.frag.out --- glslang-7.12.3352/Test/baseResults/spv.460.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.460.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.460.vert.out glslang-8.13.3559/Test/baseResults/spv.460.vert.out --- glslang-7.12.3352/Test/baseResults/spv.460.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.460.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.8bit-16bit-construction.frag.out glslang-8.13.3559/Test/baseResults/spv.8bit-16bit-construction.frag.out --- glslang-7.12.3352/Test/baseResults/spv.8bit-16bit-construction.frag.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.8bit-16bit-construction.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.8bitstorage-int.frag.out glslang-8.13.3559/Test/baseResults/spv.8bitstorage-int.frag.out --- glslang-7.12.3352/Test/baseResults/spv.8bitstorage-int.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.8bitstorage-int.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.8bitstorage-ssbo.vert.out glslang-8.13.3559/Test/baseResults/spv.8bitstorage-ssbo.vert.out --- glslang-7.12.3352/Test/baseResults/spv.8bitstorage-ssbo.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.8bitstorage-ssbo.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.8bitstorage-ubo.vert.out glslang-8.13.3559/Test/baseResults/spv.8bitstorage-ubo.vert.out --- glslang-7.12.3352/Test/baseResults/spv.8bitstorage-ubo.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.8bitstorage-ubo.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.8bitstorage-uint.frag.out glslang-8.13.3559/Test/baseResults/spv.8bitstorage-uint.frag.out --- glslang-7.12.3352/Test/baseResults/spv.8bitstorage-uint.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.8bitstorage-uint.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.accessChain.frag.out glslang-8.13.3559/Test/baseResults/spv.accessChain.frag.out --- glslang-7.12.3352/Test/baseResults/spv.accessChain.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.accessChain.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.aggOps.frag.out glslang-8.13.3559/Test/baseResults/spv.aggOps.frag.out --- glslang-7.12.3352/Test/baseResults/spv.aggOps.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.aggOps.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -3,7 +3,7 @@ "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 -Nru glslang-7.12.3352/Test/baseResults/spv.always-discard2.frag.out glslang-8.13.3559/Test/baseResults/spv.always-discard2.frag.out --- glslang-7.12.3352/Test/baseResults/spv.always-discard2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.always-discard2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.always-discard.frag.out glslang-8.13.3559/Test/baseResults/spv.always-discard.frag.out --- glslang-7.12.3352/Test/baseResults/spv.always-discard.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.always-discard.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.AnyHitShader.rahit.out glslang-8.13.3559/Test/baseResults/spv.AnyHitShader.rahit.out --- glslang-7.12.3352/Test/baseResults/spv.AnyHitShader.rahit.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.AnyHitShader.rahit.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.AofA.frag.out glslang-8.13.3559/Test/baseResults/spv.AofA.frag.out --- glslang-7.12.3352/Test/baseResults/spv.AofA.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.AofA.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -3,7 +3,7 @@ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 104 Capability Shader diff -Nru glslang-7.12.3352/Test/baseResults/spv.arbPostDepthCoverage.frag.out glslang-8.13.3559/Test/baseResults/spv.arbPostDepthCoverage.frag.out --- glslang-7.12.3352/Test/baseResults/spv.arbPostDepthCoverage.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.arbPostDepthCoverage.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.atomic.comp.out glslang-8.13.3559/Test/baseResults/spv.atomic.comp.out --- glslang-7.12.3352/Test/baseResults/spv.atomic.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.atomic.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.atomicInt64.comp.out glslang-8.13.3559/Test/baseResults/spv.atomicInt64.comp.out --- glslang-7.12.3352/Test/baseResults/spv.atomicInt64.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.atomicInt64.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.barrier.vert.out glslang-8.13.3559/Test/baseResults/spv.barrier.vert.out --- glslang-7.12.3352/Test/baseResults/spv.barrier.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.barrier.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bitCast.frag.out glslang-8.13.3559/Test/baseResults/spv.bitCast.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bitCast.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bitCast.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.boolInBlock.frag.out glslang-8.13.3559/Test/baseResults/spv.boolInBlock.frag.out --- glslang-7.12.3352/Test/baseResults/spv.boolInBlock.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.boolInBlock.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bool.vert.out glslang-8.13.3559/Test/baseResults/spv.bool.vert.out --- glslang-7.12.3352/Test/baseResults/spv.bool.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bool.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.branch-return.vert.out glslang-8.13.3559/Test/baseResults/spv.branch-return.vert.out --- glslang-7.12.3352/Test/baseResults/spv.branch-return.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.branch-return.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.buffer.autoassign.frag.out glslang-8.13.3559/Test/baseResults/spv.buffer.autoassign.frag.out --- glslang-7.12.3352/Test/baseResults/spv.buffer.autoassign.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.buffer.autoassign.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle10.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle10.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle10.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle10.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle11.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle11.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle11.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle11.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -3,7 +3,7 @@ "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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle12.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle12.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle12.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle12.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -3,7 +3,7 @@ "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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle13.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle13.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle13.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle13.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle14.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle14.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle14.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle14.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle15.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle15.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle15.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle15.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -3,7 +3,7 @@ "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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle16.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle16.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle16.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle16.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle18.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle18.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle18.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle18.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle1.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle1.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle1.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle1.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle2.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle2.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle3.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle3.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle3.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle3.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle4.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle4.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle4.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle4.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle5.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle5.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle5.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle5.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle6.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle6.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle6.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle6.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle7.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle7.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle7.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle7.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle8.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle8.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle8.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle8.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandle9.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandle9.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandle9.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandle9.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.bufferhandleUvec2.frag.out glslang-8.13.3559/Test/baseResults/spv.bufferhandleUvec2.frag.out --- glslang-7.12.3352/Test/baseResults/spv.bufferhandleUvec2.frag.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.bufferhandleUvec2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,133 @@ +spv.bufferhandleUvec2.frag +// Module Version 10000 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.builtInXFB.vert.out glslang-8.13.3559/Test/baseResults/spv.builtInXFB.vert.out --- glslang-7.12.3352/Test/baseResults/spv.builtInXFB.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.builtInXFB.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.ClosestHitShader.rchit.out glslang-8.13.3559/Test/baseResults/spv.ClosestHitShader.rchit.out --- glslang-7.12.3352/Test/baseResults/spv.ClosestHitShader.rchit.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.ClosestHitShader.rchit.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.computeShaderDerivatives2.comp.out glslang-8.13.3559/Test/baseResults/spv.computeShaderDerivatives2.comp.out --- glslang-7.12.3352/Test/baseResults/spv.computeShaderDerivatives2.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.computeShaderDerivatives2.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.computeShaderDerivatives.comp.out glslang-8.13.3559/Test/baseResults/spv.computeShaderDerivatives.comp.out --- glslang-7.12.3352/Test/baseResults/spv.computeShaderDerivatives.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.computeShaderDerivatives.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.conditionalDemote.frag.out glslang-8.13.3559/Test/baseResults/spv.conditionalDemote.frag.out --- glslang-7.12.3352/Test/baseResults/spv.conditionalDemote.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.conditionalDemote.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.conditionalDiscard.frag.out glslang-8.13.3559/Test/baseResults/spv.conditionalDiscard.frag.out --- glslang-7.12.3352/Test/baseResults/spv.conditionalDiscard.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.conditionalDiscard.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.constConstruct.vert.out glslang-8.13.3559/Test/baseResults/spv.constConstruct.vert.out --- glslang-7.12.3352/Test/baseResults/spv.constConstruct.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.constConstruct.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.constructComposite.comp.out glslang-8.13.3559/Test/baseResults/spv.constructComposite.comp.out --- glslang-7.12.3352/Test/baseResults/spv.constructComposite.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.constructComposite.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.constStruct.vert.out glslang-8.13.3559/Test/baseResults/spv.constStruct.vert.out --- glslang-7.12.3352/Test/baseResults/spv.constStruct.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.constStruct.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.controlFlowAttributes.frag.out glslang-8.13.3559/Test/baseResults/spv.controlFlowAttributes.frag.out --- glslang-7.12.3352/Test/baseResults/spv.controlFlowAttributes.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.controlFlowAttributes.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 +// Generated by (magic number): 80008 +// Id's are bound by 123 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -20,220 +20,231 @@ 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 + 97: 19(bool) Load 52(cond) + SelectionMerge 99 None + BranchConditional 97 98 99 + 98: Label + Store 52(cond) 59 + 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 + SelectionMerge 101 None + Switch 60 101 + case 3: 100 100: Label - Branch 102 - 102: Label - Branch 99 + 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 -Nru glslang-7.12.3352/Test/baseResults/spv.conversion.frag.out glslang-8.13.3559/Test/baseResults/spv.conversion.frag.out --- glslang-7.12.3352/Test/baseResults/spv.conversion.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.conversion.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.coopmat.comp.out glslang-8.13.3559/Test/baseResults/spv.coopmat.comp.out --- glslang-7.12.3352/Test/baseResults/spv.coopmat.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.coopmat.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 @@ -282,7 +282,7 @@ 101: 100(ptr) AccessChain 91(block16) 99 102: 85(ptr) Load 101 MakePointerVisibleKHR NonPrivatePointerKHR 71 104: 103(ptr) AccessChain 102 58 31 - 105: 32 CooperativeMatrixLoadNV 104 74 76 Aligned 16 + 105: 32 CooperativeMatrixLoadNV 104 74 76 Aligned MakePointerVisibleKHR NonPrivatePointerKHR 16 71 Store 98(tempArg) 105 106: 32 Load 98(tempArg) Store 34(m) 106 @@ -290,7 +290,7 @@ 108: 100(ptr) AccessChain 91(block16) 99 109: 85(ptr) Load 108 MakePointerVisibleKHR NonPrivatePointerKHR 71 110: 103(ptr) AccessChain 109 58 31 - CooperativeMatrixStoreNV 110 107 74 76 Aligned 16 + CooperativeMatrixStoreNV 110 107 74 76 Aligned MakePointerAvailableKHR NonPrivatePointerKHR 16 71 113: 50 Load 112(A) 115: 10 Load 114(B) 117: 32 Load 116(C) diff -Nru glslang-7.12.3352/Test/baseResults/spv.dataOut.frag.out glslang-8.13.3559/Test/baseResults/spv.dataOut.frag.out --- glslang-7.12.3352/Test/baseResults/spv.dataOut.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.dataOut.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.dataOutIndirect.frag.out glslang-8.13.3559/Test/baseResults/spv.dataOutIndirect.frag.out --- glslang-7.12.3352/Test/baseResults/spv.dataOutIndirect.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.dataOutIndirect.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.dataOutIndirect.vert.out glslang-8.13.3559/Test/baseResults/spv.dataOutIndirect.vert.out --- glslang-7.12.3352/Test/baseResults/spv.dataOutIndirect.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.dataOutIndirect.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -2,7 +2,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/spv.dead-after-continue.vert.out glslang-8.13.3559/Test/baseResults/spv.dead-after-continue.vert.out --- glslang-7.12.3352/Test/baseResults/spv.dead-after-continue.vert.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.dead-after-continue.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,54 @@ +spv.dead-after-continue.vert +// Module Version 10000 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.dead-after-discard.frag.out glslang-8.13.3559/Test/baseResults/spv.dead-after-discard.frag.out --- glslang-7.12.3352/Test/baseResults/spv.dead-after-discard.frag.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.dead-after-discard.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,31 @@ +spv.dead-after-discard.frag +// Module Version 10000 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.dead-after-loop-break.vert.out glslang-8.13.3559/Test/baseResults/spv.dead-after-loop-break.vert.out --- glslang-7.12.3352/Test/baseResults/spv.dead-after-loop-break.vert.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.dead-after-loop-break.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,67 @@ +spv.dead-after-loop-break.vert +// Module Version 10000 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.dead-after-return.vert.out glslang-8.13.3559/Test/baseResults/spv.dead-after-return.vert.out --- glslang-7.12.3352/Test/baseResults/spv.dead-after-return.vert.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.dead-after-return.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,29 @@ +spv.dead-after-return.vert +// Module Version 10000 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.dead-after-switch-break.vert.out glslang-8.13.3559/Test/baseResults/spv.dead-after-switch-break.vert.out --- glslang-7.12.3352/Test/baseResults/spv.dead-after-switch-break.vert.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.dead-after-switch-break.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,40 @@ +spv.dead-after-switch-break.vert +// Module Version 10000 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.dead-complex-continue-after-return.vert.out glslang-8.13.3559/Test/baseResults/spv.dead-complex-continue-after-return.vert.out --- glslang-7.12.3352/Test/baseResults/spv.dead-complex-continue-after-return.vert.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.dead-complex-continue-after-return.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,55 @@ +spv.dead-complex-continue-after-return.vert +// Module Version 10000 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.dead-complex-merge-after-return.vert.out glslang-8.13.3559/Test/baseResults/spv.dead-complex-merge-after-return.vert.out --- glslang-7.12.3352/Test/baseResults/spv.dead-complex-merge-after-return.vert.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.dead-complex-merge-after-return.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,51 @@ +spv.dead-complex-merge-after-return.vert +// Module Version 10000 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.debugInfo.1.1.frag.out glslang-8.13.3559/Test/baseResults/spv.debugInfo.1.1.frag.out --- glslang-7.12.3352/Test/baseResults/spv.debugInfo.1.1.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.debugInfo.1.1.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -2,7 +2,7 @@ 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 @@ -81,6 +81,7 @@ Name 97 "i" ModuleProcessed "no-storage-format" ModuleProcessed "resource-set-binding 3" + ModuleProcessed "auto-map-bindings" ModuleProcessed "auto-map-locations" ModuleProcessed "client opengl100" ModuleProcessed "target-env spirv1.3" @@ -99,7 +100,7 @@ Decorate 56 Binding 0 Decorate 67(s2d) Location 0 Decorate 67(s2d) DescriptorSet 3 - Decorate 67(s2d) Binding 0 + Decorate 67(s2d) Binding 1 3: TypeVoid 4: TypeFunction 3 7: TypeInt 32 1 diff -Nru glslang-7.12.3352/Test/baseResults/spv.debugInfo.frag.out glslang-8.13.3559/Test/baseResults/spv.debugInfo.frag.out --- glslang-7.12.3352/Test/baseResults/spv.debugInfo.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.debugInfo.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.deepRvalue.frag.out glslang-8.13.3559/Test/baseResults/spv.deepRvalue.frag.out --- glslang-7.12.3352/Test/baseResults/spv.deepRvalue.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.deepRvalue.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.depthOut.frag.out glslang-8.13.3559/Test/baseResults/spv.depthOut.frag.out --- glslang-7.12.3352/Test/baseResults/spv.depthOut.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.depthOut.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 @@ -8,8 +8,8 @@ MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 8 10 14 ExecutionMode 4 OriginUpperLeft - ExecutionMode 4 DepthGreater ExecutionMode 4 DepthReplacing + ExecutionMode 4 DepthGreater Source GLSL 450 Name 4 "main" Name 8 "gl_FragDepth" diff -Nru glslang-7.12.3352/Test/baseResults/spv.deviceGroup.frag.out glslang-8.13.3559/Test/baseResults/spv.deviceGroup.frag.out --- glslang-7.12.3352/Test/baseResults/spv.deviceGroup.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.deviceGroup.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.discard-dce.frag.out glslang-8.13.3559/Test/baseResults/spv.discard-dce.frag.out --- glslang-7.12.3352/Test/baseResults/spv.discard-dce.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.discard-dce.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.do-simple.vert.out glslang-8.13.3559/Test/baseResults/spv.do-simple.vert.out --- glslang-7.12.3352/Test/baseResults/spv.do-simple.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.do-simple.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.double.comp.out glslang-8.13.3559/Test/baseResults/spv.double.comp.out --- glslang-7.12.3352/Test/baseResults/spv.double.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.double.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.do-while-continue-break.vert.out glslang-8.13.3559/Test/baseResults/spv.do-while-continue-break.vert.out --- glslang-7.12.3352/Test/baseResults/spv.do-while-continue-break.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.do-while-continue-break.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.doWhileLoop.frag.out glslang-8.13.3559/Test/baseResults/spv.doWhileLoop.frag.out --- glslang-7.12.3352/Test/baseResults/spv.doWhileLoop.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.doWhileLoop.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.drawParams.vert.out glslang-8.13.3559/Test/baseResults/spv.drawParams.vert.out --- glslang-7.12.3352/Test/baseResults/spv.drawParams.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.drawParams.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.earlyReturnDiscard.frag.out glslang-8.13.3559/Test/baseResults/spv.earlyReturnDiscard.frag.out --- glslang-7.12.3352/Test/baseResults/spv.earlyReturnDiscard.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.earlyReturnDiscard.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 @@ -160,7 +160,7 @@ 102: Label Return 100: Label - Branch 67 + Unreachable 67: Label 106: 7(fvec4) Load 9(color) 107: 7(fvec4) Load 13(color2) diff -Nru glslang-7.12.3352/Test/baseResults/spv.explicittypes.frag.out glslang-8.13.3559/Test/baseResults/spv.explicittypes.frag.out --- glslang-7.12.3352/Test/baseResults/spv.explicittypes.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.explicittypes.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.extPostDepthCoverage.frag.out glslang-8.13.3559/Test/baseResults/spv.extPostDepthCoverage.frag.out --- glslang-7.12.3352/Test/baseResults/spv.extPostDepthCoverage.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.extPostDepthCoverage.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.float16convertonlyarith.comp.out glslang-8.13.3559/Test/baseResults/spv.float16convertonlyarith.comp.out --- glslang-7.12.3352/Test/baseResults/spv.float16convertonlyarith.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.float16convertonlyarith.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.float16convertonlystorage.comp.out glslang-8.13.3559/Test/baseResults/spv.float16convertonlystorage.comp.out --- glslang-7.12.3352/Test/baseResults/spv.float16convertonlystorage.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.float16convertonlystorage.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.float16Fetch.frag.out glslang-8.13.3559/Test/baseResults/spv.float16Fetch.frag.out --- glslang-7.12.3352/Test/baseResults/spv.float16Fetch.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.float16Fetch.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.float16.frag.out glslang-8.13.3559/Test/baseResults/spv.float16.frag.out --- glslang-7.12.3352/Test/baseResults/spv.float16.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.float16.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.float32.frag.out glslang-8.13.3559/Test/baseResults/spv.float32.frag.out --- glslang-7.12.3352/Test/baseResults/spv.float32.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.float32.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.float64.frag.out glslang-8.13.3559/Test/baseResults/spv.float64.frag.out --- glslang-7.12.3352/Test/baseResults/spv.float64.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.float64.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.flowControl.frag.out glslang-8.13.3559/Test/baseResults/spv.flowControl.frag.out --- glslang-7.12.3352/Test/baseResults/spv.flowControl.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.flowControl.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.for-complex-condition.vert.out glslang-8.13.3559/Test/baseResults/spv.for-complex-condition.vert.out --- glslang-7.12.3352/Test/baseResults/spv.for-complex-condition.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.for-complex-condition.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.for-continue-break.vert.out glslang-8.13.3559/Test/baseResults/spv.for-continue-break.vert.out --- glslang-7.12.3352/Test/baseResults/spv.for-continue-break.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.for-continue-break.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.forLoop.frag.out glslang-8.13.3559/Test/baseResults/spv.forLoop.frag.out --- glslang-7.12.3352/Test/baseResults/spv.forLoop.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.forLoop.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.for-nobody.vert.out glslang-8.13.3559/Test/baseResults/spv.for-nobody.vert.out --- glslang-7.12.3352/Test/baseResults/spv.for-nobody.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.for-nobody.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.for-notest.vert.out glslang-8.13.3559/Test/baseResults/spv.for-notest.vert.out --- glslang-7.12.3352/Test/baseResults/spv.for-notest.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.for-notest.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 @@ -38,5 +38,5 @@ Store 8(i) 19 Branch 10 12: Label - Return + Unreachable FunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/spv.for-simple.vert.out glslang-8.13.3559/Test/baseResults/spv.for-simple.vert.out --- glslang-7.12.3352/Test/baseResults/spv.for-simple.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.for-simple.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.forwardFun.frag.out glslang-8.13.3559/Test/baseResults/spv.forwardFun.frag.out --- glslang-7.12.3352/Test/baseResults/spv.forwardFun.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.forwardFun.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 @@ -99,8 +99,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/spv.fragmentDensity-es.frag.out glslang-8.13.3559/Test/baseResults/spv.fragmentDensity-es.frag.out --- glslang-7.12.3352/Test/baseResults/spv.fragmentDensity-es.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.fragmentDensity-es.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.fragmentDensity.frag.out glslang-8.13.3559/Test/baseResults/spv.fragmentDensity.frag.out --- glslang-7.12.3352/Test/baseResults/spv.fragmentDensity.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.fragmentDensity.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out glslang-8.13.3559/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out --- glslang-7.12.3352/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.fragmentShaderBarycentric.frag.out glslang-8.13.3559/Test/baseResults/spv.fragmentShaderBarycentric.frag.out --- glslang-7.12.3352/Test/baseResults/spv.fragmentShaderBarycentric.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.fragmentShaderBarycentric.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.fsi.frag.out glslang-8.13.3559/Test/baseResults/spv.fsi.frag.out --- glslang-7.12.3352/Test/baseResults/spv.fsi.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.fsi.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.fullyCovered.frag.out glslang-8.13.3559/Test/baseResults/spv.fullyCovered.frag.out --- glslang-7.12.3352/Test/baseResults/spv.fullyCovered.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.fullyCovered.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.functionCall.frag.out glslang-8.13.3559/Test/baseResults/spv.functionCall.frag.out --- glslang-7.12.3352/Test/baseResults/spv.functionCall.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.functionCall.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -4,7 +4,7 @@ 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 @@ -105,8 +105,7 @@ 44: Label ReturnValue 45 41: Label - 47: 6(float) Undef - ReturnValue 47 + Unreachable FunctionEnd 18(missingReturn(): 6(float) Function None 15 19: Label diff -Nru glslang-7.12.3352/Test/baseResults/spv.functionNestedOpaque.vert.out glslang-8.13.3559/Test/baseResults/spv.functionNestedOpaque.vert.out --- glslang-7.12.3352/Test/baseResults/spv.functionNestedOpaque.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.functionNestedOpaque.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.functionParameterTypes.frag.out glslang-8.13.3559/Test/baseResults/spv.functionParameterTypes.frag.out --- glslang-7.12.3352/Test/baseResults/spv.functionParameterTypes.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.functionParameterTypes.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.functionSemantics.frag.out glslang-8.13.3559/Test/baseResults/spv.functionSemantics.frag.out --- glslang-7.12.3352/Test/baseResults/spv.functionSemantics.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.functionSemantics.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.GeometryShaderPassthrough.geom.out glslang-8.13.3559/Test/baseResults/spv.GeometryShaderPassthrough.geom.out --- glslang-7.12.3352/Test/baseResults/spv.GeometryShaderPassthrough.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.GeometryShaderPassthrough.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.glFragColor.frag.out glslang-8.13.3559/Test/baseResults/spv.glFragColor.frag.out --- glslang-7.12.3352/Test/baseResults/spv.glFragColor.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.glFragColor.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.glsl.register.autoassign.frag.out glslang-8.13.3559/Test/baseResults/spv.glsl.register.autoassign.frag.out --- glslang-7.12.3352/Test/baseResults/spv.glsl.register.autoassign.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.glsl.register.autoassign.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.glsl.register.noautoassign.frag.out glslang-8.13.3559/Test/baseResults/spv.glsl.register.noautoassign.frag.out --- glslang-7.12.3352/Test/baseResults/spv.glsl.register.noautoassign.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.glsl.register.noautoassign.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.hlslDebugInfo.frag.out glslang-8.13.3559/Test/baseResults/spv.hlslDebugInfo.frag.out --- glslang-7.12.3352/Test/baseResults/spv.hlslDebugInfo.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.hlslDebugInfo.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 @@ -15,12 +15,12 @@ // OpModuleProcessed shift-UBO-binding 6 // OpModuleProcessed shift-ssbo-binding 3 // OpModuleProcessed shift-uav-binding 5 -// OpModuleProcessed flatten-uniform-arrays // OpModuleProcessed no-storage-format // OpModuleProcessed resource-set-binding t0 0 0 -// OpModuleProcessed hlsl-iomap // OpModuleProcessed auto-map-bindings // OpModuleProcessed auto-map-locations +// OpModuleProcessed flatten-uniform-arrays +// OpModuleProcessed hlsl-iomap // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 // OpModuleProcessed source-entrypoint origMain diff -Nru glslang-7.12.3352/Test/baseResults/spv.hlslOffsets.vert.out glslang-8.13.3559/Test/baseResults/spv.hlslOffsets.vert.out --- glslang-7.12.3352/Test/baseResults/spv.hlslOffsets.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.hlslOffsets.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -4,7 +4,7 @@ 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:? Linker Objects -0:? 'anon@0' (layout( 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}) +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}) Linked vertex stage: @@ -15,10 +15,10 @@ 0:27 Function Definition: main( ( global void) 0:27 Function Parameters: 0:? Linker Objects -0:? 'anon@0' (layout( 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}) +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 -Nru glslang-7.12.3352/Test/baseResults/spv.image.frag.out glslang-8.13.3559/Test/baseResults/spv.image.frag.out --- glslang-7.12.3352/Test/baseResults/spv.image.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.image.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.imageLoadStoreLod.frag.out glslang-8.13.3559/Test/baseResults/spv.imageLoadStoreLod.frag.out --- glslang-7.12.3352/Test/baseResults/spv.imageLoadStoreLod.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.imageLoadStoreLod.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.int16.amd.frag.out glslang-8.13.3559/Test/baseResults/spv.int16.amd.frag.out --- glslang-7.12.3352/Test/baseResults/spv.int16.amd.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.int16.amd.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.int16.frag.out glslang-8.13.3559/Test/baseResults/spv.int16.frag.out --- glslang-7.12.3352/Test/baseResults/spv.int16.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.int16.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.int32.frag.out glslang-8.13.3559/Test/baseResults/spv.int32.frag.out --- glslang-7.12.3352/Test/baseResults/spv.int32.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.int32.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.int64.frag.out glslang-8.13.3559/Test/baseResults/spv.int64.frag.out --- glslang-7.12.3352/Test/baseResults/spv.int64.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.int64.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.int8.frag.out glslang-8.13.3559/Test/baseResults/spv.int8.frag.out --- glslang-7.12.3352/Test/baseResults/spv.int8.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.int8.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.intcoopmat.comp.out glslang-8.13.3559/Test/baseResults/spv.intcoopmat.comp.out --- glslang-7.12.3352/Test/baseResults/spv.intcoopmat.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.intcoopmat.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,418 @@ +spv.intcoopmat.comp +// Module Version 10000 +// Generated by (magic number): 80008 +// Id's are bound by 262 + + Capability Shader + Capability Float16 + Capability Int8 + Capability StorageBuffer8BitAccess + Capability VulkanMemoryModelKHR + Capability PhysicalStorageBufferAddressesEXT + Capability CooperativeMatrixNV + Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_8bit_storage" + Extension "SPV_KHR_storage_buffer_storage_class" + Extension "SPV_KHR_vulkan_memory_model" + Extension "SPV_NV_cooperative_matrix" + 1: ExtInstImport "GLSL.std.450" + MemoryModel PhysicalStorageBuffer64EXT VulkanKHR + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 64 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_buffer_reference" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types" + SourceExtension "GL_KHR_memory_scope_semantics" + SourceExtension "GL_NV_cooperative_matrix" + SourceExtension "GL_NV_integer_cooperative_matrix" + Name 4 "main" + Name 14 "ineg(i81;" + Name 13 "m" + Name 21 "umul(u81;" + Name 20 "m" + Name 35 "mu" + Name 39 "mi" + Name 55 "mf16_0" + Name 61 "mf32_0" + Name 64 "mf16_1" + Name 67 "mf32_1" + Name 71 "x" + Name 81 "tempArg" + Name 85 "Block" + MemberName 85(Block) 0 "y" + MemberName 85(Block) 1 "x" + Name 87 "block" + Name 98 "tempArg" + Name 103 "Block16" + MemberName 103(Block16) 0 "y" + MemberName 103(Block16) 1 "x" + MemberName 103(Block16) 2 "b" + Name 106 "Block" + MemberName 106(Block) 0 "y" + MemberName 106(Block) 1 "x" + Name 108 "block8" + Name 115 "tempArg" + Name 128 "D" + Name 129 "A" + Name 131 "B" + Name 133 "C" + Name 137 "l" + Name 142 "a" + Name 146 "md1" + Name 156 "Y" + Name 157 "Z" + Name 161 "muC2" + Name 169 "miC2" + Name 176 "tempArg" + Name 182 "tempArg" + Name 188 "p1" + Name 189 "param" + Name 192 "p2" + Name 193 "param" + Name 207 "tempArg" + Name 212 "shmatrix" + Name 217 "ms" + Name 225 "miC" + Name 226 "muC" + Name 231 "iarr" + Name 236 "iarr2" + Name 241 "uarr" + Name 246 "uarr2" + Name 251 "S" + MemberName 251(S) 0 "a" + MemberName 251(S) 1 "b" + MemberName 251(S) 2 "c" + Name 256 "SC" + Name 261 "scm" + Decorate 83 ArrayStride 4 + Decorate 84 ArrayStride 4 + MemberDecorate 85(Block) 0 Offset 0 + MemberDecorate 85(Block) 1 Offset 4194304 + Decorate 85(Block) Block + Decorate 87(block) DescriptorSet 0 + Decorate 87(block) Binding 0 + Decorate 99 ArrayStride 1 + Decorate 101 ArrayStride 1 + MemberDecorate 103(Block16) 0 Offset 0 + MemberDecorate 103(Block16) 1 Offset 1048576 + MemberDecorate 103(Block16) 2 Offset 1048584 + Decorate 103(Block16) Block + Decorate 104 ArrayStride 4 + Decorate 105 ArrayStride 4 + MemberDecorate 106(Block) 0 Offset 0 + MemberDecorate 106(Block) 1 Offset 4194304 + Decorate 106(Block) Block + Decorate 108(block8) DescriptorSet 0 + Decorate 108(block8) Binding 0 + Decorate 156(Y) SpecId 0 + Decorate 223 BuiltIn WorkgroupSize + Decorate 256(SC) SpecId 2 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 8 1 + 7: TypeInt 32 0 + 8: 7(int) Constant 3 + 9: 7(int) Constant 8 + 10: TypeCooperativeMatrixNV 6(int8_t) 8 9 9 + 11: TypePointer Function 10 + 12: TypeFunction 10 11(ptr) + 16: TypeInt 8 0 + 17: TypeCooperativeMatrixNV 16(int8_t) 8 9 9 + 18: TypePointer Function 17 + 19: TypeFunction 17 18(ptr) + 28: 16(int8_t) Constant 2 + 32: 7(int) Constant 16 + 33: TypeCooperativeMatrixNV 16(int8_t) 8 32 9 + 34: TypePointer Function 33 + 36: 33 ConstantComposite 28 + 37: TypeCooperativeMatrixNV 6(int8_t) 8 32 9 + 38: TypePointer Function 37 + 40: 6(int8_t) Constant 2 + 41: 37 ConstantComposite 40 + 52: TypeFloat 16 + 53: TypeCooperativeMatrixNV 52(float16_t) 8 32 9 + 54: TypePointer Function 53 + 58: TypeFloat 32 + 59: TypeCooperativeMatrixNV 58(float) 8 32 9 + 60: TypePointer Function 59 + 70: TypePointer Function 16(int8_t) + 72: TypeInt 32 1 + 73: 72(int) Constant 1 + 76: 72(int) Constant 0 + 79: TypePointer Function 6(int8_t) + 82: 7(int) Constant 1048576 + 83: TypeArray 7(int) 82 + 84: TypeRuntimeArray 7(int) + 85(Block): TypeStruct 83 84 + 86: TypePointer StorageBuffer 85(Block) + 87(block): 86(ptr) Variable StorageBuffer + 88: 7(int) Constant 5 + 89: TypePointer StorageBuffer 7(int) + 91: 7(int) Constant 128 + 92: TypeBool + 93: 92(bool) ConstantFalse + 99: TypeArray 6(int8_t) 82 + 100: 7(int) Constant 1 + 101: TypeArray 6(int8_t) 100 + TypeForwardPointer 102 PhysicalStorageBufferEXT + 103(Block16): TypeStruct 99 101 102 + 104: TypeArray 7(int) 82 + 105: TypeRuntimeArray 7(int) + 106(Block): TypeStruct 104 105 + 102: TypePointer PhysicalStorageBufferEXT 106(Block) + 107: TypePointer StorageBuffer 103(Block16) + 108(block8): 107(ptr) Variable StorageBuffer + 109: TypePointer StorageBuffer 6(int8_t) + 116: 72(int) Constant 2 + 117: TypePointer StorageBuffer 102(ptr) + 120: TypePointer PhysicalStorageBufferEXT 7(int) + 136: TypePointer Function 72(int) + 138: 7(int) SpecConstantOp 5362 33 + 139: 72(int) SpecConstantOp 128 138 76 + 140: TypeArray 37 88 + 141: TypePointer Function 140 + 143: 72(int) Constant 3 + 144: 6(int8_t) Constant 1 + 150: 72(int) Constant 1234 + 155: 72(int) Constant 8 + 156(Y): 72(int) SpecConstant 2 + 157(Z): 72(int) SpecConstantOp 132 155 156(Y) + 158: TypeCooperativeMatrixNV 16(int8_t) 8 157(Z) 9 + 159: TypeArray 158 8 + 160: TypePointer Private 159 + 161(muC2): 160(ptr) Variable Private + 162: TypePointer Private 158 + 166: TypeCooperativeMatrixNV 6(int8_t) 8 157(Z) 9 + 167: TypeArray 166 8 + 168: TypePointer Private 167 + 169(miC2): 168(ptr) Variable Private + 170: TypePointer Private 6(int8_t) + 174: TypePointer Private 16(int8_t) + 204: 16(int8_t) Constant 4 + 208: TypeVector 7(int) 4 + 209: 7(int) Constant 32 + 210: TypeArray 208(ivec4) 209 + 211: TypePointer Workgroup 210 + 212(shmatrix): 211(ptr) Variable Workgroup + 213: 7(int) Constant 2 + 214: TypePointer Workgroup 208(ivec4) + 221: TypeVector 7(int) 3 + 222: 7(int) Constant 64 + 223: 221(ivec3) ConstantComposite 222 100 100 + 224: TypePointer Private 166 + 225(miC): 224(ptr) Variable Private + 226(muC): 162(ptr) Variable Private + 227: 7(int) SpecConstantOp 5362 166 + 228: 72(int) SpecConstantOp 128 227 76 + 229: TypeArray 72(int) 228 + 230: TypePointer Private 229 + 231(iarr): 230(ptr) Variable Private + 232: 7(int) SpecConstantOp 5362 166 + 233: 72(int) SpecConstantOp 128 232 76 + 234: TypeArray 72(int) 233 + 235: TypePointer Private 234 + 236(iarr2): 235(ptr) Variable Private + 237: 7(int) SpecConstantOp 5362 158 + 238: 72(int) SpecConstantOp 128 237 76 + 239: TypeArray 72(int) 238 + 240: TypePointer Private 239 + 241(uarr): 240(ptr) Variable Private + 242: 7(int) SpecConstantOp 5362 158 + 243: 72(int) SpecConstantOp 128 242 76 + 244: TypeArray 72(int) 243 + 245: TypePointer Private 244 + 246(uarr2): 245(ptr) Variable Private + 247: TypeCooperativeMatrixNV 72(int) 8 157(Z) 9 + 248: 247 ConstantComposite 73 + 249: 16(int8_t) Constant 1 + 250: 17 ConstantComposite 249 + 251(S): TypeStruct 72(int) 72(int) 72(int) + 252: 72(int) Constant 12 + 253: 72(int) Constant 23 + 254: 72(int) Constant 34 + 255: 251(S) ConstantComposite 252 253 254 + 256(SC): 72(int) SpecConstant 1 + 257: TypeCooperativeMatrixNV 7(int) 8 256(SC) 256(SC) + 258: TypeArray 257 256(SC) + 259: TypeArray 258 256(SC) + 260: TypePointer Private 259 + 261(scm): 260(ptr) Variable Private + 4(main): 2 Function None 3 + 5: Label + 35(mu): 34(ptr) Variable Function + 39(mi): 38(ptr) Variable Function + 55(mf16_0): 54(ptr) Variable Function + 61(mf32_0): 60(ptr) Variable Function + 64(mf16_1): 54(ptr) Variable Function + 67(mf32_1): 60(ptr) Variable Function + 71(x): 70(ptr) Variable Function + 81(tempArg): 38(ptr) Variable Function + 98(tempArg): 34(ptr) Variable Function + 115(tempArg): 38(ptr) Variable Function + 128(D): 34(ptr) Variable Function + 129(A): 34(ptr) Variable Function + 131(B): 18(ptr) Variable Function + 133(C): 34(ptr) Variable Function + 137(l): 136(ptr) Variable Function + 142(a): 141(ptr) Variable Function + 146(md1): 136(ptr) Variable Function + 176(tempArg): 38(ptr) Variable Function + 182(tempArg): 34(ptr) Variable Function + 188(p1): 11(ptr) Variable Function + 189(param): 11(ptr) Variable Function + 192(p2): 18(ptr) Variable Function + 193(param): 18(ptr) Variable Function + 207(tempArg): 38(ptr) Variable Function + 217(ms): 38(ptr) Variable Function + Store 35(mu) 36 + Store 39(mi) 41 + 42: 33 Load 35(mu) + 43: 33 Load 35(mu) + 44: 33 IAdd 42 43 + Store 35(mu) 44 + 45: 33 Load 35(mu) + 46: 33 Load 35(mu) + 47: 33 ISub 45 46 + Store 35(mu) 47 + 48: 37 Load 39(mi) + 49: 37 SNegate 48 + Store 39(mi) 49 + 50: 37 Load 39(mi) + 51: 37 MatrixTimesScalar 50 40 + Store 39(mi) 51 + 56: 33 Load 35(mu) + 57: 53 ConvertUToF 56 + Store 55(mf16_0) 57 + 62: 33 Load 35(mu) + 63: 59 ConvertUToF 62 + Store 61(mf32_0) 63 + 65: 37 Load 39(mi) + 66: 53 ConvertSToF 65 + Store 64(mf16_1) 66 + 68: 37 Load 39(mi) + 69: 59 ConvertSToF 68 + Store 67(mf32_1) 69 + 74: 70(ptr) AccessChain 35(mu) 73 + 75: 16(int8_t) Load 74 + Store 71(x) 75 + 77: 16(int8_t) Load 71(x) + 78: 6(int8_t) Bitcast 77 + 80: 79(ptr) AccessChain 39(mi) 76 + Store 80 78 + 90: 89(ptr) AccessChain 87(block) 73 32 + 94: 37 CooperativeMatrixLoadNV 90 91 93 MakePointerVisibleKHR NonPrivatePointerKHR 88 + Store 81(tempArg) 94 + 95: 37 Load 81(tempArg) + Store 39(mi) 95 + 96: 37 Load 39(mi) + 97: 89(ptr) AccessChain 87(block) 73 32 + CooperativeMatrixStoreNV 97 96 91 93 MakePointerAvailableKHR NonPrivatePointerKHR 88 + 110: 109(ptr) AccessChain 108(block8) 73 32 + 111: 33 CooperativeMatrixLoadNV 110 91 93 MakePointerVisibleKHR NonPrivatePointerKHR 88 + Store 98(tempArg) 111 + 112: 33 Load 98(tempArg) + Store 35(mu) 112 + 113: 33 Load 35(mu) + 114: 109(ptr) AccessChain 108(block8) 73 32 + CooperativeMatrixStoreNV 114 113 91 93 MakePointerAvailableKHR NonPrivatePointerKHR 88 + 118: 117(ptr) AccessChain 108(block8) 116 + 119: 102(ptr) Load 118 MakePointerVisibleKHR NonPrivatePointerKHR 88 + 121: 120(ptr) AccessChain 119 73 32 + 122: 37 CooperativeMatrixLoadNV 121 91 93 Aligned MakePointerVisibleKHR NonPrivatePointerKHR 16 88 + Store 115(tempArg) 122 + 123: 37 Load 115(tempArg) + Store 39(mi) 123 + 124: 37 Load 39(mi) + 125: 117(ptr) AccessChain 108(block8) 116 + 126: 102(ptr) Load 125 MakePointerVisibleKHR NonPrivatePointerKHR 88 + 127: 120(ptr) AccessChain 126 73 32 + CooperativeMatrixStoreNV 127 124 91 93 Aligned MakePointerAvailableKHR NonPrivatePointerKHR 16 88 + 130: 33 Load 129(A) + 132: 17 Load 131(B) + 134: 33 Load 133(C) + 135: 33 CooperativeMatrixMulAddNV 130 132 134 + Store 128(D) 135 + Store 137(l) 139 + 145: 79(ptr) AccessChain 142(a) 143 76 + Store 145 144 + Store 146(md1) 73 + 147: 37 Load 39(mi) + 148: 37 Load 39(mi) + 149: 37 IAdd 148 147 + Store 39(mi) 149 + 151: 6(int8_t) CompositeExtract 149 1234 + 152: 72(int) SConvert 151 + 153: 72(int) Load 146(md1) + 154: 72(int) IAdd 153 152 + Store 146(md1) 154 + 163: 162(ptr) AccessChain 161(muC2) 73 + 164: 158 Load 163 + 165: 162(ptr) AccessChain 161(muC2) 76 + Store 165 164 + 171: 170(ptr) AccessChain 169(miC2) 116 76 + 172: 6(int8_t) Load 171 + 173: 16(int8_t) Bitcast 172 + 175: 174(ptr) AccessChain 161(muC2) 73 76 + Store 175 173 + 177: 89(ptr) AccessChain 87(block) 76 32 + 178: 37 CooperativeMatrixLoadNV 177 91 93 MakePointerVisibleKHR NonPrivatePointerKHR 88 + Store 176(tempArg) 178 + 179: 37 Load 176(tempArg) + Store 39(mi) 179 + 180: 37 Load 39(mi) + 181: 89(ptr) AccessChain 87(block) 76 32 + CooperativeMatrixStoreNV 181 180 91 93 MakePointerAvailableKHR NonPrivatePointerKHR 88 + 183: 109(ptr) AccessChain 108(block8) 76 32 + 184: 33 CooperativeMatrixLoadNV 183 91 93 MakePointerVisibleKHR NonPrivatePointerKHR 88 + Store 182(tempArg) 184 + 185: 33 Load 182(tempArg) + Store 35(mu) 185 + 186: 33 Load 35(mu) + 187: 109(ptr) AccessChain 108(block8) 76 32 + CooperativeMatrixStoreNV 187 186 91 93 MakePointerAvailableKHR NonPrivatePointerKHR 88 + 190: 10 Load 188(p1) + Store 189(param) 190 + 191: 10 FunctionCall 14(ineg(i81;) 189(param) + Store 188(p1) 191 + 194: 17 Load 192(p2) + Store 193(param) 194 + 195: 17 FunctionCall 21(umul(u81;) 193(param) + Store 192(p2) 195 + 196: 10 Load 188(p1) + 197: 10 Load 188(p1) + 198: 10 SDiv 197 196 + Store 188(p1) 198 + 199: 17 Load 192(p2) + 200: 17 Load 192(p2) + 201: 17 UDiv 200 199 + Store 192(p2) 201 + 202: 10 Load 188(p1) + 203: 10 MatrixTimesScalar 202 40 + Store 188(p1) 203 + 205: 17 Load 192(p2) + 206: 17 MatrixTimesScalar 205 204 + Store 192(p2) 206 + 215: 214(ptr) AccessChain 212(shmatrix) 100 + 216: 37 CooperativeMatrixLoadNV 215 213 93 MakePointerVisibleKHR NonPrivatePointerKHR 213 + Store 207(tempArg) 216 + 218: 37 Load 207(tempArg) + Store 217(ms) 218 + 219: 37 Load 217(ms) + 220: 214(ptr) AccessChain 212(shmatrix) 100 + CooperativeMatrixStoreNV 220 219 213 93 MakePointerAvailableKHR NonPrivatePointerKHR 213 + Return + FunctionEnd + 14(ineg(i81;): 10 Function None 12 + 13(m): 11(ptr) FunctionParameter + 15: Label + 23: 10 Load 13(m) + 24: 10 SNegate 23 + ReturnValue 24 + FunctionEnd + 21(umul(u81;): 17 Function None 19 + 20(m): 18(ptr) FunctionParameter + 22: Label + 27: 17 Load 20(m) + 29: 17 MatrixTimesScalar 27 28 + ReturnValue 29 + FunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/spv.interpOps.frag.out glslang-8.13.3559/Test/baseResults/spv.interpOps.frag.out --- glslang-7.12.3352/Test/baseResults/spv.interpOps.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.interpOps.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.IntersectShader.rint.out glslang-8.13.3559/Test/baseResults/spv.IntersectShader.rint.out --- glslang-7.12.3352/Test/baseResults/spv.IntersectShader.rint.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.IntersectShader.rint.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.intOps.vert.out glslang-8.13.3559/Test/baseResults/spv.intOps.vert.out --- glslang-7.12.3352/Test/baseResults/spv.intOps.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.intOps.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.layoutNested.vert.out glslang-8.13.3559/Test/baseResults/spv.layoutNested.vert.out --- glslang-7.12.3352/Test/baseResults/spv.layoutNested.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.layoutNested.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.length.frag.out glslang-8.13.3559/Test/baseResults/spv.length.frag.out --- glslang-7.12.3352/Test/baseResults/spv.length.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.length.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.localAggregates.frag.out glslang-8.13.3559/Test/baseResults/spv.localAggregates.frag.out --- glslang-7.12.3352/Test/baseResults/spv.localAggregates.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.localAggregates.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.loopsArtificial.frag.out glslang-8.13.3559/Test/baseResults/spv.loopsArtificial.frag.out --- glslang-7.12.3352/Test/baseResults/spv.loopsArtificial.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.loopsArtificial.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.loops.frag.out glslang-8.13.3559/Test/baseResults/spv.loops.frag.out --- glslang-7.12.3352/Test/baseResults/spv.loops.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.loops.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.matFun.vert.out glslang-8.13.3559/Test/baseResults/spv.matFun.vert.out --- glslang-7.12.3352/Test/baseResults/spv.matFun.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.matFun.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.matrix2.frag.out glslang-8.13.3559/Test/baseResults/spv.matrix2.frag.out --- glslang-7.12.3352/Test/baseResults/spv.matrix2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.matrix2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.matrix.frag.out glslang-8.13.3559/Test/baseResults/spv.matrix.frag.out --- glslang-7.12.3352/Test/baseResults/spv.matrix.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.matrix.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.memoryQualifier.frag.out glslang-8.13.3559/Test/baseResults/spv.memoryQualifier.frag.out --- glslang-7.12.3352/Test/baseResults/spv.memoryQualifier.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.memoryQualifier.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.memoryScopeSemantics.comp.out glslang-8.13.3559/Test/baseResults/spv.memoryScopeSemantics.comp.out --- glslang-7.12.3352/Test/baseResults/spv.memoryScopeSemantics.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.memoryScopeSemantics.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.merge-unreachable.frag.out glslang-8.13.3559/Test/baseResults/spv.merge-unreachable.frag.out --- glslang-7.12.3352/Test/baseResults/spv.merge-unreachable.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.merge-unreachable.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 @@ -37,5 +37,5 @@ 23: Label Return 21: Label - Return + Unreachable FunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/spv.meshShaderBuiltins.mesh.out glslang-8.13.3559/Test/baseResults/spv.meshShaderBuiltins.mesh.out --- glslang-7.12.3352/Test/baseResults/spv.meshShaderBuiltins.mesh.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.meshShaderBuiltins.mesh.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out glslang-8.13.3559/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out --- glslang-7.12.3352/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out glslang-8.13.3559/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out --- glslang-7.12.3352/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out glslang-8.13.3559/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out --- glslang-7.12.3352/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out glslang-8.13.3559/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out --- glslang-7.12.3352/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.meshShaderSharedMem.mesh.out glslang-8.13.3559/Test/baseResults/spv.meshShaderSharedMem.mesh.out --- glslang-7.12.3352/Test/baseResults/spv.meshShaderSharedMem.mesh.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.meshShaderSharedMem.mesh.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.meshShaderTaskMem.mesh.out glslang-8.13.3559/Test/baseResults/spv.meshShaderTaskMem.mesh.out --- glslang-7.12.3352/Test/baseResults/spv.meshShaderTaskMem.mesh.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.meshShaderTaskMem.mesh.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.meshShaderUserDefined.mesh.out glslang-8.13.3559/Test/baseResults/spv.meshShaderUserDefined.mesh.out --- glslang-7.12.3352/Test/baseResults/spv.meshShaderUserDefined.mesh.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.meshShaderUserDefined.mesh.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.meshTaskShader.task.out glslang-8.13.3559/Test/baseResults/spv.meshTaskShader.task.out --- glslang-7.12.3352/Test/baseResults/spv.meshTaskShader.task.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.meshTaskShader.task.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.MissShader.rmiss.out glslang-8.13.3559/Test/baseResults/spv.MissShader.rmiss.out --- glslang-7.12.3352/Test/baseResults/spv.MissShader.rmiss.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.MissShader.rmiss.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.multiStruct.comp.out glslang-8.13.3559/Test/baseResults/spv.multiStruct.comp.out --- glslang-7.12.3352/Test/baseResults/spv.multiStruct.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.multiStruct.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.multiStructFuncall.frag.out glslang-8.13.3559/Test/baseResults/spv.multiStructFuncall.frag.out --- glslang-7.12.3352/Test/baseResults/spv.multiStructFuncall.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.multiStructFuncall.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.multiView.frag.out glslang-8.13.3559/Test/baseResults/spv.multiView.frag.out --- glslang-7.12.3352/Test/baseResults/spv.multiView.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.multiView.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out glslang-8.13.3559/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out --- glslang-7.12.3352/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.multiviewPerViewAttributes.vert.out glslang-8.13.3559/Test/baseResults/spv.multiviewPerViewAttributes.vert.out --- glslang-7.12.3352/Test/baseResults/spv.multiviewPerViewAttributes.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.multiviewPerViewAttributes.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.newTexture.frag.out glslang-8.13.3559/Test/baseResults/spv.newTexture.frag.out --- glslang-7.12.3352/Test/baseResults/spv.newTexture.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.newTexture.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.noBuiltInLoc.vert.out glslang-8.13.3559/Test/baseResults/spv.noBuiltInLoc.vert.out --- glslang-7.12.3352/Test/baseResults/spv.noBuiltInLoc.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.noBuiltInLoc.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 diff -Nru glslang-7.12.3352/Test/baseResults/spv.noDeadDecorations.vert.out glslang-8.13.3559/Test/baseResults/spv.noDeadDecorations.vert.out --- glslang-7.12.3352/Test/baseResults/spv.noDeadDecorations.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.noDeadDecorations.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.nonSquare.vert.out glslang-8.13.3559/Test/baseResults/spv.nonSquare.vert.out --- glslang-7.12.3352/Test/baseResults/spv.nonSquare.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.nonSquare.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.nonuniform2.frag.out glslang-8.13.3559/Test/baseResults/spv.nonuniform2.frag.out --- glslang-7.12.3352/Test/baseResults/spv.nonuniform2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.nonuniform2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.nonuniform.frag.out glslang-8.13.3559/Test/baseResults/spv.nonuniform.frag.out --- glslang-7.12.3352/Test/baseResults/spv.nonuniform.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.nonuniform.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.noWorkgroup.comp.out glslang-8.13.3559/Test/baseResults/spv.noWorkgroup.comp.out --- glslang-7.12.3352/Test/baseResults/spv.noWorkgroup.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.noWorkgroup.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.offsets.frag.out glslang-8.13.3559/Test/baseResults/spv.offsets.frag.out --- glslang-7.12.3352/Test/baseResults/spv.offsets.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.offsets.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.Operations.frag.out glslang-8.13.3559/Test/baseResults/spv.Operations.frag.out --- glslang-7.12.3352/Test/baseResults/spv.Operations.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.Operations.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.OVR_multiview.vert.out glslang-8.13.3559/Test/baseResults/spv.OVR_multiview.vert.out --- glslang-7.12.3352/Test/baseResults/spv.OVR_multiview.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.OVR_multiview.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.paramMemory.frag.out glslang-8.13.3559/Test/baseResults/spv.paramMemory.frag.out --- glslang-7.12.3352/Test/baseResults/spv.paramMemory.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.paramMemory.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.perprimitiveNV.frag.out glslang-8.13.3559/Test/baseResults/spv.perprimitiveNV.frag.out --- glslang-7.12.3352/Test/baseResults/spv.perprimitiveNV.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.perprimitiveNV.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.pp.line.frag.out glslang-8.13.3559/Test/baseResults/spv.pp.line.frag.out --- glslang-7.12.3352/Test/baseResults/spv.pp.line.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.pp.line.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -3,7 +3,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/spv.precise.tesc.out glslang-8.13.3559/Test/baseResults/spv.precise.tesc.out --- glslang-7.12.3352/Test/baseResults/spv.precise.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.precise.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.precise.tese.out glslang-8.13.3559/Test/baseResults/spv.precise.tese.out --- glslang-7.12.3352/Test/baseResults/spv.precise.tese.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.precise.tese.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.precision.frag.out glslang-8.13.3559/Test/baseResults/spv.precision.frag.out --- glslang-7.12.3352/Test/baseResults/spv.precision.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.precision.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.precisionNonESSamp.frag.out glslang-8.13.3559/Test/baseResults/spv.precisionNonESSamp.frag.out --- glslang-7.12.3352/Test/baseResults/spv.precisionNonESSamp.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.precisionNonESSamp.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.prepost.frag.out glslang-8.13.3559/Test/baseResults/spv.prepost.frag.out --- glslang-7.12.3352/Test/baseResults/spv.prepost.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.prepost.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.privateVariableTypes.frag.out glslang-8.13.3559/Test/baseResults/spv.privateVariableTypes.frag.out --- glslang-7.12.3352/Test/baseResults/spv.privateVariableTypes.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.privateVariableTypes.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.pushConstantAnon.vert.out glslang-8.13.3559/Test/baseResults/spv.pushConstantAnon.vert.out --- glslang-7.12.3352/Test/baseResults/spv.pushConstantAnon.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.pushConstantAnon.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.pushConstant.vert.out glslang-8.13.3559/Test/baseResults/spv.pushConstant.vert.out --- glslang-7.12.3352/Test/baseResults/spv.pushConstant.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.pushConstant.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.qualifiers.vert.out glslang-8.13.3559/Test/baseResults/spv.qualifiers.vert.out --- glslang-7.12.3352/Test/baseResults/spv.qualifiers.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.qualifiers.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.queryL.frag.out glslang-8.13.3559/Test/baseResults/spv.queryL.frag.out --- glslang-7.12.3352/Test/baseResults/spv.queryL.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.queryL.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.rankShift.comp.out glslang-8.13.3559/Test/baseResults/spv.rankShift.comp.out --- glslang-7.12.3352/Test/baseResults/spv.rankShift.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.rankShift.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.RayCallable.rcall.out glslang-8.13.3559/Test/baseResults/spv.RayCallable.rcall.out --- glslang-7.12.3352/Test/baseResults/spv.RayCallable.rcall.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.RayCallable.rcall.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.RayConstants.rgen.out glslang-8.13.3559/Test/baseResults/spv.RayConstants.rgen.out --- glslang-7.12.3352/Test/baseResults/spv.RayConstants.rgen.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.RayConstants.rgen.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.RayGenShader11.rgen.out glslang-8.13.3559/Test/baseResults/spv.RayGenShader11.rgen.out --- glslang-7.12.3352/Test/baseResults/spv.RayGenShader11.rgen.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.RayGenShader11.rgen.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.RayGenShaderArray.rgen.out glslang-8.13.3559/Test/baseResults/spv.RayGenShaderArray.rgen.out --- glslang-7.12.3352/Test/baseResults/spv.RayGenShaderArray.rgen.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.RayGenShaderArray.rgen.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.RayGenShader.rgen.out glslang-8.13.3559/Test/baseResults/spv.RayGenShader.rgen.out --- glslang-7.12.3352/Test/baseResults/spv.RayGenShader.rgen.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.RayGenShader.rgen.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.register.autoassign-2.frag.out glslang-8.13.3559/Test/baseResults/spv.register.autoassign-2.frag.out --- glslang-7.12.3352/Test/baseResults/spv.register.autoassign-2.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.register.autoassign-2.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.register.autoassign.frag.out glslang-8.13.3559/Test/baseResults/spv.register.autoassign.frag.out --- glslang-7.12.3352/Test/baseResults/spv.register.autoassign.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.register.autoassign.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.register.noautoassign.frag.out glslang-8.13.3559/Test/baseResults/spv.register.noautoassign.frag.out --- glslang-7.12.3352/Test/baseResults/spv.register.noautoassign.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.register.noautoassign.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.register.subpass.frag.out glslang-8.13.3559/Test/baseResults/spv.register.subpass.frag.out --- glslang-7.12.3352/Test/baseResults/spv.register.subpass.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.register.subpass.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.rw.autoassign.frag.out glslang-8.13.3559/Test/baseResults/spv.rw.autoassign.frag.out --- glslang-7.12.3352/Test/baseResults/spv.rw.autoassign.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.rw.autoassign.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.sample.frag.out glslang-8.13.3559/Test/baseResults/spv.sample.frag.out --- glslang-7.12.3352/Test/baseResults/spv.sample.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.sample.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.sampleId.frag.out glslang-8.13.3559/Test/baseResults/spv.sampleId.frag.out --- glslang-7.12.3352/Test/baseResults/spv.sampleId.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.sampleId.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out glslang-8.13.3559/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out --- glslang-7.12.3352/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.samplePosition.frag.out glslang-8.13.3559/Test/baseResults/spv.samplePosition.frag.out --- glslang-7.12.3352/Test/baseResults/spv.samplePosition.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.samplePosition.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.samplerlessTextureFunctions.frag.out glslang-8.13.3559/Test/baseResults/spv.samplerlessTextureFunctions.frag.out --- glslang-7.12.3352/Test/baseResults/spv.samplerlessTextureFunctions.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.samplerlessTextureFunctions.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.scalarlayoutfloat16.frag.out glslang-8.13.3559/Test/baseResults/spv.scalarlayoutfloat16.frag.out --- glslang-7.12.3352/Test/baseResults/spv.scalarlayoutfloat16.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.scalarlayoutfloat16.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.scalarlayout.frag.out glslang-8.13.3559/Test/baseResults/spv.scalarlayout.frag.out --- glslang-7.12.3352/Test/baseResults/spv.scalarlayout.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.scalarlayout.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.separate.frag.out glslang-8.13.3559/Test/baseResults/spv.separate.frag.out --- glslang-7.12.3352/Test/baseResults/spv.separate.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.separate.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.set.vert.out glslang-8.13.3559/Test/baseResults/spv.set.vert.out --- glslang-7.12.3352/Test/baseResults/spv.set.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.set.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.shaderBallotAMD.comp.out glslang-8.13.3559/Test/baseResults/spv.shaderBallotAMD.comp.out --- glslang-7.12.3352/Test/baseResults/spv.shaderBallotAMD.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.shaderBallotAMD.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.shaderBallot.comp.out glslang-8.13.3559/Test/baseResults/spv.shaderBallot.comp.out --- glslang-7.12.3352/Test/baseResults/spv.shaderBallot.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.shaderBallot.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.shaderDrawParams.vert.out glslang-8.13.3559/Test/baseResults/spv.shaderDrawParams.vert.out --- glslang-7.12.3352/Test/baseResults/spv.shaderDrawParams.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.shaderDrawParams.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.shaderFragMaskAMD.frag.out glslang-8.13.3559/Test/baseResults/spv.shaderFragMaskAMD.frag.out --- glslang-7.12.3352/Test/baseResults/spv.shaderFragMaskAMD.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.shaderFragMaskAMD.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.shaderGroupVote.comp.out glslang-8.13.3559/Test/baseResults/spv.shaderGroupVote.comp.out --- glslang-7.12.3352/Test/baseResults/spv.shaderGroupVote.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.shaderGroupVote.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.shaderImageFootprint.frag.out glslang-8.13.3559/Test/baseResults/spv.shaderImageFootprint.frag.out --- glslang-7.12.3352/Test/baseResults/spv.shaderImageFootprint.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.shaderImageFootprint.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.shaderStencilExport.frag.out glslang-8.13.3559/Test/baseResults/spv.shaderStencilExport.frag.out --- glslang-7.12.3352/Test/baseResults/spv.shaderStencilExport.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.shaderStencilExport.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.shadingRate.frag.out glslang-8.13.3559/Test/baseResults/spv.shadingRate.frag.out --- glslang-7.12.3352/Test/baseResults/spv.shadingRate.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.shadingRate.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.shiftOps.frag.out glslang-8.13.3559/Test/baseResults/spv.shiftOps.frag.out --- glslang-7.12.3352/Test/baseResults/spv.shiftOps.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.shiftOps.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.shortCircuit.frag.out glslang-8.13.3559/Test/baseResults/spv.shortCircuit.frag.out --- glslang-7.12.3352/Test/baseResults/spv.shortCircuit.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.shortCircuit.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.simpleFunctionCall.frag.out glslang-8.13.3559/Test/baseResults/spv.simpleFunctionCall.frag.out --- glslang-7.12.3352/Test/baseResults/spv.simpleFunctionCall.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.simpleFunctionCall.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.simpleMat.vert.out glslang-8.13.3559/Test/baseResults/spv.simpleMat.vert.out --- glslang-7.12.3352/Test/baseResults/spv.simpleMat.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.simpleMat.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -2,7 +2,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/spv.smBuiltins.frag.out glslang-8.13.3559/Test/baseResults/spv.smBuiltins.frag.out --- glslang-7.12.3352/Test/baseResults/spv.smBuiltins.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.smBuiltins.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.smBuiltins.vert.out glslang-8.13.3559/Test/baseResults/spv.smBuiltins.vert.out --- glslang-7.12.3352/Test/baseResults/spv.smBuiltins.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.smBuiltins.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.sparseTextureClamp.frag.out glslang-8.13.3559/Test/baseResults/spv.sparseTextureClamp.frag.out --- glslang-7.12.3352/Test/baseResults/spv.sparseTextureClamp.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.sparseTextureClamp.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.sparseTexture.frag.out glslang-8.13.3559/Test/baseResults/spv.sparseTexture.frag.out --- glslang-7.12.3352/Test/baseResults/spv.sparseTexture.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.sparseTexture.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.specConstantComposite.vert.out glslang-8.13.3559/Test/baseResults/spv.specConstantComposite.vert.out --- glslang-7.12.3352/Test/baseResults/spv.specConstantComposite.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.specConstantComposite.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.specConstant.comp.out glslang-8.13.3559/Test/baseResults/spv.specConstant.comp.out --- glslang-7.12.3352/Test/baseResults/spv.specConstant.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.specConstant.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.specConstantOperations.vert.out glslang-8.13.3559/Test/baseResults/spv.specConstantOperations.vert.out --- glslang-7.12.3352/Test/baseResults/spv.specConstantOperations.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.specConstantOperations.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.specConstant.vert.out glslang-8.13.3559/Test/baseResults/spv.specConstant.vert.out --- glslang-7.12.3352/Test/baseResults/spv.specConstant.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.specConstant.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 @@ -11,7 +11,7 @@ Source GLSL 400 Name 4 "main" Name 9 "arraySize" - Name 14 "foo(vf4[s2769];" + Name 14 "foo(vf4[s4529];" Name 13 "p" Name 17 "builtin_spec_constant(" Name 20 "color" @@ -102,10 +102,10 @@ 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[s4529];) 47(param) Return FunctionEnd -14(foo(vf4[s2769];): 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 -Nru glslang-7.12.3352/Test/baseResults/spv.specConst.vert.out glslang-8.13.3559/Test/baseResults/spv.specConst.vert.out --- glslang-7.12.3352/Test/baseResults/spv.specConst.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.specConst.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.ssboAlias.frag.out glslang-8.13.3559/Test/baseResults/spv.ssboAlias.frag.out --- glslang-7.12.3352/Test/baseResults/spv.ssboAlias.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.ssboAlias.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.ssbo.autoassign.frag.out glslang-8.13.3559/Test/baseResults/spv.ssbo.autoassign.frag.out --- glslang-7.12.3352/Test/baseResults/spv.ssbo.autoassign.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.ssbo.autoassign.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.stereoViewRendering.tesc.out glslang-8.13.3559/Test/baseResults/spv.stereoViewRendering.tesc.out --- glslang-7.12.3352/Test/baseResults/spv.stereoViewRendering.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.stereoViewRendering.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.stereoViewRendering.vert.out glslang-8.13.3559/Test/baseResults/spv.stereoViewRendering.vert.out --- glslang-7.12.3352/Test/baseResults/spv.stereoViewRendering.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.stereoViewRendering.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.storageBuffer.vert.out glslang-8.13.3559/Test/baseResults/spv.storageBuffer.vert.out --- glslang-7.12.3352/Test/baseResults/spv.storageBuffer.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.storageBuffer.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.structAssignment.frag.out glslang-8.13.3559/Test/baseResults/spv.structAssignment.frag.out --- glslang-7.12.3352/Test/baseResults/spv.structAssignment.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.structAssignment.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -3,7 +3,7 @@ "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 -Nru glslang-7.12.3352/Test/baseResults/spv.structDeref.frag.out glslang-8.13.3559/Test/baseResults/spv.structDeref.frag.out --- glslang-7.12.3352/Test/baseResults/spv.structDeref.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.structDeref.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.structure.frag.out glslang-8.13.3559/Test/baseResults/spv.structure.frag.out --- glslang-7.12.3352/Test/baseResults/spv.structure.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.structure.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupArithmetic.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupArithmetic.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupArithmetic.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupArithmetic.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupBallot.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupBallot.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupBallot.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupBallot.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupBasic.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupBasic.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupBasic.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupBasic.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupClustered.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupClustered.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupClustered.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupClustered.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,4280 @@ +spv.subgroupExtendedTypesArithmetic.comp +// Module Version 10300 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,560 @@ +spv.subgroupExtendedTypesBallot.comp +// Module Version 10300 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,1520 @@ +spv.subgroupExtendedTypesClustered.comp +// Module Version 10300 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,1835 @@ +spv.subgroupExtendedTypesPartitioned.comp +// Module Version 10300 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,981 @@ +spv.subgroupExtendedTypesQuad.comp +// Module Version 10300 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,616 @@ +spv.subgroupExtendedTypesShuffle.comp +// Module Version 10300 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,616 @@ +spv.subgroupExtendedTypesShuffleRelative.comp +// Module Version 10300 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,377 @@ +spv.subgroupExtendedTypesVote.comp +// Module Version 10300 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroup.frag.out glslang-8.13.3559/Test/baseResults/spv.subgroup.frag.out --- glslang-7.12.3352/Test/baseResults/spv.subgroup.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroup.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroup.geom.out glslang-8.13.3559/Test/baseResults/spv.subgroup.geom.out --- glslang-7.12.3352/Test/baseResults/spv.subgroup.geom.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroup.geom.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupPartitioned.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupPartitioned.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupPartitioned.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupPartitioned.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupQuad.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupQuad.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupQuad.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupQuad.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupShuffle.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupShuffle.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupShuffle.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupShuffle.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupShuffleRelative.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupShuffleRelative.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupShuffleRelative.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupShuffleRelative.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroup.tesc.out glslang-8.13.3559/Test/baseResults/spv.subgroup.tesc.out --- glslang-7.12.3352/Test/baseResults/spv.subgroup.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroup.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroup.tese.out glslang-8.13.3559/Test/baseResults/spv.subgroup.tese.out --- glslang-7.12.3352/Test/baseResults/spv.subgroup.tese.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroup.tese.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroup.vert.out glslang-8.13.3559/Test/baseResults/spv.subgroup.vert.out --- glslang-7.12.3352/Test/baseResults/spv.subgroup.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroup.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subgroupVote.comp.out glslang-8.13.3559/Test/baseResults/spv.subgroupVote.comp.out --- glslang-7.12.3352/Test/baseResults/spv.subgroupVote.comp.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subgroupVote.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.subpass.frag.out glslang-8.13.3559/Test/baseResults/spv.subpass.frag.out --- glslang-7.12.3352/Test/baseResults/spv.subpass.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.subpass.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.switch.frag.out glslang-8.13.3559/Test/baseResults/spv.switch.frag.out --- glslang-7.12.3352/Test/baseResults/spv.switch.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.switch.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -4,7 +4,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/spv.swizzle.frag.out glslang-8.13.3559/Test/baseResults/spv.swizzle.frag.out --- glslang-7.12.3352/Test/baseResults/spv.swizzle.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.swizzle.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.swizzleInversion.frag.out glslang-8.13.3559/Test/baseResults/spv.swizzleInversion.frag.out --- glslang-7.12.3352/Test/baseResults/spv.swizzleInversion.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.swizzleInversion.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.test.frag.out glslang-8.13.3559/Test/baseResults/spv.test.frag.out --- glslang-7.12.3352/Test/baseResults/spv.test.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.test.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.test.vert.out glslang-8.13.3559/Test/baseResults/spv.test.vert.out --- glslang-7.12.3352/Test/baseResults/spv.test.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.test.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -2,7 +2,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/spv.textureBuffer.vert.out glslang-8.13.3559/Test/baseResults/spv.textureBuffer.vert.out --- glslang-7.12.3352/Test/baseResults/spv.textureBuffer.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.textureBuffer.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.texture.frag.out glslang-8.13.3559/Test/baseResults/spv.texture.frag.out --- glslang-7.12.3352/Test/baseResults/spv.texture.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.texture.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -4,7 +4,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/spv.textureGatherBiasLod.frag.out glslang-8.13.3559/Test/baseResults/spv.textureGatherBiasLod.frag.out --- glslang-7.12.3352/Test/baseResults/spv.textureGatherBiasLod.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.textureGatherBiasLod.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.texture.sampler.transform.frag.out glslang-8.13.3559/Test/baseResults/spv.texture.sampler.transform.frag.out --- glslang-7.12.3352/Test/baseResults/spv.texture.sampler.transform.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.texture.sampler.transform.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.texture.vert.out glslang-8.13.3559/Test/baseResults/spv.texture.vert.out --- glslang-7.12.3352/Test/baseResults/spv.texture.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.texture.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.types.frag.out glslang-8.13.3559/Test/baseResults/spv.types.frag.out --- glslang-7.12.3352/Test/baseResults/spv.types.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.types.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.uint.frag.out glslang-8.13.3559/Test/baseResults/spv.uint.frag.out --- glslang-7.12.3352/Test/baseResults/spv.uint.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.uint.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.uniformArray.frag.out glslang-8.13.3559/Test/baseResults/spv.uniformArray.frag.out --- glslang-7.12.3352/Test/baseResults/spv.uniformArray.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.uniformArray.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.unit1.frag.out glslang-8.13.3559/Test/baseResults/spv.unit1.frag.out --- glslang-7.12.3352/Test/baseResults/spv.unit1.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.unit1.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -193,7 +193,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/spv.variableArrayIndex.frag.out glslang-8.13.3559/Test/baseResults/spv.variableArrayIndex.frag.out --- glslang-7.12.3352/Test/baseResults/spv.variableArrayIndex.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.variableArrayIndex.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.varyingArray.frag.out glslang-8.13.3559/Test/baseResults/spv.varyingArray.frag.out --- glslang-7.12.3352/Test/baseResults/spv.varyingArray.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.varyingArray.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.varyingArrayIndirect.frag.out glslang-8.13.3559/Test/baseResults/spv.varyingArrayIndirect.frag.out --- glslang-7.12.3352/Test/baseResults/spv.varyingArrayIndirect.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.varyingArrayIndirect.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.vecMatConstruct.frag.out glslang-8.13.3559/Test/baseResults/spv.vecMatConstruct.frag.out --- glslang-7.12.3352/Test/baseResults/spv.vecMatConstruct.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.vecMatConstruct.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.viewportArray2.tesc.out glslang-8.13.3559/Test/baseResults/spv.viewportArray2.tesc.out --- glslang-7.12.3352/Test/baseResults/spv.viewportArray2.tesc.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.viewportArray2.tesc.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.viewportArray2.vert.out glslang-8.13.3559/Test/baseResults/spv.viewportArray2.vert.out --- glslang-7.12.3352/Test/baseResults/spv.viewportArray2.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.viewportArray2.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.voidFunction.frag.out glslang-8.13.3559/Test/baseResults/spv.voidFunction.frag.out --- glslang-7.12.3352/Test/baseResults/spv.voidFunction.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.voidFunction.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.volatileAtomic.comp.out glslang-8.13.3559/Test/baseResults/spv.volatileAtomic.comp.out --- glslang-7.12.3352/Test/baseResults/spv.volatileAtomic.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.volatileAtomic.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,40 @@ +spv.volatileAtomic.comp +// Module Version 10000 +// Generated by (magic number): 80008 +// 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 -Nru glslang-7.12.3352/Test/baseResults/spv.vulkan110.int16.frag.out glslang-8.13.3559/Test/baseResults/spv.vulkan110.int16.frag.out --- glslang-7.12.3352/Test/baseResults/spv.vulkan110.int16.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.vulkan110.int16.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.vulkan110.storageBuffer.vert.out glslang-8.13.3559/Test/baseResults/spv.vulkan110.storageBuffer.vert.out --- glslang-7.12.3352/Test/baseResults/spv.vulkan110.storageBuffer.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.vulkan110.storageBuffer.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.while-continue-break.vert.out glslang-8.13.3559/Test/baseResults/spv.while-continue-break.vert.out --- glslang-7.12.3352/Test/baseResults/spv.while-continue-break.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.while-continue-break.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.whileLoop.frag.out glslang-8.13.3559/Test/baseResults/spv.whileLoop.frag.out --- glslang-7.12.3352/Test/baseResults/spv.whileLoop.frag.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.whileLoop.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.while-simple.vert.out glslang-8.13.3559/Test/baseResults/spv.while-simple.vert.out --- glslang-7.12.3352/Test/baseResults/spv.while-simple.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.while-simple.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.xfb2.vert.out glslang-8.13.3559/Test/baseResults/spv.xfb2.vert.out --- glslang-7.12.3352/Test/baseResults/spv.xfb2.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.xfb2.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.xfb3.vert.out glslang-8.13.3559/Test/baseResults/spv.xfb3.vert.out --- glslang-7.12.3352/Test/baseResults/spv.xfb3.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.xfb3.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out glslang-8.13.3559/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out --- glslang-7.12.3352/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out glslang-8.13.3559/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out --- glslang-7.12.3352/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out glslang-8.13.3559/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out --- glslang-7.12.3352/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.xfbStrideJustOnce.vert.out glslang-8.13.3559/Test/baseResults/spv.xfbStrideJustOnce.vert.out --- glslang-7.12.3352/Test/baseResults/spv.xfbStrideJustOnce.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.xfbStrideJustOnce.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/spv.xfb.vert.out glslang-8.13.3559/Test/baseResults/spv.xfb.vert.out --- glslang-7.12.3352/Test/baseResults/spv.xfb.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/spv.xfb.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/baseResults/vulkan.ast.vert.out glslang-8.13.3559/Test/baseResults/vulkan.ast.vert.out --- glslang-7.12.3352/Test/baseResults/vulkan.ast.vert.out 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/vulkan.ast.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -258,7 +258,7 @@ 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 -Nru glslang-7.12.3352/Test/baseResults/web.array.frag.out glslang-8.13.3559/Test/baseResults/web.array.frag.out --- glslang-7.12.3352/Test/baseResults/web.array.frag.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/web.array.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,102 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 8 +; Bound: 74 +; Schema: 0 + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" %colorOut + OpExecutionMode %main OriginUpperLeft + OpSource ESSL 310 + OpName %main "main" + OpName %foo_f1_5__ "foo(f1[5];" + OpName %a "a" + OpName %g4 "g4" + OpName %g5 "g5" + OpName %param "param" + OpName %u "u" + OpName %param_0 "param" + OpName %colorOut "colorOut" + OpDecorate %colorOut Location 0 + %void = OpTypeVoid + %3 = OpTypeFunction %void + %float = OpTypeFloat 32 + %uint = OpTypeInt 32 0 + %uint_5 = OpConstant %uint 5 +%_arr_float_uint_5 = OpTypeArray %float %uint_5 +%_ptr_Function__arr_float_uint_5 = OpTypePointer Function %_arr_float_uint_5 + %uint_4 = OpConstant %uint 4 +%_arr_float_uint_4 = OpTypeArray %float %uint_4 + %13 = OpTypeFunction %_arr_float_uint_4 %_ptr_Function__arr_float_uint_5 + %int = OpTypeInt 32 1 + %int_0 = OpConstant %int 0 +%_ptr_Function_float = OpTypePointer Function %float + %int_1 = OpConstant %int 1 + %int_2 = OpConstant %int 2 + %int_3 = OpConstant %int 3 +%_ptr_Private__arr_float_uint_4 = OpTypePointer Private %_arr_float_uint_4 + %g4 = OpVariable %_ptr_Private__arr_float_uint_4 Private +%_ptr_Private__arr_float_uint_5 = OpTypePointer Private %_arr_float_uint_5 + %g5 = OpVariable %_ptr_Private__arr_float_uint_5 Private + %float_1 = OpConstant %float 1 + %float_2 = OpConstant %float 2 + %float_3 = OpConstant %float 3 + %float_4 = OpConstant %float 4 + %45 = OpConstantComposite %_arr_float_uint_4 %float_1 %float_2 %float_3 %float_4 + %bool = OpTypeBool + %v2float = OpTypeVector %float 2 +%_ptr_Output_v2float = OpTypePointer Output %v2float + %colorOut = OpVariable %_ptr_Output_v2float Output + %float_5 = OpConstant %float 5 + %73 = OpConstantComposite %v2float %float_4 %float_5 + %main = OpFunction %void None %3 + %5 = OpLabel + %param = OpVariable %_ptr_Function__arr_float_uint_5 Function + %u = OpVariable %_ptr_Function__arr_float_uint_5 Function + %param_0 = OpVariable %_ptr_Function__arr_float_uint_5 Function + %39 = OpLoad %_arr_float_uint_5 %g5 + OpStore %param %39 + %40 = OpFunctionCall %_arr_float_uint_4 %foo_f1_5__ %param + OpStore %g4 %40 + %46 = OpLoad %_arr_float_uint_4 %g4 + %48 = OpCompositeExtract %float %45 0 + %49 = OpCompositeExtract %float %46 0 + %50 = OpFOrdEqual %bool %48 %49 + %51 = OpCompositeExtract %float %45 1 + %52 = OpCompositeExtract %float %46 1 + %53 = OpFOrdEqual %bool %51 %52 + %54 = OpLogicalAnd %bool %50 %53 + %55 = OpCompositeExtract %float %45 2 + %56 = OpCompositeExtract %float %46 2 + %57 = OpFOrdEqual %bool %55 %56 + %58 = OpLogicalAnd %bool %54 %57 + %59 = OpCompositeExtract %float %45 3 + %60 = OpCompositeExtract %float %46 3 + %61 = OpFOrdEqual %bool %59 %60 + %62 = OpLogicalAnd %bool %58 %61 + OpSelectionMerge %64 None + OpBranchConditional %62 %63 %64 + %63 = OpLabel + OpBranch %64 + %64 = OpLabel + %67 = OpLoad %_arr_float_uint_5 %u + OpStore %param_0 %67 + %68 = OpFunctionCall %_arr_float_uint_4 %foo_f1_5__ %param_0 + OpStore %colorOut %73 + OpReturn + OpFunctionEnd + %foo_f1_5__ = OpFunction %_arr_float_uint_4 None %13 + %a = OpFunctionParameter %_ptr_Function__arr_float_uint_5 + %16 = OpLabel + %20 = OpAccessChain %_ptr_Function_float %a %int_0 + %21 = OpLoad %float %20 + %23 = OpAccessChain %_ptr_Function_float %a %int_1 + %24 = OpLoad %float %23 + %26 = OpAccessChain %_ptr_Function_float %a %int_2 + %27 = OpLoad %float %26 + %29 = OpAccessChain %_ptr_Function_float %a %int_3 + %30 = OpLoad %float %29 + %31 = OpCompositeConstruct %_arr_float_uint_4 %21 %24 %27 %30 + OpReturnValue %31 + OpFunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/web.basic.vert.out glslang-8.13.3559/Test/baseResults/web.basic.vert.out --- glslang-7.12.3352/Test/baseResults/web.basic.vert.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/web.basic.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,65 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 8 +; Bound: 38 +; Schema: 0 + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %main "main" %outv4 %inv4 + OpSource ESSL 310 + OpName %main "main" + OpName %outv4 "outv4" + OpName %inv4 "inv4" + OpName %uBlock "uBlock" + OpMemberName %uBlock 0 "a" + OpMemberName %uBlock 1 "b" + OpMemberName %uBlock 2 "c" + OpName %uInst "uInst" + OpDecorate %outv4 Location 1 + OpDecorate %inv4 Location 2 + OpMemberDecorate %uBlock 0 Offset 0 + OpMemberDecorate %uBlock 1 Offset 16 + OpMemberDecorate %uBlock 2 Offset 32 + OpDecorate %uBlock Block + OpDecorate %uInst DescriptorSet 0 + OpDecorate %uInst Binding 3 + %void = OpTypeVoid + %3 = OpTypeFunction %void + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %outv4 = OpVariable %_ptr_Output_v4float Output +%_ptr_Input_v4float = OpTypePointer Input %v4float + %inv4 = OpVariable %_ptr_Input_v4float Input + %int = OpTypeInt 32 1 + %v4int = OpTypeVector %int 4 + %uint = OpTypeInt 32 0 + %v4uint = OpTypeVector %uint 4 + %uBlock = OpTypeStruct %v4float %v4int %v4uint +%_ptr_Uniform_uBlock = OpTypePointer Uniform %uBlock + %uInst = OpVariable %_ptr_Uniform_uBlock Uniform + %int_0 = OpConstant %int 0 +%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float + %int_1 = OpConstant %int 1 +%_ptr_Uniform_v4int = OpTypePointer Uniform %v4int + %int_2 = OpConstant %int 2 +%_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint + %main = OpFunction %void None %3 + %5 = OpLabel + %12 = OpLoad %v4float %inv4 + %13 = OpExtInst %v4float %1 Normalize %12 + %23 = OpAccessChain %_ptr_Uniform_v4float %uInst %int_0 + %24 = OpLoad %v4float %23 + %25 = OpFMul %v4float %13 %24 + %28 = OpAccessChain %_ptr_Uniform_v4int %uInst %int_1 + %29 = OpLoad %v4int %28 + %30 = OpConvertSToF %v4float %29 + %31 = OpFMul %v4float %25 %30 + %34 = OpAccessChain %_ptr_Uniform_v4uint %uInst %int_2 + %35 = OpLoad %v4uint %34 + %36 = OpConvertUToF %v4float %35 + %37 = OpFMul %v4float %31 %36 + OpStore %outv4 %37 + OpReturn + OpFunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/web.builtins.frag.out glslang-8.13.3559/Test/baseResults/web.builtins.frag.out --- glslang-7.12.3352/Test/baseResults/web.builtins.frag.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/web.builtins.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,149 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 8 +; Bound: 69 +; Schema: 0 + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" %gl_FragCoord %gl_FragDepth %sc %s2 %sf %c1D %c2D %c4D %c3D %ic1D %ic3D %ic4D + OpExecutionMode %main OriginUpperLeft + OpExecutionMode %main DepthReplacing + OpSource ESSL 310 + OpName %main "main" + OpName %f "f" + OpName %gl_FragCoord "gl_FragCoord" + OpName %gl_FragDepth "gl_FragDepth" + OpName %sc "sc" + OpName %S2 "S2" + OpMemberName %S2 0 "c" + OpMemberName %S2 1 "f" + OpName %s2 "s2" + OpName %sf "sf" + OpName %c1D "c1D" + OpName %c2D "c2D" + OpName %c4D "c4D" + OpName %c3D "c3D" + OpName %ic1D "ic1D" + OpName %ic3D "ic3D" + OpName %ic4D "ic4D" + OpDecorate %f RelaxedPrecision + OpDecorate %gl_FragCoord BuiltIn FragCoord + OpDecorate %gl_FragDepth BuiltIn FragDepth + OpDecorate %19 RelaxedPrecision + OpDecorate %sc RelaxedPrecision + OpDecorate %sc Location 0 + OpMemberDecorate %S2 0 RelaxedPrecision + OpMemberDecorate %S2 1 RelaxedPrecision + OpDecorate %s2 Location 8 + OpDecorate %30 RelaxedPrecision + OpDecorate %sf RelaxedPrecision + OpDecorate %sf Location 1 + OpDecorate %34 RelaxedPrecision + OpDecorate %c1D RelaxedPrecision + OpDecorate %c1D Location 4 + OpDecorate %36 RelaxedPrecision + OpDecorate %37 RelaxedPrecision + OpDecorate %38 RelaxedPrecision + OpDecorate %39 RelaxedPrecision + OpDecorate %c2D RelaxedPrecision + OpDecorate %c2D Location 5 + OpDecorate %43 RelaxedPrecision + OpDecorate %44 RelaxedPrecision + OpDecorate %45 RelaxedPrecision + OpDecorate %46 RelaxedPrecision + OpDecorate %47 RelaxedPrecision + OpDecorate %c4D RelaxedPrecision + OpDecorate %c4D Location 7 + OpDecorate %49 RelaxedPrecision + OpDecorate %50 RelaxedPrecision + OpDecorate %51 RelaxedPrecision + OpDecorate %52 RelaxedPrecision + OpDecorate %53 RelaxedPrecision + OpDecorate %c3D RelaxedPrecision + OpDecorate %c3D Location 6 + OpDecorate %55 RelaxedPrecision + OpDecorate %56 RelaxedPrecision + OpDecorate %ic1D RelaxedPrecision + OpDecorate %ic1D Flat + OpDecorate %ic1D Location 1 + OpDecorate %ic3D RelaxedPrecision + OpDecorate %ic3D Flat + OpDecorate %ic3D Location 2 + OpDecorate %ic4D RelaxedPrecision + OpDecorate %ic4D Flat + OpDecorate %ic4D Location 3 + OpDecorate %68 RelaxedPrecision + %void = OpTypeVoid + %3 = OpTypeFunction %void + %float = OpTypeFloat 32 +%_ptr_Function_float = OpTypePointer Function %float + %v4float = OpTypeVector %float 4 +%_ptr_Input_v4float = OpTypePointer Input %v4float +%gl_FragCoord = OpVariable %_ptr_Input_v4float Input + %uint = OpTypeInt 32 0 + %uint_1 = OpConstant %uint 1 +%_ptr_Input_float = OpTypePointer Input %float +%_ptr_Output_float = OpTypePointer Output %float +%gl_FragDepth = OpVariable %_ptr_Output_float Output + %v3float = OpTypeVector %float 3 +%_ptr_Output_v3float = OpTypePointer Output %v3float + %sc = OpVariable %_ptr_Output_v3float Output + %S2 = OpTypeStruct %v3float %float +%_ptr_Input_S2 = OpTypePointer Input %S2 + %s2 = OpVariable %_ptr_Input_S2 Input + %int = OpTypeInt 32 1 + %int_0 = OpConstant %int 0 +%_ptr_Input_v3float = OpTypePointer Input %v3float + %sf = OpVariable %_ptr_Output_float Output + %int_1 = OpConstant %int 1 + %c1D = OpVariable %_ptr_Input_float Input + %v2float = OpTypeVector %float 2 +%_ptr_Input_v2float = OpTypePointer Input %v2float + %c2D = OpVariable %_ptr_Input_v2float Input + %c4D = OpVariable %_ptr_Input_v4float Input + %c3D = OpVariable %_ptr_Input_v3float Input +%_ptr_Input_int = OpTypePointer Input %int + %ic1D = OpVariable %_ptr_Input_int Input + %v3int = OpTypeVector %int 3 +%_ptr_Input_v3int = OpTypePointer Input %v3int + %ic3D = OpVariable %_ptr_Input_v3int Input + %v4int = OpTypeVector %int 4 +%_ptr_Input_v4int = OpTypePointer Input %v4int + %ic4D = OpVariable %_ptr_Input_v4int Input + %v2int = OpTypeVector %int 2 + %int_2 = OpConstant %int 2 + %int_3 = OpConstant %int 3 + %68 = OpConstantComposite %v2int %int_2 %int_3 + %main = OpFunction %void None %3 + %5 = OpLabel + %f = OpVariable %_ptr_Function_float Function + %15 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1 + %16 = OpLoad %float %15 + OpStore %f %16 + %19 = OpLoad %float %f + OpStore %gl_FragDepth %19 + %29 = OpAccessChain %_ptr_Input_v3float %s2 %int_0 + %30 = OpLoad %v3float %29 + OpStore %sc %30 + %33 = OpAccessChain %_ptr_Input_float %s2 %int_1 + %34 = OpLoad %float %33 + OpStore %sf %34 + %36 = OpLoad %float %c1D + %37 = OpExtInst %float %1 Sinh %36 + %38 = OpLoad %float %c1D + %39 = OpExtInst %float %1 Cosh %38 + %43 = OpLoad %v2float %c2D + %44 = OpExtInst %v2float %1 Tanh %43 + %45 = OpVectorTimesScalar %v2float %44 %39 + %46 = OpCompositeConstruct %v2float %37 %37 + %47 = OpFAdd %v2float %46 %45 + %49 = OpLoad %v4float %c4D + %50 = OpExtInst %v4float %1 Asinh %49 + %51 = OpLoad %v4float %c4D + %52 = OpExtInst %v4float %1 Acosh %51 + %53 = OpFAdd %v4float %50 %52 + %55 = OpLoad %v3float %c3D + %56 = OpExtInst %v3float %1 Atanh %55 + OpReturn + OpFunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/web.builtins.vert.out glslang-8.13.3559/Test/baseResults/web.builtins.vert.out --- glslang-7.12.3352/Test/baseResults/web.builtins.vert.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/web.builtins.vert.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,62 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 8 +; Bound: 33 +; Schema: 0 + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %main "main" %gl_Position %ps %gl_VertexIndex %gl_PointSize %gl_InstanceIndex + OpSource ESSL 310 + OpName %main "main" + OpName %gl_Position "gl_Position" + OpName %ps "ps" + OpName %gl_VertexIndex "gl_VertexIndex" + OpName %gl_PointSize "gl_PointSize" + OpName %gl_InstanceIndex "gl_InstanceIndex" + OpDecorate %gl_Position Invariant + OpDecorate %gl_Position BuiltIn Position + OpDecorate %ps RelaxedPrecision + OpDecorate %ps Location 0 + OpDecorate %12 RelaxedPrecision + OpDecorate %gl_VertexIndex BuiltIn VertexIndex + OpDecorate %gl_PointSize BuiltIn PointSize + OpDecorate %25 RelaxedPrecision + OpDecorate %gl_InstanceIndex BuiltIn InstanceIndex + %void = OpTypeVoid + %3 = OpTypeFunction %void + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float +%gl_Position = OpVariable %_ptr_Output_v4float Output +%_ptr_Input_float = OpTypePointer Input %float + %ps = OpVariable %_ptr_Input_float Input + %int = OpTypeInt 32 1 + %int_4 = OpConstant %int 4 +%_ptr_Input_int = OpTypePointer Input %int +%gl_VertexIndex = OpVariable %_ptr_Input_int Input +%_ptr_Output_float = OpTypePointer Output %float +%gl_PointSize = OpVariable %_ptr_Output_float Output + %int_5 = OpConstant %int 5 +%gl_InstanceIndex = OpVariable %_ptr_Input_int Input + %main = OpFunction %void None %3 + %5 = OpLabel + %12 = OpLoad %float %ps + %13 = OpCompositeConstruct %v4float %12 %12 %12 %12 + OpStore %gl_Position %13 + %18 = OpLoad %int %gl_VertexIndex + %19 = OpISub %int %int_4 %18 + %20 = OpConvertSToF %float %19 + %21 = OpLoad %v4float %gl_Position + %22 = OpVectorTimesScalar %v4float %21 %20 + OpStore %gl_Position %22 + %25 = OpLoad %float %ps + OpStore %gl_PointSize %25 + %28 = OpLoad %int %gl_InstanceIndex + %29 = OpISub %int %int_5 %28 + %30 = OpConvertSToF %float %29 + %31 = OpLoad %float %gl_PointSize + %32 = OpFMul %float %31 %30 + OpStore %gl_PointSize %32 + OpReturn + OpFunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/web.comp.out glslang-8.13.3559/Test/baseResults/web.comp.out --- glslang-7.12.3352/Test/baseResults/web.comp.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/web.comp.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,157 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 8 +; Bound: 108 +; Schema: 0 + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + 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" + 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 +%_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_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_0 = OpConstant %float 0 + %39 = OpSpecConstant %uint 2 + %uint_5 = OpConstant %uint 5 + %41 = OpSpecConstant %uint 7 +%gl_WorkGroupSize = OpSpecConstantComposite %v3uint %39 %uint_5 %41 + %uint_0 = OpConstant %uint 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 +%_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_5 = OpConstant %int 5 + %int_197645 = OpConstant %int 197645 + %main = OpFunction %void None %3 + %5 = OpLabel + 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 + %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 -Nru glslang-7.12.3352/Test/baseResults/web.controlFlow.frag.out glslang-8.13.3559/Test/baseResults/web.controlFlow.frag.out --- glslang-7.12.3352/Test/baseResults/web.controlFlow.frag.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/web.controlFlow.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,347 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 8 +; Bound: 193 +; Schema: 0 + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" %x %BaseColor %Count %bigColor %outColor %v4 %f_0 + OpExecutionMode %main OriginUpperLeft + OpSource ESSL 310 + OpName %main "main" + OpName %c "c" + OpName %f "f" + OpName %x "x" + OpName %d "d" + OpName %color "color" + OpName %BaseColor "BaseColor" + OpName %i "i" + OpName %Count "Count" + OpName %bigColor "bigColor" + OpName %outColor "outColor" + OpName %sum "sum" + OpName %i_0 "i" + OpName %v4 "v4" + OpName %i_1 "i" + OpName %tv4 "tv4" + OpName %r "r" + OpName %i_2 "i" + OpName %i_3 "i" + OpName %i_4 "i" + OpName %A "A" + OpName %B "B" + OpName %C "C" + OpName %D "D" + OpName %f_0 "f" + OpDecorate %f RelaxedPrecision + OpDecorate %x Location 0 + OpDecorate %color RelaxedPrecision + OpDecorate %BaseColor RelaxedPrecision + OpDecorate %BaseColor Location 2 + OpDecorate %47 RelaxedPrecision + OpDecorate %Count Flat + OpDecorate %Count Location 4 + OpDecorate %bigColor RelaxedPrecision + OpDecorate %bigColor Location 1 + OpDecorate %63 RelaxedPrecision + OpDecorate %64 RelaxedPrecision + OpDecorate %65 RelaxedPrecision + OpDecorate %outColor RelaxedPrecision + OpDecorate %outColor Location 0 + OpDecorate %71 RelaxedPrecision + OpDecorate %sum RelaxedPrecision + OpDecorate %v4 Flat + OpDecorate %v4 Location 5 + OpDecorate %91 RelaxedPrecision + OpDecorate %92 RelaxedPrecision + OpDecorate %93 RelaxedPrecision + OpDecorate %tv4 RelaxedPrecision + OpDecorate %111 RelaxedPrecision + OpDecorate %115 RelaxedPrecision + OpDecorate %116 RelaxedPrecision + OpDecorate %117 RelaxedPrecision + OpDecorate %118 RelaxedPrecision + OpDecorate %119 RelaxedPrecision + OpDecorate %120 RelaxedPrecision + OpDecorate %r RelaxedPrecision + OpDecorate %123 RelaxedPrecision + OpDecorate %124 RelaxedPrecision + OpDecorate %136 RelaxedPrecision + OpDecorate %141 RelaxedPrecision + OpDecorate %142 RelaxedPrecision + OpDecorate %143 RelaxedPrecision + OpDecorate %144 RelaxedPrecision + OpDecorate %145 RelaxedPrecision + OpDecorate %157 RelaxedPrecision + OpDecorate %158 RelaxedPrecision + OpDecorate %159 RelaxedPrecision + OpDecorate %f_0 RelaxedPrecision + OpDecorate %f_0 Location 3 + %void = OpTypeVoid + %3 = OpTypeFunction %void + %int = OpTypeInt 32 1 +%_ptr_Private_int = OpTypePointer Private %int + %c = OpVariable %_ptr_Private_int Private + %float = OpTypeFloat 32 +%_ptr_Function_float = OpTypePointer Function %float +%_ptr_Input_float = OpTypePointer Input %float + %x = OpVariable %_ptr_Input_float Input + %d = OpVariable %_ptr_Private_int Private + %v4float = OpTypeVector %float 4 +%_ptr_Function_v4float = OpTypePointer Function %v4float +%_ptr_Input_v4float = OpTypePointer Input %v4float + %BaseColor = OpVariable %_ptr_Input_v4float Input +%_ptr_Function_int = OpTypePointer Function %int + %int_0 = OpConstant %int 0 +%_ptr_Input_int = OpTypePointer Input %int + %Count = OpVariable %_ptr_Input_int Input + %bool = OpTypeBool + %bigColor = OpVariable %_ptr_Input_v4float Input + %int_1 = OpConstant %int 1 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %outColor = OpVariable %_ptr_Output_v4float Output + %float_0 = OpConstant %float 0 + %int_4 = OpConstant %int 4 + %uint = OpTypeInt 32 0 + %v4uint = OpTypeVector %uint 4 +%_ptr_Input_v4uint = OpTypePointer Input %v4uint + %v4 = OpVariable %_ptr_Input_v4uint Input +%_ptr_Input_uint = OpTypePointer Input %uint + %uint_4 = OpConstant %uint 4 + %v3float = OpTypeVector %float 3 + %uint_3 = OpConstant %uint 3 + %int_16 = OpConstant %int 16 + %int_10 = OpConstant %int 10 + %int_2 = OpConstant %int 2 + %int_5 = OpConstant %int 5 + %int_3 = OpConstant %int 3 + %f_0 = OpVariable %_ptr_Input_float Input + %main = OpFunction %void None %3 + %5 = OpLabel + %f = OpVariable %_ptr_Function_float Function + %color = OpVariable %_ptr_Function_v4float Function + %i = OpVariable %_ptr_Function_int Function + %sum = OpVariable %_ptr_Function_float Function + %i_0 = OpVariable %_ptr_Function_int Function + %i_1 = OpVariable %_ptr_Function_int Function + %tv4 = OpVariable %_ptr_Function_v4float Function + %r = OpVariable %_ptr_Function_v4float Function + %i_2 = OpVariable %_ptr_Function_int Function + %i_3 = OpVariable %_ptr_Function_int Function + %i_4 = OpVariable %_ptr_Function_int Function + %A = OpVariable %_ptr_Function_int Function + %B = OpVariable %_ptr_Function_int Function + %C = OpVariable %_ptr_Function_int Function + %D = OpVariable %_ptr_Function_int Function + %9 = OpLoad %int %c + OpSelectionMerge %13 None + OpSwitch %9 %12 1 %10 2 %11 + %12 = OpLabel + %39 = OpLoad %float %x + %40 = OpExtInst %float %1 Tan %39 + OpStore %f %40 + OpBranch %13 + %10 = OpLabel + %19 = OpLoad %float %x + %20 = OpExtInst %float %1 Sin %19 + OpStore %f %20 + OpBranch %13 + %11 = OpLabel + %23 = OpLoad %int %d + OpSelectionMerge %26 None + OpSwitch %23 %26 1 %24 2 %25 + %24 = OpLabel + %27 = OpLoad %float %x + %28 = OpLoad %float %x + %29 = OpFMul %float %27 %28 + %30 = OpLoad %float %x + %31 = OpFMul %float %29 %30 + OpStore %f %31 + OpBranch %26 + %25 = OpLabel + %33 = OpLoad %float %x + %34 = OpLoad %float %x + %35 = OpFMul %float %33 %34 + OpStore %f %35 + OpBranch %26 + %26 = OpLabel + OpBranch %13 + %13 = OpLabel + %47 = OpLoad %v4float %BaseColor + OpStore %color %47 + OpStore %i %int_0 + OpBranch %51 + %51 = OpLabel + OpLoopMerge %53 %54 None + OpBranch %55 + %55 = OpLabel + %56 = OpLoad %int %i + %59 = OpLoad %int %Count + %61 = OpSLessThan %bool %56 %59 + OpBranchConditional %61 %52 %53 + %52 = OpLabel + %63 = OpLoad %v4float %bigColor + %64 = OpLoad %v4float %color + %65 = OpFAdd %v4float %64 %63 + OpStore %color %65 + OpBranch %54 + %54 = OpLabel + %66 = OpLoad %int %i + %68 = OpIAdd %int %66 %int_1 + OpStore %i %68 + OpBranch %51 + %53 = OpLabel + %71 = OpLoad %v4float %color + OpStore %outColor %71 + OpStore %sum %float_0 + OpStore %i_0 %int_0 + OpBranch %75 + %75 = OpLabel + OpLoopMerge %77 %78 None + OpBranch %79 + %79 = OpLabel + %80 = OpLoad %int %i_0 + %82 = OpSLessThan %bool %80 %int_4 + OpBranchConditional %82 %76 %77 + %76 = OpLabel + %87 = OpLoad %int %i_0 + %89 = OpAccessChain %_ptr_Input_uint %v4 %87 + %90 = OpLoad %uint %89 + %91 = OpConvertUToF %float %90 + %92 = OpLoad %float %sum + %93 = OpFAdd %float %92 %91 + OpStore %sum %93 + OpBranch %78 + %78 = OpLabel + %94 = OpLoad %int %i_0 + %95 = OpIAdd %int %94 %int_1 + OpStore %i_0 %95 + OpBranch %75 + %77 = OpLabel + OpStore %i_1 %int_0 + OpBranch %97 + %97 = OpLabel + OpLoopMerge %99 %100 None + OpBranch %101 + %101 = OpLabel + %102 = OpLoad %int %i_1 + %103 = OpSLessThan %bool %102 %int_4 + OpBranchConditional %103 %98 %99 + %98 = OpLabel + %105 = OpLoad %int %i_1 + %106 = OpLoad %int %i_1 + %107 = OpAccessChain %_ptr_Input_uint %v4 %106 + %108 = OpLoad %uint %107 + %110 = OpIMul %uint %108 %uint_4 + %111 = OpConvertUToF %float %110 + %112 = OpAccessChain %_ptr_Function_float %tv4 %105 + OpStore %112 %111 + OpBranch %100 + %100 = OpLabel + %113 = OpLoad %int %i_1 + %114 = OpIAdd %int %113 %int_1 + OpStore %i_1 %114 + OpBranch %97 + %99 = OpLabel + %115 = OpLoad %float %sum + %116 = OpCompositeConstruct %v4float %115 %115 %115 %115 + %117 = OpLoad %v4float %tv4 + %118 = OpFAdd %v4float %116 %117 + %119 = OpLoad %v4float %outColor + %120 = OpFAdd %v4float %119 %118 + OpStore %outColor %120 + %123 = OpLoad %v4float %BaseColor + %124 = OpVectorShuffle %v3float %123 %123 0 1 2 + %125 = OpLoad %v4float %r + %126 = OpVectorShuffle %v4float %125 %124 4 5 6 3 + OpStore %r %126 + OpStore %i_2 %int_0 + OpBranch %128 + %128 = OpLabel + OpLoopMerge %130 %131 None + OpBranch %132 + %132 = OpLabel + %133 = OpLoad %int %i_2 + %134 = OpLoad %int %Count + %135 = OpSLessThan %bool %133 %134 + OpBranchConditional %135 %129 %130 + %129 = OpLabel + %136 = OpLoad %float %f + %138 = OpAccessChain %_ptr_Function_float %r %uint_3 + OpStore %138 %136 + OpBranch %131 + %131 = OpLabel + %139 = OpLoad %int %i_2 + %140 = OpIAdd %int %139 %int_1 + OpStore %i_2 %140 + OpBranch %128 + %130 = OpLabel + %141 = OpLoad %v4float %r + %142 = OpVectorShuffle %v3float %141 %141 0 1 2 + %143 = OpLoad %v4float %outColor + %144 = OpVectorShuffle %v3float %143 %143 0 1 2 + %145 = OpFAdd %v3float %144 %142 + %146 = OpLoad %v4float %outColor + %147 = OpVectorShuffle %v4float %146 %145 4 5 6 3 + OpStore %outColor %147 + OpStore %i_3 %int_0 + OpBranch %149 + %149 = OpLabel + OpLoopMerge %151 %152 None + OpBranch %153 + %153 = OpLabel + %154 = OpLoad %int %i_3 + %156 = OpSLessThan %bool %154 %int_16 + OpBranchConditional %156 %150 %151 + %150 = OpLabel + %157 = OpLoad %float %f + %158 = OpLoad %v4float %outColor + %159 = OpVectorTimesScalar %v4float %158 %157 + OpStore %outColor %159 + OpBranch %152 + %152 = OpLabel + %160 = OpLoad %int %i_3 + %161 = OpIAdd %int %160 %int_4 + OpStore %i_3 %161 + OpBranch %149 + %151 = OpLabel + OpStore %i_4 %int_0 + OpBranch %163 + %163 = OpLabel + OpLoopMerge %165 %166 None + OpBranch %167 + %167 = OpLabel + %168 = OpLoad %int %i_4 + %170 = OpSLessThan %bool %168 %int_10 + OpBranchConditional %170 %164 %165 + %164 = OpLabel + OpStore %A %int_1 + %172 = OpLoad %int %i_4 + %174 = OpSMod %int %172 %int_2 + %175 = OpIEqual %bool %174 %int_0 + OpSelectionMerge %177 None + OpBranchConditional %175 %176 %177 + %176 = OpLabel + OpStore %B %int_2 + OpBranch %166 + %177 = OpLabel + %181 = OpLoad %int %i_4 + %183 = OpSMod %int %181 %int_5 + %184 = OpIEqual %bool %183 %int_0 + OpSelectionMerge %186 None + OpBranchConditional %184 %185 %186 + %185 = OpLabel + OpStore %B %int_2 + OpBranch %165 + %186 = OpLabel + %188 = OpLoad %int %i_4 + %189 = OpIAdd %int %188 %int_1 + OpStore %i_4 %189 + OpBranch %166 + %166 = OpLabel + OpBranch %163 + %165 = OpLabel + OpStore %D %int_3 + OpReturn + OpFunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/web.operations.frag.out glslang-8.13.3559/Test/baseResults/web.operations.frag.out --- glslang-7.12.3352/Test/baseResults/web.operations.frag.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/web.operations.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,321 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 8 +; Bound: 207 +; Schema: 0 + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" + OpExecutionMode %main OriginUpperLeft + OpSource ESSL 310 + OpName %main "main" + OpName %f "f" + OpName %v4 "v4" + OpName %u "u" + OpName %uv4 "uv4" + OpName %iv3 "iv3" + OpName %i "i" + OpName %uv3 "uv3" + OpName %m2 "m2" + OpName %iv4 "iv4" + OpName %m4 "m4" + OpName %a "a" + OpName %S "S" + OpMemberName %S 0 "i" + OpName %s "s" + OpName %b "b" + OpName %arr "arr" + OpName %arr2 "arr2" + OpName %block "block" + OpMemberName %block 0 "f" + OpName %instanceName "instanceName" + OpDecorate %u RelaxedPrecision + OpDecorate %18 RelaxedPrecision + OpDecorate %19 RelaxedPrecision + OpDecorate %20 RelaxedPrecision + OpDecorate %uv4 RelaxedPrecision + OpDecorate %24 RelaxedPrecision + OpDecorate %25 RelaxedPrecision + OpDecorate %26 RelaxedPrecision + OpDecorate %27 RelaxedPrecision + OpDecorate %iv3 RelaxedPrecision + OpDecorate %32 RelaxedPrecision + OpDecorate %33 RelaxedPrecision + OpDecorate %34 RelaxedPrecision + OpDecorate %i RelaxedPrecision + OpDecorate %38 RelaxedPrecision + OpDecorate %39 RelaxedPrecision + OpDecorate %uv3 RelaxedPrecision + OpDecorate %43 RelaxedPrecision + OpDecorate %45 RelaxedPrecision + OpDecorate %46 RelaxedPrecision + OpDecorate %iv4 RelaxedPrecision + OpDecorate %62 RelaxedPrecision + OpDecorate %64 RelaxedPrecision + OpDecorate %65 RelaxedPrecision + OpDecorate %104 RelaxedPrecision + OpDecorate %105 RelaxedPrecision + OpMemberDecorate %S 0 RelaxedPrecision + OpDecorate %153 RelaxedPrecision + OpDecorate %154 RelaxedPrecision + OpDecorate %155 RelaxedPrecision + OpDecorate %156 RelaxedPrecision + OpDecorate %157 RelaxedPrecision + OpDecorate %158 RelaxedPrecision + OpDecorate %159 RelaxedPrecision + OpDecorate %160 RelaxedPrecision + OpDecorate %161 RelaxedPrecision + OpDecorate %162 RelaxedPrecision + OpDecorate %163 RelaxedPrecision + OpDecorate %164 RelaxedPrecision + OpDecorate %165 RelaxedPrecision + OpDecorate %166 RelaxedPrecision + OpDecorate %167 RelaxedPrecision + OpDecorate %168 RelaxedPrecision + OpDecorate %169 RelaxedPrecision + OpDecorate %170 RelaxedPrecision + OpDecorate %171 RelaxedPrecision + OpDecorate %172 RelaxedPrecision + OpDecorate %173 RelaxedPrecision + OpDecorate %174 RelaxedPrecision + OpDecorate %175 RelaxedPrecision + OpDecorate %176 RelaxedPrecision + OpDecorate %177 RelaxedPrecision + OpDecorate %178 RelaxedPrecision + OpDecorate %179 RelaxedPrecision + OpDecorate %180 RelaxedPrecision + OpDecorate %181 RelaxedPrecision + OpDecorate %182 RelaxedPrecision + OpDecorate %183 RelaxedPrecision + OpDecorate %184 RelaxedPrecision + OpDecorate %185 RelaxedPrecision + OpDecorate %186 RelaxedPrecision + OpDecorate %187 RelaxedPrecision + OpDecorate %188 RelaxedPrecision + OpDecorate %189 RelaxedPrecision + OpDecorate %190 RelaxedPrecision + OpDecorate %191 RelaxedPrecision + OpDecorate %192 RelaxedPrecision + OpDecorate %193 RelaxedPrecision + OpDecorate %194 RelaxedPrecision + OpDecorate %arr RelaxedPrecision + OpDecorate %arr2 RelaxedPrecision + OpMemberDecorate %block 0 RelaxedPrecision + OpMemberDecorate %block 0 Offset 0 + OpDecorate %block Block + OpDecorate %instanceName DescriptorSet 0 + OpDecorate %instanceName Binding 0 + %void = OpTypeVoid + %3 = OpTypeFunction %void + %float = OpTypeFloat 32 +%_ptr_Function_float = OpTypePointer Function %float + %v4float = OpTypeVector %float 4 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %uint = OpTypeInt 32 0 +%_ptr_Function_uint = OpTypePointer Function %uint + %v4uint = OpTypeVector %uint 4 +%_ptr_Function_v4uint = OpTypePointer Function %v4uint + %int = OpTypeInt 32 1 + %v3int = OpTypeVector %int 3 +%_ptr_Function_v3int = OpTypePointer Function %v3int +%_ptr_Function_int = OpTypePointer Function %int + %int_3 = OpConstant %int 3 + %v3uint = OpTypeVector %uint 3 +%_ptr_Function_v3uint = OpTypePointer Function %v3uint + %uint_4 = OpConstant %uint 4 + %v2float = OpTypeVector %float 2 +%mat2v2float = OpTypeMatrix %v2float 2 +%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float + %float_1 = OpConstant %float 1 + %v4int = OpTypeVector %int 4 +%_ptr_Function_v4int = OpTypePointer Function %v4int + %int_1 = OpConstant %int 1 +%mat4v4float = OpTypeMatrix %v4float 4 +%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float + %bool = OpTypeBool + %v4bool = OpTypeVector %bool 4 + %v2bool = OpTypeVector %bool 2 + %uint_5 = OpConstant %uint 5 +%_arr_float_uint_5 = OpTypeArray %float %uint_5 +%_ptr_Private__arr_float_uint_5 = OpTypePointer Private %_arr_float_uint_5 + %a = OpVariable %_ptr_Private__arr_float_uint_5 Private + %S = OpTypeStruct %int +%_ptr_Private_S = OpTypePointer Private %S + %s = OpVariable %_ptr_Private_S Private +%_ptr_Function_bool = OpTypePointer Function %bool + %uint_2 = OpConstant %uint 2 +%_arr_int_uint_2 = OpTypeArray %int %uint_2 +%_ptr_Function__arr_int_uint_2 = OpTypePointer Function %_arr_int_uint_2 + %uint_3 = OpConstant %uint 3 +%_arr_int_uint_3 = OpTypeArray %int %uint_3 +%_ptr_Function__arr_int_uint_3 = OpTypePointer Function %_arr_int_uint_3 + %int_2 = OpConstant %int 2 + %block = OpTypeStruct %float +%_ptr_Uniform_block = OpTypePointer Uniform %block +%instanceName = OpVariable %_ptr_Uniform_block Uniform + %main = OpFunction %void None %3 + %5 = OpLabel + %f = OpVariable %_ptr_Function_float Function + %v4 = OpVariable %_ptr_Function_v4float Function + %u = OpVariable %_ptr_Function_uint Function + %uv4 = OpVariable %_ptr_Function_v4uint Function + %iv3 = OpVariable %_ptr_Function_v3int Function + %i = OpVariable %_ptr_Function_int Function + %uv3 = OpVariable %_ptr_Function_v3uint Function + %m2 = OpVariable %_ptr_Function_mat2v2float Function + %iv4 = OpVariable %_ptr_Function_v4int Function + %m4 = OpVariable %_ptr_Function_mat4v4float Function + %b = OpVariable %_ptr_Function_bool Function + %arr = OpVariable %_ptr_Function__arr_int_uint_2 Function + %arr2 = OpVariable %_ptr_Function__arr_int_uint_3 Function + %9 = OpLoad %float %f + %13 = OpLoad %v4float %v4 + %14 = OpVectorTimesScalar %v4float %13 %9 + %18 = OpLoad %uint %u + %19 = OpLoad %uint %u + %20 = OpIAdd %uint %18 %19 + %24 = OpLoad %v4uint %uv4 + %25 = OpLoad %uint %u + %26 = OpCompositeConstruct %v4uint %25 %25 %25 %25 + %27 = OpUDiv %v4uint %24 %26 + %32 = OpLoad %v3int %iv3 + %33 = OpLoad %v3int %iv3 + %34 = OpISub %v3int %33 %32 + OpStore %iv3 %34 + %38 = OpLoad %int %i + %39 = OpSMod %int %38 %int_3 + OpStore %i %39 + %43 = OpLoad %v3uint %uv3 + %45 = OpCompositeConstruct %v3uint %uint_4 %uint_4 %uint_4 + %46 = OpUMod %v3uint %43 %45 + %51 = OpLoad %mat2v2float %m2 + %53 = OpCompositeConstruct %v2float %float_1 %float_1 + %54 = OpCompositeExtract %v2float %51 0 + %55 = OpFSub %v2float %54 %53 + %56 = OpCompositeExtract %v2float %51 1 + %57 = OpFSub %v2float %56 %53 + %58 = OpCompositeConstruct %mat2v2float %55 %57 + OpStore %m2 %58 + %62 = OpLoad %v4int %iv4 + %64 = OpCompositeConstruct %v4int %int_1 %int_1 %int_1 %int_1 + %65 = OpIAdd %v4int %62 %64 + OpStore %iv4 %65 + %69 = OpLoad %mat4v4float %m4 + %70 = OpLoad %mat4v4float %m4 + %72 = OpCompositeExtract %v4float %69 0 + %73 = OpCompositeExtract %v4float %70 0 + %75 = OpFOrdNotEqual %v4bool %72 %73 + %76 = OpAny %bool %75 + %77 = OpCompositeExtract %v4float %69 1 + %78 = OpCompositeExtract %v4float %70 1 + %79 = OpFOrdNotEqual %v4bool %77 %78 + %80 = OpAny %bool %79 + %81 = OpLogicalOr %bool %76 %80 + %82 = OpCompositeExtract %v4float %69 2 + %83 = OpCompositeExtract %v4float %70 2 + %84 = OpFOrdNotEqual %v4bool %82 %83 + %85 = OpAny %bool %84 + %86 = OpLogicalOr %bool %81 %85 + %87 = OpCompositeExtract %v4float %69 3 + %88 = OpCompositeExtract %v4float %70 3 + %89 = OpFOrdNotEqual %v4bool %87 %88 + %90 = OpAny %bool %89 + %91 = OpLogicalOr %bool %86 %90 + %92 = OpLoad %mat2v2float %m2 + %93 = OpLoad %mat2v2float %m2 + %94 = OpCompositeExtract %v2float %92 0 + %95 = OpCompositeExtract %v2float %93 0 + %97 = OpFOrdEqual %v2bool %94 %95 + %98 = OpAll %bool %97 + %99 = OpCompositeExtract %v2float %92 1 + %100 = OpCompositeExtract %v2float %93 1 + %101 = OpFOrdEqual %v2bool %99 %100 + %102 = OpAll %bool %101 + %103 = OpLogicalAnd %bool %98 %102 + %104 = OpLoad %int %i + %105 = OpLoad %int %i + %106 = OpSLessThanEqual %bool %104 %105 + %111 = OpLoad %_arr_float_uint_5 %a + %112 = OpLoad %_arr_float_uint_5 %a + %113 = OpCompositeExtract %float %111 0 + %114 = OpCompositeExtract %float %112 0 + %115 = OpFOrdEqual %bool %113 %114 + %116 = OpCompositeExtract %float %111 1 + %117 = OpCompositeExtract %float %112 1 + %118 = OpFOrdEqual %bool %116 %117 + %119 = OpLogicalAnd %bool %115 %118 + %120 = OpCompositeExtract %float %111 2 + %121 = OpCompositeExtract %float %112 2 + %122 = OpFOrdEqual %bool %120 %121 + %123 = OpLogicalAnd %bool %119 %122 + %124 = OpCompositeExtract %float %111 3 + %125 = OpCompositeExtract %float %112 3 + %126 = OpFOrdEqual %bool %124 %125 + %127 = OpLogicalAnd %bool %123 %126 + %128 = OpCompositeExtract %float %111 4 + %129 = OpCompositeExtract %float %112 4 + %130 = OpFOrdEqual %bool %128 %129 + %131 = OpLogicalAnd %bool %127 %130 + %135 = OpLoad %S %s + %136 = OpLoad %S %s + %137 = OpCompositeExtract %int %135 0 + %138 = OpCompositeExtract %int %136 0 + %139 = OpINotEqual %bool %137 %138 + %142 = OpLoad %bool %b + %143 = OpLoad %bool %b + %144 = OpLogicalAnd %bool %142 %143 + %145 = OpLoad %bool %b + %146 = OpLoad %bool %b + %147 = OpLogicalOr %bool %145 %146 + %148 = OpLoad %bool %b + %149 = OpLoad %bool %b + %150 = OpLogicalNotEqual %bool %148 %149 + %151 = OpLoad %bool %b + %152 = OpLogicalNot %bool %151 + %153 = OpLoad %int %i + %154 = OpNot %int %153 + %155 = OpLoad %uint %u + %156 = OpNot %uint %155 + %157 = OpLoad %v3uint %uv3 + %158 = OpNot %v3uint %157 + %159 = OpLoad %v3int %iv3 + %160 = OpNot %v3int %159 + %161 = OpLoad %int %i + %162 = OpLoad %v3uint %uv3 + %163 = OpCompositeConstruct %v3int %161 %161 %161 + %164 = OpShiftLeftLogical %v3uint %162 %163 + OpStore %uv3 %164 + %165 = OpLoad %int %i + %166 = OpLoad %int %i + %167 = OpShiftRightArithmetic %int %165 %166 + %168 = OpLoad %uint %u + %169 = OpLoad %uint %u + %170 = OpShiftLeftLogical %uint %168 %169 + %171 = OpLoad %v3int %iv3 + %172 = OpLoad %v3int %iv3 + %173 = OpShiftRightArithmetic %v3int %171 %172 + %174 = OpLoad %int %i + %175 = OpLoad %int %i + %176 = OpBitwiseAnd %int %174 %175 + %177 = OpLoad %uint %u + %178 = OpLoad %uint %u + %179 = OpBitwiseOr %uint %177 %178 + %180 = OpLoad %v3int %iv3 + %181 = OpLoad %v3int %iv3 + %182 = OpBitwiseXor %v3int %180 %181 + %183 = OpLoad %uint %u + %184 = OpLoad %v3uint %uv3 + %185 = OpCompositeConstruct %v3uint %183 %183 %183 + %186 = OpBitwiseAnd %v3uint %185 %184 + %187 = OpLoad %v3uint %uv3 + %188 = OpLoad %uint %u + %189 = OpCompositeConstruct %v3uint %188 %188 %188 + %190 = OpBitwiseOr %v3uint %187 %189 + %191 = OpLoad %uint %u + %192 = OpLoad %v3uint %uv3 + %193 = OpCompositeConstruct %v3uint %191 %191 %191 + %194 = OpBitwiseAnd %v3uint %192 %193 + OpStore %uv3 %194 + OpReturn + OpFunctionEnd diff -Nru glslang-7.12.3352/Test/baseResults/web.separate.frag.out glslang-8.13.3559/Test/baseResults/web.separate.frag.out --- glslang-7.12.3352/Test/baseResults/web.separate.frag.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/web.separate.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,178 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 8 +; 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 -Nru glslang-7.12.3352/Test/baseResults/web.texture.frag.out glslang-8.13.3559/Test/baseResults/web.texture.frag.out --- glslang-7.12.3352/Test/baseResults/web.texture.frag.out 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/baseResults/web.texture.frag.out 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,396 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 8 +; Bound: 189 +; Schema: 0 + OpCapability Shader + OpCapability ImageQuery + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" %c2D %c4D %c3D %ic3D %ic1D %c1D %ic4D %s2 %sc %sf + OpExecutionMode %main OriginUpperLeft + OpSource ESSL 310 + OpName %main "main" + OpName %v "v" + OpName %s2D "s2D" + OpName %c2D "c2D" + OpName %s3D "s3D" + OpName %c4D "c4D" + OpName %s2DArray "s2DArray" + OpName %c3D "c3D" + OpName %ic3D "ic3D" + OpName %ic1D "ic1D" + OpName %f "f" + OpName %s2DShadow "s2DShadow" + OpName %c1D "c1D" + OpName %sCube "sCube" + OpName %s2DArrayShadow "s2DArrayShadow" + OpName %iv "iv" + OpName %is2D "is2D" + OpName %is3D "is3D" + OpName %isCube "isCube" + OpName %is2DArray "is2DArray" + OpName %sCubeShadow "sCubeShadow" + OpName %us2D "us2D" + OpName %us3D "us3D" + OpName %usCube "usCube" + OpName %us2DArray "us2DArray" + OpName %ic4D "ic4D" + OpName %S2 "S2" + OpMemberName %S2 0 "c" + OpMemberName %S2 1 "f" + OpName %s2 "s2" + OpName %sc "sc" + OpName %sf "sf" + OpName %arrayedSampler "arrayedSampler" + OpDecorate %v RelaxedPrecision + OpDecorate %s2D RelaxedPrecision + OpDecorate %s2D DescriptorSet 0 + OpDecorate %s2D Binding 1 + OpDecorate %14 RelaxedPrecision + OpDecorate %c2D RelaxedPrecision + OpDecorate %c2D Location 5 + OpDecorate %18 RelaxedPrecision + OpDecorate %19 RelaxedPrecision + OpDecorate %s3D RelaxedPrecision + OpDecorate %s3D DescriptorSet 0 + OpDecorate %s3D Binding 2 + OpDecorate %24 RelaxedPrecision + OpDecorate %c4D RelaxedPrecision + OpDecorate %c4D Location 7 + OpDecorate %27 RelaxedPrecision + OpDecorate %28 RelaxedPrecision + OpDecorate %s2DArray RelaxedPrecision + OpDecorate %s2DArray DescriptorSet 0 + OpDecorate %s2DArray Binding 6 + OpDecorate %33 RelaxedPrecision + OpDecorate %c3D RelaxedPrecision + OpDecorate %c3D Location 6 + OpDecorate %37 RelaxedPrecision + OpDecorate %39 RelaxedPrecision + OpDecorate %40 RelaxedPrecision + OpDecorate %ic3D RelaxedPrecision + OpDecorate %ic3D Flat + OpDecorate %ic3D Location 2 + OpDecorate %45 RelaxedPrecision + OpDecorate %ic1D RelaxedPrecision + OpDecorate %ic1D Flat + OpDecorate %ic1D Location 1 + OpDecorate %48 RelaxedPrecision + OpDecorate %50 RelaxedPrecision + OpDecorate %f RelaxedPrecision + OpDecorate %s2DShadow RelaxedPrecision + OpDecorate %s2DShadow DescriptorSet 0 + OpDecorate %s2DShadow Binding 5 + OpDecorate %57 RelaxedPrecision + OpDecorate %58 RelaxedPrecision + OpDecorate %c1D RelaxedPrecision + OpDecorate %c1D Location 4 + OpDecorate %61 RelaxedPrecision + OpDecorate %67 RelaxedPrecision + OpDecorate %68 RelaxedPrecision + OpDecorate %69 RelaxedPrecision + OpDecorate %70 RelaxedPrecision + OpDecorate %71 RelaxedPrecision + OpDecorate %sCube RelaxedPrecision + OpDecorate %sCube DescriptorSet 0 + OpDecorate %sCube Binding 3 + OpDecorate %76 RelaxedPrecision + OpDecorate %77 RelaxedPrecision + OpDecorate %78 RelaxedPrecision + OpDecorate %79 RelaxedPrecision + OpDecorate %80 RelaxedPrecision + OpDecorate %s2DArrayShadow RelaxedPrecision + OpDecorate %s2DArrayShadow DescriptorSet 0 + OpDecorate %s2DArrayShadow Binding 7 + OpDecorate %85 RelaxedPrecision + OpDecorate %86 RelaxedPrecision + OpDecorate %87 RelaxedPrecision + OpDecorate %88 RelaxedPrecision + OpDecorate %90 RelaxedPrecision + OpDecorate %91 RelaxedPrecision + OpDecorate %92 RelaxedPrecision + OpDecorate %93 RelaxedPrecision + OpDecorate %94 RelaxedPrecision + OpDecorate %95 RelaxedPrecision + OpDecorate %96 RelaxedPrecision + OpDecorate %97 RelaxedPrecision + OpDecorate %98 RelaxedPrecision + OpDecorate %99 RelaxedPrecision + OpDecorate %100 RelaxedPrecision + OpDecorate %iv RelaxedPrecision + OpDecorate %is2D RelaxedPrecision + OpDecorate %is2D DescriptorSet 0 + OpDecorate %is2D Binding 8 + OpDecorate %108 RelaxedPrecision + OpDecorate %109 RelaxedPrecision + OpDecorate %110 RelaxedPrecision + OpDecorate %111 RelaxedPrecision + OpDecorate %112 RelaxedPrecision + OpDecorate %115 RelaxedPrecision + OpDecorate %116 RelaxedPrecision + OpDecorate %117 RelaxedPrecision + OpDecorate %118 RelaxedPrecision + OpDecorate %119 RelaxedPrecision + OpDecorate %120 RelaxedPrecision + OpDecorate %121 RelaxedPrecision + OpDecorate %122 RelaxedPrecision + OpDecorate %123 RelaxedPrecision + OpDecorate %124 RelaxedPrecision + OpDecorate %is3D RelaxedPrecision + OpDecorate %is3D DescriptorSet 0 + OpDecorate %is3D Binding 9 + OpDecorate %129 RelaxedPrecision + OpDecorate %130 RelaxedPrecision + OpDecorate %132 RelaxedPrecision + OpDecorate %isCube RelaxedPrecision + OpDecorate %isCube DescriptorSet 0 + OpDecorate %isCube Binding 10 + OpDecorate %137 RelaxedPrecision + OpDecorate %138 RelaxedPrecision + OpDecorate %139 RelaxedPrecision + OpDecorate %140 RelaxedPrecision + OpDecorate %is2DArray RelaxedPrecision + OpDecorate %is2DArray DescriptorSet 0 + OpDecorate %is2DArray Binding 11 + OpDecorate %145 RelaxedPrecision + OpDecorate %146 RelaxedPrecision + OpDecorate %147 RelaxedPrecision + OpDecorate %149 RelaxedPrecision + OpDecorate %sCubeShadow RelaxedPrecision + OpDecorate %sCubeShadow DescriptorSet 0 + OpDecorate %sCubeShadow Binding 4 + OpDecorate %154 RelaxedPrecision + OpDecorate %us2D RelaxedPrecision + OpDecorate %us2D DescriptorSet 0 + OpDecorate %us2D Binding 12 + OpDecorate %us3D RelaxedPrecision + OpDecorate %us3D DescriptorSet 0 + OpDecorate %us3D Binding 13 + OpDecorate %usCube RelaxedPrecision + OpDecorate %usCube DescriptorSet 0 + OpDecorate %usCube Binding 14 + OpDecorate %us2DArray RelaxedPrecision + OpDecorate %us2DArray DescriptorSet 0 + OpDecorate %us2DArray Binding 15 + OpDecorate %ic4D RelaxedPrecision + OpDecorate %ic4D Flat + OpDecorate %ic4D Location 3 + OpDecorate %65 RelaxedPrecision + OpMemberDecorate %S2 0 RelaxedPrecision + OpMemberDecorate %S2 1 RelaxedPrecision + OpDecorate %s2 Location 8 + OpDecorate %sc RelaxedPrecision + OpDecorate %sc Location 0 + OpDecorate %sf RelaxedPrecision + OpDecorate %sf Location 1 + OpDecorate %arrayedSampler RelaxedPrecision + OpDecorate %arrayedSampler DescriptorSet 0 + OpDecorate %arrayedSampler Binding 0 + %void = OpTypeVoid + %3 = OpTypeFunction %void + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %10 = OpTypeImage %float 2D 0 0 0 1 Unknown + %11 = OpTypeSampledImage %10 +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %s2D = OpVariable %_ptr_UniformConstant_11 UniformConstant + %v2float = OpTypeVector %float 2 +%_ptr_Input_v2float = OpTypePointer Input %v2float + %c2D = OpVariable %_ptr_Input_v2float Input + %20 = OpTypeImage %float 3D 0 0 0 1 Unknown + %21 = OpTypeSampledImage %20 +%_ptr_UniformConstant_21 = OpTypePointer UniformConstant %21 + %s3D = OpVariable %_ptr_UniformConstant_21 UniformConstant +%_ptr_Input_v4float = OpTypePointer Input %v4float + %c4D = OpVariable %_ptr_Input_v4float Input + %29 = OpTypeImage %float 2D 0 1 0 1 Unknown + %30 = OpTypeSampledImage %29 +%_ptr_UniformConstant_30 = OpTypePointer UniformConstant %30 + %s2DArray = OpVariable %_ptr_UniformConstant_30 UniformConstant + %v3float = OpTypeVector %float 3 +%_ptr_Input_v3float = OpTypePointer Input %v3float + %c3D = OpVariable %_ptr_Input_v3float Input +%float_1_20000005 = OpConstant %float 1.20000005 + %int = OpTypeInt 32 1 + %v3int = OpTypeVector %int 3 +%_ptr_Input_v3int = OpTypePointer Input %v3int + %ic3D = OpVariable %_ptr_Input_v3int Input +%_ptr_Input_int = OpTypePointer Input %int + %ic1D = OpVariable %_ptr_Input_int Input +%_ptr_Function_float = OpTypePointer Function %float + %53 = OpTypeImage %float 2D 1 0 0 1 Unknown + %54 = OpTypeSampledImage %53 +%_ptr_UniformConstant_54 = OpTypePointer UniformConstant %54 + %s2DShadow = OpVariable %_ptr_UniformConstant_54 UniformConstant +%_ptr_Input_float = OpTypePointer Input %float + %c1D = OpVariable %_ptr_Input_float Input + %v2int = OpTypeVector %int 2 + %int_2 = OpConstant %int 2 + %int_3 = OpConstant %int 3 + %65 = OpConstantComposite %v2int %int_2 %int_3 + %72 = OpTypeImage %float Cube 0 0 0 1 Unknown + %73 = OpTypeSampledImage %72 +%_ptr_UniformConstant_73 = OpTypePointer UniformConstant %73 + %sCube = OpVariable %_ptr_UniformConstant_73 UniformConstant + %81 = OpTypeImage %float 2D 1 1 0 1 Unknown + %82 = OpTypeSampledImage %81 +%_ptr_UniformConstant_82 = OpTypePointer UniformConstant %82 +%s2DArrayShadow = OpVariable %_ptr_UniformConstant_82 UniformConstant + %v4int = OpTypeVector %int 4 +%_ptr_Function_v4int = OpTypePointer Function %v4int + %104 = OpTypeImage %int 2D 0 0 0 1 Unknown + %105 = OpTypeSampledImage %104 +%_ptr_UniformConstant_105 = OpTypePointer UniformConstant %105 + %is2D = OpVariable %_ptr_UniformConstant_105 UniformConstant + %125 = OpTypeImage %int 3D 0 0 0 1 Unknown + %126 = OpTypeSampledImage %125 +%_ptr_UniformConstant_126 = OpTypePointer UniformConstant %126 + %is3D = OpVariable %_ptr_UniformConstant_126 UniformConstant +%float_4_19999981 = OpConstant %float 4.19999981 + %133 = OpTypeImage %int Cube 0 0 0 1 Unknown + %134 = OpTypeSampledImage %133 +%_ptr_UniformConstant_134 = OpTypePointer UniformConstant %134 + %isCube = OpVariable %_ptr_UniformConstant_134 UniformConstant + %141 = OpTypeImage %int 2D 0 1 0 1 Unknown + %142 = OpTypeSampledImage %141 +%_ptr_UniformConstant_142 = OpTypePointer UniformConstant %142 + %is2DArray = OpVariable %_ptr_UniformConstant_142 UniformConstant + %150 = OpTypeImage %float Cube 1 0 0 1 Unknown + %151 = OpTypeSampledImage %150 +%_ptr_UniformConstant_151 = OpTypePointer UniformConstant %151 +%sCubeShadow = OpVariable %_ptr_UniformConstant_151 UniformConstant + %uint = OpTypeInt 32 0 + %160 = OpTypeImage %uint 2D 0 0 0 1 Unknown + %161 = OpTypeSampledImage %160 +%_ptr_UniformConstant_161 = OpTypePointer UniformConstant %161 + %us2D = OpVariable %_ptr_UniformConstant_161 UniformConstant + %164 = OpTypeImage %uint 3D 0 0 0 1 Unknown + %165 = OpTypeSampledImage %164 +%_ptr_UniformConstant_165 = OpTypePointer UniformConstant %165 + %us3D = OpVariable %_ptr_UniformConstant_165 UniformConstant + %168 = OpTypeImage %uint Cube 0 0 0 1 Unknown + %169 = OpTypeSampledImage %168 +%_ptr_UniformConstant_169 = OpTypePointer UniformConstant %169 + %usCube = OpVariable %_ptr_UniformConstant_169 UniformConstant + %172 = OpTypeImage %uint 2D 0 1 0 1 Unknown + %173 = OpTypeSampledImage %172 +%_ptr_UniformConstant_173 = OpTypePointer UniformConstant %173 + %us2DArray = OpVariable %_ptr_UniformConstant_173 UniformConstant +%_ptr_Input_v4int = OpTypePointer Input %v4int + %ic4D = OpVariable %_ptr_Input_v4int Input + %S2 = OpTypeStruct %v3float %float +%_ptr_Input_S2 = OpTypePointer Input %S2 + %s2 = OpVariable %_ptr_Input_S2 Input +%_ptr_Output_v3float = OpTypePointer Output %v3float + %sc = OpVariable %_ptr_Output_v3float Output +%_ptr_Output_float = OpTypePointer Output %float + %sf = OpVariable %_ptr_Output_float Output + %uint_5 = OpConstant %uint 5 +%_arr_11_uint_5 = OpTypeArray %11 %uint_5 +%_ptr_UniformConstant__arr_11_uint_5 = OpTypePointer UniformConstant %_arr_11_uint_5 +%arrayedSampler = OpVariable %_ptr_UniformConstant__arr_11_uint_5 UniformConstant + %main = OpFunction %void None %3 + %5 = OpLabel + %v = OpVariable %_ptr_Function_v4float Function + %f = OpVariable %_ptr_Function_float Function + %iv = OpVariable %_ptr_Function_v4int Function + %14 = OpLoad %11 %s2D + %18 = OpLoad %v2float %c2D + %19 = OpImageSampleImplicitLod %v4float %14 %18 + OpStore %v %19 + %24 = OpLoad %21 %s3D + %27 = OpLoad %v4float %c4D + %28 = OpImageSampleProjImplicitLod %v4float %24 %27 + OpStore %v %28 + %33 = OpLoad %30 %s2DArray + %37 = OpLoad %v3float %c3D + %39 = OpImageSampleExplicitLod %v4float %33 %37 Lod %float_1_20000005 + OpStore %v %39 + %40 = OpLoad %21 %s3D + %45 = OpLoad %v3int %ic3D + %48 = OpLoad %int %ic1D + %49 = OpImage %20 %40 + %50 = OpImageFetch %v4float %49 %45 Lod %48 + OpStore %v %50 + %57 = OpLoad %54 %s2DShadow + %58 = OpLoad %v3float %c3D + %61 = OpLoad %float %c1D + %66 = OpCompositeExtract %float %58 2 + %67 = OpImageSampleDrefExplicitLod %float %57 %58 %66 Lod|ConstOffset %61 %65 + OpStore %f %67 + %68 = OpLoad %11 %s2D + %69 = OpLoad %v3float %c3D + %70 = OpLoad %float %c1D + %71 = OpImageSampleProjExplicitLod %v4float %68 %69 Lod|ConstOffset %70 %65 + OpStore %v %71 + %76 = OpLoad %73 %sCube + %77 = OpLoad %v3float %c3D + %78 = OpLoad %v3float %c3D + %79 = OpLoad %v3float %c3D + %80 = OpImageSampleExplicitLod %v4float %76 %77 Grad %78 %79 + OpStore %v %80 + %85 = OpLoad %82 %s2DArrayShadow + %86 = OpLoad %v4float %c4D + %87 = OpLoad %v2float %c2D + %88 = OpLoad %v2float %c2D + %89 = OpCompositeExtract %float %86 3 + %90 = OpImageSampleDrefExplicitLod %float %85 %86 %89 Grad|ConstOffset %87 %88 %65 + OpStore %f %90 + %91 = OpLoad %21 %s3D + %92 = OpLoad %v4float %c4D + %93 = OpLoad %v3float %c3D + %94 = OpLoad %v3float %c3D + %95 = OpImageSampleProjExplicitLod %v4float %91 %92 Grad %93 %94 + OpStore %v %95 + %96 = OpLoad %11 %s2D + %97 = OpLoad %v3float %c3D + %98 = OpLoad %v2float %c2D + %99 = OpLoad %v2float %c2D + %100 = OpImageSampleProjExplicitLod %v4float %96 %97 Grad|ConstOffset %98 %99 %65 + OpStore %v %100 + %108 = OpLoad %105 %is2D + %109 = OpLoad %v2float %c2D + %110 = OpImageSampleImplicitLod %v4int %108 %109 + OpStore %iv %110 + %111 = OpLoad %105 %is2D + %112 = OpLoad %v4float %c4D + %113 = OpCompositeExtract %float %112 3 + %114 = OpCompositeInsert %v4float %113 %112 2 + %115 = OpImageSampleProjImplicitLod %v4int %111 %114 ConstOffset %65 + OpStore %iv %115 + %116 = OpLoad %105 %is2D + %117 = OpLoad %v3float %c3D + %118 = OpLoad %float %c1D + %119 = OpImageSampleProjExplicitLod %v4int %116 %117 Lod %118 + OpStore %iv %119 + %120 = OpLoad %105 %is2D + %121 = OpLoad %v3float %c3D + %122 = OpLoad %v2float %c2D + %123 = OpLoad %v2float %c2D + %124 = OpImageSampleProjExplicitLod %v4int %120 %121 Grad %122 %123 + OpStore %iv %124 + %129 = OpLoad %126 %is3D + %130 = OpLoad %v3float %c3D + %132 = OpImageSampleImplicitLod %v4int %129 %130 Bias %float_4_19999981 + OpStore %iv %132 + %137 = OpLoad %134 %isCube + %138 = OpLoad %v3float %c3D + %139 = OpLoad %float %c1D + %140 = OpImageSampleExplicitLod %v4int %137 %138 Lod %139 + OpStore %iv %140 + %145 = OpLoad %142 %is2DArray + %146 = OpLoad %v3int %ic3D + %147 = OpLoad %int %ic1D + %148 = OpImage %141 %145 + %149 = OpImageFetch %v4int %148 %146 Lod %147 + OpStore %iv %149 + %154 = OpLoad %151 %sCubeShadow + %155 = OpImage %150 %154 + %156 = OpImageQuerySizeLod %v2int %155 %int_2 + %157 = OpLoad %v4int %iv + %158 = OpVectorShuffle %v4int %157 %156 4 5 2 3 + OpStore %iv %158 + OpReturn + OpFunctionEnd diff -Nru glslang-7.12.3352/Test/glsl.450.subgroup.frag glslang-8.13.3559/Test/glsl.450.subgroup.frag --- glslang-7.12.3352/Test/glsl.450.subgroup.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/glsl.450.subgroup.frag 2020-01-06 14:50:40.000000000 +0000 @@ -114,12 +114,14 @@ #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 @@ #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 -Nru glslang-7.12.3352/Test/hlsl.doLoop.frag glslang-8.13.3559/Test/hlsl.doLoop.frag --- glslang-7.12.3352/Test/hlsl.doLoop.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/hlsl.doLoop.frag 2020-01-06 14:50:40.000000000 +0000 @@ -1,9 +1,29 @@ -float4 PixelShaderFunction(float input) : COLOR0 -{ +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 +{ + f0(); + f1(); + f2(input); + f3(input); + f4(input); return (float4)input; } diff -Nru glslang-7.12.3352/Test/hlsl.forLoop.frag glslang-8.13.3559/Test/hlsl.forLoop.frag --- glslang-7.12.3352/Test/hlsl.forLoop.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/hlsl.forLoop.frag 2020-01-06 14:50:40.000000000 +0000 @@ -1,17 +1,59 @@ -float4 PixelShaderFunction(float4 input) : COLOR0 -{ +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 +{ + 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 -Nru glslang-7.12.3352/Test/hlsl.format.rwtexture.frag glslang-8.13.3559/Test/hlsl.format.rwtexture.frag --- glslang-7.12.3352/Test/hlsl.format.rwtexture.frag 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/hlsl.format.rwtexture.frag 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,63 @@ +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]] [[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; +[[spv::format_r16ui]] RWTexture1DArray g_tTex1du4a; + +[[spv::format_rgb10a2ui]] RWTexture2DArray g_tTex2df4a; +[[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; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff -Nru glslang-7.12.3352/Test/hlsl.if.frag glslang-8.13.3559/Test/hlsl.if.frag --- glslang-7.12.3352/Test/hlsl.if.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/hlsl.if.frag 2020-01-06 14:50:40.000000000 +0000 @@ -1,12 +1,24 @@ -float4 PixelShaderFunction(float4 input) : COLOR0 -{ +float4 f0(float4 input) { if (all(input == input)) return input; + else + return -input; +} - if (all(input == input)) +float4 f1(float4 input) { + if (all(input == input)) { return input; - else + } else { return -input; + } +} + +float4 PixelShaderFunction(float4 input) : COLOR0 +{ + if (all(input == input)) + return input; + + f0(input); if (all(input == input)) ; @@ -20,11 +32,7 @@ return input; } - if (all(input == input)) { - return input; - } else { - return -input; - } + f1(input); int ii; if (float ii = input.z) diff -Nru glslang-7.12.3352/Test/hlsl.intrinsics.frag glslang-8.13.3559/Test/hlsl.intrinsics.frag --- glslang-7.12.3352/Test/hlsl.intrinsics.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/hlsl.intrinsics.frag 2020-01-06 14:50:40.000000000 +0000 @@ -53,6 +53,7 @@ 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 -Nru glslang-7.12.3352/Test/link1.vk.frag glslang-8.13.3559/Test/link1.vk.frag --- glslang-7.12.3352/Test/link1.vk.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/link1.vk.frag 2020-01-06 14:50:40.000000000 +0000 @@ -10,8 +10,8 @@ int c[]; int i; -buffer bnameRuntime { float r[]; }; -buffer bnameImplicit { float m[]; }; +layout (binding = 0) buffer bnameRuntime { float r[]; }; +layout (binding = 1) buffer bnameImplicit { float m[]; }; void main() { diff -Nru glslang-7.12.3352/Test/link2.vk.frag glslang-8.13.3559/Test/link2.vk.frag --- glslang-7.12.3352/Test/link2.vk.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/link2.vk.frag 2020-01-06 14:50:40.000000000 +0000 @@ -8,8 +8,8 @@ int c[7]; int i; -buffer bnameRuntime { float r[]; }; -buffer bnameImplicit { float m[4]; }; +layout (binding = 0) buffer bnameRuntime { float r[]; }; +layout (binding = 1) buffer bnameImplicit { float m[4]; }; vec4 getColor() { diff -Nru glslang-7.12.3352/Test/nonuniform.frag glslang-8.13.3559/Test/nonuniform.frag --- glslang-7.12.3352/Test/nonuniform.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/nonuniform.frag 2020-01-06 14:50:40.000000000 +0000 @@ -22,12 +22,12 @@ 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 -Nru glslang-7.12.3352/Test/reflection.options.vert glslang-8.13.3559/Test/reflection.options.vert --- glslang-7.12.3352/Test/reflection.options.vert 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/reflection.options.vert 2020-01-06 14:50:40.000000000 +0000 @@ -20,6 +20,11 @@ float f[5]; } multiarray; +buffer ArrayedBind { + float a; + float b; +} buffers[3]; + uniform UBO { VertexInfo verts[2]; float flt[8]; @@ -52,6 +57,7 @@ f += ubo.flt[gl_InstanceID]; f += ubo.uniform_multi[0][0][0]; f += uniform_multi[gl_InstanceID][gl_InstanceID][gl_InstanceID]; + f += buffers[gl_InstanceID].b; TriangleInfo tlocal[5] = t; outval.val = f; outarr[2] = f; diff -Nru glslang-7.12.3352/Test/runtests glslang-8.13.3559/Test/runtests --- glslang-7.12.3352/Test/runtests 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/runtests 2020-01-06 14:50:40.000000000 +0000 @@ -1,11 +1,16 @@ #!/usr/bin/env bash -TARGETDIR=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=../build/install/bin/glslangValidator -REMAPEXE=../build/install/bin/spirv-remap +EXE=${2:-../build/install/bin/glslangValidator} +REMAPEXE=${3:-../build/install/bin/spirv-remap} HASERROR=0 -mkdir -p localResults +mkdir -p $TARGETDIR if [ -a localtestlist ] then @@ -55,13 +60,13 @@ # multi-threaded test # echo Comparing single thread to multithread for all tests in current directory... -$EXE -i -C *.vert *.geom *.frag *.tes* *.comp > singleThread.out -$EXE -i -C *.vert *.geom *.frag *.tes* *.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 # @@ -145,7 +150,7 @@ $EXE -g --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf --spirv-val \ -G -H spv.debugInfo.frag --rsb frag 3 > $TARGETDIR/spv.debugInfo.frag.out diff -b $BASEDIR/spv.debugInfo.frag.out $TARGETDIR/spv.debugInfo.frag.out || HASERROR=1 -$EXE -g -Od --target-env vulkan1.1 --relaxed-errors --suppress-warnings --aml --hlsl-offsets --nsf --spirv-val \ +$EXE -g -Od --target-env vulkan1.1 --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf --spirv-val \ -G -H spv.debugInfo.frag --rsb frag 3 > $TARGETDIR/spv.debugInfo.1.1.frag.out diff -b $BASEDIR/spv.debugInfo.1.1.frag.out $TARGETDIR/spv.debugInfo.1.1.frag.out || HASERROR=1 $EXE -g -D -Od -e newMain -g --amb --aml --fua --hlsl-iomap --nsf --spirv-val --sib 1 --ssb 2 --sbb 3 --stb 4 --suavb 5 --sub 6 \ diff -Nru glslang-7.12.3352/Test/spv.8bit-16bit-construction.frag glslang-8.13.3559/Test/spv.8bit-16bit-construction.frag --- glslang-7.12.3352/Test/spv.8bit-16bit-construction.frag 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.8bit-16bit-construction.frag 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.bufferhandleUvec2.frag glslang-8.13.3559/Test/spv.bufferhandleUvec2.frag --- glslang-7.12.3352/Test/spv.bufferhandleUvec2.frag 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.bufferhandleUvec2.frag 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.controlFlowAttributes.frag glslang-8.13.3559/Test/spv.controlFlowAttributes.frag --- glslang-7.12.3352/Test/spv.controlFlowAttributes.frag 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/spv.controlFlowAttributes.frag 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.dead-after-continue.vert glslang-8.13.3559/Test/spv.dead-after-continue.vert --- glslang-7.12.3352/Test/spv.dead-after-continue.vert 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.dead-after-continue.vert 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.dead-after-discard.frag glslang-8.13.3559/Test/spv.dead-after-discard.frag --- glslang-7.12.3352/Test/spv.dead-after-discard.frag 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.dead-after-discard.frag 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.dead-after-loop-break.vert glslang-8.13.3559/Test/spv.dead-after-loop-break.vert --- glslang-7.12.3352/Test/spv.dead-after-loop-break.vert 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.dead-after-loop-break.vert 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.dead-after-return.vert glslang-8.13.3559/Test/spv.dead-after-return.vert --- glslang-7.12.3352/Test/spv.dead-after-return.vert 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.dead-after-return.vert 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.dead-after-switch-break.vert glslang-8.13.3559/Test/spv.dead-after-switch-break.vert --- glslang-7.12.3352/Test/spv.dead-after-switch-break.vert 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.dead-after-switch-break.vert 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.dead-complex-continue-after-return.vert glslang-8.13.3559/Test/spv.dead-complex-continue-after-return.vert --- glslang-7.12.3352/Test/spv.dead-complex-continue-after-return.vert 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.dead-complex-continue-after-return.vert 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.dead-complex-merge-after-return.vert glslang-8.13.3559/Test/spv.dead-complex-merge-after-return.vert --- glslang-7.12.3352/Test/spv.dead-complex-merge-after-return.vert 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.dead-complex-merge-after-return.vert 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.hlslOffsets.vert glslang-8.13.3559/Test/spv.hlslOffsets.vert --- glslang-7.12.3352/Test/spv.hlslOffsets.vert 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/spv.hlslOffsets.vert 2020-01-06 14:50:40.000000000 +0000 @@ -1,6 +1,6 @@ #version 450 -buffer block { +layout(binding = 0) buffer block { float m0; vec3 m4; ////// diff -Nru glslang-7.12.3352/Test/spv.intcoopmat.comp glslang-8.13.3559/Test/spv.intcoopmat.comp --- glslang-7.12.3352/Test/spv.intcoopmat.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.intcoopmat.comp 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,117 @@ +#version 450 core +#extension GL_KHR_memory_scope_semantics : enable +#extension GL_NV_cooperative_matrix : enable +#extension GL_NV_integer_cooperative_matrix : enable +#extension GL_EXT_shader_explicit_arithmetic_types : enable +#extension GL_EXT_buffer_reference : enable + +layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; + +const int X = 8; +layout(constant_id = 0) const int Y = 2; +const int Z = X*Y; + +icoopmatNV<8, gl_ScopeSubgroup, Z, 8> miC; +icoopmatNV<8, gl_ScopeSubgroup, Z, 8> miC2[3]; +ucoopmatNV<8, gl_ScopeSubgroup, Z, 8> muC; +ucoopmatNV<8, gl_ScopeSubgroup, Z, 8> muC2[3]; + +int iarr[miC.length()]; +int iarr2[miC2[1].length()]; +int uarr[muC.length()]; +int uarr2[muC2[1].length()]; + +const icoopmatNV<32, gl_ScopeSubgroup, Z, 8> mD = icoopmatNV<32, gl_ScopeSubgroup, Z, 8>(1); +const ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> mD2 = ucoopmatNV<8, gl_ScopeSubgroup, 8, 8>(1); + +struct S { int a; int b; int c; }; + +const S s = S(12, 23, 34); + +layout(set = 0, binding = 0, buffer_reference) coherent buffer Block { + uint y[1024*1024]; + uint x[]; +} block; + +layout(set = 0, binding = 0) coherent buffer Block16 { + int8_t y[1024*1024]; + int8_t x[]; + + Block b; +} block8; + +icoopmatNV<8, gl_ScopeSubgroup, 8, 8> ineg(icoopmatNV<8, gl_ScopeSubgroup, 8, 8> m) { return -m; } +ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> umul(ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> m) { return m * uint8_t(2); } + +layout(constant_id = 2) const int SC = 1; +ucoopmatNV<32, gl_ScopeSubgroup, SC, SC> scm[SC][SC]; + +// sized for icoopmatNV<8, gl_ScopeSubgroup, 16, 16> +shared uvec4 shmatrix[16*16*2/16]; + +void main() +{ + ucoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)> mu = ucoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)>(2); + icoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)> mi = icoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)>(2); + + mu = mu + mu; + mu = mu - mu; + mi = -mi; + mi = mi * int8_t(2); + + fcoopmatNV<16, gl_ScopeSubgroup, 16, 8> mf16_0 = fcoopmatNV<16, gl_ScopeSubgroup, 16, 8>(mu); + fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> mf32_0 = fcoopmatNV<32, gl_ScopeSubgroup, 16, 8>(mu); + fcoopmatNV<16, gl_ScopeSubgroup, 16, 8> mf16_1 = fcoopmatNV<16, gl_ScopeSubgroup, 16, 8>(mi); + fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> mf32_1 = fcoopmatNV<32, gl_ScopeSubgroup, 16, 8>(mi); + + uint8_t x = mu[1]; + mi[0] = int8_t(x); + + coopMatLoadNV(mi, block.x, 16, 128, false); + coopMatStoreNV(mi, block.x, 16, 128, false); + coopMatLoadNV(mu, block8.x, 16, 128, false); + coopMatStoreNV(mu, block8.x, 16, 128, false); + coopMatLoadNV(mi, block8.b.x, 16, 128, false); + coopMatStoreNV(mi, block8.b.x, 16, 128, false); + + ucoopmatNV<8, gl_ScopeSubgroup, 16, 8> A; + ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> B; + ucoopmatNV<8, gl_ScopeSubgroup, 16, 8> C; + ucoopmatNV<8, gl_ScopeSubgroup, 16, 8> D; + D = coopMatMulAddNV(A, B, C); + + int l = D.length(); + + + icoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)> a[5]; + a[3][0] = int8_t(1); + + int md1 = mD[1]; + + md1 += (mi += mi)[1234]; + + muC2[0] = muC2[1]; + muC2[1][0] = (miC2[2][0]); + + coopMatLoadNV(mi, block.y, 16, 128, false); + coopMatStoreNV(mi, block.y, 16, 128, false); + coopMatLoadNV(mu, block8.y, 16, 128, false); + coopMatStoreNV(mu, block8.y, 16, 128, false); + + icoopmatNV<8, gl_ScopeSubgroup, 8, 8> p1; + ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> p2; + + p1 = ineg(p1); + p2 = umul(p2); + + p1 /= p1; + p2 /= p2; + + p1 *= int8_t(2); + p2 *= uint8_t(4); + + icoopmatNV<8, gl_ScopeSubgroup, 16, 8> ms; + coopMatLoadNV(ms, shmatrix, 1, 2, false); + coopMatStoreNV(ms, shmatrix, 1, 2, false); + +} diff -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesArithmetic.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesArithmetic.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesArithmetic.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesArithmetic.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesArithmeticNeg.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesArithmeticNeg.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesArithmeticNeg.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesArithmeticNeg.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesBallot.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesBallot.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesBallot.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesBallot.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesBallotNeg.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesBallotNeg.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesBallotNeg.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesBallotNeg.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesClustered.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesClustered.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesClustered.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesClustered.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesClusteredNeg.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesClusteredNeg.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesClusteredNeg.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesClusteredNeg.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesPartitioned.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesPartitioned.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesPartitioned.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesPartitioned.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesPartitionedNeg.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesPartitionedNeg.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesPartitionedNeg.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesPartitionedNeg.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesQuad.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesQuad.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesQuad.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesQuad.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesQuadNeg.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesQuadNeg.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesQuadNeg.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesQuadNeg.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesShuffle.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesShuffle.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesShuffle.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesShuffle.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesShuffleNeg.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesShuffleNeg.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesShuffleNeg.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesShuffleNeg.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesShuffleRelative.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesShuffleRelative.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesShuffleRelative.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesShuffleRelative.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesVote.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesVote.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesVote.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesVote.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.subgroupExtendedTypesVoteNeg.comp glslang-8.13.3559/Test/spv.subgroupExtendedTypesVoteNeg.comp --- glslang-7.12.3352/Test/spv.subgroupExtendedTypesVoteNeg.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.subgroupExtendedTypesVoteNeg.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/spv.volatileAtomic.comp glslang-8.13.3559/Test/spv.volatileAtomic.comp --- glslang-7.12.3352/Test/spv.volatileAtomic.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/spv.volatileAtomic.comp 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/vulkan.vert glslang-8.13.3559/Test/vulkan.vert --- glslang-7.12.3352/Test/vulkan.vert 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/Test/vulkan.vert 2020-01-06 14:50:40.000000000 +0000 @@ -21,8 +21,8 @@ } layout(binding = 0) uniform atomic_uint aui; // ERROR, no atomics in Vulkan -layout(shared) uniform ub1n { int a; } ub1i; // ERROR, no shared -layout(packed) uniform ub2n { int a; } ub2i; // ERROR, no packed +layout(shared, binding = 1) uniform ub1n { int a; } ub1i; // ERROR, no shared +layout(packed, binding = 2) uniform ub2n { int a; } ub2i; // ERROR, no packed layout(constant_id=222) const int arraySize = 4; diff -Nru glslang-7.12.3352/Test/web.array.frag glslang-8.13.3559/Test/web.array.frag --- glslang-7.12.3352/Test/web.array.frag 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/web.array.frag 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,26 @@ +#version 310 es + +precision highp float; + +float g4[4]; +float g5[5]; + +layout(location = 0) out vec2 colorOut; + +float[4] foo(float a[5]) +{ + return float[](a[0], a[1], a[2], a[3]); +} + +void main() +{ + g4 = foo(g5); + + if (float[4](1.0, 2.0, 3.0, 4.0) == g4) + ; + + float u[5]; + foo(u); + + colorOut = vec2(g4.length(), g5.length()); +} diff -Nru glslang-7.12.3352/Test/web.basic.vert glslang-8.13.3559/Test/web.basic.vert --- glslang-7.12.3352/Test/web.basic.vert 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/web.basic.vert 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,15 @@ +#version 310 es + +layout(location = 2) in vec4 inv4; +layout(location = 1) out vec4 outv4; + +layout(binding = 3) uniform uBlock { + vec4 a; + ivec4 b; + uvec4 c; +} uInst; + +void main() +{ + outv4 = normalize(inv4) * uInst.a * vec4(uInst.b) * vec4(uInst.c); +} diff -Nru glslang-7.12.3352/Test/web.builtins.frag glslang-8.13.3559/Test/web.builtins.frag --- glslang-7.12.3352/Test/web.builtins.frag 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/web.builtins.frag 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,58 @@ +#version 310 es + +precision lowp float; +layout(location = 4) in float c1D; +layout(location = 5) in vec2 c2D; +layout(location = 6) in vec3 c3D; +layout(location = 7) in smooth vec4 c4D; + +layout(location = 1) flat in int ic1D; +layout(location = 2) flat in ivec3 ic3D; +layout(location = 3) flat in ivec4 ic4D; + +const ivec2 ic2D = ivec2(2, 3); + +struct s { + int i; + sampler2D s; +}; + +struct S2 { + vec3 c; + float f; +}; + +layout(location = 8) in S2 s2; + +layout(location = 0) out vec3 sc; +layout(location = 1) out float sf; + +void main() +{ + float f = gl_FragCoord.y; + gl_FragDepth = f; + + sc = s2.c; + sf = s2.f; + + sinh(c1D) + + cosh(c1D) * tanh(c2D); + asinh(c4D) + acosh(c4D); + atanh(c3D); +} + +void foo324(void) +{ + float p = pow(3.2, 4.6); + p += sin(0.4); + p += distance(vec2(10.0, 11.0), vec2(13.0, 15.0)); // 5 + p += dot(vec3(2,3,5), vec3(-2,-1,4)); // 13 + vec3 c3 = cross(vec3(3,-3,1), vec3(4,9,2)); // (-15, -2, 39) + c3 += faceforward(vec3(1,2,3), vec3(2,3,5), vec3(-2,-1,4)); // (-1,-2,-3) + c3 += faceforward(vec3(1,2,3), vec3(-2,-3,-5), vec3(-2,-1,4)); // (1,2,3) + vec2 c2 = reflect(vec2(1,3), vec2(0,1)); // (1,-3) + c2 += refract(vec2(1,3), vec2(0,1), 1.0); // (1,-3) + c2 += refract(vec2(1,3), vec2(0,1), 3.0); + c2 += refract(vec2(1,0.1), vec2(0,1), 5.0); // (0,0) + mat3x2 m32 = outerProduct(vec2(2,3), vec3(5,7,11));// rows: (10, 14, 22), (15, 21, 33) +} diff -Nru glslang-7.12.3352/Test/web.builtins.vert glslang-8.13.3559/Test/web.builtins.vert --- glslang-7.12.3352/Test/web.builtins.vert 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/web.builtins.vert 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,14 @@ +#version 310 es + +layout(location = 0) in mediump float ps; + +invariant gl_Position; + +void main() +{ + gl_Position = vec4(ps); + gl_Position *= float(4 - gl_VertexIndex); + + gl_PointSize = ps; + gl_PointSize *= float(5 - gl_InstanceIndex); +} diff -Nru glslang-7.12.3352/Test/web.comp glslang-8.13.3559/Test/web.comp --- glslang-7.12.3352/Test/web.comp 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/web.comp 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,50 @@ +#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]; + +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(); + groupMemoryBarrier(); + 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; + + 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 -Nru glslang-7.12.3352/Test/web.controlFlow.frag glslang-8.13.3559/Test/web.controlFlow.frag --- glslang-7.12.3352/Test/web.controlFlow.frag 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/web.controlFlow.frag 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,91 @@ +#version 310 es + +precision mediump float; +precision highp int; + +int c, d; +layout(location = 0) in highp float x; +layout(location = 1) in vec4 bigColor; +layout(location = 2) in vec4 BaseColor; +layout(location = 3) in float f; + +layout(location = 4) flat in int Count; +layout(location = 5) flat in uvec4 v4; + +layout(location = 0) out vec4 outColor; + +void main() +{ + float f; + int a[2]; + + switch(c) + { + } + + switch (c) { // a no-error normal switch + case 1: + f = sin(x); + break; + case 2: + switch (d) { + case 1: + f = x * x * x; + break; + case 2: + f = x * x; + break; + } + break; + default: + f = tan(x); + } + + vec4 color = BaseColor; + + for (int i = 0; i < Count; ++i) { + color += bigColor; + } + + outColor = color; + + float sum = 0.0; + for (int i = 0; i < 4; ++i) + sum += float(v4[i]); + + vec4 tv4; + + for (int i = 0; i < 4; ++i) + tv4[i] = float(v4[i] * 4u); + + outColor += vec4(sum) + tv4; + + vec4 r; + r.xyz = BaseColor.xyz; + + for (int i = 0; i < Count; ++i) + r.w = f; + + outColor.xyz += r.xyz; + + for (int i = 0; i < 16; i += 4) + outColor *= f; + + int i = 0; + int A, B, C, D; + while (i<10) { + A = 1; + if (i%2 == 0) { + B = 2; + continue; + C = 2; + } + if (i%5 == 0) { + B = 2; + break; + C = 2; + } + i++; + } + D = 3; +} diff -Nru glslang-7.12.3352/Test/web.operations.frag glslang-8.13.3559/Test/web.operations.frag --- glslang-7.12.3352/Test/web.operations.frag 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/web.operations.frag 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,73 @@ +#version 310 es + +precision highp float; + +layout(binding = 0) uniform block { + mediump float f; +} instanceName; + +struct S { + int i; +} s; + +float a[5]; + +void main() +{ + bool b; + float f; + int i; + uint u; + bvec3 b3; + vec3 v3; + ivec3 iv3; + uvec3 uv3; + vec4 v4; + ivec4 iv4; + uvec4 uv4; + mat2 m2; + mat4 m4; + + f * v4; + u + u; + uv4 / u; + iv3 -= iv3; + + i %= 3; + uv3 % 4u; + --m2; + iv4++; + + m4 != m4; + m2 == m2; + i <= i; + a == a; + s != s; + + b && b; + b || b; + b ^^ b; + + !b, uv3; + + ~i; + ~u; + ~uv3; + ~iv3; + + uv3 <<= i; + i >> i; + u << u; + iv3 >> iv3; + + i & i; + u | u; + iv3 ^ iv3; + u & uv3; + uv3 | u; + uv3 &= u; + int arr[0x222 & 0xf]; + arr[1]; // size 2 + int arr2[(uvec2(0, 0x2) | 0x1u).y]; + arr2[2]; // size 3 +} diff -Nru glslang-7.12.3352/Test/web.runtests glslang-8.13.3559/Test/web.runtests --- glslang-7.12.3352/Test/web.runtests 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/web.runtests 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +TESTLIST=web.testlist +TARGETDIR=localResults +BASEDIR=baseResults +EXE=../build/install/bin/glslangValidator.exe +HASERROR=0 +mkdir -p $TARGETDIR + +if [ -a $TESTLIST ] + then + while read t; do + echo Running $t... + b=`basename $t` + $EXE -V -o webtest.spv $t + spirv-dis webtest.spv > $TARGETDIR/$b.out + rm -f webtest.spv + diff -b $BASEDIR/$b.out $TARGETDIR/$b.out || HASERROR=1 + done < $TESTLIST +else + echo $TESTLIST is missing +fi + +wc --bytes $EXE > $TARGETDIR/size +echo "base size was" `cat $BASEDIR/size` +echo "new size is" `cat $TARGETDIR/size` + +# +# Final checking +# +if [ $HASERROR -eq 0 ] +then + echo Tests Succeeded. +else + echo Tests Failed. +fi + +exit $HASERROR diff -Nru glslang-7.12.3352/Test/web.separate.frag glslang-8.13.3559/Test/web.separate.frag --- glslang-7.12.3352/Test/web.separate.frag 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/web.separate.frag 2020-01-06 14:50:40.000000000 +0000 @@ -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 -Nru glslang-7.12.3352/Test/web.testlist glslang-8.13.3559/Test/web.testlist --- glslang-7.12.3352/Test/web.testlist 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/web.testlist 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,9 @@ +web.builtins.vert +web.builtins.frag +web.basic.vert +web.controlFlow.frag +web.operations.frag +web.texture.frag +web.array.frag +web.separate.frag +web.comp diff -Nru glslang-7.12.3352/Test/web.texture.frag glslang-8.13.3559/Test/web.texture.frag --- glslang-7.12.3352/Test/web.texture.frag 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/Test/web.texture.frag 2020-01-06 14:50:40.000000000 +0000 @@ -0,0 +1,77 @@ +#version 310 es +layout(binding = 1) uniform sampler2D s2D; +layout(binding = 2) uniform lowp sampler3D s3D; +layout(binding = 3) uniform samplerCube sCube; +layout(binding = 4) uniform lowp samplerCubeShadow sCubeShadow; +layout(binding = 5) uniform lowp sampler2DShadow s2DShadow; +layout(binding = 6) uniform lowp sampler2DArray s2DArray; +layout(binding = 7) uniform lowp sampler2DArrayShadow s2DArrayShadow; +layout(binding = 8) uniform lowp isampler2D is2D; +layout(binding = 9) uniform lowp isampler3D is3D; +layout(binding = 10) uniform lowp isamplerCube isCube; +layout(binding = 11) uniform lowp isampler2DArray is2DArray; +layout(binding = 12) uniform lowp usampler2D us2D; +layout(binding = 13) uniform lowp usampler3D us3D; +layout(binding = 14) uniform lowp usamplerCube usCube; +layout(binding = 15) uniform lowp usampler2DArray us2DArray; + +precision lowp float; +layout(location = 4) in float c1D; +layout(location = 5) in vec2 c2D; +layout(location = 6) in vec3 c3D; +layout(location = 7) in smooth vec4 c4D; + +layout(location = 1) flat in int ic1D; +layout(location = 2) flat in ivec3 ic3D; +layout(location = 3) flat in ivec4 ic4D; + +const ivec2 ic2D = ivec2(2, 3); + +struct s { + int i; + sampler2D s; +}; + +struct S2 { + vec3 c; + float f; +}; + +layout(location = 8) in S2 s2; + +layout(location = 0) out vec3 sc; +layout(location = 1) out float sf; + +layout(binding = 0) uniform sampler2D arrayedSampler[5]; + +void main() +{ + float f; + vec4 v; + v = texture(s2D, c2D); + v = textureProj(s3D, c4D); + v = textureLod(s2DArray, c3D, 1.2); + v = texelFetch(s3D, ic3D, ic1D); + f = textureLodOffset(s2DShadow, c3D, c1D, ic2D); + v = textureProjLodOffset(s2D, c3D, c1D, ic2D); + v = textureGrad(sCube, c3D, c3D, c3D); + f = textureGradOffset(s2DArrayShadow, c4D, c2D, c2D, ic2D); + v = textureProjGrad(s3D, c4D, c3D, c3D); + v = textureProjGradOffset(s2D, c3D, c2D, c2D, ic2D); + + ivec4 iv; + iv = texture(is2D, c2D); + iv = textureProjOffset(is2D, c4D, ic2D); + iv = textureProjLod(is2D, c3D, c1D); + iv = textureProjGrad(is2D, c3D, c2D, c2D); + iv = texture(is3D, c3D, 4.2); + iv = textureLod(isCube, c3D, c1D); + iv = texelFetch(is2DArray, ic3D, ic1D); + + iv.xy = textureSize(sCubeShadow, 2); +} + +void foo23() +{ + textureOffset(s2DShadow, c3D, ivec2(-8, 7), c1D); +} diff -Nru glslang-7.12.3352/.travis.yml glslang-8.13.3559/.travis.yml --- glslang-7.12.3352/.travis.yml 2019-08-21 04:42:40.000000000 +0000 +++ glslang-8.13.3559/.travis.yml 2020-01-06 14:50:40.000000000 +0000 @@ -99,7 +99,6 @@ zip ${TARBALL} bin/glslangValidator include/glslang/* - include/SPIRV/* lib/libglslang${SUFFIX}.a lib/libHLSL${SUFFIX}.a lib/libOGLCompiler${SUFFIX}.a diff -Nru glslang-7.12.3352/WORKSPACE glslang-8.13.3559/WORKSPACE --- glslang-7.12.3352/WORKSPACE 1970-01-01 00:00:00.000000000 +0000 +++ glslang-8.13.3559/WORKSPACE 2020-01-06 14:50:40.000000000 +0000 @@ -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"], +)