Remove redundant NOTICE symbolic link. am: 9906b4bd3c am: 0f76c9f4e2 am: e1c1f88fd5 am: c3c4aa316f am: f5f1db7983 am: 0a08957b96
Original change: https://android-review.googlesource.com/c/platform/external/deqp-deps/glslang/+/1268681
Change-Id: If79867c2f7921fde269987cfed2d3c1dd738169c
diff --git a/.appveyor.yml b/.appveyor.yml
index 32e8f2b..44d5f04 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -17,6 +17,20 @@
only:
- master
+# changes to these files don't need to trigger testing
+skip_commits:
+ files:
+ - README.md
+ - README-spirv-remap.txt
+ - LICENSE.txt
+ - CODE_OF_CONDUCT.md
+ - BUILD.*
+ - WORKSPACE
+ - kokoro/*
+ - make-revision
+ - Android.mk
+ - _config.yml
+
# Travis advances the master-tot tag to current top of the tree after
# each push into the master branch, because it relies on that tag to
# upload build artifacts to the master-tot release. This will cause
diff --git a/BUILD.bazel b/BUILD.bazel
new file mode 100644
index 0000000..5930608
--- /dev/null
+++ b/BUILD.bazel
@@ -0,0 +1,247 @@
+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/NonSemanticDebugPrintf.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/NonSemanticDebugPrintf.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 --git a/BUILD.gn b/BUILD.gn
index 55f21ad..49b4b0a 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -33,6 +33,19 @@
import("//build_overrides/glslang.gni")
+# Both Chromium and Fuchsia use by default a set of warning errors
+# that is far too strict to compile this project. These are also
+# typically appended after |cflags|, overriding target-specific
+# definitions. To work around this, determine which configs to
+# add and remove in order to succesfully build the project.
+if (defined(is_fuchsia_tree) && is_fuchsia_tree) {
+ _configs_to_remove = [ "//build/config:default_warnings" ]
+ _configs_to_add = []
+} else {
+ _configs_to_remove = [ "//build/config/compiler:chromium_code" ]
+ _configs_to_add = [ "//build/config/compiler:no_chromium_code" ]
+}
+
spirv_tools_dir = glslang_spirv_tools_dir
config("glslang_public") {
@@ -47,14 +60,17 @@
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",
"SPIRV/InReadableOrder.cpp",
"SPIRV/Logger.cpp",
"SPIRV/Logger.h",
+ "SPIRV/NonSemanticDebugPrintf.h",
"SPIRV/SPVRemapper.cpp",
"SPIRV/SPVRemapper.h",
"SPIRV/SpvBuilder.cpp",
@@ -159,7 +175,7 @@
}
if (is_clang) {
- cflags_cc = [
+ cflags = [
"-Wno-extra-semi",
"-Wno-ignored-qualifiers",
"-Wno-implicit-fallthrough",
@@ -181,6 +197,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") {
@@ -192,6 +211,9 @@
":glslang_sources",
]
public_configs = [ ":glslang_public" ]
+
+ configs -= _configs_to_remove
+ configs += _configs_to_add
}
executable("glslang_validator") {
@@ -207,6 +229,9 @@
":glslang_default_resource_limits_sources",
":glslang_sources",
]
+
+ configs -= _configs_to_remove
+ configs += _configs_to_add
}
executable("spirv-remap") {
@@ -217,4 +242,7 @@
deps = [
":glslang_sources",
]
+
+ configs -= _configs_to_remove
+ configs += _configs_to_add
}
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c2adeb0..cd9baf8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -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)
@@ -28,14 +32,34 @@
option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON)
-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)
+option(ENABLE_GLSLANG_JS
+ "If using Emscripten, build glslang.js. Otherwise, builds a sample executable for binary-size testing." OFF)
+CMAKE_DEPENDENT_OPTION(ENABLE_GLSLANG_WEBMIN
+ "Reduces glslang to minimum needed for web use"
+ OFF "ENABLE_GLSLANG_JS"
+ OFF)
+CMAKE_DEPENDENT_OPTION(ENABLE_GLSLANG_WEBMIN_DEVEL
+ "For ENABLE_GLSLANG_WEBMIN builds, enables compilation error messages"
+ OFF "ENABLE_GLSLANG_WEBMIN"
+ OFF)
+CMAKE_DEPENDENT_OPTION(ENABLE_EMSCRIPTEN_SINGLE_FILE
+ "If using Emscripten, enables SINGLE_FILE build"
+ OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN"
+ OFF)
+CMAKE_DEPENDENT_OPTION(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE
+ "If using Emscripten, builds to run on Node instead of Web"
+ OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN"
+ OFF)
-CMAKE_DEPENDENT_OPTION(ENABLE_HLSL "Enables HLSL input support" ON "NOT ENABLE_GLSLANG_WEB" OFF)
+CMAKE_DEPENDENT_OPTION(ENABLE_HLSL
+ "Enables HLSL input support"
+ ON "NOT ENABLE_GLSLANG_WEBMIN"
+ OFF)
+option(ENABLE_RTTI "Enables RTTI" 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)
@@ -51,7 +75,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 NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" 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}")
@@ -62,19 +86,21 @@
endmacro(glslang_pch)
project(glslang)
-# make testing optional
-include(CTest)
+
+if(ENABLE_CTEST)
+ include(CTest)
+endif()
if(ENABLE_HLSL)
add_definitions(-DENABLE_HLSL)
endif(ENABLE_HLSL)
-if(ENABLE_GLSLANG_WEB)
+if(ENABLE_GLSLANG_WEBMIN)
add_definitions(-DGLSLANG_WEB)
- if(ENABLE_GLSLANG_WEB_DEVEL)
+ if(ENABLE_GLSLANG_WEBMIN_DEVEL)
add_definitions(-DGLSLANG_WEB_DEVEL)
- endif(ENABLE_GLSLANG_WEB_DEVEL)
-endif(ENABLE_GLSLANG_WEB)
+ endif(ENABLE_GLSLANG_WEBMIN_DEVEL)
+endif(ENABLE_GLSLANG_WEBMIN)
if(WIN32)
set(CMAKE_DEBUG_POSTFIX "d")
@@ -92,45 +118,42 @@
add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs
-Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable -fno-exceptions)
add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over.
- add_compile_options(-fno-rtti)
-elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
+ if(NOT ENABLE_RTTI)
+ add_compile_options(-fno-rtti)
+ endif()
+ if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0.0")
+ add_compile_options(-Werror=deprecated-copy)
+ endif()
+elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC)
add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs
-Wunused-parameter -Wunused-value -Wunused-variable)
add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over.
- add_compile_options(-fno-rtti)
-elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "MSVC")
- add_compile_options(/GR-) # Disable RTTI
+ if(NOT ENABLE_RTTI)
+ add_compile_options(-fno-rtti)
+ endif()
+elseif(MSVC)
+ if(NOT ENABLE_RTTI)
+ add_compile_options(/GR-) # Disable RTTI
+ endif()
endif()
-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)
+if(ENABLE_GLSLANG_JS)
+ if(MSVC)
+ add_compile_options(/Os /GR-)
+ else()
+ add_compile_options(-Os -fno-exceptions)
+ if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC)
+ add_compile_options(-Wno-unused-parameter)
+ add_compile_options(-Wno-unused-variable -Wno-unused-const-variable)
endif()
- endif(ENABLE_GLSLANG_WEB)
-endif(EMSCRIPTEN)
+ endif()
+endif(ENABLE_GLSLANG_JS)
# Request C++11
if(${CMAKE_VERSION} VERSION_LESS 3.1)
# CMake versions before 3.1 do not understand CMAKE_CXX_STANDARD
# remove this block once CMake >=3.1 has fixated in the ecosystem
- add_compile_options(-std=c++11)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
else()
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -148,12 +171,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)
@@ -178,4 +201,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}/$<CONFIGURATION>/localResults)
+ set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/glslangValidator)
+ set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/spirv-remap)
+ else(CMAKE_CONFIGURATION_TYPES)
+ set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults)
+ set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator)
+ set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap)
+ endif(CMAKE_CONFIGURATION_TYPES)
+
+ add_test(NAME glslang-testsuite
+ COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/)
+endif(BUILD_TESTING)
diff --git a/METADATA b/METADATA
index 64eb8c6..263906b 100644
--- a/METADATA
+++ b/METADATA
@@ -8,5 +8,6 @@
value: "https://github.com/KhronosGroup/glslang.git"
}
version: "e9405d0b443a1849fa55b7bfeaceda586a1c37af"
+ license_type: NOTICE
last_upgrade_date { year: 2018 month: 12 day: 14 }
}
diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt
index 5bb3f0e..e009674 100644
--- a/OGLCompilersDLL/CMakeLists.txt
+++ b/OGLCompilersDLL/CMakeLists.txt
@@ -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 --git a/README.md b/README.md
index 67aee9d..ff844c0 100755
--- a/README.md
+++ b/README.md
@@ -1,35 +1,70 @@
-Also see the Khronos landing page for glslang as a reference front end:
-
-https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/
-
-The above page includes where to get binaries, and is kept up to date
-regarding the feature level of glslang.
-
-glslang
-=======
+# News
[![Build Status](https://travis-ci.org/KhronosGroup/glslang.svg?branch=master)](https://travis-ci.org/KhronosGroup/glslang)
[![Build status](https://ci.appveyor.com/api/projects/status/q6fi9cb0qnhkla68/branch/master?svg=true)](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/master)
-An OpenGL and OpenGL ES shader front end and validator.
+## Planned Deprecations/Removals
+
+1. **SPIRV Folder, 1-May, 2020.** 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 than May 1, 2020.
+See issue #1964.
+
+2. **Visual Studio 2013, 20-July, 2020.** Keeping code compiling for MS Visual Studio 2013 will no longer be
+a goal as of July 20, 2020, the fifth anniversary of the release of Visual Studio 2015.
+
+# Glslang Components and Status
There are several components:
-1. A GLSL/ESSL front-end for reference validation and translation of GLSL/ESSL into an AST.
+### Reference Validator and GLSL/ESSL -> AST Front End
-2. An HLSL front-end for translation of a broad generic HLL into the AST. See [issue 362](https://github.com/KhronosGroup/glslang/issues/362) and [issue 701](https://github.com/KhronosGroup/glslang/issues/701) for current status.
+An OpenGL GLSL and OpenGL|ES GLSL (ESSL) front-end for reference validation and translation of GLSL/ESSL into an internal abstract syntax tree (AST).
-3. A SPIR-V back end for translating the AST to SPIR-V.
+**Status**: Virtually complete, with results carrying similar weight as the specifications.
-4. A standalone wrapper, `glslangValidator`, that can be used as a command-line tool for the above.
+### HLSL -> AST Front End
-How to add a feature protected by a version/extension/stage/profile: See the
-comment in `glslang/MachineIndependent/Versions.cpp`.
+An HLSL front-end for translation of an approximation of HLSL to glslang's AST form.
+
+**Status**: Partially complete. Semantics are not reference quality and input is not validated.
+This is in contrast to the [DXC project](https://github.com/Microsoft/DirectXShaderCompiler), which receives a much larger investment and attempts to have definitive/reference-level semantics.
+
+See [issue 362](https://github.com/KhronosGroup/glslang/issues/362) and [issue 701](https://github.com/KhronosGroup/glslang/issues/701) for current status.
+
+### AST -> SPIR-V Back End
+
+Translates glslang's AST to the Khronos-specified SPIR-V intermediate language.
+
+**Status**: Virtually complete.
+
+### Reflector
+
+An API for getting reflection information from the AST, reflection types/variables/etc. from the HLL source (not the SPIR-V).
+
+**Status**: There is a large amount of functionality present, but no specification/goal to measure completeness against. It is accurate for the input HLL and AST, but only approximate for what would later be emitted for SPIR-V.
+
+### Standalone Wrapper
+
+`glslangValidator` is command-line tool for accessing the functionality above.
+
+Status: Complete.
Tasks waiting to be done are documented as GitHub issues.
-Execution of Standalone Wrapper
--------------------------------
+## Other References
+
+Also see the Khronos landing page for glslang as a reference front end:
+
+https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/
+
+The above page, while not kept up to date, includes additional information regarding glslang as a reference validator.
+
+# How to Use Glslang
+
+## Execution of Standalone Wrapper
To use the standalone binary form, execute `glslangValidator`, and it will print
a usage statement. Basic operation is to give it a file containing a shader,
@@ -46,8 +81,7 @@
There is also a non-shader extension
* `.conf` for a configuration file of limits, see usage statement for example
-Building
---------
+## Building
Instead of building manually, you can also download the binaries for your
platform directly from the [master-tot release][master-tot-release] on GitHub.
@@ -70,7 +104,7 @@
The following steps assume a Bash shell. On Windows, that could be the Git Bash
shell or some other shell of your choosing.
-#### 1) Check-Out this project
+#### 1) Check-Out this project
```bash
cd <parent of where you want glslang to be>
@@ -94,8 +128,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
@@ -118,6 +152,14 @@
# "Release" (for CMAKE_BUILD_TYPE) could also be "Debug" or "RelWithDebInfo"
```
+For building on Android:
+```bash
+cmake $SOURCE_DIR -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DANDROID_ABI=arm64-v8a -DCMAKE_BUILD_TYPE=Release -DANDROID_STL=c++_static -DANDROID_PLATFORM=android-24 -DCMAKE_SYSTEM_NAME=Android -DANDROID_TOOLCHAIN=clang -DANDROID_ARM_MODE=arm -DCMAKE_MAKE_PROGRAM=$ANDROID_NDK_ROOT/prebuilt/linux-x86_64/bin/make -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_ROOT/build/cmake/android.toolchain.cmake
+# If on Windows will be -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_ROOT%\prebuilt\windows-x86_64\bin\make.exe
+# -G is needed for building on Windows
+# -DANDROID_ABI can also be armeabi-v7a for 32 bit
+```
+
For building on Windows:
```bash
@@ -167,31 +209,45 @@
the web grammar subset (see more about the web subset in the next section).
### Building to WASM for the Web and Node
+### Building a standalone JS/WASM library 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:
+* `emsdk` needs to be present in your executable search path, *PATH* for
+ Bash-like environments:
+ + [Instructions located here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install)
+* Wrap cmake call: `emcmake cmake`
+* Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF`.
+* Set `-DENABLE_HLSL=OFF` if HLSL is not needed.
+* For a standalone JS/WASM library, turn on `-DENABLE_GLSLANG_JS=ON`.
+* For building a minimum-size web subset of core glslang:
+ + turn on `-DENABLE_GLSLANG_WEBMIN=ON` (disables HLSL)
+ 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)
-* Wrap cmake call: `emcmake cmake`
+ + optionally, for GLSL compilation error messages, turn on
+ `-DENABLE_GLSLANG_WEBMIN_DEVEL=ON`
* 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 \
+emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON \
-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF ..
```
-Testing
--------
+## Building glslang - Using vcpkg
+
+You can download and install glslang using the [vcpkg](https://github.com/Microsoft/vcpkg) dependency manager:
+
+ git clone https://github.com/Microsoft/vcpkg.git
+ cd vcpkg
+ ./bootstrap-vcpkg.sh
+ ./vcpkg integrate install
+ ./vcpkg install glslang
+
+The glslang port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.
+
+## Testing
Right now, there are two test harnesses existing in glslang: one is [Google
Test](gtests/), one is the [`runtests` script](Test/runtests). The former
@@ -227,6 +283,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
@@ -258,8 +319,7 @@
`localtestlist` to list non-tracked tests. This is automatically read
by `runtests` and included in the `diff` and `bump` process.
-Programmatic Interfaces
------------------------
+## Programmatic Interfaces
Another piece of software can programmatically translate shaders to an AST
using one of two different interfaces:
@@ -295,7 +355,7 @@
Reflection queries
```
-For just validating (not generating code), subsitute these calls:
+For just validating (not generating code), substitute these calls:
```cxx
setEnvInput(EShSourceHlsl or EShSourceGlsl, stage, EShClientNone, 0);
@@ -307,13 +367,13 @@
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`.
The `Sh*()` interface takes a "compiler" call-back object, which it calls after
-building call back that is passed the AST and can then execute a backend on it.
+building call back that is passed the AST and can then execute a back end on it.
The following is a simplified resulting run-time call stack:
@@ -324,8 +384,7 @@
In practice, `ShCompile()` takes shader strings, default version, and
warning/error and other options for controlling compilation.
-Basic Internal Operation
-------------------------
+## Basic Internal Operation
* Initial lexical analysis is done by the preprocessor in
`MachineIndependent/Preprocessor`, and then refined by a GLSL scanner
@@ -340,7 +399,7 @@
* The intermediate representation is very high-level, and represented
as an in-memory tree. This serves to lose no information from the
original program, and to have efficient transfer of the result from
- parsing to the back-end. In the AST, constants are propogated and
+ parsing to the back-end. In the AST, constants are propagated and
folded, and a very small amount of dead code is eliminated.
To aid linking and reflection, the last top-level branch in the AST
@@ -372,6 +431,8 @@
- the object does not come from the pool, and you have to do normal
C++ memory management of what you `new`
+* Features can be protected by version/extension/stage/profile:
+ See the comment in `glslang/MachineIndependent/Versions.cpp`.
[cmake]: https://cmake.org/
[python]: https://www.python.org/
diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt
index f47c8a0..9040609 100644
--- a/SPIRV/CMakeLists.txt
+++ b/SPIRV/CMakeLists.txt
@@ -27,7 +27,8 @@
SpvTools.h
disassemble.h
GLSL.ext.AMD.h
- GLSL.ext.NV.h)
+ GLSL.ext.NV.h
+ NonSemanticDebugPrintf.h)
set(SPVREMAP_HEADERS
SPVRemapper.h
@@ -36,7 +37,9 @@
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
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
if (ENABLE_SPVREMAPPER)
add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
@@ -57,7 +60,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
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
else()
target_link_libraries(SPIRV glslang)
endif(ENABLE_OPT)
@@ -70,22 +75,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 --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h
index e58e836..d783a8f 100644
--- a/SPIRV/GLSL.ext.KHR.h
+++ b/SPIRV/GLSL.ext.KHR.h
@@ -1,5 +1,6 @@
/*
-** Copyright (c) 2014-2016 The Khronos Group Inc.
+** Copyright (c) 2014-2020 The Khronos Group Inc.
+** Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
**
** Permission is hereby granted, free of charge, to any person obtaining a copy
** of this software and/or associated documentation files (the "Materials"),
@@ -44,5 +45,7 @@
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";
-
+static const char* const E_SPV_KHR_non_semantic_info = "SPV_KHR_non_semantic_info";
+static const char* const E_SPV_KHR_ray_tracing = "SPV_KHR_ray_tracing";
+static const char* const E_SPV_KHR_ray_query = "SPV_KHR_ray_query";
#endif // #ifndef GLSLextKHR_H
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 2d50074..3bed678 100644
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -1,7 +1,8 @@
//
// Copyright (C) 2014-2016 LunarG, Inc.
-// Copyright (C) 2015-2018 Google, Inc.
+// Copyright (C) 2015-2020 Google, Inc.
// Copyright (C) 2017 ARM Limited.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -48,6 +49,7 @@
#include "GLSL.ext.EXT.h"
#include "GLSL.ext.AMD.h"
#include "GLSL.ext.NV.h"
+ #include "NonSemanticDebugPrintf.h"
}
// Glslang includes
@@ -100,11 +102,11 @@
spv::Decoration precision;
#ifdef GLSLANG_WEB
- void addNoContraction(spv::Builder&, spv::Id) const { };
- void addNonUniform(spv::Builder&, spv::Id) const { };
+ void addNoContraction(spv::Builder&, spv::Id) const { }
+ void addNonUniform(spv::Builder&, spv::Id) const { }
#else
- void addNoContraction(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, noContraction); };
- void addNonUniform(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, nonUniform); };
+ void addNoContraction(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, noContraction); }
+ void addNonUniform(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, nonUniform); }
protected:
spv::Decoration noContraction;
spv::Decoration nonUniform;
@@ -187,7 +189,8 @@
void makeGlobalInitializers(const glslang::TIntermSequence&);
void visitFunctions(const glslang::TIntermSequence&);
void handleFunctionEntry(const glslang::TIntermAggregate* node);
- void translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments, spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags);
+ void translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments,
+ spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags);
void translateArguments(glslang::TIntermUnary& node, std::vector<spv::Id>& arguments);
spv::Id createImageTextureFunctionCall(glslang::TIntermOperator* node);
spv::Id handleUserFunctionCall(const glslang::TIntermAggregate*);
@@ -196,28 +199,36 @@
glslang::TBasicType typeProxy, bool reduceComparison = true);
spv::Id createBinaryMatrixOperation(spv::Op, OpDecorations&, spv::Id typeId, spv::Id left, spv::Id right);
spv::Id createUnaryOperation(glslang::TOperator op, OpDecorations&, spv::Id typeId, spv::Id operand,
- glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags);
+ glslang::TBasicType typeProxy,
+ const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags);
spv::Id createUnaryMatrixOperation(spv::Op op, OpDecorations&, spv::Id typeId, spv::Id operand,
glslang::TBasicType typeProxy);
spv::Id createConversion(glslang::TOperator op, OpDecorations&, spv::Id destTypeId, spv::Id operand,
glslang::TBasicType typeProxy);
spv::Id createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize);
spv::Id makeSmearedConstant(spv::Id constant, int vectorSize);
- spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags);
- spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
- spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation, spv::Id typeId, std::vector<spv::Id>& operands);
- spv::Id createSubgroupOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
- spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
+ spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId,
+ std::vector<spv::Id>& operands, glslang::TBasicType typeProxy,
+ const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags);
+ spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands,
+ glslang::TBasicType typeProxy);
+ spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation,
+ spv::Id typeId, std::vector<spv::Id>& operands);
+ spv::Id createSubgroupOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands,
+ glslang::TBasicType typeProxy);
+ spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId,
+ std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
spv::Id createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId);
spv::Id getSymbolId(const glslang::TIntermSymbol* node);
void addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier & qualifier);
spv::Id createSpvConstant(const glslang::TIntermTyped&);
- spv::Id createSpvConstantFromConstUnionArray(const glslang::TType& type, const glslang::TConstUnionArray&, int& nextConst, bool specConstant);
+ 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);
spv::Id getExtBuiltins(const char* name);
- std::pair<spv::Id, spv::Id> getForcedType(spv::BuiltIn, const glslang::TType&);
+ std::pair<spv::Id, spv::Id> getForcedType(glslang::TBuiltInVariable builtIn, const glslang::TType&);
spv::Id translateForcedType(spv::Id object);
spv::Id createCompositeConstruct(spv::Id typeId, std::vector<spv::Id> constituents);
@@ -233,19 +244,24 @@
spv::Builder builder;
bool inEntryPoint;
bool entryPointTerminated;
- bool linkageOnly; // true when visiting the set of objects in the AST present only for establishing interface, whether or not they were statically used
+ bool linkageOnly; // true when visiting the set of objects in the AST present only for
+ // establishing interface, whether or not they were statically used
std::set<spv::Id> iOSet; // all input/output variables from either static use or declaration of interface
const glslang::TIntermediate* glslangIntermediate;
bool nanMinMaxClamp; // true if use NMin/NMax/NClamp instead of FMin/FMax/FClamp
spv::Id stdBuiltins;
+ spv::Id nonSemanticDebugPrintf;
std::unordered_map<const char*, spv::Id> extBuiltinMap;
std::unordered_map<int, spv::Id> symbolValues;
- std::unordered_set<int> rValueParameters; // set of formal function parameters passed as rValues, rather than a pointer
+ std::unordered_set<int> rValueParameters; // set of formal function parameters passed as rValues,
+ // rather than a pointer
std::unordered_map<std::string, spv::Function*> functionMap;
std::unordered_map<const glslang::TTypeList*, spv::Id> structMap[glslang::ElpCount][glslang::ElmCount];
// for mapping glslang block indices to spv indices (e.g., due to hidden members):
- std::unordered_map<const glslang::TTypeList*, std::vector<int> > memberRemapper;
+ std::unordered_map<int, std::vector<int>> memberRemapper;
+ // for mapping glslang symbol struct to symbol Id
+ std::unordered_map<const glslang::TTypeList*, int> glslangTypeToIdMap;
std::stack<bool> breakForLoop; // false means break for switch
std::unordered_map<std::string, const glslang::TIntermSymbol*> counterOriginator;
// Map pointee types for EbtReference to their forward pointers
@@ -292,17 +308,17 @@
switch (stage) {
case EShLangVertex: return spv::ExecutionModelVertex;
case EShLangFragment: return spv::ExecutionModelFragment;
-#ifndef GLSLANG_WEB
case EShLangCompute: return spv::ExecutionModelGLCompute;
+#ifndef GLSLANG_WEB
case EShLangTessControl: return spv::ExecutionModelTessellationControl;
case EShLangTessEvaluation: return spv::ExecutionModelTessellationEvaluation;
case EShLangGeometry: return spv::ExecutionModelGeometry;
- case EShLangRayGenNV: return spv::ExecutionModelRayGenerationNV;
- case EShLangIntersectNV: return spv::ExecutionModelIntersectionNV;
- case EShLangAnyHitNV: return spv::ExecutionModelAnyHitNV;
- case EShLangClosestHitNV: return spv::ExecutionModelClosestHitNV;
- case EShLangMissNV: return spv::ExecutionModelMissNV;
- case EShLangCallableNV: return spv::ExecutionModelCallableNV;
+ case EShLangRayGen: return spv::ExecutionModelRayGenerationKHR;
+ case EShLangIntersect: return spv::ExecutionModelIntersectionKHR;
+ case EShLangAnyHit: return spv::ExecutionModelAnyHitKHR;
+ case EShLangClosestHit: return spv::ExecutionModelClosestHitKHR;
+ case EShLangMiss: return spv::ExecutionModelMissKHR;
+ case EShLangCallable: return spv::ExecutionModelCallableKHR;
case EShLangTaskNV: return spv::ExecutionModelTaskNV;
case EShLangMeshNV: return spv::ExecutionModelMeshNV;
#endif
@@ -356,11 +372,11 @@
case glslang::EvqVaryingIn: return spv::DecorationBlock;
case glslang::EvqVaryingOut: return spv::DecorationBlock;
#ifndef GLSLANG_WEB
- case glslang::EvqPayloadNV: return spv::DecorationBlock;
- case glslang::EvqPayloadInNV: return spv::DecorationBlock;
- case glslang::EvqHitAttrNV: return spv::DecorationBlock;
- case glslang::EvqCallableDataNV: return spv::DecorationBlock;
- case glslang::EvqCallableDataInNV: return spv::DecorationBlock;
+ case glslang::EvqPayload: return spv::DecorationBlock;
+ case glslang::EvqPayloadIn: return spv::DecorationBlock;
+ case glslang::EvqHitAttr: return spv::DecorationBlock;
+ case glslang::EvqCallableData: return spv::DecorationBlock;
+ case glslang::EvqCallableDataIn: return spv::DecorationBlock;
#endif
default:
assert(0);
@@ -372,24 +388,23 @@
}
// Translate glslang type to SPIR-V memory decorations.
-void TranslateMemoryDecoration(const glslang::TQualifier& qualifier, std::vector<spv::Decoration>& memory, bool useVulkanMemoryModel)
+void TranslateMemoryDecoration(const glslang::TQualifier& qualifier, std::vector<spv::Decoration>& memory,
+ bool useVulkanMemoryModel)
{
-#ifndef GLSLANG_WEB
if (!useVulkanMemoryModel) {
- if (qualifier.coherent)
+ if (qualifier.isCoherent())
memory.push_back(spv::DecorationCoherent);
- if (qualifier.volatil) {
+ if (qualifier.isVolatile()) {
memory.push_back(spv::DecorationVolatile);
memory.push_back(spv::DecorationCoherent);
}
}
- if (qualifier.restrict)
+ if (qualifier.isRestrict())
memory.push_back(spv::DecorationRestrict);
if (qualifier.isReadOnly())
memory.push_back(spv::DecorationNonWritable);
if (qualifier.isWriteOnly())
memory.push_back(spv::DecorationNonReadable);
-#endif
}
// Translate glslang type to SPIR-V layout decorations.
@@ -433,11 +448,11 @@
}
return spv::DecorationMax;
#ifndef GLSLANG_WEB
- case glslang::EvqPayloadNV:
- case glslang::EvqPayloadInNV:
- case glslang::EvqHitAttrNV:
- case glslang::EvqCallableDataNV:
- case glslang::EvqCallableDataInNV:
+ case glslang::EvqPayload:
+ case glslang::EvqPayloadIn:
+ case glslang::EvqHitAttr:
+ case glslang::EvqCallableData:
+ case glslang::EvqCallableDataIn:
return spv::DecorationMax;
#endif
default:
@@ -529,15 +544,11 @@
if (!glslangIntermediate->usingVulkanMemoryModel() || coherentFlags.isImage)
return mask;
- if (coherentFlags.volatil ||
- coherentFlags.coherent ||
- coherentFlags.devicecoherent ||
- coherentFlags.queuefamilycoherent ||
- coherentFlags.workgroupcoherent ||
- coherentFlags.subgroupcoherent) {
+ if (coherentFlags.isVolatile() || coherentFlags.anyCoherent()) {
mask = mask | spv::MemoryAccessMakePointerAvailableKHRMask |
spv::MemoryAccessMakePointerVisibleKHRMask;
}
+
if (coherentFlags.nonprivate) {
mask = mask | spv::MemoryAccessNonPrivatePointerKHRMask;
}
@@ -562,11 +573,7 @@
return mask;
if (coherentFlags.volatil ||
- coherentFlags.coherent ||
- coherentFlags.devicecoherent ||
- coherentFlags.queuefamilycoherent ||
- coherentFlags.workgroupcoherent ||
- coherentFlags.subgroupcoherent) {
+ coherentFlags.anyCoherent()) {
mask = mask | spv::ImageOperandsMakeTexelAvailableKHRMask |
spv::ImageOperandsMakeTexelVisibleKHRMask;
}
@@ -595,14 +602,11 @@
flags.workgroupcoherent = type.getQualifier().workgroupcoherent ||
type.getQualifier().storage == glslang::EvqShared;
flags.subgroupcoherent = type.getQualifier().subgroupcoherent;
+ flags.shadercallcoherent = type.getQualifier().shadercallcoherent;
flags.volatil = type.getQualifier().volatil;
// *coherent variables are implicitly nonprivate in GLSL
flags.nonprivate = type.getQualifier().nonprivate ||
- flags.subgroupcoherent ||
- flags.workgroupcoherent ||
- flags.queuefamilycoherent ||
- flags.devicecoherent ||
- flags.coherent ||
+ flags.anyCoherent() ||
flags.volatil;
flags.isImage = type.getBasicType() == glslang::EbtSampler;
#endif
@@ -626,6 +630,8 @@
scope = spv::ScopeWorkgroup;
} else if (coherentFlags.subgroupcoherent) {
scope = spv::ScopeSubgroup;
+ } else if (coherentFlags.shadercallcoherent) {
+ scope = spv::ScopeShaderCallKHR;
}
if (glslangIntermediate->usingVulkanMemoryModel() && scope == spv::ScopeDevice) {
builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR);
@@ -640,7 +646,8 @@
// is generated only when using the variable in an executable instruction, but not when
// just declaring a struct member variable with it. This is true for PointSize,
// ClipDistance, and CullDistance.
-spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltInVariable builtIn, bool memberDeclaration)
+spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltInVariable builtIn,
+ bool memberDeclaration)
{
switch (builtIn) {
case glslang::EbvPointSize:
@@ -673,6 +680,13 @@
case glslang::EbvFace: return spv::BuiltInFrontFacing;
case glslang::EbvFragDepth: return spv::BuiltInFragDepth;
+ case glslang::EbvNumWorkGroups: return spv::BuiltInNumWorkgroups;
+ case glslang::EbvWorkGroupSize: return spv::BuiltInWorkgroupSize;
+ case glslang::EbvWorkGroupId: return spv::BuiltInWorkgroupId;
+ case glslang::EbvLocalInvocationId: return spv::BuiltInLocalInvocationId;
+ case glslang::EbvLocalInvocationIndex: return spv::BuiltInLocalInvocationIndex;
+ case glslang::EbvGlobalInvocationId: return spv::BuiltInGlobalInvocationId;
+
#ifndef GLSLANG_WEB
// These *Distance capabilities logically belong here, but if the member is declared and
// then never used, consumers of SPIR-V prefer the capability not be declared.
@@ -757,12 +771,6 @@
case glslang::EbvTessCoord: return spv::BuiltInTessCoord;
case glslang::EbvPatchVertices: return spv::BuiltInPatchVertices;
case glslang::EbvHelperInvocation: return spv::BuiltInHelperInvocation;
- case glslang::EbvNumWorkGroups: return spv::BuiltInNumWorkgroups;
- case glslang::EbvWorkGroupSize: return spv::BuiltInWorkgroupSize;
- case glslang::EbvWorkGroupId: return spv::BuiltInWorkgroupId;
- case glslang::EbvLocalInvocationId: return spv::BuiltInLocalInvocationId;
- case glslang::EbvLocalInvocationIndex: return spv::BuiltInLocalInvocationIndex;
- case glslang::EbvGlobalInvocationId: return spv::BuiltInGlobalInvocationId;
case glslang::EbvSubGroupSize:
builder.addExtension(spv::E_SPV_KHR_shader_ballot);
@@ -932,34 +940,38 @@
return spv::BuiltInInvocationsPerPixelNV;
// ray tracing
- case glslang::EbvLaunchIdNV:
- return spv::BuiltInLaunchIdNV;
- case glslang::EbvLaunchSizeNV:
- return spv::BuiltInLaunchSizeNV;
- case glslang::EbvWorldRayOriginNV:
- return spv::BuiltInWorldRayOriginNV;
- case glslang::EbvWorldRayDirectionNV:
- return spv::BuiltInWorldRayDirectionNV;
- case glslang::EbvObjectRayOriginNV:
- return spv::BuiltInObjectRayOriginNV;
- case glslang::EbvObjectRayDirectionNV:
- return spv::BuiltInObjectRayDirectionNV;
- case glslang::EbvRayTminNV:
- return spv::BuiltInRayTminNV;
- case glslang::EbvRayTmaxNV:
- return spv::BuiltInRayTmaxNV;
- case glslang::EbvInstanceCustomIndexNV:
- return spv::BuiltInInstanceCustomIndexNV;
- case glslang::EbvHitTNV:
- return spv::BuiltInHitTNV;
- case glslang::EbvHitKindNV:
- return spv::BuiltInHitKindNV;
- case glslang::EbvObjectToWorldNV:
- return spv::BuiltInObjectToWorldNV;
- case glslang::EbvWorldToObjectNV:
- return spv::BuiltInWorldToObjectNV;
- case glslang::EbvIncomingRayFlagsNV:
- return spv::BuiltInIncomingRayFlagsNV;
+ case glslang::EbvLaunchId:
+ return spv::BuiltInLaunchIdKHR;
+ case glslang::EbvLaunchSize:
+ return spv::BuiltInLaunchSizeKHR;
+ case glslang::EbvWorldRayOrigin:
+ return spv::BuiltInWorldRayOriginKHR;
+ case glslang::EbvWorldRayDirection:
+ return spv::BuiltInWorldRayDirectionKHR;
+ case glslang::EbvObjectRayOrigin:
+ return spv::BuiltInObjectRayOriginKHR;
+ case glslang::EbvObjectRayDirection:
+ return spv::BuiltInObjectRayDirectionKHR;
+ case glslang::EbvRayTmin:
+ return spv::BuiltInRayTminKHR;
+ case glslang::EbvRayTmax:
+ return spv::BuiltInRayTmaxKHR;
+ case glslang::EbvInstanceCustomIndex:
+ return spv::BuiltInInstanceCustomIndexKHR;
+ case glslang::EbvHitT:
+ return spv::BuiltInHitTKHR;
+ case glslang::EbvHitKind:
+ return spv::BuiltInHitKindKHR;
+ case glslang::EbvObjectToWorld:
+ case glslang::EbvObjectToWorld3x4:
+ return spv::BuiltInObjectToWorldKHR;
+ case glslang::EbvWorldToObject:
+ case glslang::EbvWorldToObject3x4:
+ return spv::BuiltInWorldToObjectKHR;
+ case glslang::EbvIncomingRayFlags:
+ return spv::BuiltInIncomingRayFlagsKHR;
+ case glslang::EbvGeometryIndex:
+ return spv::BuiltInRayGeometryIndexKHR;
// barycentrics
case glslang::EbvBaryCoordNV:
@@ -1105,7 +1117,8 @@
}
}
-spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSelectionControl(const glslang::TIntermSelection& selectionNode) const
+spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSelectionControl(
+ const glslang::TIntermSelection& selectionNode) const
{
if (selectionNode.getFlatten())
return spv::SelectionControlFlattenMask;
@@ -1114,7 +1127,8 @@
return spv::SelectionControlMaskNone;
}
-spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSwitchControl(const glslang::TIntermSwitch& switchNode) const
+spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSwitchControl(const glslang::TIntermSwitch& switchNode)
+ const
{
if (switchNode.getFlatten())
return spv::SelectionControlFlattenMask;
@@ -1168,6 +1182,8 @@
// Translate glslang type to SPIR-V storage class.
spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::TType& type)
{
+ if (type.getBasicType() == glslang::EbtRayQuery)
+ return spv::StorageClassFunction;
if (type.getQualifier().isPipeInput())
return spv::StorageClassInput;
if (type.getQualifier().isPipeOutput())
@@ -1182,8 +1198,8 @@
}
if (type.getQualifier().isUniformOrBuffer() &&
- type.getQualifier().isShaderRecordNV()) {
- return spv::StorageClassShaderRecordBufferNV;
+ type.getQualifier().isShaderRecord()) {
+ return spv::StorageClassShaderRecordBufferKHR;
}
if (glslangIntermediate->usingStorageBuffer() && type.getQualifier().storage == glslang::EvqBuffer) {
@@ -1203,13 +1219,13 @@
case glslang::EvqGlobal: return spv::StorageClassPrivate;
case glslang::EvqConstReadOnly: return spv::StorageClassFunction;
case glslang::EvqTemporary: return spv::StorageClassFunction;
-#ifndef GLSLANG_WEB
case glslang::EvqShared: return spv::StorageClassWorkgroup;
- case glslang::EvqPayloadNV: return spv::StorageClassRayPayloadNV;
- case glslang::EvqPayloadInNV: return spv::StorageClassIncomingRayPayloadNV;
- case glslang::EvqHitAttrNV: return spv::StorageClassHitAttributeNV;
- case glslang::EvqCallableDataNV: return spv::StorageClassCallableDataNV;
- case glslang::EvqCallableDataInNV: return spv::StorageClassIncomingCallableDataNV;
+#ifndef GLSLANG_WEB
+ case glslang::EvqPayload: return spv::StorageClassRayPayloadKHR;
+ case glslang::EvqPayloadIn: return spv::StorageClassIncomingRayPayloadKHR;
+ case glslang::EvqHitAttr: return spv::StorageClassHitAttributeKHR;
+ case glslang::EvqCallableData: return spv::StorageClassCallableDataKHR;
+ case glslang::EvqCallableDataIn: return spv::StorageClassIncomingCallableDataKHR;
#endif
default:
assert(0);
@@ -1269,7 +1285,7 @@
// uniform and buffer blocks are included, unless it is a push_constant
if (type.getBasicType() == glslang::EbtBlock)
return type.getQualifier().isUniformOrBuffer() &&
- ! type.getQualifier().isShaderRecordNV() &&
+ ! type.getQualifier().isShaderRecord() &&
! type.getQualifier().isPushConstant();
// non block...
@@ -1319,6 +1335,8 @@
child.workgroupcoherent = true;
if (parent.subgroupcoherent)
child.subgroupcoherent = true;
+ if (parent.shadercallcoherent)
+ child.shadercallcoherent = true;
if (parent.nonprivate)
child.nonprivate = true;
if (parent.volatil)
@@ -1349,16 +1367,18 @@
// Implement the TGlslangToSpvTraverser class.
//
-TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const glslang::TIntermediate* glslangIntermediate,
- spv::SpvBuildLogger* buildLogger, glslang::SpvOptions& options)
- : TIntermTraverser(true, false, true),
- options(options),
- shaderEntry(nullptr), currentFunction(nullptr),
- sequenceDepth(0), logger(buildLogger),
- builder(spvVersion, (glslang::GetKhronosToolId() << 16) | glslang::GetSpirvGeneratorVersion(), logger),
- inEntryPoint(false), entryPointTerminated(false), linkageOnly(false),
- glslangIntermediate(glslangIntermediate),
- nanMinMaxClamp(glslangIntermediate->getNanMinMaxClamp())
+TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion,
+ const glslang::TIntermediate* glslangIntermediate,
+ spv::SpvBuildLogger* buildLogger, glslang::SpvOptions& options) :
+ TIntermTraverser(true, false, true),
+ options(options),
+ shaderEntry(nullptr), currentFunction(nullptr),
+ sequenceDepth(0), logger(buildLogger),
+ builder(spvVersion, (glslang::GetKhronosToolId() << 16) | glslang::GetSpirvGeneratorVersion(), logger),
+ inEntryPoint(false), entryPointTerminated(false), linkageOnly(false),
+ glslangIntermediate(glslangIntermediate),
+ nanMinMaxClamp(glslangIntermediate->getNanMinMaxClamp()),
+ nonSemanticDebugPrintf(0)
{
spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage());
@@ -1401,7 +1421,7 @@
addressingModel = spv::AddressingModelPhysicalStorageBuffer64EXT;
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);
@@ -1419,7 +1439,7 @@
// Add the source extensions
const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions();
for (auto it = sourceExtensions.begin(); it != sourceExtensions.end(); ++it)
- builder.addSourceExtension(it->c_str());
+ builder.addSourceExtension(it->first.c_str());
// Add the top-level modes for this shader.
@@ -1428,6 +1448,10 @@
builder.addExecutionMode(shaderEntry, spv::ExecutionModeXfb);
}
+ if (sourceExtensions.find("GL_EXT_ray_flags_primitive_culling") != sourceExtensions.end()) {
+ builder.addCapability(spv::CapabilityRayTraversalPrimitiveCullingProvisionalKHR);
+ }
+
unsigned int mode;
switch (glslangIntermediate->getStage()) {
case EShLangVertex:
@@ -1457,6 +1481,7 @@
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;
@@ -1465,13 +1490,20 @@
if (mode != spv::ExecutionModeMax)
builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode);
switch (glslangIntermediate->getInterlockOrdering()) {
- case glslang::EioPixelInterlockOrdered: mode = spv::ExecutionModePixelInterlockOrderedEXT; break;
- case glslang::EioPixelInterlockUnordered: mode = spv::ExecutionModePixelInterlockUnorderedEXT; break;
- case glslang::EioSampleInterlockOrdered: mode = spv::ExecutionModeSampleInterlockOrderedEXT; break;
- case glslang::EioSampleInterlockUnordered: mode = spv::ExecutionModeSampleInterlockUnorderedEXT; break;
- case glslang::EioShadingRateInterlockOrdered: mode = spv::ExecutionModeShadingRateInterlockOrderedEXT; break;
- case glslang::EioShadingRateInterlockUnordered: mode = spv::ExecutionModeShadingRateInterlockUnorderedEXT; break;
- default: mode = spv::ExecutionModeMax; break;
+ case glslang::EioPixelInterlockOrdered: mode = spv::ExecutionModePixelInterlockOrderedEXT;
+ break;
+ case glslang::EioPixelInterlockUnordered: mode = spv::ExecutionModePixelInterlockUnorderedEXT;
+ break;
+ case glslang::EioSampleInterlockOrdered: mode = spv::ExecutionModeSampleInterlockOrderedEXT;
+ break;
+ case glslang::EioSampleInterlockUnordered: mode = spv::ExecutionModeSampleInterlockUnorderedEXT;
+ break;
+ case glslang::EioShadingRateInterlockOrdered: mode = spv::ExecutionModeShadingRateInterlockOrderedEXT;
+ break;
+ case glslang::EioShadingRateInterlockUnordered: mode = spv::ExecutionModeShadingRateInterlockUnorderedEXT;
+ break;
+ default: mode = spv::ExecutionModeMax;
+ break;
}
if (mode != spv::ExecutionModeMax) {
builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode);
@@ -1487,9 +1519,8 @@
builder.addExtension(spv::E_SPV_EXT_fragment_shader_interlock);
}
#endif
- break;
+ break;
-#ifndef GLSLANG_WEB
case EShLangCompute:
builder.addCapability(spv::CapabilityShader);
builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0),
@@ -1505,6 +1536,7 @@
builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives);
}
break;
+#ifndef GLSLANG_WEB
case EShLangTessEvaluation:
case EShLangTessControl:
builder.addCapability(spv::CapabilityTessellation);
@@ -1512,7 +1544,8 @@
glslang::TLayoutGeometry primitive;
if (glslangIntermediate->getStage() == EShLangTessControl) {
- builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices());
+ builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices,
+ glslangIntermediate->getVertices());
primitive = glslangIntermediate->getOutputPrimitive();
} else {
primitive = glslangIntermediate->getInputPrimitive();
@@ -1574,15 +1607,24 @@
builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices());
break;
- case EShLangRayGenNV:
- case EShLangIntersectNV:
- case EShLangAnyHitNV:
- case EShLangClosestHitNV:
- case EShLangMissNV:
- case EShLangCallableNV:
- builder.addCapability(spv::CapabilityRayTracingNV);
- builder.addExtension("SPV_NV_ray_tracing");
+ case EShLangRayGen:
+ case EShLangIntersect:
+ case EShLangAnyHit:
+ case EShLangClosestHit:
+ case EShLangMiss:
+ case EShLangCallable:
+ {
+ auto& extensions = glslangIntermediate->getRequestedExtensions();
+ if (extensions.find("GL_NV_ray_tracing") == extensions.end()) {
+ builder.addCapability(spv::CapabilityRayTracingProvisionalKHR);
+ builder.addExtension("SPV_KHR_ray_tracing");
+ }
+ else {
+ builder.addCapability(spv::CapabilityRayTracingNV);
+ builder.addExtension("SPV_NV_ray_tracing");
+ }
break;
+ }
case EShLangTaskNV:
case EShLangMeshNV:
builder.addCapability(spv::CapabilityMeshShadingNV);
@@ -1591,8 +1633,10 @@
glslangIntermediate->getLocalSize(1),
glslangIntermediate->getLocalSize(2));
if (glslangIntermediate->getStage() == EShLangMeshNV) {
- builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices());
- builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputPrimitivesNV, glslangIntermediate->getPrimitives());
+ builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices,
+ glslangIntermediate->getVertices());
+ builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputPrimitivesNV,
+ glslangIntermediate->getPrimitives());
switch (glslangIntermediate->getOutputPrimitive()) {
case glslang::ElgPoints: mode = spv::ExecutionModeOutputPoints; break;
@@ -1624,11 +1668,11 @@
for (auto it = iOSet.cbegin(); it != iOSet.cend(); ++it)
entryPoint->addIdOperand(*it);
-#ifndef GLSLANG_WEB
- // Add capabilities, extensions, remove unneeded decorations, etc.,
+ // Add capabilities, extensions, remove unneeded decorations, etc.,
// based on the resulting SPIR-V.
+ // Note: WebGPU code generation must have the opportunity to aggressively
+ // prune unreachable merge blocks and continue targets.
builder.postProcess();
-#endif
}
// Write the SPV into 'out'.
@@ -1655,6 +1699,9 @@
void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol)
{
SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder);
+ if (symbol->getType().isStruct())
+ glslangTypeToIdMap[symbol->getType().getStruct()] = symbol->getId();
+
if (symbol->getType().getQualifier().isSpecConstant())
spec_constant_op_mode_setter.turnOnSpecConstantOpMode();
@@ -1676,7 +1723,8 @@
}
}
- // If the SPIR-V type is required to be different than the AST type,
+ // If the SPIR-V type is required to be different than the AST type
+ // (for ex SubgroupMasks or 3x4 ObjectToWorld/WorldToObject matrices),
// translate now from the SPIR-V type to the AST type, for the consuming
// operation.
// Note this turns it from an l-value to an r-value.
@@ -1747,6 +1795,12 @@
bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::TIntermBinary* node)
{
builder.setLine(node->getLoc().line, node->getLoc().getFilename());
+ if (node->getLeft()->getAsSymbolNode() != nullptr && node->getLeft()->getType().isStruct()) {
+ glslangTypeToIdMap[node->getLeft()->getType().getStruct()] = node->getLeft()->getAsSymbolNode()->getId();
+ }
+ if (node->getRight()->getAsSymbolNode() != nullptr && node->getRight()->getType().isStruct()) {
+ glslangTypeToIdMap[node->getRight()->getType().getStruct()] = node->getRight()->getAsSymbolNode()->getId();
+ }
SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder);
if (node->getType().getQualifier().isSpecConstant())
@@ -1830,7 +1884,8 @@
int dummySize;
builder.accessChainPushSwizzle(swizzle, convertGlslangToSpvType(node->getLeft()->getType()),
TranslateCoherent(node->getLeft()->getType()),
- glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(), dummySize));
+ glslangIntermediate->getBaseAlignmentScalar(
+ node->getLeft()->getType(), dummySize));
} else {
// Load through a block reference is performed with a dot operator that
@@ -1851,13 +1906,18 @@
{
// This may be, e.g., an anonymous block-member selection, which generally need
// index remapping due to hidden members in anonymous blocks.
- std::vector<int>& remapper = memberRemapper[node->getLeft()->getType().getStruct()];
- assert(remapper.size() > 0);
- spvIndex = remapper[glslangIndex];
+ int glslangId = glslangTypeToIdMap[node->getLeft()->getType().getStruct()];
+ if (memberRemapper.find(glslangId) != memberRemapper.end()) {
+ std::vector<int>& remapper = memberRemapper[glslangId];
+ assert(remapper.size() > 0);
+ spvIndex = remapper[glslangIndex];
+ }
}
// normal case for indexing array or structure or block
- builder.accessChainPush(builder.makeIntConstant(spvIndex), TranslateCoherent(node->getLeft()->getType()), node->getLeft()->getType().getBufferReferenceAlignment());
+ builder.accessChainPush(builder.makeIntConstant(spvIndex),
+ TranslateCoherent(node->getLeft()->getType()),
+ node->getLeft()->getType().getBufferReferenceAlignment());
// Add capabilities here for accessing PointSize and clip/cull distance.
// We have deferred generation of associated capabilities until now.
@@ -1894,9 +1954,11 @@
int dummySize;
builder.accessChainPushComponent(index, convertGlslangToSpvType(node->getLeft()->getType()),
TranslateCoherent(node->getLeft()->getType()),
- glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(), dummySize));
+ glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(),
+ dummySize));
} else
- builder.accessChainPush(index, TranslateCoherent(node->getLeft()->getType()), node->getLeft()->getType().getBufferReferenceAlignment());
+ builder.accessChainPush(index, TranslateCoherent(node->getLeft()->getType()),
+ node->getLeft()->getType().getBufferReferenceAlignment());
}
return false;
case glslang::EOpVectorSwizzle:
@@ -1907,7 +1969,8 @@
int dummySize;
builder.accessChainPushSwizzle(swizzle, convertGlslangToSpvType(node->getLeft()->getType()),
TranslateCoherent(node->getLeft()->getType()),
- glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(), dummySize));
+ glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(),
+ dummySize));
}
return false;
case glslang::EOpMatrixSwizzle:
@@ -1923,7 +1986,8 @@
if (isTrivial(node->getRight()->getAsTyped()))
break; // handle below as a normal binary operation
// otherwise, we need to do dynamic short circuiting on the right operand
- spv::Id result = createShortCircuit(node->getOp(), *node->getLeft()->getAsTyped(), *node->getRight()->getAsTyped());
+ spv::Id result = createShortCircuit(node->getOp(), *node->getLeft()->getAsTyped(),
+ *node->getRight()->getAsTyped());
builder.clearAccessChain();
builder.setAccessChainRValue(result);
}
@@ -1965,16 +2029,16 @@
// Figure out what, if any, type changes are needed when accessing a specific built-in.
// Returns <the type SPIR-V requires for declarion, the type to translate to on use>.
// Also see comment for 'forceType', regarding tracking SPIR-V-required types.
-std::pair<spv::Id, spv::Id> TGlslangToSpvTraverser::getForcedType(spv::BuiltIn builtIn,
+std::pair<spv::Id, spv::Id> TGlslangToSpvTraverser::getForcedType(glslang::TBuiltInVariable glslangBuiltIn,
const glslang::TType& glslangType)
{
- switch(builtIn)
+ switch(glslangBuiltIn)
{
- case spv::BuiltInSubgroupEqMask:
- case spv::BuiltInSubgroupGeMask:
- case spv::BuiltInSubgroupGtMask:
- case spv::BuiltInSubgroupLeMask:
- case spv::BuiltInSubgroupLtMask: {
+ case glslang::EbvSubGroupEqMask:
+ case glslang::EbvSubGroupGeMask:
+ case glslang::EbvSubGroupGtMask:
+ case glslang::EbvSubGroupLeMask:
+ case glslang::EbvSubGroupLtMask: {
// these require changing a 64-bit scaler -> a vector of 32-bit components
if (glslangType.isVector())
break;
@@ -1982,6 +2046,15 @@
builder.makeUintType(64));
return ret;
}
+ // There are no SPIR-V builtins defined for these and map onto original non-transposed
+ // builtins. During visitBinary we insert a transpose
+ case glslang::EbvWorldToObject3x4:
+ case glslang::EbvObjectToWorld3x4: {
+ std::pair<spv::Id, spv::Id> ret(builder.makeMatrixType(builder.makeFloatType(32), 4, 3),
+ builder.makeMatrixType(builder.makeFloatType(32), 3, 4)
+ );
+ return ret;
+ }
default:
break;
}
@@ -2020,7 +2093,15 @@
} else {
logger->missingFunctionality("forcing 32-bit vector type to non 64-bit scalar");
}
- } else {
+ } else if (builder.isMatrixType(objectTypeId)) {
+ // There are no SPIR-V builtins defined for 3x4 variants of ObjectToWorld/WorldToObject
+ // and we insert a transpose after loading the original non-transposed builtins
+ builder.clearAccessChain();
+ builder.setAccessChainLValue(object);
+ object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, objectTypeId);
+ return builder.createUnaryOp(spv::OpTranspose, desiredTypeId, object);
+
+ } else {
logger->missingFunctionality("forcing non 32-bit vector type");
}
@@ -2071,7 +2152,8 @@
} else {
glslang::TIntermTyped* block = node->getOperand()->getAsBinaryNode()->getLeft();
block->traverse(this);
- unsigned int member = node->getOperand()->getAsBinaryNode()->getRight()->getAsConstantUnion()->getConstArray()[0].getUConst();
+ unsigned int member = node->getOperand()->getAsBinaryNode()->getRight()->getAsConstantUnion()
+ ->getConstArray()[0].getUConst();
length = builder.createArrayLength(builder.accessChainGetLValue(), member);
}
@@ -2097,7 +2179,8 @@
// Does it need a swizzle inversion? If so, evaluation is inverted;
// operate first on the swizzle base, then apply the swizzle.
spv::Id invertedType = spv::NoType;
- auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ? invertedType : convertGlslangToSpvType(node->getType()); };
+ auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ?
+ invertedType : convertGlslangToSpvType(node->getType()); };
if (node->getOp() == glslang::EOpInterpolateAtCentroid)
invertedType = getInvertedSwizzleType(*node->getOperand());
@@ -2118,7 +2201,15 @@
if (node->getOp() == glslang::EOpAtomicCounterIncrement ||
node->getOp() == glslang::EOpAtomicCounterDecrement ||
node->getOp() == glslang::EOpAtomicCounter ||
- node->getOp() == glslang::EOpInterpolateAtCentroid) {
+ node->getOp() == glslang::EOpInterpolateAtCentroid ||
+ node->getOp() == glslang::EOpRayQueryProceed ||
+ node->getOp() == glslang::EOpRayQueryGetRayTMin ||
+ node->getOp() == glslang::EOpRayQueryGetRayFlags ||
+ node->getOp() == glslang::EOpRayQueryGetWorldRayOrigin ||
+ node->getOp() == glslang::EOpRayQueryGetWorldRayDirection ||
+ node->getOp() == glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque ||
+ node->getOp() == glslang::EOpRayQueryTerminate ||
+ node->getOp() == glslang::EOpRayQueryConfirmIntersection) {
operand = builder.accessChainGetLValue(); // Special case l-value operands
lvalueCoherentFlags = builder.getAccessChain().coherentFlags;
lvalueCoherentFlags |= TranslateCoherent(operandNode->getAsTyped()->getType());
@@ -2134,11 +2225,13 @@
// it could be a conversion
if (! result)
- result = createConversion(node->getOp(), decorations, resultType(), operand, node->getOperand()->getBasicType());
+ result = createConversion(node->getOp(), decorations, resultType(), operand,
+ node->getOperand()->getBasicType());
// if not, then possibly an operation
if (! result)
- result = createUnaryOperation(node->getOp(), decorations, resultType(), operand, node->getOperand()->getBasicType(), lvalueCoherentFlags);
+ result = createUnaryOperation(node->getOp(), decorations, resultType(), operand,
+ node->getOperand()->getBasicType(), lvalueCoherentFlags);
if (result) {
if (invertedType) {
@@ -2209,6 +2302,12 @@
case glslang::EOpEndStreamPrimitive:
builder.createNoResultOp(spv::OpEndStreamPrimitive, operand);
return false;
+ case glslang::EOpRayQueryTerminate:
+ builder.createNoResultOp(spv::OpRayQueryTerminateKHR, operand);
+ return false;
+ case glslang::EOpRayQueryConfirmIntersection:
+ builder.createNoResultOp(spv::OpRayQueryConfirmIntersectionKHR, operand);
+ return false;
#endif
default:
@@ -2231,7 +2330,8 @@
std::vector<spv::Id> rTypeConstituents;
int numrTypeConstituents = builder.getNumTypeConstituents(rType);
for (int i = 0; i < numrTypeConstituents; ++i) {
- rTypeConstituents.push_back(builder.createCompositeExtract(constituent, builder.getContainedTypeId(rType, i), i));
+ rTypeConstituents.push_back(builder.createCompositeExtract(constituent,
+ builder.getContainedTypeId(rType, i), i));
}
constituents[c] = createCompositeConstruct(lType, rTypeConstituents);
} else {
@@ -2257,8 +2357,14 @@
spec_constant_op_mode_setter.turnOnSpecConstantOpMode();
spv::Id result = spv::NoResult;
- spv::Id invertedType = spv::NoType; // to use to override the natural type of the node
- auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ? invertedType : convertGlslangToSpvType(node->getType()); };
+ spv::Id invertedType = spv::NoType; // to use to override the natural type of the node
+ std::vector<spv::Builder::AccessChain> complexLvalues; // for holding swizzling l-values too complex for
+ // SPIR-V, for an out parameter
+ std::vector<spv::Id> temporaryLvalues; // temporaries to pass, as proxies for complexLValues
+
+ auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ?
+ invertedType :
+ convertGlslangToSpvType(node->getType()); };
// try texturing
result = createImageTextureFunctionCall(node);
@@ -2362,7 +2468,6 @@
builder.setLine(node->getLoc().line, node->getLoc().getFilename());
if (node->isUserDefined())
result = handleUserFunctionCall(node);
- // assert(result); // this can happen for bad shaders because the call graph completeness checking is not yet done
if (result) {
builder.clearAccessChain();
builder.setAccessChainRValue(result);
@@ -2546,7 +2651,6 @@
binOp = glslang::EOpMod;
break;
-#ifndef GLSLANG_WEB
case glslang::EOpEmitVertex:
case glslang::EOpEndPrimitive:
case glslang::EOpBarrier:
@@ -2570,10 +2674,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:
@@ -2585,6 +2685,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:
@@ -2599,13 +2707,54 @@
atomic = true;
break;
- case glslang::EOpIgnoreIntersectionNV:
- case glslang::EOpTerminateRayNV:
- case glslang::EOpTraceNV:
- case glslang::EOpExecuteCallableNV:
+ 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::EOpIgnoreIntersection:
+ case glslang::EOpTerminateRay:
+ case glslang::EOpTrace:
+ case glslang::EOpExecuteCallable:
case glslang::EOpWritePackedPrimitiveIndices4x8NV:
noReturnValue = true;
break;
+ case glslang::EOpRayQueryInitialize:
+ case glslang::EOpRayQueryTerminate:
+ case glslang::EOpRayQueryGenerateIntersection:
+ case glslang::EOpRayQueryConfirmIntersection:
+ builder.addExtension("SPV_KHR_ray_query");
+ builder.addCapability(spv::CapabilityRayQueryProvisionalKHR);
+ noReturnValue = true;
+ break;
+ case glslang::EOpRayQueryProceed:
+ case glslang::EOpRayQueryGetIntersectionType:
+ case glslang::EOpRayQueryGetRayTMin:
+ case glslang::EOpRayQueryGetRayFlags:
+ case glslang::EOpRayQueryGetIntersectionT:
+ case glslang::EOpRayQueryGetIntersectionInstanceCustomIndex:
+ case glslang::EOpRayQueryGetIntersectionInstanceId:
+ case glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset:
+ case glslang::EOpRayQueryGetIntersectionGeometryIndex:
+ case glslang::EOpRayQueryGetIntersectionPrimitiveIndex:
+ case glslang::EOpRayQueryGetIntersectionBarycentrics:
+ case glslang::EOpRayQueryGetIntersectionFrontFace:
+ case glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque:
+ case glslang::EOpRayQueryGetIntersectionObjectRayDirection:
+ case glslang::EOpRayQueryGetIntersectionObjectRayOrigin:
+ case glslang::EOpRayQueryGetWorldRayDirection:
+ case glslang::EOpRayQueryGetWorldRayOrigin:
+ case glslang::EOpRayQueryGetIntersectionObjectToWorld:
+ case glslang::EOpRayQueryGetIntersectionWorldToObject:
+ builder.addExtension("SPV_KHR_ray_query");
+ builder.addCapability(spv::CapabilityRayQueryProvisionalKHR);
+ break;
case glslang::EOpCooperativeMatrixLoad:
case glslang::EOpCooperativeMatrixStore:
noReturnValue = true;
@@ -2617,6 +2766,10 @@
break;
#endif
+ case glslang::EOpDebugPrintf:
+ noReturnValue = true;
+ break;
+
default:
break;
}
@@ -2667,6 +2820,41 @@
if (arg == 1)
lvalue = true;
break;
+
+ case glslang::EOpRayQueryInitialize:
+ case glslang::EOpRayQueryTerminate:
+ case glslang::EOpRayQueryConfirmIntersection:
+ case glslang::EOpRayQueryProceed:
+ case glslang::EOpRayQueryGenerateIntersection:
+ case glslang::EOpRayQueryGetIntersectionType:
+ case glslang::EOpRayQueryGetIntersectionT:
+ case glslang::EOpRayQueryGetIntersectionInstanceCustomIndex:
+ case glslang::EOpRayQueryGetIntersectionInstanceId:
+ case glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset:
+ case glslang::EOpRayQueryGetIntersectionGeometryIndex:
+ case glslang::EOpRayQueryGetIntersectionPrimitiveIndex:
+ case glslang::EOpRayQueryGetIntersectionBarycentrics:
+ case glslang::EOpRayQueryGetIntersectionFrontFace:
+ case glslang::EOpRayQueryGetIntersectionObjectRayDirection:
+ case glslang::EOpRayQueryGetIntersectionObjectRayOrigin:
+ case glslang::EOpRayQueryGetIntersectionObjectToWorld:
+ case glslang::EOpRayQueryGetIntersectionWorldToObject:
+ if (arg == 0)
+ 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)
@@ -2680,19 +2868,16 @@
// Does it need a swizzle inversion? If so, evaluation is inverted;
// operate first on the swizzle base, then apply the swizzle.
+ // That is, we transform
+ //
+ // interpolate(v.zy) -> interpolate(v).zy
+ //
if (glslangOperands[0]->getAsOperator() &&
glslangOperands[0]->getAsOperator()->getOp() == glslang::EOpVectorSwizzle)
- invertedType = convertGlslangToSpvType(glslangOperands[0]->getAsBinaryNode()->getLeft()->getType());
+ 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:
@@ -2750,8 +2935,9 @@
builder.setAccessChain(save);
// Point to the first element of the array.
- builder.accessChainPush(elementId, TranslateCoherent(glslangOperands[arg]->getAsTyped()->getType()),
- glslangOperands[arg]->getAsTyped()->getType().getBufferReferenceAlignment());
+ builder.accessChainPush(elementId,
+ TranslateCoherent(glslangOperands[arg]->getAsTyped()->getType()),
+ glslangOperands[arg]->getAsTyped()->getType().getBufferReferenceAlignment());
spv::Builder::AccessChain::CoherentFlags coherentFlags = builder.getAccessChain().coherentFlags;
unsigned int alignment = builder.getAccessChain().alignment;
@@ -2761,7 +2947,8 @@
memoryAccess &= ~spv::MemoryAccessMakePointerAvailableKHRMask;
if (node->getOp() == glslang::EOpCooperativeMatrixStore)
memoryAccess &= ~spv::MemoryAccessMakePointerVisibleKHRMask;
- if (builder.getStorageClass(builder.getAccessChain().base) == spv::StorageClassPhysicalStorageBufferEXT) {
+ if (builder.getStorageClass(builder.getAccessChain().base) ==
+ spv::StorageClassPhysicalStorageBufferEXT) {
memoryAccess = (spv::MemoryAccessMask)(memoryAccess | spv::MemoryAccessAlignedMask);
}
@@ -2771,8 +2958,10 @@
memoryAccessOperands.push_back(spv::IdImmediate(false, alignment));
}
- if (memoryAccess & (spv::MemoryAccessMakePointerAvailableKHRMask | spv::MemoryAccessMakePointerVisibleKHRMask)) {
- memoryAccessOperands.push_back(spv::IdImmediate(true, builder.makeUintConstant(TranslateMemoryScope(coherentFlags))));
+ if (memoryAccess &
+ (spv::MemoryAccessMakePointerAvailableKHRMask | spv::MemoryAccessMakePointerVisibleKHRMask)) {
+ memoryAccessOperands.push_back(spv::IdImmediate(true,
+ builder.makeUintConstant(TranslateMemoryScope(coherentFlags))));
}
} else if (arg == 2) {
continue;
@@ -2780,13 +2969,47 @@
}
#endif
+ // for l-values, pass the address, for r-values, pass the value
if (lvalue) {
- operands.push_back(builder.accessChainGetLValue());
+ if (invertedType == spv::NoType && !builder.isSpvLvalue()) {
+ // SPIR-V cannot represent an l-value containing a swizzle that doesn't
+ // reduce to a simple access chain. So, we need a temporary vector to
+ // receive the result, and must later swizzle that into the original
+ // l-value.
+ complexLvalues.push_back(builder.getAccessChain());
+ temporaryLvalues.push_back(builder.createVariable(spv::StorageClassFunction,
+ builder.accessChainGetInferredType(), "swizzleTemp"));
+ operands.push_back(temporaryLvalues.back());
+ } else {
+ operands.push_back(builder.accessChainGetLValue());
+ }
lvalueCoherentFlags = builder.getAccessChain().coherentFlags;
lvalueCoherentFlags |= TranslateCoherent(glslangOperands[arg]->getAsTyped()->getType());
} else {
builder.setLine(node->getLoc().line, node->getLoc().getFilename());
- operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType()));
+ glslang::TOperator glslangOp = node->getOp();
+ if (arg == 1 &&
+ (glslangOp == glslang::EOpRayQueryGetIntersectionType ||
+ glslangOp == glslang::EOpRayQueryGetIntersectionT ||
+ glslangOp == glslang::EOpRayQueryGetIntersectionInstanceCustomIndex ||
+ glslangOp == glslang::EOpRayQueryGetIntersectionInstanceId ||
+ glslangOp == glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset ||
+ glslangOp == glslang::EOpRayQueryGetIntersectionGeometryIndex ||
+ glslangOp == glslang::EOpRayQueryGetIntersectionPrimitiveIndex ||
+ glslangOp == glslang::EOpRayQueryGetIntersectionBarycentrics ||
+ glslangOp == glslang::EOpRayQueryGetIntersectionFrontFace ||
+ glslangOp == glslang::EOpRayQueryGetIntersectionObjectRayDirection ||
+ glslangOp == glslang::EOpRayQueryGetIntersectionObjectRayOrigin ||
+ glslangOp == glslang::EOpRayQueryGetIntersectionObjectToWorld ||
+ glslangOp == glslang::EOpRayQueryGetIntersectionWorldToObject
+ )) {
+ bool cond = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getBConst();
+ operands.push_back(builder.makeIntConstant(cond ? 1 : 0));
+ }
+ else {
+ operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType()));
+ }
+
}
}
@@ -2818,12 +3041,19 @@
builder.createNoResultOp(spv::OpCooperativeMatrixStoreNV, idImmOps);
result = 0;
- } else if (atomic) {
- // Handle all atomics
- result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), lvalueCoherentFlags);
} else
#endif
- {
+ if (atomic) {
+ // Handle all atomics
+ result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(),
+ lvalueCoherentFlags);
+ } else if (node->getOp() == glslang::EOpDebugPrintf) {
+ if (!nonSemanticDebugPrintf) {
+ nonSemanticDebugPrintf = builder.import("NonSemantic.DebugPrintf");
+ }
+ result = builder.createBuiltinCall(builder.makeVoidType(), nonSemanticDebugPrintf, spv::NonSemanticDebugPrintfDebugPrintf, operands);
+ builder.addExtension(spv::E_SPV_KHR_non_semantic_info);
+ } else {
// Pass through to generic operations.
switch (glslangOperands.size()) {
case 0:
@@ -2844,8 +3074,14 @@
result = createMiscOperation(node->getOp(), precision, resultType(), operands, node->getBasicType());
break;
}
- if (invertedType)
+
+ if (invertedType != spv::NoResult)
result = createInvertedSwizzle(precision, *glslangOperands[0]->getAsBinaryNode(), result);
+
+ for (unsigned int i = 0; i < temporaryLvalues.size(); ++i) {
+ builder.setAccessChain(complexLvalues[i]);
+ builder.accessChainStore(builder.createLoad(temporaryLvalues[i]));
+ }
}
if (noReturnValue)
@@ -3052,7 +3288,8 @@
defaultSegment = (int)codeSegments.size();
else if (child->getAsBranchNode() && child->getAsBranchNode()->getFlowOp() == glslang::EOpCase) {
valueIndexToSegment[caseValues.size()] = (int)codeSegments.size();
- caseValues.push_back(child->getAsBranchNode()->getExpression()->getAsConstantUnion()->getConstArray()[0].getIConst());
+ caseValues.push_back(child->getAsBranchNode()->getExpression()->getAsConstantUnion()
+ ->getConstArray()[0].getIConst());
} else
codeSegments.push_back(child);
}
@@ -3065,7 +3302,8 @@
// make the switch statement
std::vector<spv::Block*> segmentBlocks; // returned, as the blocks allocated in the call
- builder.makeSwitch(selector, control, (int)codeSegments.size(), caseValues, valueIndexToSegment, defaultSegment, segmentBlocks);
+ builder.makeSwitch(selector, control, (int)codeSegments.size(), caseValues, valueIndexToSegment, defaultSegment,
+ segmentBlocks);
// emit all the code in the segments
breakForLoop.push(false);
@@ -3322,7 +3560,8 @@
// When inverting a swizzle with a parent op, this function
// will apply the swizzle operation to a completed parent operation.
-spv::Id TGlslangToSpvTraverser::createInvertedSwizzle(spv::Decoration precision, const glslang::TIntermTyped& node, spv::Id parentResult)
+spv::Id TGlslangToSpvTraverser::createInvertedSwizzle(spv::Decoration precision, const glslang::TIntermTyped& node,
+ spv::Id parentResult)
{
std::vector<unsigned> swizzle;
convertSwizzle(*node.getAsBinaryNode()->getRight()->getAsAggregate(), swizzle);
@@ -3405,8 +3644,11 @@
builder.addCapability(spv::CapabilityAtomicStorage);
spvType = builder.makeUintType(32);
break;
- case glslang::EbtAccStructNV:
- spvType = builder.makeAccelerationStructureNVType();
+ case glslang::EbtAccStruct:
+ spvType = builder.makeAccelerationStructureType();
+ break;
+ case glslang::EbtRayQuery:
+ spvType = builder.makeRayQueryType();
break;
case glslang::EbtReference:
{
@@ -3458,10 +3700,13 @@
// else, we haven't seen it...
if (type.getBasicType() == glslang::EbtBlock)
- memberRemapper[glslangMembers].resize(glslangMembers->size());
+ memberRemapper[glslangTypeToIdMap[glslangMembers]].resize(glslangMembers->size());
spvType = convertGlslangStructToSpvType(type, glslangMembers, explicitLayout, qualifier);
}
break;
+ case glslang::EbtString:
+ // no type used for OpString
+ return 0;
default:
assert(0);
break;
@@ -3535,8 +3780,8 @@
builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5);
builder.addCapability(spv::CapabilityRuntimeDescriptorArrayEXT);
}
- spvType = builder.makeRuntimeArray(spvType);
#endif
+ spvType = builder.makeRuntimeArray(spvType);
}
if (stride > 0)
builder.addDecoration(spvType, spv::DecorationArrayStride, stride);
@@ -3587,22 +3832,23 @@
{
// Create a vector of struct types for SPIR-V to consume
std::vector<spv::Id> spvMembers;
- int memberDelta = 0; // how much the member's index changes from glslang to SPIR-V, normally 0, except sometimes for blocks
+ int memberDelta = 0; // how much the member's index changes from glslang to SPIR-V, normally 0,
+ // except sometimes for blocks
std::vector<std::pair<glslang::TType*, glslang::TQualifier> > deferredForwardPointers;
for (int i = 0; i < (int)glslangMembers->size(); i++) {
glslang::TType& glslangMember = *(*glslangMembers)[i].type;
if (glslangMember.hiddenMember()) {
++memberDelta;
if (type.getBasicType() == glslang::EbtBlock)
- memberRemapper[glslangMembers][i] = -1;
+ memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = -1;
} else {
if (type.getBasicType() == glslang::EbtBlock) {
if (filterMember(glslangMember)) {
memberDelta++;
- memberRemapper[glslangMembers][i] = -1;
+ memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = -1;
continue;
}
- memberRemapper[glslangMembers][i] = i - memberDelta;
+ memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = i - memberDelta;
}
// modify just this child's view of the qualifier
glslang::TQualifier memberQualifier = glslangMember.getQualifier();
@@ -3623,10 +3869,12 @@
deferredForwardPointers.push_back(std::make_pair(&glslangMember, memberQualifier));
}
spvMembers.push_back(
- convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember, true));
+ convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember,
+ true));
} else {
spvMembers.push_back(
- convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember, false));
+ convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember,
+ false));
}
}
}
@@ -3660,7 +3908,7 @@
glslang::TType& glslangMember = *(*glslangMembers)[i].type;
int member = i;
if (type.getBasicType() == glslang::EbtBlock) {
- member = memberRemapper[glslangMembers][i];
+ member = memberRemapper[glslangTypeToIdMap[glslangMembers]][i];
if (filterMember(glslangMember))
continue;
}
@@ -3701,6 +3949,7 @@
for (unsigned int i = 0; i < memory.size(); ++i)
builder.addMemberDecoration(spvType, member, memory[i]);
}
+
#endif
// Location assignment was already completed correctly by the front end,
@@ -3813,11 +4062,11 @@
alignment |= type.getBufferReferenceAlignment();
spv::Id loadedId = builder.accessChainLoad(TranslatePrecisionDecoration(type),
- TranslateNonUniformDecoration(type.getQualifier()),
- nominalTypeId,
- spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMakePointerAvailableKHRMask),
- TranslateMemoryScope(coherentFlags),
- alignment);
+ TranslateNonUniformDecoration(type.getQualifier()),
+ nominalTypeId,
+ spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMakePointerAvailableKHRMask),
+ TranslateMemoryScope(coherentFlags),
+ alignment);
// Need to convert to abstract types when necessary
if (type.getBasicType() == glslang::EbtBool) {
@@ -3831,7 +4080,8 @@
int vecSize = builder.getNumTypeComponents(nominalTypeId);
spv::Id bvecType = builder.makeVectorType(builder.makeBoolType(), vecSize);
if (nominalTypeId != bvecType)
- loadedId = builder.createBinOp(spv::OpINotEqual, bvecType, loadedId, makeSmearedConstant(builder.makeUintConstant(0), vecSize));
+ loadedId = builder.createBinOp(spv::OpINotEqual, bvecType, loadedId,
+ makeSmearedConstant(builder.makeUintConstant(0), vecSize));
}
}
@@ -3880,7 +4130,8 @@
alignment |= type.getBufferReferenceAlignment();
builder.accessChainStore(rvalue,
- spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMakePointerVisibleKHRMask),
+ spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) &
+ ~spv::MemoryAccessMakePointerVisibleKHRMask),
TranslateMemoryScope(coherentFlags), alignment);
}
@@ -3941,7 +4192,8 @@
// set up the target storage
builder.clearAccessChain();
builder.setAccessChainLValue(lValue);
- builder.accessChainPush(builder.makeIntConstant(index), TranslateCoherent(type), type.getBufferReferenceAlignment());
+ builder.accessChainPush(builder.makeIntConstant(index), TranslateCoherent(type),
+ type.getBufferReferenceAlignment());
// store the member
multiTypeStore(glslangElementType, elementRValue);
@@ -3961,7 +4213,8 @@
// set up the target storage
builder.clearAccessChain();
builder.setAccessChainLValue(lValue);
- builder.accessChainPush(builder.makeIntConstant(m), TranslateCoherent(type), type.getBufferReferenceAlignment());
+ builder.accessChainPush(builder.makeIntConstant(m), TranslateCoherent(type),
+ type.getBufferReferenceAlignment());
// store the member
multiTypeStore(glslangMemberType, memberRValue);
@@ -3996,18 +4249,21 @@
}
// Given an array type, returns the integer stride required for that array
-int TGlslangToSpvTraverser::getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout)
+int TGlslangToSpvTraverser::getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking explicitLayout,
+ glslang::TLayoutMatrix matrixLayout)
{
int size;
int stride;
- glslangIntermediate->getMemberAlignment(arrayType, size, stride, explicitLayout, matrixLayout == glslang::ElmRowMajor);
+ glslangIntermediate->getMemberAlignment(arrayType, size, stride, explicitLayout,
+ matrixLayout == glslang::ElmRowMajor);
return stride;
}
// Given a matrix type, or array (of array) of matrixes type, returns the integer stride required for that matrix
// when used as a member of an interface block
-int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout)
+int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking explicitLayout,
+ glslang::TLayoutMatrix matrixLayout)
{
glslang::TType elementType;
elementType.shallowCopy(matrixType);
@@ -4015,7 +4271,8 @@
int size;
int stride;
- glslangIntermediate->getMemberAlignment(elementType, size, stride, explicitLayout, matrixLayout == glslang::ElmRowMajor);
+ glslangIntermediate->getMemberAlignment(elementType, size, stride, explicitLayout,
+ matrixLayout == glslang::ElmRowMajor);
return stride;
}
@@ -4026,8 +4283,8 @@
// 'currentOffset' should be passed in already initialized, ready to modify, and reflecting
// the migration of data from nextOffset -> currentOffset. It should be -1 on the first call.
// -1 means a non-forced member offset (no decoration needed).
-void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset,
- glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout)
+void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType,
+ int& currentOffset, int& nextOffset, glslang::TLayoutPacking explicitLayout, glslang::TLayoutMatrix matrixLayout)
{
// this will get a positive value when deemed necessary
nextOffset = -1;
@@ -4057,7 +4314,8 @@
int memberSize;
int dummyStride;
- int memberAlignment = glslangIntermediate->getMemberAlignment(memberType, memberSize, dummyStride, explicitLayout, matrixLayout == glslang::ElmRowMajor);
+ int memberAlignment = glslangIntermediate->getMemberAlignment(memberType, memberSize, dummyStride, explicitLayout,
+ matrixLayout == glslang::ElmRowMajor);
// Adjust alignment for HLSL rules
// TODO: make this consistent in early phases of code:
@@ -4076,7 +4334,8 @@
glslang::RoundToPow2(currentOffset, memberAlignment);
// Bump up to vec4 if there is a bad straddle
- if (explicitLayout != glslang::ElpScalar && glslangIntermediate->improperStraddle(memberType, memberSize, currentOffset))
+ if (explicitLayout != glslang::ElpScalar && glslangIntermediate->improperStraddle(memberType, memberSize,
+ currentOffset))
glslang::RoundToPow2(currentOffset, 16);
nextOffset = currentOffset + memberSize;
@@ -4148,7 +4407,8 @@
// Make all the functions, skeletally, without actually visiting their bodies.
void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslFunctions)
{
- const auto getParamDecorations = [&](std::vector<spv::Decoration>& decorations, const glslang::TType& type, bool useVulkanMemoryModel) {
+ const auto getParamDecorations = [&](std::vector<spv::Decoration>& decorations, const glslang::TType& type,
+ bool useVulkanMemoryModel) {
spv::Decoration paramPrecision = TranslatePrecisionDecoration(type);
if (paramPrecision != spv::NoPrecision)
decorations.push_back(paramPrecision);
@@ -4159,9 +4419,11 @@
// 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);
}
}
};
@@ -4244,7 +4506,8 @@
builder.setBuildPoint(shaderEntry->getLastBlock());
for (int i = 0; i < (int)initializers.size(); ++i) {
glslang::TIntermAggregate* initializer = initializers[i]->getAsAggregate();
- if (initializer && initializer->getOp() != glslang::EOpFunction && initializer->getOp() != glslang::EOpLinkerObjects) {
+ if (initializer && initializer->getOp() != glslang::EOpFunction && initializer->getOp() !=
+ glslang::EOpLinkerObjects) {
// We're on a top-level node that's not a function. Treat as an initializer, whose
// code goes into the beginning of the entry point.
@@ -4272,7 +4535,8 @@
builder.setBuildPoint(functionBlock);
}
-void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments, spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags)
+void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments,
+ spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags)
{
const glslang::TIntermSequence& glslangArguments = node.getSequence();
@@ -4285,7 +4549,8 @@
sampler = glslangArguments[0]->getAsTyped()->getType().getSampler();
cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow;
#ifndef GLSLANG_WEB
- f16ShadowCompare = sampler.shadow && glslangArguments[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16;
+ f16ShadowCompare = sampler.shadow &&
+ glslangArguments[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16;
#endif
}
@@ -4661,7 +4926,8 @@
operands.push_back(imageOperand);
}
if (mask & spv::ImageOperandsMakeTexelVisibleKHRMask) {
- spv::IdImmediate imageOperand = { true, builder.makeUintConstant(TranslateMemoryScope(TranslateCoherent(imageType))) };
+ spv::IdImmediate imageOperand = { true, builder.makeUintConstant(TranslateMemoryScope(
+ TranslateCoherent(imageType))) };
operands.push_back(imageOperand);
}
@@ -4689,18 +4955,22 @@
// imageAtomicStore has a void return type so base the pointer type on
// the type of the value operand.
if (node->getOp() == glslang::EOpImageAtomicStore) {
- resultTypeId = builder.makePointer(spv::StorageClassImage, builder.getTypeId(operands[2].word));
+ resultTypeId = builder.makePointer(spv::StorageClassImage, builder.getTypeId(*opIt));
} else {
resultTypeId = builder.makePointer(spv::StorageClassImage, resultType());
}
spv::Id pointer = builder.createOp(spv::OpImageTexelPointer, resultTypeId, operands);
+ if (imageType.getQualifier().nonUniform) {
+ builder.addDecoration(pointer, spv::DecorationNonUniformEXT);
+ }
std::vector<spv::Id> operands;
operands.push_back(pointer);
for (; opIt != arguments.end(); ++opIt)
operands.push_back(*opIt);
- return createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), lvalueCoherentFlags);
+ return createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(),
+ lvalueCoherentFlags);
}
}
@@ -4725,7 +4995,8 @@
std::vector<spv::Id> comps;
comps.push_back(zero);
comps.push_back(zero);
- operands.push_back(builder.makeCompositeConstant(builder.makeVectorType(builder.makeIntType(32), 2), comps));
+ operands.push_back(builder.makeCompositeConstant(
+ builder.makeVectorType(builder.makeIntType(32), 2), comps));
}
for (; opIt != arguments.end(); ++opIt)
@@ -4814,7 +5085,8 @@
else
dRefComp = builder.getNumComponents(params.coords) - 1;
indexes.push_back(dRefComp);
- params.Dref = builder.createCompositeExtract(params.coords, builder.getScalarTypeId(builder.getTypeId(params.coords)), indexes);
+ params.Dref = builder.createCompositeExtract(params.coords,
+ builder.getScalarTypeId(builder.getTypeId(params.coords)), indexes);
}
// lod
@@ -4939,7 +5211,8 @@
flags.clear();
builder.accessChainPush(builder.makeIntConstant(i), flags, 0);
- builder.accessChainStore(builder.createCompositeExtract(res, builder.getContainedTypeId(resType, i+1), i+1));
+ builder.accessChainStore(builder.createCompositeExtract(res, builder.getContainedTypeId(resType, i+1),
+ i+1));
}
return builder.createCompositeExtract(res, resultType(), 0);
}
@@ -4962,13 +5235,13 @@
// copy the projective coordinate if we have to
if (projTargetComp != projSourceComp) {
spv::Id projComp = builder.createCompositeExtract(params.coords,
- builder.getScalarTypeId(builder.getTypeId(params.coords)),
- projSourceComp);
+ builder.getScalarTypeId(builder.getTypeId(params.coords)), projSourceComp);
params.coords = builder.createCompositeInsert(projComp, params.coords,
- builder.getTypeId(params.coords), projTargetComp);
+ builder.getTypeId(params.coords), projTargetComp);
}
}
+#ifndef GLSLANG_WEB
// nonprivate
if (imageType.getQualifier().nonprivate) {
params.nonprivate = true;
@@ -4978,6 +5251,7 @@
if (imageType.getQualifier().volatil) {
params.volatil = true;
}
+#endif
std::vector<spv::Id> result( 1,
builder.createTextureCall(precision, resultType(), sparse, cracked.fetch, cracked.proj, cracked.gather,
@@ -5043,7 +5317,8 @@
++lValueCount;
} else if (writableParam(qualifiers[a])) {
// need space to hold the copy
- arg = builder.createVariable(spv::StorageClassFunction, builder.getContainedTypeId(function->getParamType(a)), "param");
+ arg = builder.createVariable(spv::StorageClassFunction,
+ builder.getContainedTypeId(function->getParamType(a)), "param");
if (qualifiers[a] == glslang::EvqIn || qualifiers[a] == glslang::EvqInOut) {
// need to copy the input into output space
builder.setAccessChain(lValues[lValueCount]);
@@ -5212,6 +5487,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:
@@ -5434,7 +5733,7 @@
}
spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDecorations& decorations, spv::Id typeId,
- spv::Id operand, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags)
+ spv::Id operand, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags)
{
spv::Op unaryOp = spv::OpNop;
int extBuiltins = -1;
@@ -5695,6 +5994,24 @@
case glslang::EOpFwidthCoarse:
unaryOp = spv::OpFwidthCoarse;
break;
+ case glslang::EOpRayQueryProceed:
+ unaryOp = spv::OpRayQueryProceedKHR;
+ break;
+ case glslang::EOpRayQueryGetRayTMin:
+ unaryOp = spv::OpRayQueryGetRayTMinKHR;
+ break;
+ case glslang::EOpRayQueryGetRayFlags:
+ unaryOp = spv::OpRayQueryGetRayFlagsKHR;
+ break;
+ case glslang::EOpRayQueryGetWorldRayOrigin:
+ unaryOp = spv::OpRayQueryGetWorldRayOriginKHR;
+ break;
+ case glslang::EOpRayQueryGetWorldRayDirection:
+ unaryOp = spv::OpRayQueryGetWorldRayDirectionKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque:
+ unaryOp = spv::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR;
+ break;
case glslang::EOpInterpolateAtCentroid:
if (typeProxy == glslang::EbtFloat16)
builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
@@ -5726,6 +6043,18 @@
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:
@@ -6315,7 +6644,9 @@
}
// For glslang ops that map to SPV atomic opCodes
-spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv::Decoration /*precision*/, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags)
+spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv::Decoration /*precision*/,
+ spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy,
+ const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags)
{
spv::Op opCode = spv::OpNop;
@@ -6331,12 +6662,14 @@
case glslang::EOpAtomicMin:
case glslang::EOpImageAtomicMin:
case glslang::EOpAtomicCounterMin:
- opCode = (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) ? spv::OpAtomicUMin : spv::OpAtomicSMin;
+ opCode = (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) ?
+ spv::OpAtomicUMin : spv::OpAtomicSMin;
break;
case glslang::EOpAtomicMax:
case glslang::EOpImageAtomicMax:
case glslang::EOpAtomicCounterMax:
- opCode = (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) ? spv::OpAtomicUMax : spv::OpAtomicSMax;
+ opCode = (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) ?
+ spv::OpAtomicUMax : spv::OpAtomicSMax;
break;
case glslang::EOpAtomicAnd:
case glslang::EOpImageAtomicAnd:
@@ -6401,7 +6734,8 @@
scopeId = builder.makeUintConstant(spv::ScopeDevice);
}
// semantics default to relaxed
- spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.isVolatile() ?
+ spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.isVolatile() &&
+ glslangIntermediate->usingVulkanMemoryModel() ?
spv::MemorySemanticsVolatileMask :
spv::MemorySemanticsMaskNone);
spv::Id semanticsId2 = semanticsId;
@@ -6414,20 +6748,24 @@
valueId = operands[2];
if (operands.size() > 3) {
scopeId = operands[3];
- semanticsId = builder.makeUintConstant(builder.getConstantScalar(operands[4]) | builder.getConstantScalar(operands[5]));
- semanticsId2 = builder.makeUintConstant(builder.getConstantScalar(operands[6]) | builder.getConstantScalar(operands[7]));
+ semanticsId = builder.makeUintConstant(
+ builder.getConstantScalar(operands[4]) | builder.getConstantScalar(operands[5]));
+ semanticsId2 = builder.makeUintConstant(
+ builder.getConstantScalar(operands[6]) | builder.getConstantScalar(operands[7]));
}
} else if (opCode == spv::OpAtomicLoad) {
if (operands.size() > 1) {
scopeId = operands[1];
- semanticsId = builder.makeUintConstant(builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]));
+ semanticsId = builder.makeUintConstant(
+ builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]));
}
} else {
// atomic store or RMW
valueId = operands[1];
if (operands.size() > 2) {
scopeId = operands[2];
- semanticsId = builder.makeUintConstant(builder.getConstantScalar(operands[3]) | builder.getConstantScalar(operands[4]));
+ semanticsId = builder.makeUintConstant
+ (builder.getConstantScalar(operands[3]) | builder.getConstantScalar(operands[4]));
}
}
@@ -6472,7 +6810,8 @@
}
// Create group invocation operations.
-spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy)
+spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId,
+ std::vector<spv::Id>& operands, glslang::TBasicType typeProxy)
{
bool isUnsigned = isTypeUnsignedInt(typeProxy);
bool isFloat = isTypeFloat(typeProxy);
@@ -6686,8 +7025,10 @@
op == spv::OpGroupFMax || op == spv::OpGroupUMax || op == spv::OpGroupSMax ||
op == spv::OpGroupFAdd || op == spv::OpGroupIAdd || op == spv::OpGroupBroadcast ||
op == spv::OpSubgroupReadInvocationKHR ||
- op == spv::OpGroupFMinNonUniformAMD || op == spv::OpGroupUMinNonUniformAMD || op == spv::OpGroupSMinNonUniformAMD ||
- op == spv::OpGroupFMaxNonUniformAMD || op == spv::OpGroupUMaxNonUniformAMD || op == spv::OpGroupSMaxNonUniformAMD ||
+ op == spv::OpGroupFMinNonUniformAMD || op == spv::OpGroupUMinNonUniformAMD ||
+ op == spv::OpGroupSMinNonUniformAMD ||
+ op == spv::OpGroupFMaxNonUniformAMD || op == spv::OpGroupUMaxNonUniformAMD ||
+ op == spv::OpGroupSMaxNonUniformAMD ||
op == spv::OpGroupFAddNonUniformAMD || op == spv::OpGroupIAddNonUniformAMD);
// Handle group invocation operations scalar by scalar.
@@ -7076,7 +7417,8 @@
return builder.createOp(opCode, typeId, spvGroupOperands);
}
-spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy)
+spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision,
+ spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy)
{
bool isUnsigned = isTypeUnsignedInt(typeProxy);
bool isFloat = isTypeFloat(typeProxy);
@@ -7170,6 +7512,50 @@
case glslang::EOpRefract:
libCall = spv::GLSLstd450Refract;
break;
+ case glslang::EOpBarrier:
+ {
+ // This is for the extended controlBarrier function, with four operands.
+ // The unextended barrier() goes through createNoArgOperation.
+ assert(operands.size() == 4);
+ unsigned int executionScope = builder.getConstantScalar(operands[0]);
+ unsigned int memoryScope = builder.getConstantScalar(operands[1]);
+ unsigned int semantics = builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]);
+ builder.createControlBarrier((spv::Scope)executionScope, (spv::Scope)memoryScope,
+ (spv::MemorySemanticsMask)semantics);
+ if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask |
+ spv::MemorySemanticsMakeVisibleKHRMask |
+ spv::MemorySemanticsOutputMemoryKHRMask |
+ spv::MemorySemanticsVolatileMask)) {
+ builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
+ }
+ if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::ScopeDevice ||
+ memoryScope == spv::ScopeDevice)) {
+ builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR);
+ }
+ return 0;
+ }
+ break;
+ case glslang::EOpMemoryBarrier:
+ {
+ // This is for the extended memoryBarrier function, with three operands.
+ // The unextended memoryBarrier() goes through createNoArgOperation.
+ assert(operands.size() == 3);
+ unsigned int memoryScope = builder.getConstantScalar(operands[0]);
+ unsigned int semantics = builder.getConstantScalar(operands[1]) | builder.getConstantScalar(operands[2]);
+ builder.createMemoryBarrier((spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics);
+ if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask |
+ spv::MemorySemanticsMakeVisibleKHRMask |
+ spv::MemorySemanticsOutputMemoryKHRMask |
+ spv::MemorySemanticsVolatileMask)) {
+ builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
+ }
+ if (glslangIntermediate->usingVulkanMemoryModel() && memoryScope == spv::ScopeDevice) {
+ builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR);
+ }
+ return 0;
+ }
+ break;
+
#ifndef GLSLANG_WEB
case glslang::EOpInterpolateAtSample:
if (typeProxy == glslang::EbtFloat16)
@@ -7226,7 +7612,8 @@
if (builder.getNumComponents(operands[0]) == 1)
frexpIntType = builder.makeIntegerType(width, true);
else
- frexpIntType = builder.makeVectorType(builder.makeIntegerType(width, true), builder.getNumComponents(operands[0]));
+ frexpIntType = builder.makeVectorType(builder.makeIntegerType(width, true),
+ builder.getNumComponents(operands[0]));
typeId = builder.makeStructResultType(typeId0, frexpIntType);
consumedOperands = 1;
}
@@ -7328,66 +7715,106 @@
extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
libCall = spv::InterpolateAtVertexAMD;
break;
- case glslang::EOpBarrier:
- {
- // This is for the extended controlBarrier function, with four operands.
- // The unextended barrier() goes through createNoArgOperation.
- assert(operands.size() == 4);
- unsigned int executionScope = builder.getConstantScalar(operands[0]);
- unsigned int memoryScope = builder.getConstantScalar(operands[1]);
- unsigned int semantics = builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]);
- builder.createControlBarrier((spv::Scope)executionScope, (spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics);
- if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask |
- spv::MemorySemanticsMakeVisibleKHRMask |
- spv::MemorySemanticsOutputMemoryKHRMask |
- spv::MemorySemanticsVolatileMask)) {
- builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
- }
- if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::ScopeDevice || memoryScope == spv::ScopeDevice)) {
- builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR);
- }
- return 0;
- }
- break;
- case glslang::EOpMemoryBarrier:
- {
- // This is for the extended memoryBarrier function, with three operands.
- // The unextended memoryBarrier() goes through createNoArgOperation.
- assert(operands.size() == 3);
- unsigned int memoryScope = builder.getConstantScalar(operands[0]);
- unsigned int semantics = builder.getConstantScalar(operands[1]) | builder.getConstantScalar(operands[2]);
- builder.createMemoryBarrier((spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics);
- if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask |
- spv::MemorySemanticsMakeVisibleKHRMask |
- spv::MemorySemanticsOutputMemoryKHRMask |
- spv::MemorySemanticsVolatileMask)) {
- builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
- }
- if (glslangIntermediate->usingVulkanMemoryModel() && memoryScope == spv::ScopeDevice) {
- builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR);
- }
- return 0;
- }
- break;
- case glslang::EOpReportIntersectionNV:
- {
+ case glslang::EOpReportIntersection:
typeId = builder.makeBoolType();
- opCode = spv::OpReportIntersectionNV;
- }
- break;
- case glslang::EOpTraceNV:
- {
- builder.createNoResultOp(spv::OpTraceNV, operands);
+ opCode = spv::OpReportIntersectionKHR;
+ break;
+ case glslang::EOpTrace:
+ builder.createNoResultOp(spv::OpTraceRayKHR, operands);
return 0;
- }
- break;
- case glslang::EOpExecuteCallableNV:
- {
- builder.createNoResultOp(spv::OpExecuteCallableNV, operands);
+ case glslang::EOpExecuteCallable:
+ builder.createNoResultOp(spv::OpExecuteCallableKHR, operands);
return 0;
- }
- break;
+
+ case glslang::EOpRayQueryInitialize:
+ builder.createNoResultOp(spv::OpRayQueryInitializeKHR, operands);
+ return 0;
+ case glslang::EOpRayQueryTerminate:
+ builder.createNoResultOp(spv::OpRayQueryTerminateKHR, operands);
+ return 0;
+ case glslang::EOpRayQueryGenerateIntersection:
+ builder.createNoResultOp(spv::OpRayQueryGenerateIntersectionKHR, operands);
+ return 0;
+ case glslang::EOpRayQueryConfirmIntersection:
+ builder.createNoResultOp(spv::OpRayQueryConfirmIntersectionKHR, operands);
+ return 0;
+ case glslang::EOpRayQueryProceed:
+ typeId = builder.makeBoolType();
+ opCode = spv::OpRayQueryProceedKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionType:
+ typeId = builder.makeUintType(32);
+ opCode = spv::OpRayQueryGetIntersectionTypeKHR;
+ break;
+ case glslang::EOpRayQueryGetRayTMin:
+ typeId = builder.makeFloatType(32);
+ opCode = spv::OpRayQueryGetRayTMinKHR;
+ break;
+ case glslang::EOpRayQueryGetRayFlags:
+ typeId = builder.makeIntType(32);
+ opCode = spv::OpRayQueryGetRayFlagsKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionT:
+ typeId = builder.makeFloatType(32);
+ opCode = spv::OpRayQueryGetIntersectionTKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionInstanceCustomIndex:
+ typeId = builder.makeIntType(32);
+ opCode = spv::OpRayQueryGetIntersectionInstanceCustomIndexKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionInstanceId:
+ typeId = builder.makeIntType(32);
+ opCode = spv::OpRayQueryGetIntersectionInstanceIdKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset:
+ typeId = builder.makeIntType(32);
+ opCode = spv::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionGeometryIndex:
+ typeId = builder.makeIntType(32);
+ opCode = spv::OpRayQueryGetIntersectionGeometryIndexKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionPrimitiveIndex:
+ typeId = builder.makeIntType(32);
+ opCode = spv::OpRayQueryGetIntersectionPrimitiveIndexKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionBarycentrics:
+ typeId = builder.makeVectorType(builder.makeFloatType(32), 2);
+ opCode = spv::OpRayQueryGetIntersectionBarycentricsKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionFrontFace:
+ typeId = builder.makeBoolType();
+ opCode = spv::OpRayQueryGetIntersectionFrontFaceKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque:
+ typeId = builder.makeBoolType();
+ opCode = spv::OpRayQueryGetIntersectionCandidateAABBOpaqueKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionObjectRayDirection:
+ typeId = builder.makeVectorType(builder.makeFloatType(32), 3);
+ opCode = spv::OpRayQueryGetIntersectionObjectRayDirectionKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionObjectRayOrigin:
+ typeId = builder.makeVectorType(builder.makeFloatType(32), 3);
+ opCode = spv::OpRayQueryGetIntersectionObjectRayOriginKHR;
+ break;
+ case glslang::EOpRayQueryGetWorldRayDirection:
+ typeId = builder.makeVectorType(builder.makeFloatType(32), 3);
+ opCode = spv::OpRayQueryGetWorldRayDirectionKHR;
+ break;
+ case glslang::EOpRayQueryGetWorldRayOrigin:
+ typeId = builder.makeVectorType(builder.makeFloatType(32), 3);
+ opCode = spv::OpRayQueryGetWorldRayOriginKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionObjectToWorld:
+ typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3);
+ opCode = spv::OpRayQueryGetIntersectionObjectToWorldKHR;
+ break;
+ case glslang::EOpRayQueryGetIntersectionWorldToObject:
+ typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3);
+ opCode = spv::OpRayQueryGetIntersectionWorldToObjectKHR;
+ break;
case glslang::EOpWritePackedPrimitiveIndices4x8NV:
builder.createNoResultOp(spv::OpWritePackedPrimitiveIndices4x8NV, operands);
return 0;
@@ -7415,7 +7842,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) {
@@ -7476,17 +7903,11 @@
// Intrinsics with no arguments (or no return value, and no precision).
spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId)
{
-#ifndef GLSLANG_WEB
// GLSL memory barriers use queuefamily scope in new model, device scope in old model
- spv::Scope memoryBarrierScope = glslangIntermediate->usingVulkanMemoryModel() ? spv::ScopeQueueFamilyKHR : spv::ScopeDevice;
+ 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()) {
@@ -7507,18 +7928,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);
@@ -7527,6 +7940,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 |
@@ -7571,6 +7993,14 @@
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<spv::Id> operands;
return createSubgroupOperation(op, typeId, operands, glslang::EbtVoid);
@@ -7581,13 +8011,24 @@
spv::Id id = builder.createBuiltinCall(typeId, getExtBuiltins(spv::E_SPV_AMD_gcn_shader), spv::TimeAMD, args);
return builder.setPrecision(id, precision);
}
- case glslang::EOpIgnoreIntersectionNV:
- builder.createNoResultOp(spv::OpIgnoreIntersectionNV);
+ case glslang::EOpIgnoreIntersection:
+ builder.createNoResultOp(spv::OpIgnoreIntersectionKHR);
return 0;
- case glslang::EOpTerminateRayNV:
- builder.createNoResultOp(spv::OpTerminateRayNV);
+ case glslang::EOpTerminateRay:
+ builder.createNoResultOp(spv::OpTerminateRayKHR);
return 0;
-
+ case glslang::EOpRayQueryInitialize:
+ builder.createNoResultOp(spv::OpRayQueryInitializeKHR);
+ return 0;
+ case glslang::EOpRayQueryTerminate:
+ builder.createNoResultOp(spv::OpRayQueryTerminateKHR);
+ return 0;
+ case glslang::EOpRayQueryGenerateIntersection:
+ builder.createNoResultOp(spv::OpRayQueryGenerateIntersectionKHR);
+ return 0;
+ case glslang::EOpRayQueryConfirmIntersection:
+ builder.createNoResultOp(spv::OpRayQueryConfirmIntersectionKHR);
+ return 0;
case glslang::EOpBeginInvocationInterlock:
builder.createNoResultOp(spv::OpBeginInvocationInterlockEXT);
return 0;
@@ -7618,10 +8059,10 @@
builder.addCapability(spv::CapabilityShaderClockKHR);
return builder.createOp(spv::OpReadClockKHR, typeId, args);
}
+#endif
default:
break;
}
-#endif
logger->missingFunctionality("unknown operation with no arguments");
@@ -7639,7 +8080,7 @@
// it was not found, create it
spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn, false);
- auto forcedType = getForcedType(builtIn, symbol->getType());
+ auto forcedType = getForcedType(symbol->getQualifier().builtIn, symbol->getType());
id = createSpvVariable(symbol, forcedType.first);
symbolValues[symbol->getId()] = id;
if (forcedType.second != spv::NoType)
@@ -7704,7 +8145,8 @@
#ifndef GLSLANG_WEB
if (symbol->getType().isImage()) {
std::vector<spv::Decoration> memory;
- TranslateMemoryDecoration(symbol->getType().getQualifier(), memory, glslangIntermediate->usingVulkanMemoryModel());
+ TranslateMemoryDecoration(symbol->getType().getQualifier(), memory,
+ glslangIntermediate->usingVulkanMemoryModel());
for (unsigned int i = 0; i < memory.size(); ++i)
builder.addDecoration(id, memory[i]);
}
@@ -7758,7 +8200,8 @@
}
if (symbol->isReference()) {
- builder.addDecoration(id, symbol->getType().getQualifier().restrict ? spv::DecorationRestrictPointerEXT : spv::DecorationAliasedPointerEXT);
+ builder.addDecoration(id, symbol->getType().getQualifier().restrict ?
+ spv::DecorationRestrictPointerEXT : spv::DecorationAliasedPointerEXT);
}
#endif
@@ -7820,13 +8263,13 @@
// hand off to the non-spec-constant path
assert(node.getAsConstantUnion() != nullptr || node.getAsSymbolNode() != nullptr);
int nextConst = 0;
- return createSpvConstantFromConstUnionArray(node.getType(), node.getAsConstantUnion() ? node.getAsConstantUnion()->getConstArray() : node.getAsSymbolNode()->getConstArray(),
- nextConst, false);
+ return createSpvConstantFromConstUnionArray(node.getType(), node.getAsConstantUnion() ?
+ node.getAsConstantUnion()->getConstArray() : node.getAsSymbolNode()->getConstArray(),
+ nextConst, false);
}
// We now know we have a specialization constant to build
-#ifndef GLSLANG_WEB
// gl_WorkGroupSize is a special case until the front-end handles hierarchical specialization constants,
// even then, it's specialization ids are handled by special case syntax in GLSL: layout(local_size_x = ...
if (node.getType().getQualifier().builtIn == glslang::EbvWorkGroupSize) {
@@ -7841,7 +8284,6 @@
}
return builder.makeCompositeConstant(builder.makeVectorType(builder.makeUintType(32), 3), dimConstId, true);
}
-#endif
// An AST node labelled as specialization constant should be a symbol node.
// Its initializer should either be a sub tree with constant nodes, or a constant union array.
@@ -7876,7 +8318,8 @@
// If there are not enough elements present in 'consts', 0 will be substituted;
// an empty 'consts' can be used to create a fully zeroed SPIR-V constant.
//
-spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glslang::TType& glslangType, const glslang::TConstUnionArray& consts, int& nextConst, bool specConstant)
+spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glslang::TType& glslangType,
+ const glslang::TConstUnionArray& consts, int& nextConst, bool specConstant)
{
// vector of constants for SPIR-V
std::vector<spv::Id> spvConsts;
@@ -7994,6 +8437,9 @@
scalar = builder.createUnaryOp(spv::OpBitcast, typeId, scalar);
break;
#endif
+ case glslang::EbtString:
+ scalar = builder.getStringId(consts[nextConst].getSConst()->c_str());
+ break;
default:
assert(0);
break;
@@ -8094,7 +8540,8 @@
// Emit short-circuiting code, where 'right' is never evaluated unless
// the left side is true (for &&) or false (for ||).
-spv::Id TGlslangToSpvTraverser::createShortCircuit(glslang::TOperator op, glslang::TIntermTyped& left, glslang::TIntermTyped& right)
+spv::Id TGlslangToSpvTraverser::createShortCircuit(glslang::TOperator op, glslang::TIntermTyped& left,
+ glslang::TIntermTyped& right)
{
spv::Id boolTypeId = builder.makeBoolType();
@@ -8177,7 +8624,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
diff --git a/SPIRV/GlslangToSpv.h b/SPIRV/GlslangToSpv.h
index 86e1c23..3907be4 100755
--- a/SPIRV/GlslangToSpv.h
+++ b/SPIRV/GlslangToSpv.h
@@ -40,7 +40,7 @@
#endif
#include "SpvTools.h"
-#include "../glslang/Include/intermediate.h"
+#include "glslang/Include/intermediate.h"
#include <string>
#include <vector>
diff --git a/SPIRV/InReadableOrder.cpp b/SPIRV/InReadableOrder.cpp
index 52b2961..9d9410b 100644
--- a/SPIRV/InReadableOrder.cpp
+++ b/SPIRV/InReadableOrder.cpp
@@ -61,17 +61,22 @@
// Use by calling visit() on the root block.
class ReadableOrderTraverser {
public:
- explicit ReadableOrderTraverser(std::function<void(Block*)> callback) : callback_(callback) {}
+ ReadableOrderTraverser(std::function<void(Block*, spv::ReachReason, Block*)> 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<void(Block*)> callback_;
+ std::function<void(Block*, spv::ReachReason, Block*)> callback_;
// Whether a block has already been visited or is being delayed.
std::unordered_set<Block *> visited_, delayed_;
+
+ // The set of blocks that actually are reached via control flow.
+ std::unordered_set<Block *> reachableViaControlFlow_;
};
}
-void spv::inReadableOrder(Block* root, std::function<void(Block*)> callback)
+void spv::inReadableOrder(Block* root, std::function<void(Block*, spv::ReachReason, Block*)> callback)
{
- ReadableOrderTraverser(callback).visit(root);
+ ReadableOrderTraverser(callback).visit(root, spv::ReachViaControlFlow, nullptr);
}
diff --git a/SPIRV/Logger.cpp b/SPIRV/Logger.cpp
index 7ea0c63..cdc8469 100644
--- a/SPIRV/Logger.cpp
+++ b/SPIRV/Logger.cpp
@@ -69,4 +69,4 @@
} // end spv namespace
-#endif
\ No newline at end of file
+#endif
diff --git a/SPIRV/NonSemanticDebugPrintf.h b/SPIRV/NonSemanticDebugPrintf.h
new file mode 100644
index 0000000..83796d7
--- /dev/null
+++ b/SPIRV/NonSemanticDebugPrintf.h
@@ -0,0 +1,50 @@
+// Copyright (c) 2020 The Khronos Group Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and/or associated documentation files (the
+// "Materials"), to deal in the Materials without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Materials, and to
+// permit persons to whom the Materials are furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Materials.
+//
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+// https://www.khronos.org/registry/
+//
+// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+//
+
+#ifndef SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_
+#define SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+ NonSemanticDebugPrintfRevision = 1,
+ NonSemanticDebugPrintfRevision_BitWidthPadding = 0x7fffffff
+};
+
+enum NonSemanticDebugPrintfInstructions {
+ NonSemanticDebugPrintfDebugPrintf = 1,
+ NonSemanticDebugPrintfInstructionsMax = 0x7fffffff
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index bd20895..6cf70a1 100644
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -1,6 +1,7 @@
//
// Copyright (C) 2014-2015 LunarG, Inc.
// Copyright (C) 2015-2018 Google, Inc.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -496,7 +497,8 @@
return type->getResultId();
}
-Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format)
+Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, bool ms, unsigned sampled,
+ ImageFormat format)
{
assert(sampled == 1 || sampled == 2);
@@ -601,16 +603,31 @@
}
#ifndef GLSLANG_WEB
-Id Builder::makeAccelerationStructureNVType()
+Id Builder::makeAccelerationStructureType()
{
Instruction *type;
- if (groupedTypes[OpTypeAccelerationStructureNV].size() == 0) {
- type = new Instruction(getUniqueId(), NoType, OpTypeAccelerationStructureNV);
- groupedTypes[OpTypeAccelerationStructureNV].push_back(type);
+ if (groupedTypes[OpTypeAccelerationStructureKHR].size() == 0) {
+ type = new Instruction(getUniqueId(), NoType, OpTypeAccelerationStructureKHR);
+ groupedTypes[OpTypeAccelerationStructureKHR].push_back(type);
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
module.mapInstruction(type);
} else {
- type = groupedTypes[OpTypeAccelerationStructureNV].back();
+ type = groupedTypes[OpTypeAccelerationStructureKHR].back();
+ }
+
+ return type->getResultId();
+}
+
+Id Builder::makeRayQueryType()
+{
+ Instruction *type;
+ if (groupedTypes[OpTypeRayQueryProvisionalKHR].size() == 0) {
+ type = new Instruction(getUniqueId(), NoType, OpTypeRayQueryProvisionalKHR);
+ groupedTypes[OpTypeRayQueryProvisionalKHR].push_back(type);
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
+ module.mapInstruction(type);
+ } else {
+ type = groupedTypes[OpTypeRayQueryProvisionalKHR].back();
}
return type->getResultId();
@@ -1270,7 +1287,8 @@
// Comments in header
Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name,
- const std::vector<Id>& paramTypes, const std::vector<std::vector<Decoration>>& decorations, Block **entry)
+ const std::vector<Id>& paramTypes,
+ const std::vector<std::vector<Decoration>>& decorations, Block **entry)
{
// Make the function and initial instructions in it
Id typeId = makeFunctionType(returnType, paramTypes);
@@ -1373,7 +1391,8 @@
}
// av/vis/nonprivate are unnecessary and illegal for some storage classes.
-spv::MemoryAccessMask Builder::sanitizeMemoryAccessForStorageClass(spv::MemoryAccessMask memoryAccess, StorageClass sc) const
+spv::MemoryAccessMask Builder::sanitizeMemoryAccessForStorageClass(spv::MemoryAccessMask memoryAccess, StorageClass sc)
+ const
{
switch (sc) {
case spv::StorageClassUniform:
@@ -1392,7 +1411,8 @@
}
// Comments in header
-void Builder::createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment)
+void Builder::createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAccess, spv::Scope scope,
+ unsigned int alignment)
{
Instruction* store = new Instruction(OpStore);
store->addIdOperand(lValue);
@@ -1495,7 +1515,8 @@
// Generate code for spec constants if in spec constant operation
// generation mode.
if (generatingOpCodeForSpecConst) {
- return createSpecConstantOp(OpCompositeExtract, typeId, std::vector<Id>(1, composite), std::vector<Id>(1, index));
+ return createSpecConstantOp(OpCompositeExtract, typeId, std::vector<Id>(1, composite),
+ std::vector<Id>(1, index));
}
Instruction* extract = new Instruction(getUniqueId(), typeId, OpCompositeExtract);
extract->addIdOperand(composite);
@@ -1697,7 +1718,8 @@
return op->getResultId();
}
-Id Builder::createSpecConstantOp(Op opCode, Id typeId, const std::vector<Id>& operands, const std::vector<unsigned>& literals)
+Id Builder::createSpecConstantOp(Op opCode, Id typeId, const std::vector<Id>& operands,
+ const std::vector<unsigned>& literals)
{
Instruction* op = new Instruction(getUniqueId(), typeId, OpSpecConstantOp);
op->addImmediateOperand((unsigned) opCode);
@@ -2187,7 +2209,8 @@
if (constituent == 0)
resultId = subResultId;
else
- resultId = setPrecision(createBinOp(equal ? OpLogicalAnd : OpLogicalOr, boolType, resultId, subResultId), precision);
+ resultId = setPrecision(createBinOp(equal ? OpLogicalAnd : OpLogicalOr, boolType, resultId, subResultId),
+ precision);
}
return resultId;
@@ -2196,7 +2219,8 @@
// OpCompositeConstruct
Id Builder::createCompositeConstruct(Id typeId, const std::vector<Id>& constituents)
{
- assert(isAggregateType(typeId) || (getNumTypeConstituents(typeId) > 1 && getNumTypeConstituents(typeId) == (int)constituents.size()));
+ assert(isAggregateType(typeId) || (getNumTypeConstituents(typeId) > 1 &&
+ getNumTypeConstituents(typeId) == (int)constituents.size()));
if (generatingOpCodeForSpecConst) {
// Sometime, even in spec-constant-op mode, the constant composite to be
@@ -2609,7 +2633,8 @@
}
// Comments in header
-void Builder::accessChainPushSwizzle(std::vector<unsigned>& swizzle, Id preSwizzleBaseType, AccessChain::CoherentFlags coherentFlags, unsigned int alignment)
+void Builder::accessChainPushSwizzle(std::vector<unsigned>& swizzle, Id preSwizzleBaseType,
+ AccessChain::CoherentFlags coherentFlags, unsigned int alignment)
{
accessChain.coherentFlags |= coherentFlags;
accessChain.alignment |= alignment;
@@ -2663,7 +2688,8 @@
}
// Comments in header
-Id Builder::accessChainLoad(Decoration precision, Decoration nonUniform, Id resultType, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment)
+Id Builder::accessChainLoad(Decoration precision, Decoration nonUniform, Id resultType,
+ spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment)
{
Id id;
@@ -2721,7 +2747,13 @@
}
// load through the access chain
- id = createLoad(collapseAccessChain(), memoryAccess, scope, alignment);
+ id = collapseAccessChain();
+ // Apply nonuniform both to the access chain and the loaded value.
+ // Buffer accesses need the access chain decorated, and this is where
+ // loaded image types get decorated. TODO: This should maybe move to
+ // createImageTextureFunctionCall.
+ addDecoration(id, nonUniform);
+ id = createLoad(id, memoryAccess, scope, alignment);
setPrecision(id, precision);
addDecoration(id, nonUniform);
}
@@ -3075,7 +3107,8 @@
dumpSourceInstructions(iItr->first, *iItr->second, out);
}
-void Builder::dumpInstructions(std::vector<unsigned int>& out, const std::vector<std::unique_ptr<Instruction> >& instructions) const
+void Builder::dumpInstructions(std::vector<unsigned int>& out,
+ const std::vector<std::unique_ptr<Instruction> >& instructions) const
{
for (int i = 0; i < (int)instructions.size(); ++i) {
instructions[i]->dump(out);
diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h
index 55754f6..71b90d6 100644
--- a/SPIRV/SpvBuilder.h
+++ b/SPIRV/SpvBuilder.h
@@ -1,7 +1,8 @@
//
// Copyright (C) 2014-2015 LunarG, Inc.
-// Copyright (C) 2015-2018 Google, Inc.
+// Copyright (C) 2015-2020 Google, Inc.
// Copyright (C) 2017 ARM Limited.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -94,6 +95,7 @@
const char* file_c_str = str.c_str();
fileString->addStringOperand(file_c_str);
strings.push_back(std::unique_ptr<Instruction>(fileString));
+ module.mapInstruction(fileString);
stringIds[file_c_str] = strId;
return strId;
}
@@ -181,7 +183,9 @@
Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols);
// accelerationStructureNV type
- Id makeAccelerationStructureNVType();
+ Id makeAccelerationStructureType();
+ // rayQueryEXT type
+ Id makeRayQueryType();
// For querying about types.
Id getTypeId(Id resultId) const { return module.getTypeId(resultId); }
@@ -196,7 +200,8 @@
Id getContainedTypeId(Id typeId) const;
Id getContainedTypeId(Id typeId, int) const;
StorageClass getTypeStorageClass(Id typeId) const { return module.getStorageClass(typeId); }
- ImageFormat getImageTypeFormat(Id typeId) const { return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6); }
+ ImageFormat getImageTypeFormat(Id typeId) const
+ { return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6); }
bool isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); }
bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); }
@@ -206,12 +211,17 @@
bool isAggregate(Id resultId) const { return isAggregateType(getTypeId(resultId)); }
bool isSampledImage(Id resultId) const { return isSampledImageType(getTypeId(resultId)); }
- bool isBoolType(Id typeId) { return groupedTypes[OpTypeBool].size() > 0 && typeId == groupedTypes[OpTypeBool].back()->getResultId(); }
- bool isIntType(Id typeId) const { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) != 0; }
- bool isUintType(Id typeId) const { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) == 0; }
+ bool isBoolType(Id typeId)
+ { return groupedTypes[OpTypeBool].size() > 0 && typeId == groupedTypes[OpTypeBool].back()->getResultId(); }
+ bool isIntType(Id typeId) const
+ { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) != 0; }
+ bool isUintType(Id typeId) const
+ { return getTypeClass(typeId) == OpTypeInt && module.getInstruction(typeId)->getImmediateOperand(1) == 0; }
bool isFloatType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat; }
bool isPointerType(Id typeId) const { return getTypeClass(typeId) == OpTypePointer; }
- bool isScalarType(Id typeId) const { return getTypeClass(typeId) == OpTypeFloat || getTypeClass(typeId) == OpTypeInt || getTypeClass(typeId) == OpTypeBool; }
+ bool isScalarType(Id typeId) const
+ { return getTypeClass(typeId) == OpTypeFloat || getTypeClass(typeId) == OpTypeInt ||
+ getTypeClass(typeId) == OpTypeBool; }
bool isVectorType(Id typeId) const { return getTypeClass(typeId) == OpTypeVector; }
bool isMatrixType(Id typeId) const { return getTypeClass(typeId) == OpTypeMatrix; }
bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; }
@@ -221,7 +231,8 @@
#else
bool isCooperativeMatrixType(Id typeId)const { return getTypeClass(typeId) == OpTypeCooperativeMatrixNV; }
#endif
- bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId) || isCooperativeMatrixType(typeId); }
+ 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; }
bool isSampledImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeSampledImage; }
@@ -233,7 +244,8 @@
bool isConstant(Id resultId) const { return isConstantOpCode(getOpCode(resultId)); }
bool isConstantScalar(Id resultId) const { return getOpCode(resultId) == OpConstant; }
bool isSpecConstant(Id resultId) const { return isSpecConstantOpCode(getOpCode(resultId)); }
- unsigned int getConstantScalar(Id resultId) const { return module.getInstruction(resultId)->getImmediateOperand(0); }
+ unsigned int getConstantScalar(Id resultId) const
+ { return module.getInstruction(resultId)->getImmediateOperand(0); }
StorageClass getStorageClass(Id resultId) const { return getTypeStorageClass(getTypeId(resultId)); }
int getScalarTypeWidth(Id typeId) const
@@ -275,14 +287,22 @@
// For making new constants (will return old constant if the requested one was already made).
Id makeBoolConstant(bool b, bool specConstant = false);
- Id makeInt8Constant(int i, bool specConstant = false) { return makeIntConstant(makeIntType(8), (unsigned)i, specConstant); }
- Id makeUint8Constant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(8), u, specConstant); }
- Id makeInt16Constant(int i, bool specConstant = false) { return makeIntConstant(makeIntType(16), (unsigned)i, specConstant); }
- Id makeUint16Constant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(16), u, specConstant); }
- Id makeIntConstant(int i, bool specConstant = false) { return makeIntConstant(makeIntType(32), (unsigned)i, specConstant); }
- Id makeUintConstant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(32), u, specConstant); }
- Id makeInt64Constant(long long i, bool specConstant = false) { return makeInt64Constant(makeIntType(64), (unsigned long long)i, specConstant); }
- Id makeUint64Constant(unsigned long long u, bool specConstant = false) { return makeInt64Constant(makeUintType(64), u, specConstant); }
+ Id makeInt8Constant(int i, bool specConstant = false)
+ { return makeIntConstant(makeIntType(8), (unsigned)i, specConstant); }
+ Id makeUint8Constant(unsigned u, bool specConstant = false)
+ { return makeIntConstant(makeUintType(8), u, specConstant); }
+ Id makeInt16Constant(int i, bool specConstant = false)
+ { return makeIntConstant(makeIntType(16), (unsigned)i, specConstant); }
+ Id makeUint16Constant(unsigned u, bool specConstant = false)
+ { return makeIntConstant(makeUintType(16), u, specConstant); }
+ Id makeIntConstant(int i, bool specConstant = false)
+ { return makeIntConstant(makeIntType(32), (unsigned)i, specConstant); }
+ Id makeUintConstant(unsigned u, bool specConstant = false)
+ { return makeIntConstant(makeUintType(32), u, specConstant); }
+ Id makeInt64Constant(long long i, bool specConstant = false)
+ { return makeInt64Constant(makeIntType(64), (unsigned long long)i, specConstant); }
+ Id makeUint64Constant(unsigned long long u, bool specConstant = false)
+ { return makeInt64Constant(makeUintType(64), u, specConstant); }
Id makeFloatConstant(float f, bool specConstant = false);
Id makeDoubleConstant(double d, bool specConstant = false);
Id makeFloat16Constant(float f16, bool specConstant = false);
@@ -313,8 +333,8 @@
// Make a shader-style function, and create its entry block if entry is non-zero.
// Return the function, pass back the entry.
// The returned pointer is only valid for the lifetime of this builder.
- Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name, const std::vector<Id>& paramTypes,
- const std::vector<std::vector<Decoration>>& precisions, Block **entry = 0);
+ Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name,
+ const std::vector<Id>& paramTypes, const std::vector<std::vector<Decoration>>& precisions, Block **entry = 0);
// Create a return. An 'implicit' return is one not appearing in the source
// code. In the case of an implicit return, no post-return block is inserted.
@@ -333,10 +353,12 @@
Id createUndefined(Id type);
// Store into an Id and return the l-value
- void createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0);
+ void createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone,
+ spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0);
// Load from an Id and return it
- Id createLoad(Id lValue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0);
+ Id createLoad(Id lValue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone,
+ spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0);
// Create an OpAccessChain instruction
Id createAccessChain(StorageClass, Id base, const std::vector<Id>& offsets);
@@ -495,7 +517,7 @@
// recursion stack can hold the memory for it.
//
void makeSwitch(Id condition, unsigned int control, int numSegments, const std::vector<int>& caseValues,
- const std::vector<int>& valueToSegment, int defaultSegment, std::vector<Block*>& segmentBB); // return argument
+ const std::vector<int>& valueToSegment, int defaultSegment, std::vector<Block*>& segmentBB);
// Add a branch to the innermost switch's merge block.
void addSwitchBreak();
@@ -512,7 +534,7 @@
Block &head, &body, &merge, &continue_target;
private:
LoopBlocks();
- LoopBlocks& operator=(const LoopBlocks&);
+ LoopBlocks& operator=(const LoopBlocks&) = delete;
};
// Start a new loop and prepare the builder to generate code for it. Until
@@ -569,10 +591,13 @@
std::vector<Id> indexChain;
Id instr; // cache the instruction that generates this access chain
std::vector<unsigned> swizzle; // each std::vector element selects the next GLSL component number
- Id component; // a dynamic component index, can coexist with a swizzle, done after the swizzle, NoResult if not present
- Id preSwizzleBaseType; // dereferenced type, before swizzle or component is applied; NoType unless a swizzle or component is present
+ Id component; // a dynamic component index, can coexist with a swizzle,
+ // done after the swizzle, NoResult if not present
+ Id preSwizzleBaseType; // dereferenced type, before swizzle or component is applied;
+ // NoType unless a swizzle or component is present
bool isRValue; // true if 'base' is an r-value, otherwise, base is an l-value
- unsigned int alignment; // bitwise OR of alignment values passed in. Accumulates worst alignment. Only tracks base and (optional) component selection alignment.
+ unsigned int alignment; // bitwise OR of alignment values passed in. Accumulates worst alignment.
+ // Only tracks base and (optional) component selection alignment.
// Accumulate whether anything in the chain of structures has coherent decorations.
struct CoherentFlags {
@@ -583,12 +608,17 @@
CoherentFlags operator |=(const CoherentFlags &other) { return *this; }
#else
bool isVolatile() const { return volatil; }
+ bool anyCoherent() const {
+ return coherent || devicecoherent || queuefamilycoherent || workgroupcoherent ||
+ subgroupcoherent || shadercallcoherent;
+ }
unsigned coherent : 1;
unsigned devicecoherent : 1;
unsigned queuefamilycoherent : 1;
unsigned workgroupcoherent : 1;
unsigned subgroupcoherent : 1;
+ unsigned shadercallcoherent : 1;
unsigned nonprivate : 1;
unsigned volatil : 1;
unsigned isImage : 1;
@@ -599,6 +629,7 @@
queuefamilycoherent = 0;
workgroupcoherent = 0;
subgroupcoherent = 0;
+ shadercallcoherent = 0;
nonprivate = 0;
volatil = 0;
isImage = 0;
@@ -610,6 +641,7 @@
queuefamilycoherent |= other.queuefamilycoherent;
workgroupcoherent |= other.workgroupcoherent;
subgroupcoherent |= other.subgroupcoherent;
+ shadercallcoherent |= other.shadercallcoherent;
nonprivate |= other.nonprivate;
volatil |= other.volatil;
isImage |= other.isImage;
@@ -655,11 +687,13 @@
}
// push new swizzle onto the end of any existing swizzle, merging into a single swizzle
- void accessChainPushSwizzle(std::vector<unsigned>& swizzle, Id preSwizzleBaseType, AccessChain::CoherentFlags coherentFlags, unsigned int alignment);
+ void accessChainPushSwizzle(std::vector<unsigned>& swizzle, Id preSwizzleBaseType,
+ AccessChain::CoherentFlags coherentFlags, unsigned int alignment);
// push a dynamic component selection onto the access chain, only applicable with a
// non-trivial swizzle or no swizzle
- void accessChainPushComponent(Id component, Id preSwizzleBaseType, AccessChain::CoherentFlags coherentFlags, unsigned int alignment)
+ void accessChainPushComponent(Id component, Id preSwizzleBaseType, AccessChain::CoherentFlags coherentFlags,
+ unsigned int alignment)
{
if (accessChain.swizzle.size() != 1) {
accessChain.component = component;
@@ -671,10 +705,18 @@
}
// use accessChain and swizzle to store value
- void accessChainStore(Id rvalue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0);
+ void accessChainStore(Id rvalue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone,
+ spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0);
// use accessChain and swizzle to load an r-value
- Id accessChainLoad(Decoration precision, Decoration nonUniform, Id ResultType, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0);
+ Id accessChainLoad(Decoration precision, Decoration nonUniform, Id ResultType,
+ spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax,
+ unsigned int alignment = 0);
+
+ // Return whether or not the access chain can be represented in SPIR-V
+ // as an l-value.
+ // E.g., a[3].yx cannot be, while a[3].y and a[3].y[x] can be.
+ bool isSpvLvalue() const { return accessChain.swizzle.size() <= 1; }
// get the direct pointer for an l-value
Id accessChainGetLValue();
@@ -683,22 +725,28 @@
// 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<unsigned int>&) const;
void createBranch(Block* block);
void createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock);
- void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control, const std::vector<unsigned int>& operands);
+ void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control,
+ const std::vector<unsigned int>& operands);
// Sets to generate opcode for specialization constants.
void setToSpecConstCodeGenMode() { generatingOpCodeForSpecConst = true; }
@@ -724,7 +772,8 @@
void dumpSourceInstructions(const spv::Id fileId, const std::string& text, std::vector<unsigned int>&) const;
void dumpInstructions(std::vector<unsigned int>&, const std::vector<std::unique_ptr<Instruction> >&) const;
void dumpModuleProcesses(std::vector<unsigned int>&) const;
- spv::MemoryAccessMask sanitizeMemoryAccessForStorageClass(spv::MemoryAccessMask memoryAccess, StorageClass sc) const;
+ spv::MemoryAccessMask sanitizeMemoryAccessForStorageClass(spv::MemoryAccessMask memoryAccess, StorageClass sc)
+ const;
unsigned int spvVersion; // the version of SPIR-V to emit in the header
SourceLanguage source;
@@ -759,10 +808,14 @@
std::vector<std::unique_ptr<Instruction> > externals;
std::vector<std::unique_ptr<Function> > functions;
- // not output, internally used for quick & dirty canonical (unique) creation
- std::unordered_map<unsigned int, std::vector<Instruction*>> groupedConstants; // map type opcodes to constant inst.
- std::unordered_map<unsigned int, std::vector<Instruction*>> groupedStructConstants; // map struct-id to constant instructions
- std::unordered_map<unsigned int, std::vector<Instruction*>> groupedTypes; // map type opcodes to type instructions
+ // not output, internally used for quick & dirty canonical (unique) creation
+
+ // map type opcodes to constant inst.
+ std::unordered_map<unsigned int, std::vector<Instruction*>> groupedConstants;
+ // map struct-id to constant instructions
+ std::unordered_map<unsigned int, std::vector<Instruction*>> groupedStructConstants;
+ // map type opcodes to type instructions
+ std::unordered_map<unsigned int, std::vector<Instruction*>> groupedTypes;
// stack of switches
std::stack<Block*> switchMerges;
diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp
index 832ee3e..d40174d 100644
--- a/SPIRV/SpvPostProcess.cpp
+++ b/SPIRV/SpvPostProcess.cpp
@@ -39,6 +39,7 @@
#include <cassert>
#include <cstdlib>
+#include <unordered_map>
#include <unordered_set>
#include <algorithm>
@@ -57,6 +58,7 @@
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.
@@ -318,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<const Block*> reachableBlocks;
+ std::unordered_map<Block*, Block*> headerForUnreachableContinue;
+ std::unordered_set<Block*> unreachableMerges;
std::unordered_set<Id> unreachableDefinitions;
// Collect IDs defined in unreachable blocks. For each function, label the
// reachable blocks first. Then for each unreachable block, collect the
@@ -336,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<Instruction>& I) -> bool {
@@ -353,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
@@ -374,13 +404,6 @@
}
}
- // 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<Instruction>& 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;
@@ -414,5 +437,14 @@
}
}
}
+#endif
+
+// comment in header
+void Builder::postProcess() {
+ postProcessCFG();
+#ifndef GLSLANG_WEB
+ postProcessFeatures();
+#endif
+}
}; // end spv namespace
diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp
index 698f154..1e968ba 100644
--- a/SPIRV/SpvTools.cpp
+++ b/SPIRV/SpvTools.cpp
@@ -1,6 +1,6 @@
//
// Copyright (C) 2014-2016 LunarG, Inc.
-// Copyright (C) 2018 Google, Inc.
+// Copyright (C) 2018-2020 Google, Inc.
//
// All rights reserved.
//
@@ -67,6 +67,8 @@
logger->missingFunctionality("Target version for SPIRV-Tools validator");
return spv_target_env::SPV_ENV_VULKAN_1_1;
}
+ case glslang::EShTargetVulkan_1_2:
+ return spv_target_env::SPV_ENV_VULKAN_1_2;
default:
break;
}
@@ -128,8 +130,8 @@
// Apply the SPIRV-Tools optimizer to generated SPIR-V, for the purpose of
// legalizing HLSL SPIR-V.
-void SpirvToolsLegalize(const glslang::TIntermediate&, std::vector<unsigned int>& spirv,
- spv::SpvBuildLogger*, const SpvOptions* options)
+void SpirvToolsLegalize(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
+ spv::SpvBuildLogger* logger, const SpvOptions* options)
{
spv_target_env target_env = SPV_ENV_UNIVERSAL_1_2;
@@ -173,6 +175,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 +199,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());
@@ -206,7 +207,8 @@
}
spvtools::OptimizerOptions spvOptOptions;
- spvOptOptions.set_run_validator(false); // The validator may run as a seperate step later on
+ optimizer.SetTargetEnv(MapToSpirvToolsEnv(intermediate.getSpv(), logger));
+ spvOptOptions.set_run_validator(false); // The validator may run as a separate step later on
optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions);
}
diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h
index 7422d01..59c914d 100644
--- a/SPIRV/SpvTools.h
+++ b/SPIRV/SpvTools.h
@@ -46,7 +46,7 @@
#include <ostream>
#endif
-#include "../glslang/MachineIndependent/localintermediate.h"
+#include "glslang/MachineIndependent/localintermediate.h"
#include "Logger.h"
namespace glslang {
diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp
index 930e799..4faa89e 100644
--- a/SPIRV/disassemble.cpp
+++ b/SPIRV/disassemble.cpp
@@ -75,6 +75,7 @@
GLSLextAMDInst,
GLSLextNVInst,
OpenCLExtInst,
+ NonSemanticDebugPrintfExtInst,
};
// Container class for a single instance of a SPIR-V stream, with methods for disassembly.
@@ -480,8 +481,12 @@
if (opCode == OpExtInst) {
ExtInstSet extInstSet = GLSL450Inst;
const char* name = idDescriptor[stream[word - 2]].c_str();
- if (0 == memcmp("OpenCL", name, 6)) {
+ if (strcmp("OpenCL.std", name) == 0) {
extInstSet = OpenCLExtInst;
+ } else if (strcmp("OpenCL.DebugInfo.100", name) == 0) {
+ extInstSet = OpenCLExtInst;
+ } else if (strcmp("NonSemantic.DebugPrintf", name) == 0) {
+ extInstSet = NonSemanticDebugPrintfExtInst;
} 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 ||
@@ -505,6 +510,8 @@
}
else if (extInstSet == GLSLextNVInst) {
out << "(" << GLSLextNVGetDebugNames(name, entrypoint) << ")";
+ } else if (extInstSet == NonSemanticDebugPrintfExtInst) {
+ out << "(DebugPrintf)";
}
}
break;
diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp
index b0bcdfb..b1f2b82 100644
--- a/SPIRV/doc.cpp
+++ b/SPIRV/doc.cpp
@@ -1,5 +1,6 @@
//
// Copyright (C) 2014-2015 LunarG, Inc.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -99,12 +100,12 @@
default: return "Bad";
- case ExecutionModelRayGenerationNV: return "RayGenerationNV";
- case ExecutionModelIntersectionNV: return "IntersectionNV";
- case ExecutionModelAnyHitNV: return "AnyHitNV";
- case ExecutionModelClosestHitNV: return "ClosestHitNV";
- case ExecutionModelMissNV: return "MissNV";
- case ExecutionModelCallableNV: return "CallableNV";
+ case ExecutionModelRayGenerationKHR: return "RayGenerationKHR";
+ case ExecutionModelIntersectionKHR: return "IntersectionKHR";
+ case ExecutionModelAnyHitKHR: return "AnyHitKHR";
+ case ExecutionModelClosestHitKHR: return "ClosestHitKHR";
+ case ExecutionModelMissKHR: return "MissKHR";
+ case ExecutionModelCallableKHR: return "CallableKHR";
}
}
@@ -209,12 +210,12 @@
case 11: return "Image";
case 12: return "StorageBuffer";
- case StorageClassRayPayloadNV: return "RayPayloadNV";
- case StorageClassHitAttributeNV: return "HitAttributeNV";
- case StorageClassIncomingRayPayloadNV: return "IncomingRayPayloadNV";
- case StorageClassShaderRecordBufferNV: return "ShaderRecordBufferNV";
- case StorageClassCallableDataNV: return "CallableDataNV";
- case StorageClassIncomingCallableDataNV: return "IncomingCallableDataNV";
+ case StorageClassRayPayloadKHR: return "RayPayloadKHR";
+ case StorageClassHitAttributeKHR: return "HitAttributeKHR";
+ case StorageClassIncomingRayPayloadKHR: return "IncomingRayPayloadKHR";
+ case StorageClassShaderRecordBufferKHR: return "ShaderRecordBufferKHR";
+ case StorageClassCallableDataKHR: return "CallableDataKHR";
+ case StorageClassIncomingCallableDataKHR: return "IncomingCallableDataKHR";
case StorageClassPhysicalStorageBufferEXT: return "PhysicalStorageBufferEXT";
@@ -361,32 +362,33 @@
case 4996: return "BaryCoordSmoothCentroidAMD";
case 4997: return "BaryCoordSmoothSampleAMD";
case 4998: return "BaryCoordPullModelAMD";
- case BuiltInLaunchIdNV: return "LaunchIdNV";
- case BuiltInLaunchSizeNV: return "LaunchSizeNV";
- case BuiltInWorldRayOriginNV: return "WorldRayOriginNV";
- case BuiltInWorldRayDirectionNV: return "WorldRayDirectionNV";
- case BuiltInObjectRayOriginNV: return "ObjectRayOriginNV";
- case BuiltInObjectRayDirectionNV: return "ObjectRayDirectionNV";
- case BuiltInRayTminNV: return "RayTminNV";
- case BuiltInRayTmaxNV: return "RayTmaxNV";
- case BuiltInInstanceCustomIndexNV: return "InstanceCustomIndexNV";
- case BuiltInObjectToWorldNV: return "ObjectToWorldNV";
- case BuiltInWorldToObjectNV: return "WorldToObjectNV";
- case BuiltInHitTNV: return "HitTNV";
- case BuiltInHitKindNV: return "HitKindNV";
- case BuiltInIncomingRayFlagsNV: return "IncomingRayFlagsNV";
- case BuiltInViewportMaskNV: return "ViewportMaskNV";
- case BuiltInSecondaryPositionNV: return "SecondaryPositionNV";
- case BuiltInSecondaryViewportMaskNV: return "SecondaryViewportMaskNV";
- case BuiltInPositionPerViewNV: return "PositionPerViewNV";
- case BuiltInViewportMaskPerViewNV: return "ViewportMaskPerViewNV";
+ case BuiltInLaunchIdKHR: return "LaunchIdKHR";
+ case BuiltInLaunchSizeKHR: return "LaunchSizeKHR";
+ case BuiltInWorldRayOriginKHR: return "WorldRayOriginKHR";
+ case BuiltInWorldRayDirectionKHR: return "WorldRayDirectionKHR";
+ case BuiltInObjectRayOriginKHR: return "ObjectRayOriginKHR";
+ case BuiltInObjectRayDirectionKHR: return "ObjectRayDirectionKHR";
+ case BuiltInRayTminKHR: return "RayTminKHR";
+ case BuiltInRayTmaxKHR: return "RayTmaxKHR";
+ case BuiltInInstanceCustomIndexKHR: return "InstanceCustomIndexKHR";
+ case BuiltInRayGeometryIndexKHR: return "RayGeometryIndexKHR";
+ case BuiltInObjectToWorldKHR: return "ObjectToWorldKHR";
+ case BuiltInWorldToObjectKHR: return "WorldToObjectKHR";
+ case BuiltInHitTKHR: return "HitTKHR";
+ case BuiltInHitKindKHR: return "HitKindKHR";
+ case BuiltInIncomingRayFlagsKHR: return "IncomingRayFlagsKHR";
+ case BuiltInViewportMaskNV: return "ViewportMaskNV";
+ case BuiltInSecondaryPositionNV: return "SecondaryPositionNV";
+ case BuiltInSecondaryViewportMaskNV: return "SecondaryViewportMaskNV";
+ case BuiltInPositionPerViewNV: return "PositionPerViewNV";
+ case BuiltInViewportMaskPerViewNV: return "ViewportMaskPerViewNV";
// case BuiltInFragmentSizeNV: return "FragmentSizeNV"; // superseded by BuiltInFragSizeEXT
// case BuiltInInvocationsPerPixelNV: return "InvocationsPerPixelNV"; // superseded by BuiltInFragInvocationCountEXT
- case BuiltInBaryCoordNV: return "BaryCoordNV";
- case BuiltInBaryCoordNoPerspNV: return "BaryCoordNoPerspNV";
+ case BuiltInBaryCoordNV: return "BaryCoordNV";
+ case BuiltInBaryCoordNoPerspNV: return "BaryCoordNoPerspNV";
- case BuiltInFragSizeEXT: return "FragSizeEXT";
- case BuiltInFragInvocationCountEXT: return "FragInvocationCountEXT";
+ case BuiltInFragSizeEXT: return "FragSizeEXT";
+ case BuiltInFragInvocationCountEXT: return "FragInvocationCountEXT";
case 5264: return "FullyCoveredEXT";
@@ -890,6 +892,9 @@
case CapabilityPerViewAttributesNV: return "PerViewAttributesNV";
case CapabilityGroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV";
case CapabilityRayTracingNV: return "RayTracingNV";
+ case CapabilityRayTracingProvisionalKHR: return "RayTracingProvisionalKHR";
+ case CapabilityRayQueryProvisionalKHR: return "RayQueryProvisionalKHR";
+ case CapabilityRayTraversalPrimitiveCullingProvisionalKHR: return "RayTraversalPrimitiveCullingProvisionalKHR";
case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV";
case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV";
case CapabilityFragmentBarycentricNV: return "FragmentBarycentricNV";
@@ -931,6 +936,8 @@
case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT";
case CapabilityShaderClockKHR: return "ShaderClockKHR";
+ case CapabilityIntegerFunctions2INTEL: return "CapabilityIntegerFunctions2INTEL";
+
default: return "Bad";
}
}
@@ -1324,15 +1331,40 @@
case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE";
case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV";
- case OpReportIntersectionNV: return "OpReportIntersectionNV";
- case OpIgnoreIntersectionNV: return "OpIgnoreIntersectionNV";
- case OpTerminateRayNV: return "OpTerminateRayNV";
- case OpTraceNV: return "OpTraceNV";
- case OpTypeAccelerationStructureNV: return "OpTypeAccelerationStructureNV";
- case OpExecuteCallableNV: return "OpExecuteCallableNV";
+ case OpReportIntersectionKHR: return "OpReportIntersectionKHR";
+ case OpIgnoreIntersectionKHR: return "OpIgnoreIntersectionKHR";
+ case OpTerminateRayKHR: return "OpTerminateRayKHR";
+ case OpTraceRayKHR: return "OpTraceRayKHR";
+ case OpTypeAccelerationStructureKHR: return "OpTypeAccelerationStructureKHR";
+ case OpExecuteCallableKHR: return "OpExecuteCallableKHR";
case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV";
case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV";
+ case OpTypeRayQueryProvisionalKHR: return "OpTypeRayQueryProvisionalKHR";
+ case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR";
+ case OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR";
+ case OpRayQueryGenerateIntersectionKHR: return "OpRayQueryGenerateIntersectionKHR";
+ case OpRayQueryConfirmIntersectionKHR: return "OpRayQueryConfirmIntersectionKHR";
+ case OpRayQueryProceedKHR: return "OpRayQueryProceedKHR";
+ case OpRayQueryGetIntersectionTypeKHR: return "OpRayQueryGetIntersectionTypeKHR";
+ case OpRayQueryGetRayTMinKHR: return "OpRayQueryGetRayTMinKHR";
+ case OpRayQueryGetRayFlagsKHR: return "OpRayQueryGetRayFlagsKHR";
+ case OpRayQueryGetIntersectionTKHR: return "OpRayQueryGetIntersectionTKHR";
+ case OpRayQueryGetIntersectionInstanceCustomIndexKHR: return "OpRayQueryGetIntersectionInstanceCustomIndexKHR";
+ case OpRayQueryGetIntersectionInstanceIdKHR: return "OpRayQueryGetIntersectionInstanceIdKHR";
+ case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: return "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR";
+ case OpRayQueryGetIntersectionGeometryIndexKHR: return "OpRayQueryGetIntersectionGeometryIndexKHR";
+ case OpRayQueryGetIntersectionPrimitiveIndexKHR: return "OpRayQueryGetIntersectionPrimitiveIndexKHR";
+ case OpRayQueryGetIntersectionBarycentricsKHR: return "OpRayQueryGetIntersectionBarycentricsKHR";
+ case OpRayQueryGetIntersectionFrontFaceKHR: return "OpRayQueryGetIntersectionFrontFaceKHR";
+ case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: return "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR";
+ case OpRayQueryGetIntersectionObjectRayDirectionKHR: return "OpRayQueryGetIntersectionObjectRayDirectionKHR";
+ case OpRayQueryGetIntersectionObjectRayOriginKHR: return "OpRayQueryGetIntersectionObjectRayOriginKHR";
+ case OpRayQueryGetWorldRayDirectionKHR: return "OpRayQueryGetWorldRayDirectionKHR";
+ case OpRayQueryGetWorldRayOriginKHR: return "OpRayQueryGetWorldRayOriginKHR";
+ case OpRayQueryGetIntersectionObjectToWorldKHR: return "OpRayQueryGetIntersectionObjectToWorldKHR";
+ case OpRayQueryGetIntersectionWorldToObjectKHR: return "OpRayQueryGetIntersectionWorldToObjectKHR";
+
case OpTypeCooperativeMatrixNV: return "OpTypeCooperativeMatrixNV";
case OpCooperativeMatrixLoadNV: return "OpCooperativeMatrixLoadNV";
case OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV";
@@ -2692,31 +2724,125 @@
InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X");
- InstructionDesc[OpTypeAccelerationStructureNV].setResultAndType(true, false);
+ InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false);
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'NV Acceleration Structure'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Flags'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'Cull Mask'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Offset'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Stride'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'Miss Index'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Origin'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMin'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Direction'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMax'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'Payload'");
- InstructionDesc[OpTraceNV].setResultAndType(false, false);
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'NV Acceleration Structure'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Flags'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Cull Mask'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Offset'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Stride'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Miss Index'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Origin'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMin'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Direction'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMax'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Payload'");
+ InstructionDesc[OpTraceRayKHR].setResultAndType(false, false);
- InstructionDesc[OpReportIntersectionNV].operands.push(OperandId, "'Hit Parameter'");
- InstructionDesc[OpReportIntersectionNV].operands.push(OperandId, "'Hit Kind'");
+ InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Parameter'");
+ InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Kind'");
- InstructionDesc[OpIgnoreIntersectionNV].setResultAndType(false, false);
+ InstructionDesc[OpIgnoreIntersectionKHR].setResultAndType(false, false);
- InstructionDesc[OpTerminateRayNV].setResultAndType(false, false);
+ InstructionDesc[OpTerminateRayKHR].setResultAndType(false, false);
- InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "SBT Record Index");
- InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "CallableData ID");
- InstructionDesc[OpExecuteCallableNV].setResultAndType(false, false);
+ InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "SBT Record Index");
+ InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "CallableData ID");
+ InstructionDesc[OpExecuteCallableKHR].setResultAndType(false, false);
+
+ // Ray Query
+ InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false);
+ InstructionDesc[OpTypeRayQueryProvisionalKHR].setResultAndType(true, false);
+
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'AccelerationS'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayFlags'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'CullMask'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Origin'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmin'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Direction'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmax'");
+ InstructionDesc[OpRayQueryInitializeKHR].setResultAndType(false, false);
+
+ InstructionDesc[OpRayQueryTerminateKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryTerminateKHR].setResultAndType(false, false);
+
+ InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'THit'");
+ InstructionDesc[OpRayQueryGenerateIntersectionKHR].setResultAndType(false, false);
+
+ InstructionDesc[OpRayQueryConfirmIntersectionKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryConfirmIntersectionKHR].setResultAndType(false, false);
+
+ InstructionDesc[OpRayQueryProceedKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryProceedKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionTypeKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetRayTMinKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetRayTMinKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetRayFlagsKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetRayFlagsKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionTKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetWorldRayOriginKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetWorldRayOriginKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true);
InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coordinate'");
diff --git a/SPIRV/hex_float.h b/SPIRV/hex_float.h
index 905b21a..8be8e9f 100644
--- a/SPIRV/hex_float.h
+++ b/SPIRV/hex_float.h
@@ -784,8 +784,8 @@
if (val.isInfinity()) {
// Fail the parse. Emulate standard behaviour by setting the value to
// the closest normal value, and set the fail bit on the stream.
- value.set_value((value.isNegative() | negate_value) ? T::lowest()
- : T::max());
+ value.set_value((value.isNegative() || negate_value) ? T::lowest()
+ : T::max());
is.setstate(std::ios_base::failbit);
}
return is;
diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp
index 1e96f7b..dae36cf 100644
--- a/SPIRV/spirv.hpp
+++ b/SPIRV/spirv.hpp
@@ -1,4 +1,4 @@
-// Copyright (c) 2014-2019 The Khronos Group Inc.
+// Copyright (c) 2014-2020 The Khronos Group Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and/or associated documentation files (the "Materials"),
@@ -49,12 +49,12 @@
typedef unsigned int Id;
-#define SPV_VERSION 0x10400
-#define SPV_REVISION 1
+#define SPV_VERSION 0x10500
+#define SPV_REVISION 3
static const unsigned int MagicNumber = 0x07230203;
-static const unsigned int Version = 0x00010400;
-static const unsigned int Revision = 1;
+static const unsigned int Version = 0x00010500;
+static const unsigned int Revision = 3;
static const unsigned int OpCodeMask = 0xffff;
static const unsigned int WordCountShift = 16;
@@ -78,11 +78,17 @@
ExecutionModelKernel = 6,
ExecutionModelTaskNV = 5267,
ExecutionModelMeshNV = 5268,
+ ExecutionModelRayGenerationKHR = 5313,
ExecutionModelRayGenerationNV = 5313,
+ ExecutionModelIntersectionKHR = 5314,
ExecutionModelIntersectionNV = 5314,
+ ExecutionModelAnyHitKHR = 5315,
ExecutionModelAnyHitNV = 5315,
+ ExecutionModelClosestHitKHR = 5316,
ExecutionModelClosestHitNV = 5316,
+ ExecutionModelMissKHR = 5317,
ExecutionModelMissNV = 5317,
+ ExecutionModelCallableKHR = 5318,
ExecutionModelCallableNV = 5318,
ExecutionModelMax = 0x7fffffff,
};
@@ -179,11 +185,17 @@
StorageClassAtomicCounter = 10,
StorageClassImage = 11,
StorageClassStorageBuffer = 12,
+ StorageClassCallableDataKHR = 5328,
StorageClassCallableDataNV = 5328,
+ StorageClassIncomingCallableDataKHR = 5329,
StorageClassIncomingCallableDataNV = 5329,
+ StorageClassRayPayloadKHR = 5338,
StorageClassRayPayloadNV = 5338,
+ StorageClassHitAttributeKHR = 5339,
StorageClassHitAttributeNV = 5339,
+ StorageClassIncomingRayPayloadKHR = 5342,
StorageClassIncomingRayPayloadNV = 5342,
+ StorageClassShaderRecordBufferKHR = 5343,
StorageClassShaderRecordBufferNV = 5343,
StorageClassPhysicalStorageBuffer = 5349,
StorageClassPhysicalStorageBufferEXT = 5349,
@@ -558,20 +570,35 @@
BuiltInFragmentSizeNV = 5292,
BuiltInFragInvocationCountEXT = 5293,
BuiltInInvocationsPerPixelNV = 5293,
+ BuiltInLaunchIdKHR = 5319,
BuiltInLaunchIdNV = 5319,
+ BuiltInLaunchSizeKHR = 5320,
BuiltInLaunchSizeNV = 5320,
+ BuiltInWorldRayOriginKHR = 5321,
BuiltInWorldRayOriginNV = 5321,
+ BuiltInWorldRayDirectionKHR = 5322,
BuiltInWorldRayDirectionNV = 5322,
+ BuiltInObjectRayOriginKHR = 5323,
BuiltInObjectRayOriginNV = 5323,
+ BuiltInObjectRayDirectionKHR = 5324,
BuiltInObjectRayDirectionNV = 5324,
+ BuiltInRayTminKHR = 5325,
BuiltInRayTminNV = 5325,
+ BuiltInRayTmaxKHR = 5326,
BuiltInRayTmaxNV = 5326,
+ BuiltInInstanceCustomIndexKHR = 5327,
BuiltInInstanceCustomIndexNV = 5327,
+ BuiltInObjectToWorldKHR = 5330,
BuiltInObjectToWorldNV = 5330,
+ BuiltInWorldToObjectKHR = 5331,
BuiltInWorldToObjectNV = 5331,
+ BuiltInHitTKHR = 5332,
BuiltInHitTNV = 5332,
+ BuiltInHitKindKHR = 5333,
BuiltInHitKindNV = 5333,
+ BuiltInIncomingRayFlagsKHR = 5351,
BuiltInIncomingRayFlagsNV = 5351,
+ BuiltInRayGeometryIndexKHR = 5352,
BuiltInWarpsPerSMNV = 5374,
BuiltInSMCountNV = 5375,
BuiltInWarpIDNV = 5376,
@@ -709,6 +736,7 @@
ScopeInvocation = 4,
ScopeQueueFamily = 5,
ScopeQueueFamilyKHR = 5,
+ ScopeShaderCallKHR = 6,
ScopeMax = 0x7fffffff,
};
@@ -833,6 +861,8 @@
CapabilitySignedZeroInfNanPreserve = 4466,
CapabilityRoundingModeRTE = 4467,
CapabilityRoundingModeRTZ = 4468,
+ CapabilityRayQueryProvisionalKHR = 4471,
+ CapabilityRayTraversalPrimitiveCullingProvisionalKHR = 4478,
CapabilityFloat16ImageAMD = 5008,
CapabilityImageGatherBiasLodAMD = 5009,
CapabilityFragmentMaskAMD = 5010,
@@ -886,6 +916,7 @@
CapabilityPhysicalStorageBufferAddresses = 5347,
CapabilityPhysicalStorageBufferAddressesEXT = 5347,
CapabilityComputeDerivativeGroupLinearNV = 5350,
+ CapabilityRayTracingProvisionalKHR = 5353,
CapabilityCooperativeMatrixNV = 5357,
CapabilityFragmentShaderSampleInterlockEXT = 5363,
CapabilityFragmentShaderShadingRateInterlockEXT = 5372,
@@ -903,6 +934,53 @@
CapabilityMax = 0x7fffffff,
};
+enum RayFlagsShift {
+ RayFlagsOpaqueKHRShift = 0,
+ RayFlagsNoOpaqueKHRShift = 1,
+ RayFlagsTerminateOnFirstHitKHRShift = 2,
+ RayFlagsSkipClosestHitShaderKHRShift = 3,
+ RayFlagsCullBackFacingTrianglesKHRShift = 4,
+ RayFlagsCullFrontFacingTrianglesKHRShift = 5,
+ RayFlagsCullOpaqueKHRShift = 6,
+ RayFlagsCullNoOpaqueKHRShift = 7,
+ RayFlagsSkipTrianglesKHRShift = 8,
+ RayFlagsSkipAABBsKHRShift = 9,
+ RayFlagsMax = 0x7fffffff,
+};
+
+enum RayFlagsMask {
+ RayFlagsMaskNone = 0,
+ RayFlagsOpaqueKHRMask = 0x00000001,
+ RayFlagsNoOpaqueKHRMask = 0x00000002,
+ RayFlagsTerminateOnFirstHitKHRMask = 0x00000004,
+ RayFlagsSkipClosestHitShaderKHRMask = 0x00000008,
+ RayFlagsCullBackFacingTrianglesKHRMask = 0x00000010,
+ RayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020,
+ RayFlagsCullOpaqueKHRMask = 0x00000040,
+ RayFlagsCullNoOpaqueKHRMask = 0x00000080,
+ RayFlagsSkipTrianglesKHRMask = 0x00000100,
+ RayFlagsSkipAABBsKHRMask = 0x00000200,
+};
+
+enum RayQueryIntersection {
+ RayQueryIntersectionRayQueryCandidateIntersectionKHR = 0,
+ RayQueryIntersectionRayQueryCommittedIntersectionKHR = 1,
+ RayQueryIntersectionMax = 0x7fffffff,
+};
+
+enum RayQueryCommittedIntersectionType {
+ RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0,
+ RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1,
+ RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2,
+ RayQueryCommittedIntersectionTypeMax = 0x7fffffff,
+};
+
+enum RayQueryCandidateIntersectionType {
+ RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0,
+ RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1,
+ RayQueryCandidateIntersectionTypeMax = 0x7fffffff,
+};
+
enum Op {
OpNop = 0,
OpUndef = 1,
@@ -1254,6 +1332,13 @@
OpSubgroupAnyKHR = 4429,
OpSubgroupAllEqualKHR = 4430,
OpSubgroupReadInvocationKHR = 4432,
+ OpTypeRayQueryProvisionalKHR = 4472,
+ OpRayQueryInitializeKHR = 4473,
+ OpRayQueryTerminateKHR = 4474,
+ OpRayQueryGenerateIntersectionKHR = 4475,
+ OpRayQueryConfirmIntersectionKHR = 4476,
+ OpRayQueryProceedKHR = 4477,
+ OpRayQueryGetIntersectionTypeKHR = 4479,
OpGroupIAddNonUniformAMD = 5000,
OpGroupFAddNonUniformAMD = 5001,
OpGroupFMinNonUniformAMD = 5002,
@@ -1268,11 +1353,17 @@
OpImageSampleFootprintNV = 5283,
OpGroupNonUniformPartitionNV = 5296,
OpWritePackedPrimitiveIndices4x8NV = 5299,
+ OpReportIntersectionKHR = 5334,
OpReportIntersectionNV = 5334,
+ OpIgnoreIntersectionKHR = 5335,
OpIgnoreIntersectionNV = 5335,
+ OpTerminateRayKHR = 5336,
OpTerminateRayNV = 5336,
OpTraceNV = 5337,
+ OpTraceRayKHR = 5337,
+ OpTypeAccelerationStructureKHR = 5341,
OpTypeAccelerationStructureNV = 5341,
+ OpExecuteCallableKHR = 5344,
OpExecuteCallableNV = 5344,
OpTypeCooperativeMatrixNV = 5358,
OpCooperativeMatrixLoadNV = 5359,
@@ -1429,6 +1520,23 @@
OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
+ OpRayQueryGetRayTMinKHR = 6016,
+ OpRayQueryGetRayFlagsKHR = 6017,
+ OpRayQueryGetIntersectionTKHR = 6018,
+ OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
+ OpRayQueryGetIntersectionInstanceIdKHR = 6020,
+ OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
+ OpRayQueryGetIntersectionGeometryIndexKHR = 6022,
+ OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
+ OpRayQueryGetIntersectionBarycentricsKHR = 6024,
+ OpRayQueryGetIntersectionFrontFaceKHR = 6025,
+ OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
+ OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
+ OpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
+ OpRayQueryGetWorldRayDirectionKHR = 6029,
+ OpRayQueryGetWorldRayOriginKHR = 6030,
+ OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
+ OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
OpMax = 0x7fffffff,
};
@@ -1787,6 +1895,13 @@
case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
+ case OpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
+ case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
+ case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
+ case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+ case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+ case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
@@ -1960,6 +2075,23 @@
case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
+ case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
}
}
#endif /* SPV_ENABLE_UTILITY_CODE */
@@ -1974,6 +2106,7 @@
inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
+inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
} // end namespace spv
diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h
index 7e2d4bc..6523035 100755
--- a/SPIRV/spvIR.h
+++ b/SPIRV/spvIR.h
@@ -226,6 +226,35 @@
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();
+ addInstruction(std::unique_ptr<Instruction>(new Instruction(OpUnreachable)));
+ }
+ // 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<Instruction>(branch));
+ successors.push_back(header);
+ }
+
bool isTerminated() const
{
switch (instructions.back()->getOpCode()) {
@@ -235,6 +264,7 @@
case OpKill:
case OpReturn:
case OpReturnValue:
+ case OpUnreachable:
return true;
default:
return false;
@@ -268,10 +298,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<void(Block*)> 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<void(Block*, ReachReason, Block* header)> callback);
//
// SPIR-V IR Function.
@@ -321,7 +365,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 --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt
index 5cea53d..591ac34 100644
--- a/StandAlone/CMakeLists.txt
+++ b/StandAlone/CMakeLists.txt
@@ -1,28 +1,29 @@
add_library(glslang-default-resource-limits
- ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp)
+ ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/resource_limits_c.cpp)
set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang)
set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON)
target_include_directories(glslang-default-resource-limits
- PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
- PUBLIC ${PROJECT_SOURCE_DIR})
+ PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+ PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>)
+
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 +33,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
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
+
+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 --git a/StandAlone/ResourceLimits.cpp b/StandAlone/ResourceLimits.cpp
index 028caa6..7c7f4c4 100644
--- a/StandAlone/ResourceLimits.cpp
+++ b/StandAlone/ResourceLimits.cpp
@@ -134,6 +134,7 @@
/* .maxTaskWorkGroupSizeY_NV = */ 1,
/* .maxTaskWorkGroupSizeZ_NV = */ 1,
/* .maxMeshViewCountNV = */ 4,
+ /* .maxDualSourceDrawBuffersEXT = */ 1,
/* .limits = */ {
/* .nonInductiveForLoops = */ 1,
@@ -243,6 +244,7 @@
<< "MaxTaskWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_NV << "\n"
<< "MaxTaskWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_NV << "\n"
<< "MaxMeshViewCountNV " << DefaultTBuiltInResource.maxMeshViewCountNV << "\n"
+ << "MaxDualSourceDrawBuffersEXT " << DefaultTBuiltInResource.maxDualSourceDrawBuffersEXT << "\n"
<< "nonInductiveForLoops " << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n"
<< "whileLoops " << DefaultTBuiltInResource.limits.whileLoops << "\n"
<< "doWhileLoops " << DefaultTBuiltInResource.limits.doWhileLoops << "\n"
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 4be3a4f..a7ce53d 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -1,6 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2013-2016 LunarG, Inc.
+// Copyright (C) 2016-2020 Google, Inc.
//
// All rights reserved.
//
@@ -204,7 +205,7 @@
text.append("#define ");
fixLine(def);
- Processes.push_back("D");
+ Processes.push_back("define-macro ");
Processes.back().append(def);
// The first "=" needs to turn into a space
@@ -222,7 +223,7 @@
text.append("#undef ");
fixLine(undef);
- Processes.push_back("U");
+ Processes.push_back("undef-macro ");
Processes.back().append(undef);
text.append(undef);
@@ -241,6 +242,7 @@
std::string text; // contents of preamble
};
+// Track the user's #define and #undef from the command line.
TPreamble UserPreamble;
//
@@ -257,12 +259,12 @@
case EShLangGeometry: name = "geom.spv"; break;
case EShLangFragment: name = "frag.spv"; break;
case EShLangCompute: name = "comp.spv"; break;
- case EShLangRayGenNV: name = "rgen.spv"; break;
- case EShLangIntersectNV: name = "rint.spv"; break;
- case EShLangAnyHitNV: name = "rahit.spv"; break;
- case EShLangClosestHitNV: name = "rchit.spv"; break;
- case EShLangMissNV: name = "rmiss.spv"; break;
- case EShLangCallableNV: name = "rcall.spv"; break;
+ case EShLangRayGen: name = "rgen.spv"; break;
+ case EShLangIntersect: name = "rint.spv"; break;
+ case EShLangAnyHit: name = "rahit.spv"; break;
+ case EShLangClosestHit: name = "rchit.spv"; break;
+ case EShLangMiss: name = "rmiss.spv"; break;
+ case EShLangCallable: name = "rcall.spv"; break;
case EShLangMeshNV: name = "mesh.spv"; break;
case EShLangTaskNV: name = "task.spv"; break;
default: name = "unknown"; break;
@@ -292,9 +294,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 +487,7 @@
Options |= EOptionAutoMapLocations;
} else if (lowerword == "uniform-base") {
if (argc <= 1)
- Error("no <base> provided for --uniform-base");
+ Error("no <base> provided", lowerword.c_str());
uniformBase = ::strtol(argv[1], NULL, 10);
bumpArg();
break;
@@ -493,15 +498,23 @@
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 == "define-macro" ||
+ lowerword == "d") {
+ if (argc > 1)
+ UserPreamble.addDef(argv[1]);
+ else
+ Error("expects <name[=def]>", argv[0]);
bumpArg();
} else if (lowerword == "dump-builtin-symbols") {
DumpBuiltinSymbols = true;
} else if (lowerword == "entry-point") {
entryPointName = argv[1];
if (argc <= 1)
- Error("no <name> provided for --entry-point");
+ Error("no <name> provided", lowerword.c_str());
bumpArg();
} else if (lowerword == "flatten-uniform-arrays" || // synonyms
lowerword == "flatten-uniform-array" ||
@@ -576,7 +589,7 @@
} else if (lowerword == "source-entrypoint" || // synonyms
lowerword == "sep") {
if (argc <= 1)
- Error("no <entry-point> provided for --source-entrypoint");
+ Error("no <entry-point> provided", lowerword.c_str());
sourceEntryPointName = argv[1];
bumpArg();
break;
@@ -597,6 +610,9 @@
} else if (strcmp(argv[1], "vulkan1.1") == 0) {
setVulkanSpv();
ClientVersion = glslang::EShTargetVulkan_1_1;
+ } else if (strcmp(argv[1], "vulkan1.2") == 0) {
+ setVulkanSpv();
+ ClientVersion = glslang::EShTargetVulkan_1_2;
} else if (strcmp(argv[1], "opengl") == 0) {
setOpenGlSpv();
ClientVersion = glslang::EShTargetOpenGL_450;
@@ -619,22 +635,32 @@
TargetLanguage = glslang::EShTargetSpv;
TargetVersion = glslang::EShTargetSpv_1_5;
} else
- Error("--target-env expected one of: vulkan1.0, vulkan1.1, opengl,\n"
+ Error("--target-env expected one of: vulkan1.0, vulkan1.1, vulkan1.2, opengl,\n"
"spirv1.0, spirv1.1, spirv1.2, spirv1.3, spirv1.4, or spirv1.5");
}
bumpArg();
+ } else if (lowerword == "undef-macro" ||
+ lowerword == "u") {
+ if (argc > 1)
+ UserPreamble.addUndef(argv[1]);
+ else
+ Error("expects <name>", argv[0]);
+ bumpArg();
} else if (lowerword == "variable-name" || // synonyms
lowerword == "vn") {
Options |= EOptionOutputHexadecimal;
if (argc <= 1)
- Error("no <C-variable-name> provided for --variable-name");
+ Error("no <C-variable-name> provided", lowerword.c_str());
variableName = argv[1];
bumpArg();
break;
} else if (lowerword == "version") {
Options |= EOptionDumpVersions;
- } else {
+ } else if (lowerword == "help") {
usage();
+ break;
+ } else {
+ Error("unrecognized command-line option", argv[0]);
}
}
break;
@@ -645,7 +671,7 @@
if (argv[0][2] == 0)
Options |= EOptionReadHlsl;
else
- UserPreamble.addDef(getStringOperand("-D<macro> macro name"));
+ UserPreamble.addDef(getStringOperand("-D<name[=def]>"));
break;
case 'u':
uniformLocationOverrides.push_back(getUniformOverride());
@@ -688,7 +714,7 @@
bumpArg();
break;
case 'U':
- UserPreamble.addUndef(getStringOperand("-U<macro>: macro name"));
+ UserPreamble.addUndef(getStringOperand("-U<name>"));
break;
case 'V':
setVulkanSpv();
@@ -760,7 +786,7 @@
Options |= EOptionOutputHexadecimal;
break;
default:
- usage();
+ Error("unrecognized command-line option", argv[0]);
break;
}
} else {
@@ -807,6 +833,10 @@
TargetLanguage = glslang::EShTargetSpv;
TargetVersion = glslang::EShTargetSpv_1_3;
break;
+ case glslang::EShTargetVulkan_1_2:
+ TargetLanguage = glslang::EShTargetSpv;
+ TargetVersion = glslang::EShTargetSpv_1_5;
+ break;
case glslang::EShTargetOpenGL_450:
TargetLanguage = glslang::EShTargetSpv;
TargetVersion = glslang::EShTargetSpv_1_0;
@@ -988,7 +1018,7 @@
// 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();
@@ -1110,7 +1140,6 @@
for (int stage = 0; stage < EShLangCount; ++stage) {
if (program.getIntermediate((EShLanguage)stage)) {
std::vector<unsigned int> spirv;
- std::string warningsErrors;
spv::SpvBuildLogger logger;
glslang::SpvOptions spvOptions;
if (Options & EOptionDebug)
@@ -1263,7 +1292,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:
@@ -1400,17 +1429,17 @@
else if (stageName == "comp")
return EShLangCompute;
else if (stageName == "rgen")
- return EShLangRayGenNV;
+ return EShLangRayGen;
else if (stageName == "rint")
- return EShLangIntersectNV;
+ return EShLangIntersect;
else if (stageName == "rahit")
- return EShLangAnyHitNV;
+ return EShLangAnyHit;
else if (stageName == "rchit")
- return EShLangClosestHitNV;
+ return EShLangClosestHit;
else if (stageName == "rmiss")
- return EShLangMissNV;
+ return EShLangMiss;
else if (stageName == "rcall")
- return EShLangCallableNV;
+ return EShLangCallable;
else if (stageName == "mesh")
return EShLangMeshNV;
else if (stageName == "task")
@@ -1498,8 +1527,8 @@
"Options:\n"
" -C cascading errors; risk crash from accumulation of error recoveries\n"
" -D input is HLSL (this is the default when any suffix is .hlsl)\n"
- " -D<macro=def>\n"
- " -D<macro> define a pre-processor macro\n"
+ " -D<name[=def]> | --define-macro <name[=def]> | --D <name[=def]>\n"
+ " define a pre-processor macro\n"
" -E print pre-processed GLSL; cannot be used with -l;\n"
" errors will appear on stderr\n"
" -G[ver] create SPIR-V binary, under OpenGL semantics; turns on -l;\n"
@@ -1515,7 +1544,8 @@
" -Os optimizes SPIR-V to minimize size\n"
" -S <stage> uses specified stage rather than parsing the file extension\n"
" choices for <stage> are vert, tesc, tese, geom, frag, or comp\n"
- " -U<macro> undefine a pre-processor macro\n"
+ " -U<name> | --undef-macro <name> | --U <name>\n"
+ " undefine a pre-processor macro\n"
" -V[ver] create SPIR-V binary, under Vulkan semantics; turns on -l;\n"
" default file name is <stage>.spv (-o overrides this)\n"
" 'ver', when present, is the version of the input semantics,\n"
@@ -1621,16 +1651,17 @@
" --sep synonym for --source-entrypoint\n"
" --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"
+ " --target-env {vulkan1.0 | vulkan1.1 | vulkan1.2 | opengl | \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"
- " * 'vulkan1.0' under '--client vulkan<ver>'\n"
- " * 'opengl' under '--client opengl<ver>'\n"
- " * 'spirv1.0' under --target-env vulkan1.0\n"
- " * 'spirv1.3' under --target-env vulkan1.1\n"
- " multiple --targen-env can be specified.\n"
+ " Set the execution environment that the\n"
+ " generated code will be executed in.\n"
+ " Defaults to:\n"
+ " * vulkan1.0 under --client vulkan<ver>\n"
+ " * opengl under --client opengl<ver>\n"
+ " * spirv1.0 under --target-env vulkan1.0\n"
+ " * spirv1.3 under --target-env vulkan1.1\n"
+ " * spirv1.5 under --target-env vulkan1.2\n"
+ " Multiple --target-env can be specified.\n"
" --variable-name <name>\n"
" --vn <name> creates a C header file that contains a\n"
" uint32_t array named <name>\n"
diff --git a/StandAlone/resource_limits_c.cpp b/StandAlone/resource_limits_c.cpp
new file mode 100644
index 0000000..a1f681c
--- /dev/null
+++ b/StandAlone/resource_limits_c.cpp
@@ -0,0 +1,65 @@
+/**
+BSD 2-Clause License
+
+Copyright (c) 2020, Travis Fort
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. 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.
+
+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 HOLDER 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 "resource_limits_c.h"
+#include "ResourceLimits.h"
+#include <stdlib.h>
+#include <string.h>
+#include <string>
+
+const glslang_resource_t* glslang_default_resource(void)
+{
+ return reinterpret_cast<const glslang_resource_t*>(&glslang::DefaultTBuiltInResource);
+}
+
+#if defined(__clang__) || defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#elif defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable : 4996)
+#endif
+
+const char* glslang_default_resource_string()
+{
+ std::string cpp_str = glslang::GetDefaultTBuiltInResourceString();
+ char* c_str = (char*)malloc(cpp_str.length() + 1);
+ strcpy(c_str, cpp_str.c_str());
+ return c_str;
+}
+
+#if defined(__clang__) || defined(__GNUC__)
+#pragma GCC diagnostic pop
+#elif defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+void glslang_decode_resource_limits(glslang_resource_t* resources, char* config)
+{
+ glslang::DecodeResourceLimits(reinterpret_cast<TBuiltInResource*>(resources), config);
+}
diff --git a/StandAlone/resource_limits_c.h b/StandAlone/resource_limits_c.h
new file mode 100644
index 0000000..108fd5e
--- /dev/null
+++ b/StandAlone/resource_limits_c.h
@@ -0,0 +1,54 @@
+/**
+BSD 2-Clause License
+
+Copyright (c) 2020, Travis Fort
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. 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.
+
+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 HOLDER 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.
+**/
+
+#ifndef _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_
+#define _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_
+
+#include "../glslang/Include/glslang_c_interface.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// These are the default resources for TBuiltInResources, used for both
+// - parsing this string for the case where the user didn't supply one,
+// - dumping out a template for user construction of a config file.
+const glslang_resource_t* glslang_default_resource(void);
+
+// Returns the DefaultTBuiltInResource as a human-readable string.
+// NOTE: User is responsible for freeing this string.
+const char* glslang_default_resource_string();
+
+// Decodes the resource limits from |config| to |resources|.
+void glslang_decode_resource_limits(glslang_resource_t* resources, char* config);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_
diff --git a/StandAlone/spirv-remap.cpp b/StandAlone/spirv-remap.cpp
index 5e2ed0a..48878c3 100644
--- a/StandAlone/spirv-remap.cpp
+++ b/StandAlone/spirv-remap.cpp
@@ -334,8 +334,6 @@
if (outputDir.empty())
usage(argv[0], "Output directory required");
- std::string errmsg;
-
// Main operations: read, remap, and write.
execute(inputFile, outputDir, opts, verbosity);
diff --git a/Test/100.frag b/Test/100.frag
index 4f0c69b..439fc6c 100644
--- a/Test/100.frag
+++ b/Test/100.frag
@@ -201,6 +201,19 @@
return fooinit();
}
+// Test extension GL_EXT_blend_func_extended
+void blendFuncFail() // Error since extension GL_EXT_blend_func_extended is disabled
+{
+ gl_SecondaryFragColorEXT = vec4(1.0);
+ gl_SecondaryFragDataEXT[gl_MaxDualSourceDrawBuffersEXT - 1] = vec4(0.1);
+}
+#extension GL_EXT_blend_func_extended : enable
+void blendFunc()
+{
+ gl_SecondaryFragColorEXT = vec4(1.0);
+ gl_SecondaryFragDataEXT[gl_MaxDualSourceDrawBuffersEXT - 1] = vec4(0.1);
+}
+
// Test extra-function initializers
const float fi1 = 3.0;
const float fi2 = 4.0;
@@ -219,6 +232,9 @@
int init2 = gl_FrontFacing ? 1 : 2;
+#define A__B // error
+int a__b; // error
+
#pragma STDGL invariant(all)
#line 3000
diff --git a/Test/120.vert b/Test/120.vert
index d276557..7b98492 100644
--- a/Test/120.vert
+++ b/Test/120.vert
@@ -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 --git a/Test/130.frag b/Test/130.frag
index 3e39411..c352df4 100644
--- a/Test/130.frag
+++ b/Test/130.frag
@@ -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 --git a/Test/140.frag b/Test/140.frag
index 2bc2f59..5efdbed 100644
--- a/Test/140.frag
+++ b/Test/140.frag
@@ -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 --git a/Test/150.frag b/Test/150.frag
index e87d633..228e4f0 100644
--- a/Test/150.frag
+++ b/Test/150.frag
@@ -49,3 +49,136 @@
return gl_PrimitiveID;
gl_PerFragment; // ERROR, block name can't get reused
}
+
+in double type1; // ERROR
+#extension GL_ARB_gpu_shader_fp64 : enable
+double type2;
+double type3 = 2.0;
+int absTest = sqrt(type3);
+double absTest2 = sqrt(type3);
+double absTest3 = sqrt(2);
+float dk = sqrt(11);
+
+#extension GL_ARB_shader_bit_encoding: enable
+
+float f;
+vec4 v4;
+ivec4 iv4a;
+uvec2 uv2c;
+void bitEncodingPass()
+{
+ int i = floatBitsToInt(f);
+ uvec4 uv11 = floatBitsToUint(v4);
+ vec4 v14 = intBitsToFloat(iv4a);
+ vec2 v15 = uintBitsToFloat(uv2c);
+}
+
+#extension GL_ARB_shader_bit_encoding: disable
+
+void bitEncodingFail()
+{
+ int i = floatBitsToInt(f); // Error, extention GL_ARB_bit_encoding is diabled
+}
+
+#extension GL_ARB_shading_language_packing : enable
+vec2 v2a;
+uint uy;
+
+void packingPass()
+{
+ uint u19 = packSnorm2x16(v2a);
+ vec2 v20 = unpackSnorm2x16(uy);
+ uint u15 = packUnorm2x16(v2a);
+ vec2 v16 = unpackUnorm2x16(uy);
+ uint u17 = packHalf2x16(v2a);
+ vec2 v18 = unpackHalf2x16(uy);
+}
+
+#extension GL_ARB_shading_language_packing : disable
+void packingFail()
+{
+ uint u19 = packSnorm2x16(v2a); // Error, extension GL_ARB_shading_language_packing is disabled
+}
+
+// Testing extension GL_ARB_texture_query_lod
+uniform sampler1D samp1D;
+uniform sampler2DShadow samp2Ds;
+
+void qlodFail()
+{
+ vec2 lod;
+ float pf;
+ vec2 pf2;
+ vec3 pf3;
+
+ lod = textureQueryLod(samp1D, pf); // ERROR, extension GL_ARB_texture_query_lod needed
+ lod = textureQueryLod(samp2Ds, pf2); // ERROR, extension GL_ARB_texture_query_lod needed
+}
+
+#extension GL_ARB_texture_query_lod : enable
+
+uniform isampler2D isamp2D;
+uniform usampler3D usamp3D;
+uniform samplerCube sampCube;
+uniform isampler1DArray isamp1DA;
+uniform usampler2DArray usamp2DA;
+
+uniform sampler1DShadow samp1Ds;
+uniform samplerCubeShadow sampCubes;
+uniform sampler1DArrayShadow samp1DAs;
+uniform sampler2DArrayShadow samp2DAs;
+
+uniform samplerBuffer sampBuf;
+uniform sampler2DRect sampRect;
+
+void qlodPass()
+{
+ vec2 lod;
+ float pf;
+ vec2 pf2;
+ vec3 pf3;
+
+ lod = textureQueryLod(samp1D, pf);
+ lod = textureQueryLod(isamp2D, pf2);
+ lod = textureQueryLod(usamp3D, pf3);
+ lod = textureQueryLod(sampCube, pf3);
+ lod = textureQueryLod(isamp1DA, pf);
+ lod = textureQueryLod(usamp2DA, pf2);
+
+ lod = textureQueryLod(samp1Ds, pf);
+ lod = textureQueryLod(samp2Ds, pf2);
+ lod = textureQueryLod(sampCubes, pf3);
+ lod = textureQueryLod(samp1DAs, pf);
+ lod = textureQueryLod(samp2DAs, pf2);
+
+ lod = textureQueryLod(sampBuf, pf); // ERROR
+ lod = textureQueryLod(sampRect, pf2); // ERROR
+}
+
+// Test extension GL_EXT_shader_integer_mix
+#extension GL_EXT_shader_integer_mix : enable
+bool b1, b2, b;
+int x,y;
+uint z,w;
+
+void testmix()
+{
+ int ival = mix(x, y, b);
+ ivec2 iv2 = mix(ivec2(x), ivec2(y), bvec2(b));
+ ivec3 iv3 = mix(ivec3(x), ivec3(y), bvec3(b));
+ ivec4 iv4 = mix(ivec4(x), ivec4(x), bvec4(b));
+ uint uiv = mix(z, w, b);
+ uvec2 uv2 = mix(uvec2(z), uvec2(z), bvec2(b));
+ uvec3 uv3 = mix(uvec3(z), uvec3(z), bvec3(b));
+ uvec4 uv4 = mix(uvec4(z), uvec4(z), bvec4(b));
+ bool bv = mix(b1, b2, b);
+ bvec2 bv2 = mix(bvec2(b1), bvec2(b2), bvec2(b));
+ bvec3 bv3 = mix(bvec3(b1), bvec3(b2), bvec3(b));
+ bvec4 bv4 = mix(bvec4(b1), bvec4(b2), bvec4(b));
+}
+
+#extension GL_EXT_shader_integer_mix : disable
+void testmixFail()
+{
+ int ival = mix(x, y, b); // Error since extenson GL_EXT_shader_integer_mix is disabled
+}
diff --git a/Test/150.vert b/Test/150.vert
index 4dd9e5c..f9a920c 100644
--- a/Test/150.vert
+++ b/Test/150.vert
@@ -25,5 +25,21 @@
};
int a[5]; // ERROR, resizing user-block member
+in double dvarerr; // Error since extension GL_ARB_vertex_attrib_64bit is not enabled
+#extension GL_ARB_vertex_attrib_64bit: enable
+in double dvar;
+in dvec2 dv2var;
+in dvec3 dv3var;
+in dvec4 dv4var;
+in dmat2 dmat2var;
+in dmat3 dmat3var;
+in dmat4 dmat4var;
+in dmat2x3 dmat23var;
+in dmat2x4 dmat24var;
+in dmat3x2 dmat32var;
+in dmat3x4 dmat34var;
+in dmat4x2 dmat42var;
+in dmat4x3 dmat43var;
+
#line 3000
#error line of this error should be 3001
diff --git a/Test/300.frag b/Test/300.frag
index ca2e2cb..279864a 100644
--- a/Test/300.frag
+++ b/Test/300.frag
@@ -149,6 +149,39 @@
layout(early_fragment_tests) in; // ERROR
+// Test extension GL_EXT_shader_integer_mix
+#extension GL_EXT_shader_integer_mix : enable
+bool b1, b2, b;
+int x,y;
+uint z,w;
+
+void testmix()
+{
+ int ival = mix(x, y, b);
+ ivec2 iv2 = mix(ivec2(x), ivec2(y), bvec2(b));
+ ivec3 iv3 = mix(ivec3(x), ivec3(y), bvec3(b));
+ ivec4 iv4 = mix(ivec4(x), ivec4(x), bvec4(b));
+ uint uiv = mix(z, w, b);
+ uvec2 uv2 = mix(uvec2(z), uvec2(z), bvec2(b));
+ uvec3 uv3 = mix(uvec3(z), uvec3(z), bvec3(b));
+ uvec4 uv4 = mix(uvec4(z), uvec4(z), bvec4(b));
+ bool bv = mix(b1, b2, b);
+ bvec2 bv2 = mix(bvec2(b1), bvec2(b2), bvec2(b));
+ bvec3 bv3 = mix(bvec3(b1), bvec3(b2), bvec3(b));
+ bvec4 bv4 = mix(bvec4(b1), bvec4(b2), bvec4(b));
+}
+
+#extension GL_EXT_shader_integer_mix : disable
+void testmixFail()
+{
+ int ival = mix(x, y, b); // Error since extenson GL_EXT_shader_integer_mix is disabled
+}
+
+// Test layout qualifier "index" with extension GL_EXT_blend_func_extended
+layout(location = 0, index = 1) out vec4 outVarFail; // Error Index supported with extension GL_EXT_blend_func_extended enabled
+#extension GL_EXT_blend_func_extended : enable
+layout(location = 0, index = 2) out vec4 outVarPass;
+
#ifndef GL_FRAGMENT_PRECISION_HIGH
#error missing GL_FRAGMENT_PRECISION_HIGH
#endif
diff --git a/Test/310.frag b/Test/310.frag
index 8a11f67..5cdcca7 100755
--- a/Test/310.frag
+++ b/Test/310.frag
@@ -448,4 +448,40 @@
{
gl_DeviceIndex;
gl_ViewIndex;
-}
+}
+
+#extension GL_EXT_shader_implicit_conversions : enable
+
+// Test function overloading
+void func(uint a, uvec4 b)
+{
+
+}
+
+int func(uint a, uvec4 b) // Error function overloading because of same signature and different return type
+{
+ return 0;
+}
+
+int b;
+
+void testimplicit() {
+
+ uint a = b; // int->uint
+ mediump vec4 col = vec4(1, 2, 3, 4); // ivec4 -> vec4
+ int b = a + 2; // ERROR: cannot convert from ' temp uint' to ' temp int'
+
+ // Test binary ops
+ uint c = b * 3;
+ uint d = b * 3u;
+ uint e = b%3;
+ uint f = (b > 3)? b : c;
+ func(b, ivec4(1,2,3,4));
+}
+
+#extension GL_EXT_shader_implicit_conversions : disable
+
+void testimplicitFail() {
+ uint a = b; // Error GL_EXT_shader_implicit_conversions is disabled
+}
+
diff --git a/Test/330.frag b/Test/330.frag
index 9afa8f8..364fc0a 100644
--- a/Test/330.frag
+++ b/Test/330.frag
@@ -126,27 +126,26 @@
layout(location=0, index=0) in; // ERROR, not just on in
layout(location=0, index=0) out; // ERROR, need a variable
layout(location=26, index=0) out indexBlock { int a; } indexBlockI; // ERROR, not on a block
-
-uniform sampler1D samp1D;
-uniform sampler2DShadow samp2Ds;
-
-void qlod()
-{
- vec2 lod;
- float pf;
- vec2 pf2;
- vec3 pf3;
-
- lod = textureQueryLod(samp1D, pf); // ERROR, not until 400
- lod = textureQueryLod(samp2Ds, pf2); // ERROR, not until 400
-}
-
-int precise; // okay, not a keyword yet
-struct SKeyMem { int precise; } KeyMem; // okay, not a keyword yet
-
-void fooKeyMem()
-{
- KeyMem.precise;
-}
-
-layout(location=28, index=2) out vec4 outIndex2; // ERROR index out of range
\ No newline at end of file
+
+int precise; // okay, not a keyword yet
+struct SKeyMem { int precise; } KeyMem; // okay, not a keyword yet
+
+void fooKeyMem()
+{
+ KeyMem.precise;
+}
+
+layout(location=28, index=2) out vec4 outIndex2; // ERROR index out of range
+
+layout(location=4) uniform vec4 ucolor0; // ERROR: extension is not enabled
+
+#extension GL_ARB_explicit_uniform_location : enable
+
+layout(location=5) uniform vec4 ucolor1;
+
+layout(location=6) uniform ColorsBuffer // ERROR: location cannot be applied in uniform buffer block
+{
+ vec4 colors[128];
+} colorsBuffer;
+
+
diff --git a/Test/410.vert b/Test/410.vert
index 0ecf476..1891a67 100644
--- a/Test/410.vert
+++ b/Test/410.vert
@@ -6,4 +6,5 @@
void main()
{
+ int test = gl_MaxFragmentUniformVectors;
}
diff --git a/Test/420.frag b/Test/420.frag
index 1444758..d3020b3 100644
--- a/Test/420.frag
+++ b/Test/420.frag
@@ -12,3 +12,31 @@
layout(depth_any) out float gl_FragDepth; // ERROR, done after use
layout(binding=0) uniform atomic_uint a[];
+
+uniform writeonly image2D i2D;
+ivec2 iv2dim = imageSize(i2D); // ERROR: imageSize called without enabling GL_ARB_shader_image_size extension
+#extension GL_ARB_shader_image_size : enable
+ivec2 iv2dim1 = imageSize(i2D);
+
+#extension GL_ARB_shader_storage_buffer_object : enable
+
+layout(binding = 0,std430) buffer Buffer
+{
+ int atomi;
+ uint atomu;
+};
+
+void atomicOpPass()
+{
+ int origi = atomicAdd(atomi, 3);
+ uint origu = atomicAnd(atomu, 7u);
+ origi = atomicExchange(atomi, 4);
+ origu = atomicCompSwap(atomu, 10u, 8u);
+}
+
+#extension GL_ARB_shader_storage_buffer_object : disable
+
+layout(binding = 1,std430) buffer BufferFail // Error std430 and "buffer" block support disabled
+{
+ int atom1i;
+};
diff --git a/Test/450.comp b/Test/450.comp
index fb2b56a..316674d 100644
--- a/Test/450.comp
+++ b/Test/450.comp
@@ -1,5 +1,8 @@
#version 450 core
layout(local_size_x = 0) in; // ERROR, 0 not allowed
+
+layout(binding=10000) uniform atomic_uint; // ERROR
+
void main()
{
shared float f; // ERROR shared must be global
diff --git a/Test/460.vert b/Test/460.vert
index fd87d8b..cf4f4ad 100644
--- a/Test/460.vert
+++ b/Test/460.vert
@@ -7,6 +7,7 @@
void main()
{
bool b1;
+ float array[int(mod(float (7.1), float (4.0)))];
b1 = anyInvocation(b1);
b1 = allInvocations(b1);
b1 = allInvocationsEqual(b1);
diff --git a/Test/atomic_uint.frag b/Test/atomic_uint.frag
index 9a95a48..4155214 100644
--- a/Test/atomic_uint.frag
+++ b/Test/atomic_uint.frag
@@ -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 --git a/Test/baseLegalResults/hlsl.aliasOpaque.frag.out b/Test/baseLegalResults/hlsl.aliasOpaque.frag.out
index 2e58bdd..887e4ac 100644
--- a/Test/baseLegalResults/hlsl.aliasOpaque.frag.out
+++ b/Test/baseLegalResults/hlsl.aliasOpaque.frag.out
@@ -1,6 +1,6 @@
hlsl.aliasOpaque.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 87
Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenOpaque.frag.out b/Test/baseLegalResults/hlsl.flattenOpaque.frag.out
index d334b7e..ad9e6c1 100644
--- a/Test/baseLegalResults/hlsl.flattenOpaque.frag.out
+++ b/Test/baseLegalResults/hlsl.flattenOpaque.frag.out
@@ -1,6 +1,6 @@
hlsl.flattenOpaque.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 185
Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out
index 921cb96..6ed8da2 100644
--- a/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out
+++ b/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out
@@ -1,6 +1,6 @@
hlsl.flattenOpaqueInit.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 134
Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out
index 39770f4..81ab5e6 100644
--- a/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out
+++ b/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out
@@ -1,6 +1,6 @@
hlsl.flattenOpaqueInitMix.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 97
Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenSubset.frag.out b/Test/baseLegalResults/hlsl.flattenSubset.frag.out
index 4628479..562070d 100644
--- a/Test/baseLegalResults/hlsl.flattenSubset.frag.out
+++ b/Test/baseLegalResults/hlsl.flattenSubset.frag.out
@@ -1,6 +1,6 @@
hlsl.flattenSubset.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 66
Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenSubset2.frag.out b/Test/baseLegalResults/hlsl.flattenSubset2.frag.out
index 0d7ab56..5cc280b 100644
--- a/Test/baseLegalResults/hlsl.flattenSubset2.frag.out
+++ b/Test/baseLegalResults/hlsl.flattenSubset2.frag.out
@@ -1,6 +1,6 @@
hlsl.flattenSubset2.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 53
Capability Shader
diff --git a/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out b/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
index 27482b3..f4c9c5a 100644
--- a/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
+++ b/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
@@ -1,6 +1,6 @@
hlsl.partialFlattenLocal.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 158
Capability Shader
diff --git a/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out b/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out
index e54fb7e..7be570b 100644
--- a/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out
+++ b/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out
@@ -1,6 +1,6 @@
hlsl.partialFlattenMixed.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 36
Capability Shader
diff --git a/Test/baseResults/100.frag.out b/Test/baseResults/100.frag.out
index 5e702e8..2ac6054 100644
--- a/Test/baseResults/100.frag.out
+++ b/Test/baseResults/100.frag.out
@@ -82,13 +82,19 @@
ERROR: 0:193: '.length' : not supported for this version or the enabled extensions
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:207: 'gl_SecondaryFragColorEXT' : required extension not requested: GL_EXT_blend_func_extended
+ERROR: 0:208: 'gl_SecondaryFragDataEXT' : required extension not requested: GL_EXT_blend_func_extended
+ERROR: 0:208: 'gl_MaxDualSourceDrawBuffersEXT' : required extension not requested: GL_EXT_blend_func_extended
+ERROR: 0:227: 'non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)' : not supported for this version or the enabled extensions
+ERROR: 0:235: '#define' : names containing consecutive underscores are reserved, and an error if version < 300: A__B
+ERROR: 0:236: '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: 82 compilation errors. No code generated.
Shader version: 100
+Requested GL_EXT_blend_func_extended
Requested GL_EXT_frag_depth
Requested GL_EXT_shader_non_constant_global_initializers
Requested GL_EXT_shader_texture_lod
@@ -359,36 +365,76 @@
0:201 Sequence
0:201 Branch: Return with expression
0:201 Function Call: fooinit( ( global mediump float)
-0:209 Function Definition: fooinit( ( global mediump float)
-0:209 Function Parameters:
-0:211 Sequence
-0:211 Branch: Return with expression
-0:211 Constant:
-0:211 12.000000
-0:214 Sequence
-0:214 move second child to first child ( temp mediump int)
-0:214 'init1' ( global mediump int)
-0:214 Test condition and select ( temp mediump int)
-0:214 Condition
-0:214 'gl_FrontFacing' ( gl_FrontFacing bool Face)
-0:214 true case
+0:205 Function Definition: blendFuncFail( ( global void)
+0:205 Function Parameters:
+0:207 Sequence
+0:207 move second child to first child ( temp mediump 4-component vector of float)
+0:207 'gl_SecondaryFragColorEXT' ( out mediump 4-component vector of float SecondaryFragColorEXT)
+0:207 Constant:
+0:207 1.000000
+0:207 1.000000
+0:207 1.000000
+0:207 1.000000
+0:208 move second child to first child ( temp mediump 4-component vector of float)
+0:208 direct index ( temp mediump 4-component vector of float SecondaryFragDataEXT)
+0:208 'gl_SecondaryFragDataEXT' ( out 1-element array of mediump 4-component vector of float SecondaryFragDataEXT)
+0:208 Constant:
+0:208 0 (const int)
+0:208 Constant:
+0:208 0.100000
+0:208 0.100000
+0:208 0.100000
+0:208 0.100000
+0:211 Function Definition: blendFunc( ( global void)
+0:211 Function Parameters:
+0:213 Sequence
+0:213 move second child to first child ( temp mediump 4-component vector of float)
+0:213 'gl_SecondaryFragColorEXT' ( out mediump 4-component vector of float SecondaryFragColorEXT)
+0:213 Constant:
+0:213 1.000000
+0:213 1.000000
+0:213 1.000000
+0:213 1.000000
+0:214 move second child to first child ( temp mediump 4-component vector of float)
+0:214 direct index ( temp mediump 4-component vector of float SecondaryFragDataEXT)
+0:214 'gl_SecondaryFragDataEXT' ( out 1-element array of mediump 4-component vector of float SecondaryFragDataEXT)
+0:214 Constant:
+0:214 0 (const int)
0:214 Constant:
-0:214 1 (const int)
-0:214 false case
-0:214 Constant:
-0:214 2 (const int)
-0:220 Sequence
-0:220 move second child to first child ( temp mediump int)
-0:220 'init2' ( global mediump int)
-0:220 Test condition and select ( temp mediump int)
-0:220 Condition
-0:220 'gl_FrontFacing' ( gl_FrontFacing bool Face)
-0:220 true case
-0:220 Constant:
-0:220 1 (const int)
-0:220 false case
-0:220 Constant:
-0:220 2 (const int)
+0:214 0.100000
+0:214 0.100000
+0:214 0.100000
+0:214 0.100000
+0:222 Function Definition: fooinit( ( global mediump float)
+0:222 Function Parameters:
+0:224 Sequence
+0:224 Branch: Return with expression
+0:224 Constant:
+0:224 12.000000
+0:227 Sequence
+0:227 move second child to first child ( temp mediump int)
+0:227 'init1' ( global mediump int)
+0:227 Test condition and select ( temp mediump int)
+0:227 Condition
+0:227 'gl_FrontFacing' ( gl_FrontFacing bool Face)
+0:227 true case
+0:227 Constant:
+0:227 1 (const int)
+0:227 false case
+0:227 Constant:
+0:227 2 (const int)
+0:233 Sequence
+0:233 move second child to first child ( temp mediump int)
+0:233 'init2' ( global mediump int)
+0:233 Test condition and select ( temp mediump int)
+0:233 Condition
+0:233 'gl_FrontFacing' ( gl_FrontFacing bool Face)
+0:233 true case
+0:233 Constant:
+0:233 1 (const int)
+0:233 false case
+0:233 Constant:
+0:233 2 (const int)
0:? Linker Objects
0:? 'a' ( global 3-element array of mediump int)
0:? 'uint' ( global mediump int)
@@ -421,12 +467,14 @@
0:? 5.000000
0:? 'init1' ( global mediump int)
0:? 'init2' ( global mediump int)
+0:? 'a__b' ( global mediump int)
Linked fragment stage:
Shader version: 100
+Requested GL_EXT_blend_func_extended
Requested GL_EXT_frag_depth
Requested GL_EXT_shader_non_constant_global_initializers
Requested GL_EXT_shader_texture_lod
@@ -517,30 +565,30 @@
0:152 'f124' ( global mediump float)
0:152 Constant:
0:152 50000000000.000000
-0:214 Sequence
-0:214 move second child to first child ( temp mediump int)
-0:214 'init1' ( global mediump int)
-0:214 Test condition and select ( temp mediump int)
-0:214 Condition
-0:214 'gl_FrontFacing' ( gl_FrontFacing bool Face)
-0:214 true case
-0:214 Constant:
-0:214 1 (const int)
-0:214 false case
-0:214 Constant:
-0:214 2 (const int)
-0:220 Sequence
-0:220 move second child to first child ( temp mediump int)
-0:220 'init2' ( global mediump int)
-0:220 Test condition and select ( temp mediump int)
-0:220 Condition
-0:220 'gl_FrontFacing' ( gl_FrontFacing bool Face)
-0:220 true case
-0:220 Constant:
-0:220 1 (const int)
-0:220 false case
-0:220 Constant:
-0:220 2 (const int)
+0:227 Sequence
+0:227 move second child to first child ( temp mediump int)
+0:227 'init1' ( global mediump int)
+0:227 Test condition and select ( temp mediump int)
+0:227 Condition
+0:227 'gl_FrontFacing' ( gl_FrontFacing bool Face)
+0:227 true case
+0:227 Constant:
+0:227 1 (const int)
+0:227 false case
+0:227 Constant:
+0:227 2 (const int)
+0:233 Sequence
+0:233 move second child to first child ( temp mediump int)
+0:233 'init2' ( global mediump int)
+0:233 Test condition and select ( temp mediump int)
+0:233 Condition
+0:233 'gl_FrontFacing' ( gl_FrontFacing bool Face)
+0:233 true case
+0:233 Constant:
+0:233 1 (const int)
+0:233 false case
+0:233 Constant:
+0:233 2 (const int)
0:? Linker Objects
0:? 'a' ( global 3-element array of mediump int)
0:? 'uint' ( global mediump int)
@@ -573,4 +621,5 @@
0:? 5.000000
0:? 'init1' ( global mediump int)
0:? 'init2' ( global mediump int)
+0:? 'a__b' ( global mediump int)
diff --git a/Test/baseResults/120.vert.out b/Test/baseResults/120.vert.out
index 5a91ed6..6c42b75 100644
--- a/Test/baseResults/120.vert.out
+++ b/Test/baseResults/120.vert.out
@@ -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 --git a/Test/baseResults/130.frag.out b/Test/baseResults/130.frag.out
index 81d055b..6115f69 100644
--- a/Test/baseResults/130.frag.out
+++ b/Test/baseResults/130.frag.out
@@ -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 --git a/Test/baseResults/140.frag.out b/Test/baseResults/140.frag.out
index 7ce2170..702718a 100644
--- a/Test/baseResults/140.frag.out
+++ b/Test/baseResults/140.frag.out
@@ -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 --git a/Test/baseResults/150.frag.out b/Test/baseResults/150.frag.out
index e51b13d..7672b58 100644
--- a/Test/baseResults/150.frag.out
+++ b/Test/baseResults/150.frag.out
@@ -5,10 +5,28 @@
ERROR: 0:14: 'gl_FragCoord' : cannot redeclare after use
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.
+ERROR: 0:53: 'double' : Reserved word.
+ERROR: 0:53: 'double' : not supported for this version or the enabled extensions
+ERROR: 0:53: 'double' : must be qualified as flat in
+ERROR: 0:57: '=' : cannot convert from ' global double' to ' global int'
+ERROR: 0:80: 'floatBitsToInt' : required extension not requested: GL_ARB_shader_bit_encoding
+ERROR: 0:100: 'packSnorm2x16' : required extension not requested: GL_ARB_shading_language_packing
+ERROR: 0:114: 'textureQueryLod' : required extension not requested: GL_ARB_texture_query_lod
+ERROR: 0:115: 'textureQueryLod' : required extension not requested: GL_ARB_texture_query_lod
+ERROR: 0:154: 'textureQueryLod' : no matching overloaded function found
+ERROR: 0:154: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
+ERROR: 0:155: 'textureQueryLod' : no matching overloaded function found
+ERROR: 0:155: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
+ERROR: 0:183: 'mix' : required extension not requested: GL_EXT_shader_integer_mix
+ERROR: 19 compilation errors. No code generated.
Shader version: 150
+Requested GL_ARB_gpu_shader_fp64
+Requested GL_ARB_shader_bit_encoding
+Requested GL_ARB_shading_language_packing
+Requested GL_ARB_texture_query_lod
+Requested GL_EXT_shader_integer_mix
gl_FragCoord pixel center is integer
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
@@ -109,6 +127,295 @@
0:49 Branch: Return with expression
0:49 'gl_PrimitiveID' ( flat in int PrimitiveID)
0:50 'gl_PerFragment' ( temp float)
+0:56 Sequence
+0:56 move second child to first child ( temp double)
+0:56 'type3' ( global double)
+0:56 Constant:
+0:56 2.000000
+0:58 Sequence
+0:58 move second child to first child ( temp double)
+0:58 'absTest2' ( global double)
+0:58 sqrt ( global double)
+0:58 'type3' ( global double)
+0:59 Sequence
+0:59 move second child to first child ( temp double)
+0:59 'absTest3' ( global double)
+0:59 Constant:
+0:59 1.414214
+0:60 Sequence
+0:60 move second child to first child ( temp float)
+0:60 'dk' ( global float)
+0:60 Constant:
+0:60 3.316625
+0:68 Function Definition: bitEncodingPass( ( global void)
+0:68 Function Parameters:
+0:70 Sequence
+0:70 Sequence
+0:70 move second child to first child ( temp int)
+0:70 'i' ( temp int)
+0:70 floatBitsToInt ( global int)
+0:70 'f' ( global float)
+0:71 Sequence
+0:71 move second child to first child ( temp 4-component vector of uint)
+0:71 'uv11' ( temp 4-component vector of uint)
+0:71 floatBitsToUint ( global 4-component vector of uint)
+0:71 'v4' ( global 4-component vector of float)
+0:72 Sequence
+0:72 move second child to first child ( temp 4-component vector of float)
+0:72 'v14' ( temp 4-component vector of float)
+0:72 intBitsToFloat ( global 4-component vector of float)
+0:72 'iv4a' ( global 4-component vector of int)
+0:73 Sequence
+0:73 move second child to first child ( temp 2-component vector of float)
+0:73 'v15' ( temp 2-component vector of float)
+0:73 uintBitsToFloat ( global 2-component vector of float)
+0:73 'uv2c' ( global 2-component vector of uint)
+0:78 Function Definition: bitEncodingFail( ( global void)
+0:78 Function Parameters:
+0:80 Sequence
+0:80 Sequence
+0:80 move second child to first child ( temp int)
+0:80 'i' ( temp int)
+0:80 floatBitsToInt ( global int)
+0:80 'f' ( global float)
+0:87 Function Definition: packingPass( ( global void)
+0:87 Function Parameters:
+0:89 Sequence
+0:89 Sequence
+0:89 move second child to first child ( temp uint)
+0:89 'u19' ( temp uint)
+0:89 packSnorm2x16 ( global uint)
+0:89 'v2a' ( global 2-component vector of float)
+0:90 Sequence
+0:90 move second child to first child ( temp 2-component vector of float)
+0:90 'v20' ( temp 2-component vector of float)
+0:90 unpackSnorm2x16 ( global 2-component vector of float)
+0:90 'uy' ( global uint)
+0:91 Sequence
+0:91 move second child to first child ( temp uint)
+0:91 'u15' ( temp uint)
+0:91 packUnorm2x16 ( global uint)
+0:91 'v2a' ( global 2-component vector of float)
+0:92 Sequence
+0:92 move second child to first child ( temp 2-component vector of float)
+0:92 'v16' ( temp 2-component vector of float)
+0:92 unpackUnorm2x16 ( global 2-component vector of float)
+0:92 'uy' ( global uint)
+0:93 Sequence
+0:93 move second child to first child ( temp uint)
+0:93 'u17' ( temp uint)
+0:93 packHalf2x16 ( global uint)
+0:93 'v2a' ( global 2-component vector of float)
+0:94 Sequence
+0:94 move second child to first child ( temp 2-component vector of float)
+0:94 'v18' ( temp 2-component vector of float)
+0:94 unpackHalf2x16 ( global 2-component vector of float)
+0:94 'uy' ( global uint)
+0:98 Function Definition: packingFail( ( global void)
+0:98 Function Parameters:
+0:100 Sequence
+0:100 Sequence
+0:100 move second child to first child ( temp uint)
+0:100 'u19' ( temp uint)
+0:100 packSnorm2x16 ( global uint)
+0:100 'v2a' ( global 2-component vector of float)
+0:107 Function Definition: qlodFail( ( global void)
+0:107 Function Parameters:
+0:? Sequence
+0:114 move second child to first child ( temp 2-component vector of float)
+0:114 'lod' ( temp 2-component vector of float)
+0:114 textureQueryLod ( global 2-component vector of float)
+0:114 'samp1D' ( uniform sampler1D)
+0:114 'pf' ( temp float)
+0:115 move second child to first child ( temp 2-component vector of float)
+0:115 'lod' ( temp 2-component vector of float)
+0:115 textureQueryLod ( global 2-component vector of float)
+0:115 'samp2Ds' ( uniform sampler2DShadow)
+0:115 'pf2' ( temp 2-component vector of float)
+0:134 Function Definition: qlodPass( ( global void)
+0:134 Function Parameters:
+0:? Sequence
+0:141 move second child to first child ( temp 2-component vector of float)
+0:141 'lod' ( temp 2-component vector of float)
+0:141 textureQueryLod ( global 2-component vector of float)
+0:141 'samp1D' ( uniform sampler1D)
+0:141 'pf' ( temp float)
+0:142 move second child to first child ( temp 2-component vector of float)
+0:142 'lod' ( temp 2-component vector of float)
+0:142 textureQueryLod ( global 2-component vector of float)
+0:142 'isamp2D' ( uniform isampler2D)
+0:142 'pf2' ( temp 2-component vector of float)
+0:143 move second child to first child ( temp 2-component vector of float)
+0:143 'lod' ( temp 2-component vector of float)
+0:143 textureQueryLod ( global 2-component vector of float)
+0:143 'usamp3D' ( uniform usampler3D)
+0:143 'pf3' ( temp 3-component vector of float)
+0:144 move second child to first child ( temp 2-component vector of float)
+0:144 'lod' ( temp 2-component vector of float)
+0:144 textureQueryLod ( global 2-component vector of float)
+0:144 'sampCube' ( uniform samplerCube)
+0:144 'pf3' ( temp 3-component vector of float)
+0:145 move second child to first child ( temp 2-component vector of float)
+0:145 'lod' ( temp 2-component vector of float)
+0:145 textureQueryLod ( global 2-component vector of float)
+0:145 'isamp1DA' ( uniform isampler1DArray)
+0:145 'pf' ( temp float)
+0:146 move second child to first child ( temp 2-component vector of float)
+0:146 'lod' ( temp 2-component vector of float)
+0:146 textureQueryLod ( global 2-component vector of float)
+0:146 'usamp2DA' ( uniform usampler2DArray)
+0:146 'pf2' ( temp 2-component vector of float)
+0:148 move second child to first child ( temp 2-component vector of float)
+0:148 'lod' ( temp 2-component vector of float)
+0:148 textureQueryLod ( global 2-component vector of float)
+0:148 'samp1Ds' ( uniform sampler1DShadow)
+0:148 'pf' ( temp float)
+0:149 move second child to first child ( temp 2-component vector of float)
+0:149 'lod' ( temp 2-component vector of float)
+0:149 textureQueryLod ( global 2-component vector of float)
+0:149 'samp2Ds' ( uniform sampler2DShadow)
+0:149 'pf2' ( temp 2-component vector of float)
+0:150 move second child to first child ( temp 2-component vector of float)
+0:150 'lod' ( temp 2-component vector of float)
+0:150 textureQueryLod ( global 2-component vector of float)
+0:150 'sampCubes' ( uniform samplerCubeShadow)
+0:150 'pf3' ( temp 3-component vector of float)
+0:151 move second child to first child ( temp 2-component vector of float)
+0:151 'lod' ( temp 2-component vector of float)
+0:151 textureQueryLod ( global 2-component vector of float)
+0:151 'samp1DAs' ( uniform sampler1DArrayShadow)
+0:151 'pf' ( temp float)
+0:152 move second child to first child ( temp 2-component vector of float)
+0:152 'lod' ( temp 2-component vector of float)
+0:152 textureQueryLod ( global 2-component vector of float)
+0:152 'samp2DAs' ( uniform sampler2DArrayShadow)
+0:152 'pf2' ( temp 2-component vector of float)
+0:154 'lod' ( temp 2-component vector of float)
+0:155 'lod' ( temp 2-component vector of float)
+0:164 Function Definition: testmix( ( global void)
+0:164 Function Parameters:
+0:166 Sequence
+0:166 Sequence
+0:166 move second child to first child ( temp int)
+0:166 'ival' ( temp int)
+0:166 mix ( global int)
+0:166 'x' ( global int)
+0:166 'y' ( global int)
+0:166 'b' ( global bool)
+0:167 Sequence
+0:167 move second child to first child ( temp 2-component vector of int)
+0:167 'iv2' ( temp 2-component vector of int)
+0:167 mix ( global 2-component vector of int)
+0:167 Construct ivec2 ( temp 2-component vector of int)
+0:167 'x' ( global int)
+0:167 Construct ivec2 ( temp 2-component vector of int)
+0:167 'y' ( global int)
+0:167 Construct bvec2 ( temp 2-component vector of bool)
+0:167 'b' ( global bool)
+0:168 Sequence
+0:168 move second child to first child ( temp 3-component vector of int)
+0:168 'iv3' ( temp 3-component vector of int)
+0:168 mix ( global 3-component vector of int)
+0:168 Construct ivec3 ( temp 3-component vector of int)
+0:168 'x' ( global int)
+0:168 Construct ivec3 ( temp 3-component vector of int)
+0:168 'y' ( global int)
+0:168 Construct bvec3 ( temp 3-component vector of bool)
+0:168 'b' ( global bool)
+0:169 Sequence
+0:169 move second child to first child ( temp 4-component vector of int)
+0:169 'iv4' ( temp 4-component vector of int)
+0:169 mix ( global 4-component vector of int)
+0:169 Construct ivec4 ( temp 4-component vector of int)
+0:169 'x' ( global int)
+0:169 Construct ivec4 ( temp 4-component vector of int)
+0:169 'x' ( global int)
+0:169 Construct bvec4 ( temp 4-component vector of bool)
+0:169 'b' ( global bool)
+0:170 Sequence
+0:170 move second child to first child ( temp uint)
+0:170 'uiv' ( temp uint)
+0:170 mix ( global uint)
+0:170 'z' ( global uint)
+0:170 'w' ( global uint)
+0:170 'b' ( global bool)
+0:171 Sequence
+0:171 move second child to first child ( temp 2-component vector of uint)
+0:171 'uv2' ( temp 2-component vector of uint)
+0:171 mix ( global 2-component vector of uint)
+0:171 Construct uvec2 ( temp 2-component vector of uint)
+0:171 'z' ( global uint)
+0:171 Construct uvec2 ( temp 2-component vector of uint)
+0:171 'z' ( global uint)
+0:171 Construct bvec2 ( temp 2-component vector of bool)
+0:171 'b' ( global bool)
+0:172 Sequence
+0:172 move second child to first child ( temp 3-component vector of uint)
+0:172 'uv3' ( temp 3-component vector of uint)
+0:172 mix ( global 3-component vector of uint)
+0:172 Construct uvec3 ( temp 3-component vector of uint)
+0:172 'z' ( global uint)
+0:172 Construct uvec3 ( temp 3-component vector of uint)
+0:172 'z' ( global uint)
+0:172 Construct bvec3 ( temp 3-component vector of bool)
+0:172 'b' ( global bool)
+0:173 Sequence
+0:173 move second child to first child ( temp 4-component vector of uint)
+0:173 'uv4' ( temp 4-component vector of uint)
+0:173 mix ( global 4-component vector of uint)
+0:173 Construct uvec4 ( temp 4-component vector of uint)
+0:173 'z' ( global uint)
+0:173 Construct uvec4 ( temp 4-component vector of uint)
+0:173 'z' ( global uint)
+0:173 Construct bvec4 ( temp 4-component vector of bool)
+0:173 'b' ( global bool)
+0:174 Sequence
+0:174 move second child to first child ( temp bool)
+0:174 'bv' ( temp bool)
+0:174 mix ( global bool)
+0:174 'b1' ( global bool)
+0:174 'b2' ( global bool)
+0:174 'b' ( global bool)
+0:175 Sequence
+0:175 move second child to first child ( temp 2-component vector of bool)
+0:175 'bv2' ( temp 2-component vector of bool)
+0:175 mix ( global 2-component vector of bool)
+0:175 Construct bvec2 ( temp 2-component vector of bool)
+0:175 'b1' ( global bool)
+0:175 Construct bvec2 ( temp 2-component vector of bool)
+0:175 'b2' ( global bool)
+0:175 Construct bvec2 ( temp 2-component vector of bool)
+0:175 'b' ( global bool)
+0:176 Sequence
+0:176 move second child to first child ( temp 3-component vector of bool)
+0:176 'bv3' ( temp 3-component vector of bool)
+0:176 mix ( global 3-component vector of bool)
+0:176 Construct bvec3 ( temp 3-component vector of bool)
+0:176 'b1' ( global bool)
+0:176 Construct bvec3 ( temp 3-component vector of bool)
+0:176 'b2' ( global bool)
+0:176 Construct bvec3 ( temp 3-component vector of bool)
+0:176 'b' ( global bool)
+0:177 Sequence
+0:177 move second child to first child ( temp 4-component vector of bool)
+0:177 'bv4' ( temp 4-component vector of bool)
+0:177 mix ( global 4-component vector of bool)
+0:177 Construct bvec4 ( temp 4-component vector of bool)
+0:177 'b1' ( global bool)
+0:177 Construct bvec4 ( temp 4-component vector of bool)
+0:177 'b2' ( global bool)
+0:177 Construct bvec4 ( temp 4-component vector of bool)
+0:177 'b' ( global bool)
+0:181 Function Definition: testmixFail( ( global void)
+0:181 Function Parameters:
+0:183 Sequence
+0:183 Sequence
+0:183 move second child to first child ( temp int)
+0:183 'ival' ( temp int)
+0:183 mix ( global int)
+0:183 'x' ( global int)
+0:183 'y' ( global int)
+0:183 'b' ( global bool)
0:? Linker Objects
0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
0:? 'foo' ( smooth in 4-component vector of float)
@@ -123,12 +430,50 @@
0:? 'p2' ( flat in 2-component vector of int)
0:? 'p3' ( flat in 3-component vector of int)
0:? 'samp' ( flat in int)
+0:? 'type1' ( smooth in double)
+0:? 'type2' ( global double)
+0:? 'type3' ( global double)
+0:? 'absTest' ( global int)
+0:? 'absTest2' ( global double)
+0:? 'absTest3' ( global double)
+0:? 'dk' ( global float)
+0:? 'f' ( global float)
+0:? 'v4' ( global 4-component vector of float)
+0:? 'iv4a' ( global 4-component vector of int)
+0:? 'uv2c' ( global 2-component vector of uint)
+0:? 'v2a' ( global 2-component vector of float)
+0:? 'uy' ( global uint)
+0:? 'samp1D' ( uniform sampler1D)
+0:? 'samp2Ds' ( uniform sampler2DShadow)
+0:? 'isamp2D' ( uniform isampler2D)
+0:? 'usamp3D' ( uniform usampler3D)
+0:? 'sampCube' ( uniform samplerCube)
+0:? 'isamp1DA' ( uniform isampler1DArray)
+0:? 'usamp2DA' ( uniform usampler2DArray)
+0:? 'samp1Ds' ( uniform sampler1DShadow)
+0:? 'sampCubes' ( uniform samplerCubeShadow)
+0:? 'samp1DAs' ( uniform sampler1DArrayShadow)
+0:? 'samp2DAs' ( uniform sampler2DArrayShadow)
+0:? 'sampBuf' ( uniform samplerBuffer)
+0:? 'sampRect' ( uniform sampler2DRect)
+0:? 'b1' ( global bool)
+0:? 'b2' ( global bool)
+0:? 'b' ( global bool)
+0:? 'x' ( global int)
+0:? 'y' ( global int)
+0:? 'z' ( global uint)
+0:? 'w' ( global uint)
Linked fragment stage:
Shader version: 150
+Requested GL_ARB_gpu_shader_fp64
+Requested GL_ARB_shader_bit_encoding
+Requested GL_ARB_shading_language_packing
+Requested GL_ARB_texture_query_lod
+Requested GL_EXT_shader_integer_mix
gl_FragCoord pixel center is integer
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
@@ -144,6 +489,26 @@
0:18 'patch' ( global float)
0:18 Constant:
0:18 3.100000
+0:56 Sequence
+0:56 move second child to first child ( temp double)
+0:56 'type3' ( global double)
+0:56 Constant:
+0:56 2.000000
+0:58 Sequence
+0:58 move second child to first child ( temp double)
+0:58 'absTest2' ( global double)
+0:58 sqrt ( global double)
+0:58 'type3' ( global double)
+0:59 Sequence
+0:59 move second child to first child ( temp double)
+0:59 'absTest3' ( global double)
+0:59 Constant:
+0:59 1.414214
+0:60 Sequence
+0:60 move second child to first child ( temp float)
+0:60 'dk' ( global float)
+0:60 Constant:
+0:60 3.316625
0:? Linker Objects
0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
0:? 'foo' ( smooth in 4-component vector of float)
@@ -158,4 +523,37 @@
0:? 'p2' ( flat in 2-component vector of int)
0:? 'p3' ( flat in 3-component vector of int)
0:? 'samp' ( flat in int)
+0:? 'type1' ( smooth in double)
+0:? 'type2' ( global double)
+0:? 'type3' ( global double)
+0:? 'absTest' ( global int)
+0:? 'absTest2' ( global double)
+0:? 'absTest3' ( global double)
+0:? 'dk' ( global float)
+0:? 'f' ( global float)
+0:? 'v4' ( global 4-component vector of float)
+0:? 'iv4a' ( global 4-component vector of int)
+0:? 'uv2c' ( global 2-component vector of uint)
+0:? 'v2a' ( global 2-component vector of float)
+0:? 'uy' ( global uint)
+0:? 'samp1D' ( uniform sampler1D)
+0:? 'samp2Ds' ( uniform sampler2DShadow)
+0:? 'isamp2D' ( uniform isampler2D)
+0:? 'usamp3D' ( uniform usampler3D)
+0:? 'sampCube' ( uniform samplerCube)
+0:? 'isamp1DA' ( uniform isampler1DArray)
+0:? 'usamp2DA' ( uniform usampler2DArray)
+0:? 'samp1Ds' ( uniform sampler1DShadow)
+0:? 'sampCubes' ( uniform samplerCubeShadow)
+0:? 'samp1DAs' ( uniform sampler1DArrayShadow)
+0:? 'samp2DAs' ( uniform sampler2DArrayShadow)
+0:? 'sampBuf' ( uniform samplerBuffer)
+0:? 'sampRect' ( uniform sampler2DRect)
+0:? 'b1' ( global bool)
+0:? 'b2' ( global bool)
+0:? 'b' ( global bool)
+0:? 'x' ( global int)
+0:? 'y' ( global int)
+0:? 'z' ( global uint)
+0:? 'w' ( global uint)
diff --git a/Test/baseResults/150.vert.out b/Test/baseResults/150.vert.out
index 504160d..05a1db9 100644
--- a/Test/baseResults/150.vert.out
+++ b/Test/baseResults/150.vert.out
@@ -1,10 +1,14 @@
150.vert
ERROR: 0:26: 'a' : cannot redeclare a user-block member array
+ERROR: 0:28: 'double' : Reserved word.
+ERROR: 0:28: 'double' : not supported for this version or the enabled extensions
+ERROR: 0:28: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions
ERROR: 0:3001: '#error' : line of this error should be 3001
-ERROR: 2 compilation errors. No code generated.
+ERROR: 5 compilation errors. No code generated.
Shader version: 150
+Requested GL_ARB_vertex_attrib_64bit
ERROR: node is still EOpNull!
0:13 Function Definition: main( ( global void)
0:13 Function Parameters:
@@ -43,6 +47,20 @@
0:? 'iv4' ( in 4-component vector of float)
0:? 'ps' ( uniform float)
0:? 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform unsized 1-element array of int a})
+0:? 'dvarerr' ( in double)
+0:? 'dvar' ( in double)
+0:? 'dv2var' ( in 2-component vector of double)
+0:? 'dv3var' ( in 3-component vector of double)
+0:? 'dv4var' ( in 4-component vector of double)
+0:? 'dmat2var' ( in 2X2 matrix of double)
+0:? 'dmat3var' ( in 3X3 matrix of double)
+0:? 'dmat4var' ( in 4X4 matrix of double)
+0:? 'dmat23var' ( in 2X3 matrix of double)
+0:? 'dmat24var' ( in 2X4 matrix of double)
+0:? 'dmat32var' ( in 3X2 matrix of double)
+0:? 'dmat34var' ( in 3X4 matrix of double)
+0:? 'dmat42var' ( in 4X2 matrix of double)
+0:? 'dmat43var' ( in 4X3 matrix of double)
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
@@ -52,6 +70,7 @@
ERROR: Linking vertex stage: Can only use one of gl_ClipDistance or gl_ClipVertex (gl_ClipDistance is preferred)
Shader version: 150
+Requested GL_ARB_vertex_attrib_64bit
ERROR: node is still EOpNull!
0:13 Function Definition: main( ( global void)
0:13 Function Parameters:
@@ -90,6 +109,20 @@
0:? 'iv4' ( in 4-component vector of float)
0:? 'ps' ( uniform float)
0:? 'anon@1' (layout( column_major shared) uniform block{layout( column_major shared) uniform 1-element array of int a})
+0:? 'dvarerr' ( in double)
+0:? 'dvar' ( in double)
+0:? 'dv2var' ( in 2-component vector of double)
+0:? 'dv3var' ( in 3-component vector of double)
+0:? 'dv4var' ( in 4-component vector of double)
+0:? 'dmat2var' ( in 2X2 matrix of double)
+0:? 'dmat3var' ( in 3X3 matrix of double)
+0:? 'dmat4var' ( in 4X4 matrix of double)
+0:? 'dmat23var' ( in 2X3 matrix of double)
+0:? 'dmat24var' ( in 2X4 matrix of double)
+0:? 'dmat32var' ( in 3X2 matrix of double)
+0:? 'dmat34var' ( in 3X4 matrix of double)
+0:? 'dmat42var' ( in 4X2 matrix of double)
+0:? 'dmat43var' ( in 4X3 matrix of double)
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
diff --git a/Test/baseResults/300.frag.out b/Test/baseResults/300.frag.out
index ee1b8a5..50a6b07 100644
--- a/Test/baseResults/300.frag.out
+++ b/Test/baseResults/300.frag.out
@@ -40,15 +40,20 @@
ERROR: 0:129: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
ERROR: 0:148: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type)
ERROR: 0:150: 'early_fragment_tests' : not supported for this version or the enabled extensions
-ERROR: 0:156: 'invariant' : can only apply to an output
-ERROR: 0:157: 'invariant' : can only apply to an output
-ERROR: 0:158: 'invariant' : can only apply to an output
-ERROR: 0:160: 'imageBuffer' : Reserved word.
-ERROR: 0:160: '' : syntax error, unexpected IMAGEBUFFER, expecting COMMA or SEMICOLON
-ERROR: 46 compilation errors. No code generated.
+ERROR: 0:177: 'specific signature of builtin mix' : required extension not requested: GL_EXT_shader_integer_mix
+ERROR: 0:181: 'index layout qualifier on fragment output' : not supported for this version or the enabled extensions
+ERROR: 0:183: 'index' : value must be 0 or 1
+ERROR: 0:189: 'invariant' : can only apply to an output
+ERROR: 0:190: 'invariant' : can only apply to an output
+ERROR: 0:191: 'invariant' : can only apply to an output
+ERROR: 0:193: 'imageBuffer' : Reserved word.
+ERROR: 0:193: '' : syntax error, unexpected IMAGEBUFFER, expecting COMMA or SEMICOLON
+ERROR: 49 compilation errors. No code generated.
Shader version: 300
+Requested GL_EXT_blend_func_extended
+Requested GL_EXT_shader_integer_mix
using early_fragment_tests
ERROR: node is still EOpNull!
0:53 Function Definition: main( ( global void)
@@ -362,6 +367,130 @@
0:145 21.000000
0:145 22.000000
0:145 33.000000
+0:158 Function Definition: testmix( ( global void)
+0:158 Function Parameters:
+0:160 Sequence
+0:160 Sequence
+0:160 move second child to first child ( temp mediump int)
+0:160 'ival' ( temp mediump int)
+0:160 mix ( global mediump int)
+0:160 'x' ( global mediump int)
+0:160 'y' ( global mediump int)
+0:160 'b' ( global bool)
+0:161 Sequence
+0:161 move second child to first child ( temp mediump 2-component vector of int)
+0:161 'iv2' ( temp mediump 2-component vector of int)
+0:161 mix ( global mediump 2-component vector of int)
+0:161 Construct ivec2 ( temp mediump 2-component vector of int)
+0:161 'x' ( global mediump int)
+0:161 Construct ivec2 ( temp mediump 2-component vector of int)
+0:161 'y' ( global mediump int)
+0:161 Construct bvec2 ( temp 2-component vector of bool)
+0:161 'b' ( global bool)
+0:162 Sequence
+0:162 move second child to first child ( temp mediump 3-component vector of int)
+0:162 'iv3' ( temp mediump 3-component vector of int)
+0:162 mix ( global mediump 3-component vector of int)
+0:162 Construct ivec3 ( temp mediump 3-component vector of int)
+0:162 'x' ( global mediump int)
+0:162 Construct ivec3 ( temp mediump 3-component vector of int)
+0:162 'y' ( global mediump int)
+0:162 Construct bvec3 ( temp 3-component vector of bool)
+0:162 'b' ( global bool)
+0:163 Sequence
+0:163 move second child to first child ( temp mediump 4-component vector of int)
+0:163 'iv4' ( temp mediump 4-component vector of int)
+0:163 mix ( global mediump 4-component vector of int)
+0:163 Construct ivec4 ( temp mediump 4-component vector of int)
+0:163 'x' ( global mediump int)
+0:163 Construct ivec4 ( temp mediump 4-component vector of int)
+0:163 'x' ( global mediump int)
+0:163 Construct bvec4 ( temp 4-component vector of bool)
+0:163 'b' ( global bool)
+0:164 Sequence
+0:164 move second child to first child ( temp mediump uint)
+0:164 'uiv' ( temp mediump uint)
+0:164 mix ( global mediump uint)
+0:164 'z' ( global mediump uint)
+0:164 'w' ( global mediump uint)
+0:164 'b' ( global bool)
+0:165 Sequence
+0:165 move second child to first child ( temp mediump 2-component vector of uint)
+0:165 'uv2' ( temp mediump 2-component vector of uint)
+0:165 mix ( global mediump 2-component vector of uint)
+0:165 Construct uvec2 ( temp mediump 2-component vector of uint)
+0:165 'z' ( global mediump uint)
+0:165 Construct uvec2 ( temp mediump 2-component vector of uint)
+0:165 'z' ( global mediump uint)
+0:165 Construct bvec2 ( temp 2-component vector of bool)
+0:165 'b' ( global bool)
+0:166 Sequence
+0:166 move second child to first child ( temp mediump 3-component vector of uint)
+0:166 'uv3' ( temp mediump 3-component vector of uint)
+0:166 mix ( global mediump 3-component vector of uint)
+0:166 Construct uvec3 ( temp mediump 3-component vector of uint)
+0:166 'z' ( global mediump uint)
+0:166 Construct uvec3 ( temp mediump 3-component vector of uint)
+0:166 'z' ( global mediump uint)
+0:166 Construct bvec3 ( temp 3-component vector of bool)
+0:166 'b' ( global bool)
+0:167 Sequence
+0:167 move second child to first child ( temp mediump 4-component vector of uint)
+0:167 'uv4' ( temp mediump 4-component vector of uint)
+0:167 mix ( global mediump 4-component vector of uint)
+0:167 Construct uvec4 ( temp mediump 4-component vector of uint)
+0:167 'z' ( global mediump uint)
+0:167 Construct uvec4 ( temp mediump 4-component vector of uint)
+0:167 'z' ( global mediump uint)
+0:167 Construct bvec4 ( temp 4-component vector of bool)
+0:167 'b' ( global bool)
+0:168 Sequence
+0:168 move second child to first child ( temp bool)
+0:168 'bv' ( temp bool)
+0:168 mix ( global bool)
+0:168 'b1' ( global bool)
+0:168 'b2' ( global bool)
+0:168 'b' ( global bool)
+0:169 Sequence
+0:169 move second child to first child ( temp 2-component vector of bool)
+0:169 'bv2' ( temp 2-component vector of bool)
+0:169 mix ( global 2-component vector of bool)
+0:169 Construct bvec2 ( temp 2-component vector of bool)
+0:169 'b1' ( global bool)
+0:169 Construct bvec2 ( temp 2-component vector of bool)
+0:169 'b2' ( global bool)
+0:169 Construct bvec2 ( temp 2-component vector of bool)
+0:169 'b' ( global bool)
+0:170 Sequence
+0:170 move second child to first child ( temp 3-component vector of bool)
+0:170 'bv3' ( temp 3-component vector of bool)
+0:170 mix ( global 3-component vector of bool)
+0:170 Construct bvec3 ( temp 3-component vector of bool)
+0:170 'b1' ( global bool)
+0:170 Construct bvec3 ( temp 3-component vector of bool)
+0:170 'b2' ( global bool)
+0:170 Construct bvec3 ( temp 3-component vector of bool)
+0:170 'b' ( global bool)
+0:171 Sequence
+0:171 move second child to first child ( temp 4-component vector of bool)
+0:171 'bv4' ( temp 4-component vector of bool)
+0:171 mix ( global 4-component vector of bool)
+0:171 Construct bvec4 ( temp 4-component vector of bool)
+0:171 'b1' ( global bool)
+0:171 Construct bvec4 ( temp 4-component vector of bool)
+0:171 'b2' ( global bool)
+0:171 Construct bvec4 ( temp 4-component vector of bool)
+0:171 'b' ( global bool)
+0:175 Function Definition: testmixFail( ( global void)
+0:175 Function Parameters:
+0:177 Sequence
+0:177 Sequence
+0:177 move second child to first child ( temp mediump int)
+0:177 'ival' ( temp mediump int)
+0:177 mix ( global mediump int)
+0:177 'x' ( global mediump int)
+0:177 'y' ( global mediump int)
+0:177 'b' ( global bool)
0:? Linker Objects
0:? 's2D' ( uniform lowp sampler2D)
0:? 's3D' ( uniform lowp sampler3D)
@@ -397,6 +526,15 @@
0:? 'colors' ( out 4-element array of lowp 4-component vector of float)
0:? 'st1' ( uniform structure{ global mediump int i, global lowp sampler2D s})
0:? 'st2' ( uniform structure{ global mediump int i, global lowp sampler2D s})
+0:? 'b1' ( global bool)
+0:? 'b2' ( global bool)
+0:? 'b' ( global bool)
+0:? 'x' ( global mediump int)
+0:? 'y' ( global mediump int)
+0:? 'z' ( global mediump uint)
+0:? 'w' ( global mediump uint)
+0:? 'outVarFail' (layout( location=0 index=1) out lowp 4-component vector of float)
+0:? 'outVarPass' (layout( location=0 index=0) out lowp 4-component vector of float)
0:? 'fooinv' ( invariant smooth in lowp 4-component vector of float)
@@ -405,6 +543,8 @@
ERROR: Linking fragment stage: when more than one fragment shader output, all must have location qualifiers
Shader version: 300
+Requested GL_EXT_blend_func_extended
+Requested GL_EXT_shader_integer_mix
using early_fragment_tests
ERROR: node is still EOpNull!
0:53 Function Definition: main( ( global void)
@@ -628,5 +768,14 @@
0:? 'colors' ( out 4-element array of lowp 4-component vector of float)
0:? 'st1' ( uniform structure{ global mediump int i, global lowp sampler2D s})
0:? 'st2' ( uniform structure{ global mediump int i, global lowp sampler2D s})
+0:? 'b1' ( global bool)
+0:? 'b2' ( global bool)
+0:? 'b' ( global bool)
+0:? 'x' ( global mediump int)
+0:? 'y' ( global mediump int)
+0:? 'z' ( global mediump uint)
+0:? 'w' ( global mediump uint)
+0:? 'outVarFail' (layout( location=0 index=1) out lowp 4-component vector of float)
+0:? 'outVarPass' (layout( location=0 index=0) out lowp 4-component vector of float)
0:? 'fooinv' ( invariant smooth in lowp 4-component vector of float)
diff --git a/Test/baseResults/300BuiltIns.frag.out b/Test/baseResults/300BuiltIns.frag.out
index 84d4d08..54ecfa5 100644
--- a/Test/baseResults/300BuiltIns.frag.out
+++ b/Test/baseResults/300BuiltIns.frag.out
@@ -1,9 +1,9 @@
300BuiltIns.frag
ERROR: 0:6: 'float' : type requires declaration of default precision qualifier
ERROR: 0:70: 'noise2' : no matching overloaded function found
-ERROR: 0:72: 't__' : identifiers containing consecutive underscores ("__") are reserved, and an error if version <= 300
-ERROR: 0:75: '#define' : names containing consecutive underscores are reserved, and an error if version <= 300: __D
-ERROR: 4 compilation errors. No code generated.
+WARNING: 0:72: 't__' : identifiers containing consecutive underscores ("__") are reserved
+WARNING: 0:75: '#define' : names containing consecutive underscores are reserved: __D
+ERROR: 2 compilation errors. No code generated.
Shader version: 300
diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out
index fab3d46..9fe93e9 100644
--- a/Test/baseResults/310.frag.out
+++ b/Test/baseResults/310.frag.out
@@ -134,12 +134,18 @@
ERROR: 0:431: 'fragment-shader array-of-array output' : not supported with this profile: es
ERROR: 0:435: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group
ERROR: 0:436: 'gl_ViewIndex' : required extension not requested: GL_EXT_multiview
-ERROR: 127 compilation errors. No code generated.
+ERROR: 0:461: 'func' : overloaded functions must have the same return type
+ERROR: 0:461: 'func' : function already has a body
+ERROR: 0:463: 'return' : void function cannot return a value
+ERROR: 0:472: '=' : cannot convert from ' temp mediump uint' to ' temp mediump int'
+ERROR: 0:485: '=' : cannot convert from ' global mediump int' to ' temp mediump uint'
+ERROR: 132 compilation errors. No code generated.
Shader version: 310
Requested GL_EXT_device_group
Requested GL_EXT_multiview
+Requested GL_EXT_shader_implicit_conversions
Requested GL_EXT_shader_io_blocks
Requested GL_EXT_texture_cube_map_array
Requested GL_KHR_blend_equation_advanced
@@ -939,6 +945,80 @@
0:449 Sequence
0:449 'gl_DeviceIndex' ( flat in highp int DeviceIndex)
0:450 'gl_ViewIndex' ( flat in highp int ViewIndex)
+0:456 Function Definition: func(u1;vu4; ( global void)
+0:456 Function Parameters:
+0:456 'a' ( in mediump uint)
+0:456 'b' ( in mediump 4-component vector of uint)
+0:461 Function Definition: func(u1;vu4; ( global mediump int)
+0:461 Function Parameters:
+0:461 'a' ( in mediump uint)
+0:461 'b' ( in mediump 4-component vector of uint)
+0:463 Sequence
+0:463 Branch: Return
+0:468 Function Definition: testimplicit( ( global void)
+0:468 Function Parameters:
+0:470 Sequence
+0:470 Sequence
+0:470 move second child to first child ( temp mediump uint)
+0:470 'a' ( temp mediump uint)
+0:470 Convert int to uint ( temp mediump uint)
+0:470 'b' ( global mediump int)
+0:471 Sequence
+0:471 move second child to first child ( temp mediump 4-component vector of float)
+0:471 'col' ( temp mediump 4-component vector of float)
+0:471 Constant:
+0:471 1.000000
+0:471 2.000000
+0:471 3.000000
+0:471 4.000000
+0:475 Sequence
+0:475 move second child to first child ( temp mediump uint)
+0:475 'c' ( temp mediump uint)
+0:475 Convert int to uint ( temp mediump uint)
+0:475 component-wise multiply ( temp mediump int)
+0:475 'b' ( temp mediump int)
+0:475 Constant:
+0:475 3 (const int)
+0:476 Sequence
+0:476 move second child to first child ( temp mediump uint)
+0:476 'd' ( temp mediump uint)
+0:476 component-wise multiply ( temp mediump uint)
+0:476 Convert int to uint ( temp mediump uint)
+0:476 'b' ( temp mediump int)
+0:476 Constant:
+0:476 3 (const uint)
+0:477 Sequence
+0:477 move second child to first child ( temp mediump uint)
+0:477 'e' ( temp mediump uint)
+0:477 Convert int to uint ( temp mediump uint)
+0:477 mod ( temp mediump int)
+0:477 'b' ( temp mediump int)
+0:477 Constant:
+0:477 3 (const int)
+0:478 Sequence
+0:478 move second child to first child ( temp mediump uint)
+0:478 'f' ( temp mediump uint)
+0:478 Test condition and select ( temp mediump uint)
+0:478 Condition
+0:478 Compare Greater Than ( temp bool)
+0:478 'b' ( temp mediump int)
+0:478 Constant:
+0:478 3 (const int)
+0:478 true case
+0:478 Convert int to uint ( temp uint)
+0:478 'b' ( temp mediump int)
+0:478 false case
+0:478 'c' ( temp mediump uint)
+0:479 Function Call: func(u1;vu4; ( global void)
+0:479 Convert int to uint ( temp uint)
+0:479 'b' ( temp mediump int)
+0:479 Constant:
+0:479 1 (const uint)
+0:479 2 (const uint)
+0:479 3 (const uint)
+0:479 4 (const uint)
+0:484 Function Definition: testimplicitFail( ( global void)
+0:484 Function Parameters:
0:? Linker Objects
0:? 'gl_FragCoord' ( smooth in mediump 4-component vector of float)
0:? 'v3' (layout( location=2) smooth in mediump 3-component vector of float)
@@ -1033,6 +1113,7 @@
0:? 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
0:? 'badout' ( out mediump 4-component vector of float)
0:? 'outAA' ( out 2-element array of 2-element array of mediump 4-component vector of float)
+0:? 'b' ( global mediump int)
Linked fragment stage:
@@ -1042,6 +1123,7 @@
Shader version: 310
Requested GL_EXT_device_group
Requested GL_EXT_multiview
+Requested GL_EXT_shader_implicit_conversions
Requested GL_EXT_shader_io_blocks
Requested GL_EXT_texture_cube_map_array
Requested GL_KHR_blend_equation_advanced
@@ -1244,4 +1326,5 @@
0:? 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float)
0:? 'badout' ( out mediump 4-component vector of float)
0:? 'outAA' ( out 2-element array of 2-element array of mediump 4-component vector of float)
+0:? 'b' ( global mediump int)
diff --git a/Test/baseResults/330.frag.out b/Test/baseResults/330.frag.out
index 36ba7a2..e919b5b 100644
--- a/Test/baseResults/330.frag.out
+++ b/Test/baseResults/330.frag.out
@@ -35,16 +35,15 @@
ERROR: 0:126: 'location/component/index' : cannot declare a default, use a full declaration
ERROR: 0:127: 'location/component/index' : cannot declare a default, use a full declaration
ERROR: 0:128: 'output block' : not supported in this stage: fragment
-ERROR: 0:140: 'textureQueryLod' : no matching overloaded function found
-ERROR: 0:140: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
-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:138: 'index' : value must be 0 or 1
+ERROR: 0:140: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions
+ERROR: 0:146: 'location' : cannot apply to uniform or buffer block
+ERROR: 39 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)
@@ -77,18 +76,13 @@
0:24 move second child to first child ( temp 4-component vector of float)
0:24 'outVar' (layout( location=0 index=0) out 4-component vector of float)
0:24 'inVar' ( smooth in 4-component vector of float)
-0:133 Function Definition: qlod( ( global void)
+0:133 Function Definition: fooKeyMem( ( global void)
0:133 Function Parameters:
-0:? Sequence
-0:140 'lod' ( temp 2-component vector of float)
-0:141 'lod' ( temp 2-component vector of float)
-0:147 Function Definition: fooKeyMem( ( global void)
-0:147 Function Parameters:
-0:149 Sequence
-0:149 precise: direct index for structure ( global int)
-0:149 'KeyMem' ( global structure{ global int precise})
-0:149 Constant:
-0:149 0 (const int)
+0:135 Sequence
+0:135 precise: direct index for structure ( global int)
+0:135 'KeyMem' ( global structure{ global int precise})
+0:135 Constant:
+0:135 0 (const int)
0:? Linker Objects
0:? 'inVar' ( smooth in 4-component vector of float)
0:? 'outVar' (layout( location=0 index=0) out 4-component vector of float)
@@ -121,11 +115,12 @@
0:? 'outVar4' (layout( location=0 index=1) out 4-component vector of float)
0:? 'indexIn' (layout( location=27 index=0) smooth in 4-component vector of float)
0:? 'indexBlockI' (layout( location=26 index=0) out block{ out int a})
-0:? 'samp1D' ( uniform sampler1D)
-0:? 'samp2Ds' ( uniform sampler2DShadow)
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 +130,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)
@@ -186,9 +182,10 @@
0:? 'outVar4' (layout( location=0 index=1) out 4-component vector of float)
0:? 'indexIn' (layout( location=27 index=0) smooth in 4-component vector of float)
0:? 'indexBlockI' (layout( location=26 index=0) out block{ out int a})
-0:? 'samp1D' ( uniform sampler1D)
-0:? 'samp2Ds' ( uniform sampler2DShadow)
0:? 'precise' ( global int)
0:? 'KeyMem' ( global structure{ global int precise})
0:? 'outIndex2' (layout( location=28 index=0) out 4-component vector of float)
+0:? 'ucolor0' (layout( location=4) uniform 4-component vector of float)
+0:? 'ucolor1' (layout( location=5) uniform 4-component vector of float)
+0:? 'colorsBuffer' (layout( location=6 column_major shared) uniform block{layout( column_major shared) uniform 128-element array of 4-component vector of float colors})
diff --git a/Test/baseResults/410.vert.out b/Test/baseResults/410.vert.out
index aacdf36..79268bc 100644
--- a/Test/baseResults/410.vert.out
+++ b/Test/baseResults/410.vert.out
@@ -3,6 +3,12 @@
0:? Sequence
0:7 Function Definition: main( ( global void)
0:7 Function Parameters:
+0:9 Sequence
+0:9 Sequence
+0:9 move second child to first child ( temp int)
+0:9 'test' ( temp int)
+0:9 Constant:
+0:9 16 (const int)
0:? Linker Objects
0:? 'd' ( in double)
0:? 'd3' ( in 3-component vector of double)
@@ -18,6 +24,12 @@
0:? Sequence
0:7 Function Definition: main( ( global void)
0:7 Function Parameters:
+0:9 Sequence
+0:9 Sequence
+0:9 move second child to first child ( temp int)
+0:9 'test' ( temp int)
+0:9 Constant:
+0:9 16 (const int)
0:? Linker Objects
0:? 'd' ( in double)
0:? 'd3' ( in 3-component vector of double)
diff --git a/Test/baseResults/420.frag.out b/Test/baseResults/420.frag.out
index ffb8f6d..1a7586a 100644
--- a/Test/baseResults/420.frag.out
+++ b/Test/baseResults/420.frag.out
@@ -3,10 +3,15 @@
ERROR: 0:11: 'layout qualifier' : can only apply depth layout to gl_FragDepth
ERROR: 0:12: 'gl_FragDepth' : cannot redeclare after use
ERROR: 0:14: 'atomic_uint' : array must be explicitly sized
-ERROR: 4 compilation errors. No code generated.
+ERROR: 0:17: 'imageSize' : required extension not requested: GL_ARB_shader_image_size
+ERROR: 0:39: 'std430' : not supported for this version or the enabled extensions
+ERROR: 0:39: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON
+ERROR: 7 compilation errors. No code generated.
Shader version: 420
+Requested GL_ARB_shader_image_size
+Requested GL_ARB_shader_storage_buffer_object
using depth_any
ERROR: node is still EOpNull!
0:6 Function Definition: main( ( global void)
@@ -16,16 +21,75 @@
0:8 'gl_FragDepth' ( gl_FragDepth float FragDepth)
0:8 Constant:
0:8 0.300000
+0:17 Sequence
+0:17 move second child to first child ( temp 2-component vector of int)
+0:17 'iv2dim' ( global 2-component vector of int)
+0:17 imageQuerySize ( global 2-component vector of int)
+0:17 'i2D' ( writeonly uniform image2D)
+0:19 Sequence
+0:19 move second child to first child ( temp 2-component vector of int)
+0:19 'iv2dim1' ( global 2-component vector of int)
+0:19 imageQuerySize ( global 2-component vector of int)
+0:19 'i2D' ( writeonly uniform image2D)
+0:29 Function Definition: atomicOpPass( ( global void)
+0:29 Function Parameters:
+0:31 Sequence
+0:31 Sequence
+0:31 move second child to first child ( temp int)
+0:31 'origi' ( temp int)
+0:31 AtomicAdd ( global int)
+0:31 atomi: direct index for structure (layout( column_major std430 offset=0) buffer int)
+0:31 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer int atomi, layout( column_major std430 offset=4) buffer uint atomu})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 Constant:
+0:31 3 (const int)
+0:32 Sequence
+0:32 move second child to first child ( temp uint)
+0:32 'origu' ( temp uint)
+0:32 AtomicAnd ( global uint)
+0:32 atomu: direct index for structure (layout( column_major std430 offset=4) buffer uint)
+0:32 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer int atomi, layout( column_major std430 offset=4) buffer uint atomu})
+0:32 Constant:
+0:32 1 (const uint)
+0:32 Constant:
+0:32 7 (const uint)
+0:33 move second child to first child ( temp int)
+0:33 'origi' ( temp int)
+0:33 AtomicExchange ( global int)
+0:33 atomi: direct index for structure (layout( column_major std430 offset=0) buffer int)
+0:33 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer int atomi, layout( column_major std430 offset=4) buffer uint atomu})
+0:33 Constant:
+0:33 0 (const uint)
+0:33 Constant:
+0:33 4 (const int)
+0:34 move second child to first child ( temp uint)
+0:34 'origu' ( temp uint)
+0:34 AtomicCompSwap ( global uint)
+0:34 atomu: direct index for structure (layout( column_major std430 offset=4) buffer uint)
+0:34 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer int atomi, layout( column_major std430 offset=4) buffer uint atomu})
+0:34 Constant:
+0:34 1 (const uint)
+0:34 Constant:
+0:34 10 (const uint)
+0:34 Constant:
+0:34 8 (const uint)
0:? Linker Objects
0:? 'gl_FragDepth' ( gl_FragDepth float FragDepth)
0:? 'depth' ( smooth in float)
0:? 'a' (layout( binding=0 offset=0) uniform unsized 1-element array of atomic_uint)
+0:? 'i2D' ( writeonly uniform image2D)
+0:? 'iv2dim' ( global 2-component vector of int)
+0:? 'iv2dim1' ( global 2-component vector of int)
+0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer int atomi, layout( column_major std430 offset=4) buffer uint atomu})
Linked fragment stage:
Shader version: 420
+Requested GL_ARB_shader_image_size
+Requested GL_ARB_shader_storage_buffer_object
using depth_any
ERROR: node is still EOpNull!
0:6 Function Definition: main( ( global void)
@@ -35,8 +99,22 @@
0:8 'gl_FragDepth' ( gl_FragDepth float FragDepth)
0:8 Constant:
0:8 0.300000
+0:17 Sequence
+0:17 move second child to first child ( temp 2-component vector of int)
+0:17 'iv2dim' ( global 2-component vector of int)
+0:17 imageQuerySize ( global 2-component vector of int)
+0:17 'i2D' ( writeonly uniform image2D)
+0:19 Sequence
+0:19 move second child to first child ( temp 2-component vector of int)
+0:19 'iv2dim1' ( global 2-component vector of int)
+0:19 imageQuerySize ( global 2-component vector of int)
+0:19 'i2D' ( writeonly uniform image2D)
0:? Linker Objects
0:? 'gl_FragDepth' ( gl_FragDepth float FragDepth)
0:? 'depth' ( smooth in float)
0:? 'a' (layout( binding=0 offset=0) uniform 1-element array of atomic_uint)
+0:? 'i2D' ( writeonly uniform image2D)
+0:? 'iv2dim' ( global 2-component vector of int)
+0:? 'iv2dim1' ( global 2-component vector of int)
+0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer int atomi, layout( column_major std430 offset=4) buffer uint atomu})
diff --git a/Test/baseResults/450.comp.out b/Test/baseResults/450.comp.out
index 4ae77cc..ce95f8d 100644
--- a/Test/baseResults/450.comp.out
+++ b/Test/baseResults/450.comp.out
@@ -1,14 +1,15 @@
450.comp
ERROR: 0:2: 'local_size_x' : must be at least 1
-ERROR: 0:5: 'shared' : not allowed in nested scope
-ERROR: 2 compilation errors. No code generated.
+ERROR: 0:4: 'binding' : atomic_uint binding is too large
+ERROR: 0:8: 'shared' : not allowed in nested scope
+ERROR: 3 compilation errors. No code generated.
Shader version: 450
local_size = (1, 1, 1)
ERROR: node is still EOpNull!
-0:3 Function Definition: main( ( global void)
-0:3 Function Parameters:
+0:6 Function Definition: main( ( global void)
+0:6 Function Parameters:
0:? Linker Objects
@@ -18,7 +19,7 @@
Shader version: 450
local_size = (1, 1, 1)
ERROR: node is still EOpNull!
-0:3 Function Definition: main( ( global void)
-0:3 Function Parameters:
+0:6 Function Definition: main( ( global void)
+0:6 Function Parameters:
0:? Linker Objects
diff --git a/Test/baseResults/460.vert.out b/Test/baseResults/460.vert.out
index 8fa659b..7f4093b 100644
--- a/Test/baseResults/460.vert.out
+++ b/Test/baseResults/460.vert.out
@@ -4,18 +4,18 @@
0:7 Function Definition: main( ( global void)
0:7 Function Parameters:
0:? Sequence
-0:10 move second child to first child ( temp bool)
-0:10 'b1' ( temp bool)
-0:10 anyInvocation ( global bool)
-0:10 'b1' ( temp bool)
0:11 move second child to first child ( temp bool)
0:11 'b1' ( temp bool)
-0:11 allInvocations ( global bool)
+0:11 anyInvocation ( global bool)
0:11 'b1' ( temp bool)
0:12 move second child to first child ( temp bool)
0:12 'b1' ( temp bool)
-0:12 allInvocationsEqual ( global bool)
+0:12 allInvocations ( global bool)
0:12 'b1' ( temp bool)
+0:13 move second child to first child ( temp bool)
+0:13 'b1' ( temp bool)
+0:13 allInvocationsEqual ( global bool)
+0:13 'b1' ( temp bool)
0:? Linker Objects
0:? 'i' ( global int)
0:? 'f' ( global float)
@@ -31,18 +31,18 @@
0:7 Function Definition: main( ( global void)
0:7 Function Parameters:
0:? Sequence
-0:10 move second child to first child ( temp bool)
-0:10 'b1' ( temp bool)
-0:10 anyInvocation ( global bool)
-0:10 'b1' ( temp bool)
0:11 move second child to first child ( temp bool)
0:11 'b1' ( temp bool)
-0:11 allInvocations ( global bool)
+0:11 anyInvocation ( global bool)
0:11 'b1' ( temp bool)
0:12 move second child to first child ( temp bool)
0:12 'b1' ( temp bool)
-0:12 allInvocationsEqual ( global bool)
+0:12 allInvocations ( global bool)
0:12 'b1' ( temp bool)
+0:13 move second child to first child ( temp bool)
+0:13 'b1' ( temp bool)
+0:13 allInvocationsEqual ( global bool)
+0:13 'b1' ( temp bool)
0:? Linker Objects
0:? 'i' ( global int)
0:? 'f' ( global float)
diff --git a/Test/baseResults/atomic_uint.frag.out b/Test/baseResults/atomic_uint.frag.out
index c705a06..a0c6773 100644
--- a/Test/baseResults/atomic_uint.frag.out
+++ b/Test/baseResults/atomic_uint.frag.out
@@ -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 --git a/Test/baseResults/compoundsuffix.frag.hlsl b/Test/baseResults/compoundsuffix.frag.hlsl
index f47c97d..650d1d0 100644
--- a/Test/baseResults/compoundsuffix.frag.hlsl
+++ b/Test/baseResults/compoundsuffix.frag.hlsl
@@ -1,6 +1,6 @@
compoundsuffix.frag.hlsl
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 22
Capability Shader
diff --git a/Test/baseResults/constFold.frag.out b/Test/baseResults/constFold.frag.out
index 2a48c42..045afc0 100644
--- a/Test/baseResults/constFold.frag.out
+++ b/Test/baseResults/constFold.frag.out
@@ -260,27 +260,27 @@
0:120 1.000000
0:120 Constant:
0:120 3 (const int)
-0:126 Function Definition: foo3( ( global void)
-0:126 Function Parameters:
-0:128 Sequence
-0:128 Sequence
-0:128 move second child to first child ( temp 3X2 matrix of float)
-0:128 'r32' ( temp 3X2 matrix of float)
-0:128 Constant:
-0:128 43.000000
-0:128 64.000000
-0:128 51.000000
-0:128 76.000000
-0:128 59.000000
-0:128 88.000000
-0:138 Function Definition: foo4( ( global void)
-0:138 Function Parameters:
-0:140 Sequence
-0:140 Sequence
-0:140 move second child to first child ( temp int)
-0:140 'a' ( temp int)
-0:140 Constant:
-0:140 9 (const int)
+0:129 Function Definition: foo3( ( global void)
+0:129 Function Parameters:
+0:131 Sequence
+0:131 Sequence
+0:131 move second child to first child ( temp 3X2 matrix of float)
+0:131 'r32' ( temp 3X2 matrix of float)
+0:131 Constant:
+0:131 43.000000
+0:131 64.000000
+0:131 51.000000
+0:131 76.000000
+0:131 59.000000
+0:131 88.000000
+0:141 Function Definition: foo4( ( global void)
+0:141 Function Parameters:
+0:143 Sequence
+0:143 Sequence
+0:143 move second child to first child ( temp int)
+0:143 'a' ( temp int)
+0:143 Constant:
+0:143 9 (const int)
0:? Linker Objects
0:? 'a' ( const int)
0:? 1 (const int)
@@ -367,6 +367,29 @@
0:? 13.000000
0:? 14.000000
0:? 15.000000
+0:? 'm22' ( const 2X2 matrix of float)
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:? 'mm34' ( const 3X4 matrix of float)
+0:? 7.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 7.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 7.000000
+0:? 0.000000
+0:? 'mv4' ( const 4-component vector of float)
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
0:? 'a0' ( const 3-element array of structure{ global int i, global float f, global bool b})
0:? 3 (const int)
0:? 2.000000
@@ -635,6 +658,29 @@
0:? 13.000000
0:? 14.000000
0:? 15.000000
+0:? 'm22' ( const 2X2 matrix of float)
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:? 'mm34' ( const 3X4 matrix of float)
+0:? 7.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 7.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 7.000000
+0:? 0.000000
+0:? 'mv4' ( const 4-component vector of float)
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
0:? 'a0' ( const 3-element array of structure{ global int i, global float f, global bool b})
0:? 3 (const int)
0:? 2.000000
diff --git a/Test/baseResults/cppBad.vert.out b/Test/baseResults/cppBad.vert.out
index 13a5fc1..aaecdf0 100644
--- a/Test/baseResults/cppBad.vert.out
+++ b/Test/baseResults/cppBad.vert.out
@@ -3,7 +3,7 @@
ERROR: 0:3: 'preprocessor evaluation' : bad expression
ERROR: 0:3: '#if' : unexpected tokens following directive
ERROR: 0:6: 'string' : End of line in string
-ERROR: 0:6: '""' : string literals not supported
+ERROR: 0:6: 'string literal' : required extension not requested: GL_EXT_debug_printf
ERROR: 0:6: '' : syntax error, unexpected INT, expecting COMMA or SEMICOLON
ERROR: 5 compilation errors. No code generated.
diff --git a/Test/baseResults/cppSimple.vert.out b/Test/baseResults/cppSimple.vert.out
index 85beb4e..3257856 100644
--- a/Test/baseResults/cppSimple.vert.out
+++ b/Test/baseResults/cppSimple.vert.out
@@ -18,8 +18,8 @@
ERROR: 0:120: '#if' : unexpected tokens following directive
ERROR: 0:121: '#error' : bad6
ERROR: 0:122: '#endif' : unexpected tokens following directive
-ERROR: 0:135: '""' : string literals not supported
-ERROR: 0:136: '""' : string literals not supported
+ERROR: 0:135: 'string literal' : required extension not requested: GL_EXT_debug_printf
+ERROR: 0:136: 'string literal' : required extension not requested: GL_EXT_debug_printf
ERROR: 0:136: 'length' : no matching overloaded function found
ERROR: 0:136: '=' : cannot convert from ' const float' to ' global int'
ERROR: 0:138: ''' : character literals not supported
diff --git a/Test/baseResults/glsl.450.subgroup.frag.out b/Test/baseResults/glsl.450.subgroup.frag.out
index e61523e..817abb2 100644
--- a/Test/baseResults/glsl.450.subgroup.frag.out
+++ b/Test/baseResults/glsl.450.subgroup.frag.out
@@ -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 --git a/Test/baseResults/glsl.entryPointRename.vert.bad.out b/Test/baseResults/glsl.entryPointRename.vert.bad.out
index c7ea97e..7b99bbe 100644
--- a/Test/baseResults/glsl.entryPointRename.vert.bad.out
+++ b/Test/baseResults/glsl.entryPointRename.vert.bad.out
@@ -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 --git a/Test/baseResults/glsl.entryPointRename.vert.out b/Test/baseResults/glsl.entryPointRename.vert.out
index 3dbe13b..3044dee 100644
--- a/Test/baseResults/glsl.entryPointRename.vert.out
+++ b/Test/baseResults/glsl.entryPointRename.vert.out
@@ -1,6 +1,6 @@
glsl.entryPointRename.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 20
Capability Shader
diff --git a/Test/baseResults/glspv.esversion.vert.out b/Test/baseResults/glspv.esversion.vert.out
index 395d7f3..9f92513 100644
--- a/Test/baseResults/glspv.esversion.vert.out
+++ b/Test/baseResults/glspv.esversion.vert.out
@@ -1,6 +1,6 @@
glspv.esversion.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 10
Capability Shader
diff --git a/Test/baseResults/glspv.version.frag.out b/Test/baseResults/glspv.version.frag.out
index 4a45b5b..42c73dd 100644
--- a/Test/baseResults/glspv.version.frag.out
+++ b/Test/baseResults/glspv.version.frag.out
@@ -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 --git a/Test/baseResults/hlsl.PointSize.geom.out b/Test/baseResults/hlsl.PointSize.geom.out
index 77cdc7d..80fee61 100644
--- a/Test/baseResults/hlsl.PointSize.geom.out
+++ b/Test/baseResults/hlsl.PointSize.geom.out
@@ -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 --git a/Test/baseResults/hlsl.PointSize.vert.out b/Test/baseResults/hlsl.PointSize.vert.out
index bda0030..2390a5a 100644
--- a/Test/baseResults/hlsl.PointSize.vert.out
+++ b/Test/baseResults/hlsl.PointSize.vert.out
@@ -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 --git a/Test/baseResults/hlsl.aliasOpaque.frag.out b/Test/baseResults/hlsl.aliasOpaque.frag.out
index 63d29fa..d22bac6 100644
--- a/Test/baseResults/hlsl.aliasOpaque.frag.out
+++ b/Test/baseResults/hlsl.aliasOpaque.frag.out
@@ -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 --git a/Test/baseResults/hlsl.amend.frag.out b/Test/baseResults/hlsl.amend.frag.out
index e273abe..7fd0727 100644
--- a/Test/baseResults/hlsl.amend.frag.out
+++ b/Test/baseResults/hlsl.amend.frag.out
@@ -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 --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out
index 80d5153..4c2a8c1 100644
--- a/Test/baseResults/hlsl.array.flatten.frag.out
+++ b/Test/baseResults/hlsl.array.flatten.frag.out
@@ -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 --git a/Test/baseResults/hlsl.array.frag.out b/Test/baseResults/hlsl.array.frag.out
index 2e706d7..7178102 100644
--- a/Test/baseResults/hlsl.array.frag.out
+++ b/Test/baseResults/hlsl.array.frag.out
@@ -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 --git a/Test/baseResults/hlsl.array.implicit-size.frag.out b/Test/baseResults/hlsl.array.implicit-size.frag.out
index 9af6fed..402807e 100644
--- a/Test/baseResults/hlsl.array.implicit-size.frag.out
+++ b/Test/baseResults/hlsl.array.implicit-size.frag.out
@@ -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 --git a/Test/baseResults/hlsl.array.multidim.frag.out b/Test/baseResults/hlsl.array.multidim.frag.out
index 9462999..6c852c3 100644
--- a/Test/baseResults/hlsl.array.multidim.frag.out
+++ b/Test/baseResults/hlsl.array.multidim.frag.out
@@ -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 --git a/Test/baseResults/hlsl.assoc.frag.out b/Test/baseResults/hlsl.assoc.frag.out
index 562a863..2002b0d 100644
--- a/Test/baseResults/hlsl.assoc.frag.out
+++ b/Test/baseResults/hlsl.assoc.frag.out
@@ -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 --git a/Test/baseResults/hlsl.attribute.expression.comp.out b/Test/baseResults/hlsl.attribute.expression.comp.out
index 1b3ffdb..1ff2123 100644
--- a/Test/baseResults/hlsl.attribute.expression.comp.out
+++ b/Test/baseResults/hlsl.attribute.expression.comp.out
@@ -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 --git a/Test/baseResults/hlsl.attribute.frag.out b/Test/baseResults/hlsl.attribute.frag.out
index 44e963e..2290cd8 100644
--- a/Test/baseResults/hlsl.attribute.frag.out
+++ b/Test/baseResults/hlsl.attribute.frag.out
@@ -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 --git a/Test/baseResults/hlsl.attributeC11.frag.out b/Test/baseResults/hlsl.attributeC11.frag.out
index 47dd96a..14bdcdd 100644
--- a/Test/baseResults/hlsl.attributeC11.frag.out
+++ b/Test/baseResults/hlsl.attributeC11.frag.out
@@ -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 --git a/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out b/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out
index e378447..a486d1e 100644
--- a/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out
+++ b/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out
@@ -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 --git a/Test/baseResults/hlsl.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out
index d84642e..fb26bc3 100644
--- a/Test/baseResults/hlsl.basic.comp.out
+++ b/Test/baseResults/hlsl.basic.comp.out
@@ -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 --git a/Test/baseResults/hlsl.basic.geom.out b/Test/baseResults/hlsl.basic.geom.out
index f4116d4..ee123d4 100644
--- a/Test/baseResults/hlsl.basic.geom.out
+++ b/Test/baseResults/hlsl.basic.geom.out
@@ -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 --git a/Test/baseResults/hlsl.boolConv.vert.out b/Test/baseResults/hlsl.boolConv.vert.out
index d88955f..8762faf 100644
--- a/Test/baseResults/hlsl.boolConv.vert.out
+++ b/Test/baseResults/hlsl.boolConv.vert.out
@@ -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 --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out
index 25a7963..e41c02d 100644
--- a/Test/baseResults/hlsl.buffer.frag.out
+++ b/Test/baseResults/hlsl.buffer.frag.out
@@ -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 --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
index f327883..698350c 100644
--- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
index 85dafcc..e4bcb61 100644
--- a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.cast.frag.out b/Test/baseResults/hlsl.cast.frag.out
index 0aa11be..aa657f3 100644
--- a/Test/baseResults/hlsl.cast.frag.out
+++ b/Test/baseResults/hlsl.cast.frag.out
@@ -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 --git a/Test/baseResults/hlsl.cbuffer-identifier.vert.out b/Test/baseResults/hlsl.cbuffer-identifier.vert.out
index f7225f8..5cec136 100644
--- a/Test/baseResults/hlsl.cbuffer-identifier.vert.out
+++ b/Test/baseResults/hlsl.cbuffer-identifier.vert.out
@@ -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 --git a/Test/baseResults/hlsl.charLit.vert.out b/Test/baseResults/hlsl.charLit.vert.out
index b09fc81..4846f8f 100644
--- a/Test/baseResults/hlsl.charLit.vert.out
+++ b/Test/baseResults/hlsl.charLit.vert.out
@@ -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 --git a/Test/baseResults/hlsl.clip.frag.out b/Test/baseResults/hlsl.clip.frag.out
index dbf99bf..a0ebb74 100644
--- a/Test/baseResults/hlsl.clip.frag.out
+++ b/Test/baseResults/hlsl.clip.frag.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-1.frag.out b/Test/baseResults/hlsl.clipdistance-1.frag.out
index f223ddc..4382505 100644
--- a/Test/baseResults/hlsl.clipdistance-1.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-1.frag.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-1.geom.out b/Test/baseResults/hlsl.clipdistance-1.geom.out
index 144b877..5348359 100644
--- a/Test/baseResults/hlsl.clipdistance-1.geom.out
+++ b/Test/baseResults/hlsl.clipdistance-1.geom.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-1.vert.out b/Test/baseResults/hlsl.clipdistance-1.vert.out
index d1d1370..7d8b49f 100644
--- a/Test/baseResults/hlsl.clipdistance-1.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-1.vert.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-2.frag.out b/Test/baseResults/hlsl.clipdistance-2.frag.out
index 64604eb..d1da7bc 100644
--- a/Test/baseResults/hlsl.clipdistance-2.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-2.frag.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-2.geom.out b/Test/baseResults/hlsl.clipdistance-2.geom.out
index a8abd02..bdee84f 100644
--- a/Test/baseResults/hlsl.clipdistance-2.geom.out
+++ b/Test/baseResults/hlsl.clipdistance-2.geom.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-2.vert.out b/Test/baseResults/hlsl.clipdistance-2.vert.out
index 397a25d..77bd23d 100644
--- a/Test/baseResults/hlsl.clipdistance-2.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-2.vert.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-3.frag.out b/Test/baseResults/hlsl.clipdistance-3.frag.out
index 3b5082e..c7eda56 100644
--- a/Test/baseResults/hlsl.clipdistance-3.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-3.frag.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-3.geom.out b/Test/baseResults/hlsl.clipdistance-3.geom.out
index f8ba5c6..2e6b5f6 100644
--- a/Test/baseResults/hlsl.clipdistance-3.geom.out
+++ b/Test/baseResults/hlsl.clipdistance-3.geom.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-3.vert.out b/Test/baseResults/hlsl.clipdistance-3.vert.out
index 01afd17..c9289a5 100644
--- a/Test/baseResults/hlsl.clipdistance-3.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-3.vert.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-4.frag.out b/Test/baseResults/hlsl.clipdistance-4.frag.out
index 95f81c9..8a46b15 100644
--- a/Test/baseResults/hlsl.clipdistance-4.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-4.frag.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-4.geom.out b/Test/baseResults/hlsl.clipdistance-4.geom.out
index 1096e02..31d3205 100644
--- a/Test/baseResults/hlsl.clipdistance-4.geom.out
+++ b/Test/baseResults/hlsl.clipdistance-4.geom.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-4.vert.out b/Test/baseResults/hlsl.clipdistance-4.vert.out
index d05fae4..7fca9d4 100644
--- a/Test/baseResults/hlsl.clipdistance-4.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-4.vert.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-5.frag.out b/Test/baseResults/hlsl.clipdistance-5.frag.out
index afdd4c4..f0adb05 100644
--- a/Test/baseResults/hlsl.clipdistance-5.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-5.frag.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-5.vert.out b/Test/baseResults/hlsl.clipdistance-5.vert.out
index 3e8f1fe..264c22c 100644
--- a/Test/baseResults/hlsl.clipdistance-5.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-5.vert.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-6.frag.out b/Test/baseResults/hlsl.clipdistance-6.frag.out
index 3ee8065..49c225a 100644
--- a/Test/baseResults/hlsl.clipdistance-6.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-6.frag.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-6.vert.out b/Test/baseResults/hlsl.clipdistance-6.vert.out
index a386d0a..024d028 100644
--- a/Test/baseResults/hlsl.clipdistance-6.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-6.vert.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-7.frag.out b/Test/baseResults/hlsl.clipdistance-7.frag.out
index 94b6a79..5ff568e 100644
--- a/Test/baseResults/hlsl.clipdistance-7.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-7.frag.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-7.vert.out b/Test/baseResults/hlsl.clipdistance-7.vert.out
index 87e34bd..24eced8 100644
--- a/Test/baseResults/hlsl.clipdistance-7.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-7.vert.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-8.frag.out b/Test/baseResults/hlsl.clipdistance-8.frag.out
index 98c9505..f4e55ac 100644
--- a/Test/baseResults/hlsl.clipdistance-8.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-8.frag.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-8.vert.out b/Test/baseResults/hlsl.clipdistance-8.vert.out
index 88800e3..456e11f 100644
--- a/Test/baseResults/hlsl.clipdistance-8.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-8.vert.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-9.frag.out b/Test/baseResults/hlsl.clipdistance-9.frag.out
index ff7f261..0a17eaf 100644
--- a/Test/baseResults/hlsl.clipdistance-9.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-9.frag.out
@@ -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 --git a/Test/baseResults/hlsl.clipdistance-9.vert.out b/Test/baseResults/hlsl.clipdistance-9.vert.out
index 2d0c9b0..61b996f 100644
--- a/Test/baseResults/hlsl.clipdistance-9.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-9.vert.out
@@ -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 --git a/Test/baseResults/hlsl.color.hull.tesc.out b/Test/baseResults/hlsl.color.hull.tesc.out
index 72e0b7e..c5be8e4 100644
--- a/Test/baseResults/hlsl.color.hull.tesc.out
+++ b/Test/baseResults/hlsl.color.hull.tesc.out
@@ -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 --git a/Test/baseResults/hlsl.comparison.vec.frag.out b/Test/baseResults/hlsl.comparison.vec.frag.out
index ff73e17..5936c9a 100644
--- a/Test/baseResults/hlsl.comparison.vec.frag.out
+++ b/Test/baseResults/hlsl.comparison.vec.frag.out
@@ -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 --git a/Test/baseResults/hlsl.conditional.frag.out b/Test/baseResults/hlsl.conditional.frag.out
index 7df88e7..e23d49c 100644
--- a/Test/baseResults/hlsl.conditional.frag.out
+++ b/Test/baseResults/hlsl.conditional.frag.out
@@ -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 --git a/Test/baseResults/hlsl.constantbuffer.frag.out b/Test/baseResults/hlsl.constantbuffer.frag.out
index fa8881d..48d849b 100644
--- a/Test/baseResults/hlsl.constantbuffer.frag.out
+++ b/Test/baseResults/hlsl.constantbuffer.frag.out
@@ -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 --git a/Test/baseResults/hlsl.constructArray.vert.out b/Test/baseResults/hlsl.constructArray.vert.out
index 6e18ad9..8ba41bc 100644
--- a/Test/baseResults/hlsl.constructArray.vert.out
+++ b/Test/baseResults/hlsl.constructArray.vert.out
@@ -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 --git a/Test/baseResults/hlsl.constructexpr.frag.out b/Test/baseResults/hlsl.constructexpr.frag.out
index 227c7e1..085821a 100644
--- a/Test/baseResults/hlsl.constructexpr.frag.out
+++ b/Test/baseResults/hlsl.constructexpr.frag.out
@@ -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 --git a/Test/baseResults/hlsl.constructimat.frag.out b/Test/baseResults/hlsl.constructimat.frag.out
index 075dabb..a5014db 100644
--- a/Test/baseResults/hlsl.constructimat.frag.out
+++ b/Test/baseResults/hlsl.constructimat.frag.out
@@ -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 --git a/Test/baseResults/hlsl.coverage.frag.out b/Test/baseResults/hlsl.coverage.frag.out
index 691d643..a148073 100644
--- a/Test/baseResults/hlsl.coverage.frag.out
+++ b/Test/baseResults/hlsl.coverage.frag.out
@@ -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 --git a/Test/baseResults/hlsl.dashI.vert.out b/Test/baseResults/hlsl.dashI.vert.out
index eb9406b..d5e7e20 100644
--- a/Test/baseResults/hlsl.dashI.vert.out
+++ b/Test/baseResults/hlsl.dashI.vert.out
@@ -1,6 +1,6 @@
hlsl.dashI.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 40
Capability Shader
diff --git a/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out b/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out
index 2bc08da..559708d 100644
--- a/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out
+++ b/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out
@@ -1,6 +1,6 @@
hlsl.deadFunctionMissingBody.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 18
Capability Shader
diff --git a/Test/baseResults/hlsl.depthGreater.frag.out b/Test/baseResults/hlsl.depthGreater.frag.out
index df6311f..7092802 100644
--- a/Test/baseResults/hlsl.depthGreater.frag.out
+++ b/Test/baseResults/hlsl.depthGreater.frag.out
@@ -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
diff --git a/Test/baseResults/hlsl.depthLess.frag.out b/Test/baseResults/hlsl.depthLess.frag.out
index d2b9d8e..275eaf1 100644
--- a/Test/baseResults/hlsl.depthLess.frag.out
+++ b/Test/baseResults/hlsl.depthLess.frag.out
@@ -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
diff --git a/Test/baseResults/hlsl.discard.frag.out b/Test/baseResults/hlsl.discard.frag.out
index cc7c866..23ed871 100644
--- a/Test/baseResults/hlsl.discard.frag.out
+++ b/Test/baseResults/hlsl.discard.frag.out
@@ -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 --git a/Test/baseResults/hlsl.doLoop.frag.out b/Test/baseResults/hlsl.doLoop.frag.out
index bb56465..2b65a76 100644
--- a/Test/baseResults/hlsl.doLoop.frag.out
+++ b/Test/baseResults/hlsl.doLoop.frag.out
@@ -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:1 Function Definition: f0( ( temp void)
+0:1 Function Parameters:
0:? Sequence
-0:3 Loop with condition not tested first: Unroll
-0:3 Loop Condition
-0:3 Constant:
-0:3 false (const bool)
-0:3 No loop body
-0:4 Loop with condition not tested first: Unroll
-0:4 Loop Condition
-0:4 Constant:
-0:4 false (const bool)
-0:4 No loop body
-0:5 Loop with condition not tested first
-0:5 Loop Condition
-0:5 Compare Greater Than ( temp bool)
-0:5 'input' ( in float)
-0:5 Constant:
-0:5 2.000000
-0:5 Loop Body
-0:? Sequence
-0:5 Branch: Return with expression
-0:5 Construct vec4 ( temp 4-component vector of float)
-0:5 'input' ( in float)
-0:6 Loop with condition not tested first
+0:2 Loop with condition not tested first: Unroll
+0:2 Loop Condition
+0:2 Constant:
+0:2 false (const bool)
+0:2 No loop body
+0:5 Function Definition: f1( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:6 Loop with condition not tested first: Unroll
0:6 Loop Condition
-0:6 Compare Less Than ( temp bool)
-0:6 'input' ( in float)
-0:6 Constant:
-0:6 10.000000
-0:6 Loop Body
-0:6 Pre-Increment ( temp float)
-0:6 'input' ( in float)
-0:7 Loop with condition not tested first
-0:7 Loop Condition
-0:7 Compare Less Than ( temp bool)
-0:7 Pre-Increment ( temp float)
-0:7 'input' ( in float)
-0:7 Constant:
-0:7 10.000000
-0:7 Loop Body
-0:7 Loop with condition tested first
-0:7 Loop Condition
-0:7 Compare Less Than ( temp bool)
-0:7 Pre-Increment ( temp float)
-0:7 'input' ( in float)
-0:7 Constant:
-0:7 10.000000
-0:7 No loop body
-0:8 Branch: Return with expression
-0:8 Construct vec4 ( temp 4-component vector of float)
-0:8 'input' ( in float)
-0:2 Function Definition: PixelShaderFunction( ( temp void)
-0:2 Function Parameters:
+0:6 Constant:
+0:6 false (const bool)
+0:6 No loop body
+0:9 Function Definition: f2(f1; ( temp float)
+0:9 Function Parameters:
+0:9 'input' ( in float)
0:? Sequence
-0:2 move second child to first child ( temp float)
+0:10 Loop with condition not tested first
+0:10 Loop Condition
+0:10 Compare Greater Than ( temp bool)
+0:10 'input' ( in float)
+0:10 Constant:
+0:10 2.000000
+0:10 Loop Body
+0:? Sequence
+0:10 Branch: Return with expression
+0:10 Construct float ( temp float)
+0:10 Construct vec4 ( temp 4-component vector of float)
+0:10 'input' ( in float)
+0:13 Function Definition: f3(f1; ( temp void)
+0:13 Function Parameters:
+0:13 'input' ( in float)
+0:? Sequence
+0:14 Loop with condition not tested first
+0:14 Loop Condition
+0:14 Compare Less Than ( temp bool)
+0:14 'input' ( in float)
+0:14 Constant:
+0:14 10.000000
+0:14 Loop Body
+0:14 Pre-Increment ( temp float)
+0:14 'input' ( in float)
+0:17 Function Definition: f4(f1; ( temp void)
+0:17 Function Parameters:
+0:17 'input' ( in float)
+0:? Sequence
+0:18 Loop with condition not tested first
+0:18 Loop Condition
+0:18 Compare Less Than ( temp bool)
+0:18 Pre-Increment ( temp float)
+0:18 'input' ( in float)
+0:18 Constant:
+0:18 10.000000
+0:18 Loop Body
+0:18 Loop with condition tested first
+0:18 Loop Condition
+0:18 Compare Less Than ( temp bool)
+0:18 Pre-Increment ( temp float)
+0:18 'input' ( in float)
+0:18 Constant:
+0:18 10.000000
+0:18 No loop body
+0:22 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
+0:22 Function Parameters:
+0:22 'input' ( in float)
+0:? Sequence
+0:23 Function Call: f0( ( temp void)
+0:24 Function Call: f1( ( temp void)
+0:25 Function Call: f2(f1; ( temp float)
+0:25 'input' ( in float)
+0:26 Function Call: f3(f1; ( temp void)
+0:26 'input' ( in float)
+0:27 Function Call: f4(f1; ( temp void)
+0:27 'input' ( in float)
+0:28 Branch: Return with expression
+0:28 Construct vec4 ( temp 4-component vector of float)
+0:28 'input' ( in float)
+0:22 Function Definition: PixelShaderFunction( ( temp void)
+0:22 Function Parameters:
+0:? Sequence
+0:22 move second child to first child ( temp float)
0:? 'input' ( temp float)
0:? 'input' (layout( location=0) in float)
-0:2 move second child to first child ( temp 4-component vector of float)
+0:22 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
+0:22 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
0:? 'input' ( temp float)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
@@ -76,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:1 Function Definition: f0( ( temp void)
+0:1 Function Parameters:
0:? Sequence
-0:3 Loop with condition not tested first: Unroll
-0:3 Loop Condition
-0:3 Constant:
-0:3 false (const bool)
-0:3 No loop body
-0:4 Loop with condition not tested first: Unroll
-0:4 Loop Condition
-0:4 Constant:
-0:4 false (const bool)
-0:4 No loop body
-0:5 Loop with condition not tested first
-0:5 Loop Condition
-0:5 Compare Greater Than ( temp bool)
-0:5 'input' ( in float)
-0:5 Constant:
-0:5 2.000000
-0:5 Loop Body
-0:? Sequence
-0:5 Branch: Return with expression
-0:5 Construct vec4 ( temp 4-component vector of float)
-0:5 'input' ( in float)
-0:6 Loop with condition not tested first
+0:2 Loop with condition not tested first: Unroll
+0:2 Loop Condition
+0:2 Constant:
+0:2 false (const bool)
+0:2 No loop body
+0:5 Function Definition: f1( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:6 Loop with condition not tested first: Unroll
0:6 Loop Condition
-0:6 Compare Less Than ( temp bool)
-0:6 'input' ( in float)
-0:6 Constant:
-0:6 10.000000
-0:6 Loop Body
-0:6 Pre-Increment ( temp float)
-0:6 'input' ( in float)
-0:7 Loop with condition not tested first
-0:7 Loop Condition
-0:7 Compare Less Than ( temp bool)
-0:7 Pre-Increment ( temp float)
-0:7 'input' ( in float)
-0:7 Constant:
-0:7 10.000000
-0:7 Loop Body
-0:7 Loop with condition tested first
-0:7 Loop Condition
-0:7 Compare Less Than ( temp bool)
-0:7 Pre-Increment ( temp float)
-0:7 'input' ( in float)
-0:7 Constant:
-0:7 10.000000
-0:7 No loop body
-0:8 Branch: Return with expression
-0:8 Construct vec4 ( temp 4-component vector of float)
-0:8 'input' ( in float)
-0:2 Function Definition: PixelShaderFunction( ( temp void)
-0:2 Function Parameters:
+0:6 Constant:
+0:6 false (const bool)
+0:6 No loop body
+0:9 Function Definition: f2(f1; ( temp float)
+0:9 Function Parameters:
+0:9 'input' ( in float)
0:? Sequence
-0:2 move second child to first child ( temp float)
+0:10 Loop with condition not tested first
+0:10 Loop Condition
+0:10 Compare Greater Than ( temp bool)
+0:10 'input' ( in float)
+0:10 Constant:
+0:10 2.000000
+0:10 Loop Body
+0:? Sequence
+0:10 Branch: Return with expression
+0:10 Construct float ( temp float)
+0:10 Construct vec4 ( temp 4-component vector of float)
+0:10 'input' ( in float)
+0:13 Function Definition: f3(f1; ( temp void)
+0:13 Function Parameters:
+0:13 'input' ( in float)
+0:? Sequence
+0:14 Loop with condition not tested first
+0:14 Loop Condition
+0:14 Compare Less Than ( temp bool)
+0:14 'input' ( in float)
+0:14 Constant:
+0:14 10.000000
+0:14 Loop Body
+0:14 Pre-Increment ( temp float)
+0:14 'input' ( in float)
+0:17 Function Definition: f4(f1; ( temp void)
+0:17 Function Parameters:
+0:17 'input' ( in float)
+0:? Sequence
+0:18 Loop with condition not tested first
+0:18 Loop Condition
+0:18 Compare Less Than ( temp bool)
+0:18 Pre-Increment ( temp float)
+0:18 'input' ( in float)
+0:18 Constant:
+0:18 10.000000
+0:18 Loop Body
+0:18 Loop with condition tested first
+0:18 Loop Condition
+0:18 Compare Less Than ( temp bool)
+0:18 Pre-Increment ( temp float)
+0:18 'input' ( in float)
+0:18 Constant:
+0:18 10.000000
+0:18 No loop body
+0:22 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
+0:22 Function Parameters:
+0:22 'input' ( in float)
+0:? Sequence
+0:23 Function Call: f0( ( temp void)
+0:24 Function Call: f1( ( temp void)
+0:25 Function Call: f2(f1; ( temp float)
+0:25 'input' ( in float)
+0:26 Function Call: f3(f1; ( temp void)
+0:26 'input' ( in float)
+0:27 Function Call: f4(f1; ( temp void)
+0:27 'input' ( in float)
+0:28 Branch: Return with expression
+0:28 Construct vec4 ( temp 4-component vector of float)
+0:28 'input' ( in float)
+0:22 Function Definition: PixelShaderFunction( ( temp void)
+0:22 Function Parameters:
+0:? Sequence
+0:22 move second child to first child ( temp float)
0:? 'input' ( temp float)
0:? 'input' (layout( location=0) in float)
-0:2 move second child to first child ( temp 4-component vector of float)
+0:22 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
+0:22 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
0:? 'input' ( temp float)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
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 --git a/Test/baseResults/hlsl.domain.1.tese.out b/Test/baseResults/hlsl.domain.1.tese.out
index 4bc8bac..0b7b275 100644
--- a/Test/baseResults/hlsl.domain.1.tese.out
+++ b/Test/baseResults/hlsl.domain.1.tese.out
@@ -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 --git a/Test/baseResults/hlsl.domain.2.tese.out b/Test/baseResults/hlsl.domain.2.tese.out
index 827f80f..e6ec924 100644
--- a/Test/baseResults/hlsl.domain.2.tese.out
+++ b/Test/baseResults/hlsl.domain.2.tese.out
@@ -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 --git a/Test/baseResults/hlsl.domain.3.tese.out b/Test/baseResults/hlsl.domain.3.tese.out
index dd3d502..4b8584c 100644
--- a/Test/baseResults/hlsl.domain.3.tese.out
+++ b/Test/baseResults/hlsl.domain.3.tese.out
@@ -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 --git a/Test/baseResults/hlsl.earlydepthstencil.frag.out b/Test/baseResults/hlsl.earlydepthstencil.frag.out
index e598a51..f30b89a 100755
--- a/Test/baseResults/hlsl.earlydepthstencil.frag.out
+++ b/Test/baseResults/hlsl.earlydepthstencil.frag.out
@@ -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 --git a/Test/baseResults/hlsl.emptystruct.init.vert.out b/Test/baseResults/hlsl.emptystruct.init.vert.out
index 410915c..c3c3aef 100644
--- a/Test/baseResults/hlsl.emptystruct.init.vert.out
+++ b/Test/baseResults/hlsl.emptystruct.init.vert.out
@@ -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 --git a/Test/baseResults/hlsl.emptystructreturn.frag.out b/Test/baseResults/hlsl.emptystructreturn.frag.out
index 1c9953b..bb9c26c 100644
--- a/Test/baseResults/hlsl.emptystructreturn.frag.out
+++ b/Test/baseResults/hlsl.emptystructreturn.frag.out
@@ -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 --git a/Test/baseResults/hlsl.emptystructreturn.vert.out b/Test/baseResults/hlsl.emptystructreturn.vert.out
index 65d326d..22027bf 100644
--- a/Test/baseResults/hlsl.emptystructreturn.vert.out
+++ b/Test/baseResults/hlsl.emptystructreturn.vert.out
@@ -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 --git a/Test/baseResults/hlsl.entry-in.frag.out b/Test/baseResults/hlsl.entry-in.frag.out
index dc9eea4..d65532d 100644
--- a/Test/baseResults/hlsl.entry-in.frag.out
+++ b/Test/baseResults/hlsl.entry-in.frag.out
@@ -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 --git a/Test/baseResults/hlsl.entry-out.frag.out b/Test/baseResults/hlsl.entry-out.frag.out
index 6ca3011..e1af284 100644
--- a/Test/baseResults/hlsl.entry-out.frag.out
+++ b/Test/baseResults/hlsl.entry-out.frag.out
@@ -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 --git a/Test/baseResults/hlsl.entry.rename.frag.out b/Test/baseResults/hlsl.entry.rename.frag.out
index 9e23396..b0e958b 100644
--- a/Test/baseResults/hlsl.entry.rename.frag.out
+++ b/Test/baseResults/hlsl.entry.rename.frag.out
@@ -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 --git a/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out b/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out
index 61367d6..c4e6baf 100644
--- a/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out
+++ b/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out
@@ -1,6 +1,6 @@
hlsl.explicitDescriptorSet.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 31
Capability Shader
diff --git a/Test/baseResults/hlsl.explicitDescriptorSet.frag.out b/Test/baseResults/hlsl.explicitDescriptorSet.frag.out
index 9bc2f01..9665ad2 100644
--- a/Test/baseResults/hlsl.explicitDescriptorSet.frag.out
+++ b/Test/baseResults/hlsl.explicitDescriptorSet.frag.out
@@ -1,6 +1,6 @@
hlsl.explicitDescriptorSet.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 31
Capability Shader
diff --git a/Test/baseResults/hlsl.flatten.return.frag.out b/Test/baseResults/hlsl.flatten.return.frag.out
index e47fe3e..bc388f8 100644
--- a/Test/baseResults/hlsl.flatten.return.frag.out
+++ b/Test/baseResults/hlsl.flatten.return.frag.out
@@ -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 --git a/Test/baseResults/hlsl.flattenOpaque.frag.out b/Test/baseResults/hlsl.flattenOpaque.frag.out
index 94d02f4..688656c 100644
--- a/Test/baseResults/hlsl.flattenOpaque.frag.out
+++ b/Test/baseResults/hlsl.flattenOpaque.frag.out
@@ -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 --git a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
index a5a5944..6d16858 100644
--- a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
+++ b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
@@ -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 --git a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
index 5a2aa2a..62a2e8e 100644
--- a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
+++ b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
@@ -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 --git a/Test/baseResults/hlsl.flattenSubset.frag.out b/Test/baseResults/hlsl.flattenSubset.frag.out
index 262a29d..f6da1a9 100644
--- a/Test/baseResults/hlsl.flattenSubset.frag.out
+++ b/Test/baseResults/hlsl.flattenSubset.frag.out
@@ -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 --git a/Test/baseResults/hlsl.flattenSubset2.frag.out b/Test/baseResults/hlsl.flattenSubset2.frag.out
index 77dc4cd..40d92a9 100644
--- a/Test/baseResults/hlsl.flattenSubset2.frag.out
+++ b/Test/baseResults/hlsl.flattenSubset2.frag.out
@@ -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 --git a/Test/baseResults/hlsl.float1.frag.out b/Test/baseResults/hlsl.float1.frag.out
index 49827dc..0f7600e 100644
--- a/Test/baseResults/hlsl.float1.frag.out
+++ b/Test/baseResults/hlsl.float1.frag.out
@@ -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 --git a/Test/baseResults/hlsl.float4.frag.out b/Test/baseResults/hlsl.float4.frag.out
index 8dc3307..8e8c821 100644
--- a/Test/baseResults/hlsl.float4.frag.out
+++ b/Test/baseResults/hlsl.float4.frag.out
@@ -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 --git a/Test/baseResults/hlsl.forLoop.frag.out b/Test/baseResults/hlsl.forLoop.frag.out
index 3e835f8..b6c2710 100644
--- a/Test/baseResults/hlsl.forLoop.frag.out
+++ b/Test/baseResults/hlsl.forLoop.frag.out
@@ -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:1 Function Definition: f0( ( temp void)
+0:1 Function Parameters:
0:? Sequence
0:? Sequence
-0:3 Loop with condition tested first
-0:3 No loop condition
-0:3 No loop body
-0:4 Sequence
-0:4 Pre-Increment ( temp 4-component vector of float)
-0:4 'input' ( in 4-component vector of float)
-0:4 Loop with condition tested first
-0:4 No loop condition
-0:4 No loop body
-0:? Sequence
-0:5 Loop with condition tested first: Unroll
-0:5 Loop Condition
-0:5 any ( temp bool)
-0:5 NotEqual ( temp 4-component vector of bool)
-0:5 'input' ( in 4-component vector of float)
-0:5 'input' ( in 4-component vector of float)
-0:5 No loop body
-0:? Sequence
+0:2 Loop with condition tested first
+0:2 No loop condition
+0:2 No loop body
+0:5 Function Definition: f1(vf4; ( temp void)
+0:5 Function Parameters:
+0:5 'input' ( in 4-component vector of float)
+0:? Sequence
+0:6 Sequence
+0:6 Pre-Increment ( temp 4-component vector of float)
+0:6 'input' ( in 4-component vector of float)
0:6 Loop with condition tested first
-0:6 Loop Condition
-0:6 any ( temp bool)
-0:6 NotEqual ( temp 4-component vector of bool)
-0:6 'input' ( in 4-component vector of float)
-0:6 'input' ( in 4-component vector of float)
-0:6 Loop Body
-0:? Sequence
-0:6 Branch: Return with expression
-0:6 Negate value ( temp 4-component vector of float)
-0:6 'input' ( in 4-component vector of float)
-0:7 Sequence
-0:7 Pre-Decrement ( temp 4-component vector of float)
-0:7 'input' ( in 4-component vector of float)
-0:7 Loop with condition tested first
-0:7 Loop Condition
-0:7 any ( temp bool)
-0:7 NotEqual ( temp 4-component vector of bool)
-0:7 'input' ( in 4-component vector of float)
-0:7 'input' ( in 4-component vector of float)
-0:7 Loop Body
-0:? Sequence
-0:7 Branch: Return with expression
-0:7 Negate value ( temp 4-component vector of float)
-0:7 'input' ( in 4-component vector of float)
-0:7 Loop Terminal Expression
-0:7 add second child into first child ( temp 4-component vector of float)
-0:7 'input' ( in 4-component vector of float)
-0:7 Constant:
-0:7 2.000000
+0:6 No loop condition
+0:6 No loop body
+0:9 Function Definition: f2(vf4; ( temp void)
+0:9 Function Parameters:
+0:9 'input' ( in 4-component vector of float)
+0:? Sequence
0:? Sequence
-0:8 Loop with condition tested first
-0:8 No loop condition
-0:8 Loop Body
-0:8 Test condition and select ( temp void)
-0:8 Condition
-0:8 Compare Greater Than ( temp bool)
-0:8 direct index ( temp float)
-0:8 'input' ( in 4-component vector of float)
-0:8 Constant:
-0:8 0 (const int)
-0:8 Constant:
-0:8 2.000000
-0:8 true case
-0:8 Branch: Break
+0:10 Loop with condition tested first: Unroll
+0:10 Loop Condition
+0:10 any ( temp bool)
+0:10 NotEqual ( temp 4-component vector of bool)
+0:10 'input' ( in 4-component vector of float)
+0:10 'input' ( in 4-component vector of float)
+0:10 No loop body
+0:13 Function Definition: f3(vf4; ( temp float)
+0:13 Function Parameters:
+0:13 'input' ( in 4-component vector of float)
+0:? Sequence
0:? Sequence
-0:9 Loop with condition tested first
-0:9 No loop condition
-0:9 Loop Body
-0:9 Test condition and select ( temp void)
-0:9 Condition
-0:9 Compare Greater Than ( temp bool)
-0:9 direct index ( temp float)
-0:9 'input' ( in 4-component vector of float)
-0:9 Constant:
-0:9 0 (const int)
-0:9 Constant:
-0:9 2.000000
-0:9 true case
-0:9 Branch: Continue
-0:11 Sequence
-0:11 move second child to first child ( temp int)
-0:11 'ii' ( temp int)
-0:11 Constant:
-0:11 -1 (const int)
-0:11 Loop with condition tested first
-0:11 Loop Condition
-0:11 Compare Less Than ( temp bool)
-0:11 'ii' ( temp int)
-0:11 Constant:
-0:11 3 (const int)
-0:11 Loop Body
-0:11 Test condition and select ( temp void)
-0:11 Condition
-0:11 Compare Equal ( temp bool)
-0:11 'ii' ( temp int)
-0:11 Constant:
-0:11 2 (const int)
-0:11 true case
-0:11 Branch: Continue
-0:11 Loop Terminal Expression
-0:11 Pre-Increment ( temp int)
-0:11 'ii' ( temp int)
-0:12 Pre-Decrement ( temp float)
-0:12 'ii' ( temp float)
-0:13 Sequence
-0:13 move second child to first child ( temp int)
-0:13 'first' ( temp int)
-0:13 Constant:
-0:13 0 (const int)
-0:13 move second child to first child ( temp int)
-0:13 'second' ( temp int)
-0:13 Constant:
-0:13 1 (const int)
-0:13 Loop with condition tested first
-0:13 No loop condition
-0:13 Loop Body
-0:13 add ( temp int)
-0:13 'first' ( temp int)
-0:13 'second' ( temp int)
-0:14 Sequence
-0:14 move second child to first child ( temp int)
-0:14 'i' ( temp int)
-0:14 Constant:
-0:14 0 (const int)
-0:14 move second child to first child ( temp int)
-0:14 'count' ( temp int)
-0:14 Convert float to int ( temp int)
-0:14 'ii' ( temp float)
0:14 Loop with condition tested first
0:14 Loop Condition
-0:14 Compare Less Than ( temp bool)
-0:14 'i' ( temp int)
-0:14 'count' ( temp int)
-0:14 No loop body
-0:14 Loop Terminal Expression
-0:14 Post-Increment ( temp int)
-0:14 'i' ( temp int)
-0:15 Sequence
-0:15 move second child to first child ( temp float)
-0:15 'first' ( temp float)
-0:15 Constant:
-0:15 0.000000
-0:15 Loop with condition tested first
-0:15 Loop Condition
-0:15 Compare Less Than ( temp bool)
-0:15 'first' ( temp float)
-0:15 direct index ( temp float)
-0:15 'second' ( temp 2-element array of float)
-0:15 Constant:
-0:15 0 (const int)
-0:15 Loop Body
-0:15 add ( temp float)
-0:15 add ( temp float)
-0:15 'first' ( temp float)
-0:15 direct index ( temp float)
-0:15 'second' ( temp 2-element array of float)
-0:15 Constant:
-0:15 1 (const int)
-0:15 'third' ( temp float)
-0:15 Loop Terminal Expression
-0:15 Pre-Increment ( temp float)
-0:15 direct index ( temp float)
-0:15 'second' ( temp 2-element array of float)
-0:15 Constant:
-0:15 1 (const int)
-0:? Sequence
-0:16 Comma ( temp float)
-0:16 Comma ( temp float)
-0:16 Pre-Decrement ( temp float)
-0:16 'ii' ( temp float)
-0:16 Pre-Decrement ( temp float)
-0:16 'ii' ( temp float)
-0:16 Pre-Decrement ( temp float)
-0:16 'ii' ( temp float)
-0:16 Loop with condition tested first
-0:16 No loop condition
-0:16 Loop Body
-0:16 'ii' ( temp float)
-0:2 Function Definition: PixelShaderFunction( ( temp void)
-0:2 Function Parameters:
+0:14 any ( temp bool)
+0:14 NotEqual ( temp 4-component vector of bool)
+0:14 'input' ( in 4-component vector of float)
+0:14 'input' ( in 4-component vector of float)
+0:14 Loop Body
+0:? Sequence
+0:14 Branch: Return with expression
+0:14 Construct float ( temp float)
+0:14 Negate value ( temp 4-component vector of float)
+0:14 'input' ( in 4-component vector of float)
+0:17 Function Definition: f4(vf4; ( temp float)
+0:17 Function Parameters:
+0:17 'input' ( in 4-component vector of float)
0:? Sequence
-0:2 move second child to first child ( temp 4-component vector of float)
+0:18 Sequence
+0:18 Pre-Decrement ( temp 4-component vector of float)
+0:18 'input' ( in 4-component vector of float)
+0:18 Loop with condition tested first
+0:18 Loop Condition
+0:18 any ( temp bool)
+0:18 NotEqual ( temp 4-component vector of bool)
+0:18 'input' ( in 4-component vector of float)
+0:18 'input' ( in 4-component vector of float)
+0:18 Loop Body
+0:? Sequence
+0:18 Branch: Return with expression
+0:18 Construct float ( temp float)
+0:18 Negate value ( temp 4-component vector of float)
+0:18 'input' ( in 4-component vector of float)
+0:18 Loop Terminal Expression
+0:18 add second child into first child ( temp 4-component vector of float)
+0:18 'input' ( in 4-component vector of float)
+0:18 Constant:
+0:18 2.000000
+0:21 Function Definition: f5(vf4; ( temp void)
+0:21 Function Parameters:
+0:21 'input' ( in 4-component vector of float)
+0:? Sequence
+0:? Sequence
+0:22 Loop with condition tested first
+0:22 No loop condition
+0:22 Loop Body
+0:22 Test condition and select ( temp void)
+0:22 Condition
+0:22 Compare Greater Than ( temp bool)
+0:22 direct index ( temp float)
+0:22 'input' ( in 4-component vector of float)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 2.000000
+0:22 true case
+0:22 Branch: Break
+0:25 Function Definition: f6(vf4; ( temp void)
+0:25 Function Parameters:
+0:25 'input' ( in 4-component vector of float)
+0:? Sequence
+0:? Sequence
+0:26 Loop with condition tested first
+0:26 No loop condition
+0:26 Loop Body
+0:26 Test condition and select ( temp void)
+0:26 Condition
+0:26 Compare Greater Than ( temp bool)
+0:26 direct index ( temp float)
+0:26 'input' ( in 4-component vector of float)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2.000000
+0:26 true case
+0:26 Branch: Continue
+0:29 Function Definition: f99( ( temp void)
+0:29 Function Parameters:
+0:? Sequence
+0:30 Sequence
+0:30 move second child to first child ( temp int)
+0:30 'first' ( temp int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 move second child to first child ( temp int)
+0:30 'second' ( temp int)
+0:30 Constant:
+0:30 1 (const int)
+0:30 Loop with condition tested first
+0:30 No loop condition
+0:30 Loop Body
+0:30 add ( temp int)
+0:30 'first' ( temp int)
+0:30 'second' ( temp int)
+0:33 Function Definition: f100(f1; ( temp void)
+0:33 Function Parameters:
+0:33 'ii' ( in float)
+0:? Sequence
+0:? Sequence
+0:34 Comma ( temp float)
+0:34 Comma ( temp float)
+0:34 Pre-Decrement ( temp float)
+0:34 'ii' ( in float)
+0:34 Pre-Decrement ( temp float)
+0:34 'ii' ( in float)
+0:34 Pre-Decrement ( temp float)
+0:34 'ii' ( in float)
+0:34 Loop with condition tested first
+0:34 No loop condition
+0:34 Loop Body
+0:34 'ii' ( in float)
+0:38 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:38 Function Parameters:
+0:38 'input' ( in 4-component vector of float)
+0:? Sequence
+0:39 Function Call: f0( ( temp void)
+0:40 Function Call: f1(vf4; ( temp void)
+0:40 'input' ( in 4-component vector of float)
+0:41 Function Call: f2(vf4; ( temp void)
+0:41 'input' ( in 4-component vector of float)
+0:42 Function Call: f3(vf4; ( temp float)
+0:42 'input' ( in 4-component vector of float)
+0:43 Function Call: f4(vf4; ( temp float)
+0:43 'input' ( in 4-component vector of float)
+0:44 Function Call: f5(vf4; ( temp void)
+0:44 'input' ( in 4-component vector of float)
+0:45 Function Call: f6(vf4; ( temp void)
+0:45 'input' ( in 4-component vector of float)
+0:48 Sequence
+0:48 move second child to first child ( temp int)
+0:48 'ii' ( temp int)
+0:48 Constant:
+0:48 -1 (const int)
+0:48 Loop with condition tested first
+0:48 Loop Condition
+0:48 Compare Less Than ( temp bool)
+0:48 'ii' ( temp int)
+0:48 Constant:
+0:48 3 (const int)
+0:48 Loop Body
+0:48 Test condition and select ( temp void)
+0:48 Condition
+0:48 Compare Equal ( temp bool)
+0:48 'ii' ( temp int)
+0:48 Constant:
+0:48 2 (const int)
+0:48 true case
+0:48 Branch: Continue
+0:48 Loop Terminal Expression
+0:48 Pre-Increment ( temp int)
+0:48 'ii' ( temp int)
+0:49 Pre-Decrement ( temp float)
+0:49 'ii' ( temp float)
+0:51 Function Call: f99( ( temp void)
+0:53 Sequence
+0:53 move second child to first child ( temp int)
+0:53 'i' ( temp int)
+0:53 Constant:
+0:53 0 (const int)
+0:53 move second child to first child ( temp int)
+0:53 'count' ( temp int)
+0:53 Convert float to int ( temp int)
+0:53 'ii' ( temp float)
+0:53 Loop with condition tested first
+0:53 Loop Condition
+0:53 Compare Less Than ( temp bool)
+0:53 'i' ( temp int)
+0:53 'count' ( temp int)
+0:53 No loop body
+0:53 Loop Terminal Expression
+0:53 Post-Increment ( temp int)
+0:53 'i' ( temp int)
+0:54 Sequence
+0:54 move second child to first child ( temp float)
+0:54 'first' ( temp float)
+0:54 Constant:
+0:54 0.000000
+0:54 Loop with condition tested first
+0:54 Loop Condition
+0:54 Compare Less Than ( temp bool)
+0:54 'first' ( temp float)
+0:54 direct index ( temp float)
+0:54 'second' ( temp 2-element array of float)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Loop Body
+0:54 add ( temp float)
+0:54 add ( temp float)
+0:54 'first' ( temp float)
+0:54 direct index ( temp float)
+0:54 'second' ( temp 2-element array of float)
+0:54 Constant:
+0:54 1 (const int)
+0:54 'third' ( temp float)
+0:54 Loop Terminal Expression
+0:54 Pre-Increment ( temp float)
+0:54 direct index ( temp float)
+0:54 'second' ( temp 2-element array of float)
+0:54 Constant:
+0:54 1 (const int)
+0:56 Function Call: f100(f1; ( temp void)
+0:56 'ii' ( temp float)
+0:58 Branch: Return with expression
+0:58 'input' ( in 4-component vector of float)
+0:38 Function Definition: PixelShaderFunction( ( temp void)
+0:38 Function Parameters:
+0:? Sequence
+0:38 move second child to first child ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
-0:2 move second child to first child ( temp 4-component vector of float)
+0:38 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:38 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
@@ -205,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:1 Function Definition: f0( ( temp void)
+0:1 Function Parameters:
0:? Sequence
0:? Sequence
-0:3 Loop with condition tested first
-0:3 No loop condition
-0:3 No loop body
-0:4 Sequence
-0:4 Pre-Increment ( temp 4-component vector of float)
-0:4 'input' ( in 4-component vector of float)
-0:4 Loop with condition tested first
-0:4 No loop condition
-0:4 No loop body
-0:? Sequence
-0:5 Loop with condition tested first: Unroll
-0:5 Loop Condition
-0:5 any ( temp bool)
-0:5 NotEqual ( temp 4-component vector of bool)
-0:5 'input' ( in 4-component vector of float)
-0:5 'input' ( in 4-component vector of float)
-0:5 No loop body
-0:? Sequence
+0:2 Loop with condition tested first
+0:2 No loop condition
+0:2 No loop body
+0:5 Function Definition: f1(vf4; ( temp void)
+0:5 Function Parameters:
+0:5 'input' ( in 4-component vector of float)
+0:? Sequence
+0:6 Sequence
+0:6 Pre-Increment ( temp 4-component vector of float)
+0:6 'input' ( in 4-component vector of float)
0:6 Loop with condition tested first
-0:6 Loop Condition
-0:6 any ( temp bool)
-0:6 NotEqual ( temp 4-component vector of bool)
-0:6 'input' ( in 4-component vector of float)
-0:6 'input' ( in 4-component vector of float)
-0:6 Loop Body
-0:? Sequence
-0:6 Branch: Return with expression
-0:6 Negate value ( temp 4-component vector of float)
-0:6 'input' ( in 4-component vector of float)
-0:7 Sequence
-0:7 Pre-Decrement ( temp 4-component vector of float)
-0:7 'input' ( in 4-component vector of float)
-0:7 Loop with condition tested first
-0:7 Loop Condition
-0:7 any ( temp bool)
-0:7 NotEqual ( temp 4-component vector of bool)
-0:7 'input' ( in 4-component vector of float)
-0:7 'input' ( in 4-component vector of float)
-0:7 Loop Body
-0:? Sequence
-0:7 Branch: Return with expression
-0:7 Negate value ( temp 4-component vector of float)
-0:7 'input' ( in 4-component vector of float)
-0:7 Loop Terminal Expression
-0:7 add second child into first child ( temp 4-component vector of float)
-0:7 'input' ( in 4-component vector of float)
-0:7 Constant:
-0:7 2.000000
+0:6 No loop condition
+0:6 No loop body
+0:9 Function Definition: f2(vf4; ( temp void)
+0:9 Function Parameters:
+0:9 'input' ( in 4-component vector of float)
+0:? Sequence
0:? Sequence
-0:8 Loop with condition tested first
-0:8 No loop condition
-0:8 Loop Body
-0:8 Test condition and select ( temp void)
-0:8 Condition
-0:8 Compare Greater Than ( temp bool)
-0:8 direct index ( temp float)
-0:8 'input' ( in 4-component vector of float)
-0:8 Constant:
-0:8 0 (const int)
-0:8 Constant:
-0:8 2.000000
-0:8 true case
-0:8 Branch: Break
+0:10 Loop with condition tested first: Unroll
+0:10 Loop Condition
+0:10 any ( temp bool)
+0:10 NotEqual ( temp 4-component vector of bool)
+0:10 'input' ( in 4-component vector of float)
+0:10 'input' ( in 4-component vector of float)
+0:10 No loop body
+0:13 Function Definition: f3(vf4; ( temp float)
+0:13 Function Parameters:
+0:13 'input' ( in 4-component vector of float)
+0:? Sequence
0:? Sequence
-0:9 Loop with condition tested first
-0:9 No loop condition
-0:9 Loop Body
-0:9 Test condition and select ( temp void)
-0:9 Condition
-0:9 Compare Greater Than ( temp bool)
-0:9 direct index ( temp float)
-0:9 'input' ( in 4-component vector of float)
-0:9 Constant:
-0:9 0 (const int)
-0:9 Constant:
-0:9 2.000000
-0:9 true case
-0:9 Branch: Continue
-0:11 Sequence
-0:11 move second child to first child ( temp int)
-0:11 'ii' ( temp int)
-0:11 Constant:
-0:11 -1 (const int)
-0:11 Loop with condition tested first
-0:11 Loop Condition
-0:11 Compare Less Than ( temp bool)
-0:11 'ii' ( temp int)
-0:11 Constant:
-0:11 3 (const int)
-0:11 Loop Body
-0:11 Test condition and select ( temp void)
-0:11 Condition
-0:11 Compare Equal ( temp bool)
-0:11 'ii' ( temp int)
-0:11 Constant:
-0:11 2 (const int)
-0:11 true case
-0:11 Branch: Continue
-0:11 Loop Terminal Expression
-0:11 Pre-Increment ( temp int)
-0:11 'ii' ( temp int)
-0:12 Pre-Decrement ( temp float)
-0:12 'ii' ( temp float)
-0:13 Sequence
-0:13 move second child to first child ( temp int)
-0:13 'first' ( temp int)
-0:13 Constant:
-0:13 0 (const int)
-0:13 move second child to first child ( temp int)
-0:13 'second' ( temp int)
-0:13 Constant:
-0:13 1 (const int)
-0:13 Loop with condition tested first
-0:13 No loop condition
-0:13 Loop Body
-0:13 add ( temp int)
-0:13 'first' ( temp int)
-0:13 'second' ( temp int)
-0:14 Sequence
-0:14 move second child to first child ( temp int)
-0:14 'i' ( temp int)
-0:14 Constant:
-0:14 0 (const int)
-0:14 move second child to first child ( temp int)
-0:14 'count' ( temp int)
-0:14 Convert float to int ( temp int)
-0:14 'ii' ( temp float)
0:14 Loop with condition tested first
0:14 Loop Condition
-0:14 Compare Less Than ( temp bool)
-0:14 'i' ( temp int)
-0:14 'count' ( temp int)
-0:14 No loop body
-0:14 Loop Terminal Expression
-0:14 Post-Increment ( temp int)
-0:14 'i' ( temp int)
-0:15 Sequence
-0:15 move second child to first child ( temp float)
-0:15 'first' ( temp float)
-0:15 Constant:
-0:15 0.000000
-0:15 Loop with condition tested first
-0:15 Loop Condition
-0:15 Compare Less Than ( temp bool)
-0:15 'first' ( temp float)
-0:15 direct index ( temp float)
-0:15 'second' ( temp 2-element array of float)
-0:15 Constant:
-0:15 0 (const int)
-0:15 Loop Body
-0:15 add ( temp float)
-0:15 add ( temp float)
-0:15 'first' ( temp float)
-0:15 direct index ( temp float)
-0:15 'second' ( temp 2-element array of float)
-0:15 Constant:
-0:15 1 (const int)
-0:15 'third' ( temp float)
-0:15 Loop Terminal Expression
-0:15 Pre-Increment ( temp float)
-0:15 direct index ( temp float)
-0:15 'second' ( temp 2-element array of float)
-0:15 Constant:
-0:15 1 (const int)
-0:? Sequence
-0:16 Comma ( temp float)
-0:16 Comma ( temp float)
-0:16 Pre-Decrement ( temp float)
-0:16 'ii' ( temp float)
-0:16 Pre-Decrement ( temp float)
-0:16 'ii' ( temp float)
-0:16 Pre-Decrement ( temp float)
-0:16 'ii' ( temp float)
-0:16 Loop with condition tested first
-0:16 No loop condition
-0:16 Loop Body
-0:16 'ii' ( temp float)
-0:2 Function Definition: PixelShaderFunction( ( temp void)
-0:2 Function Parameters:
+0:14 any ( temp bool)
+0:14 NotEqual ( temp 4-component vector of bool)
+0:14 'input' ( in 4-component vector of float)
+0:14 'input' ( in 4-component vector of float)
+0:14 Loop Body
+0:? Sequence
+0:14 Branch: Return with expression
+0:14 Construct float ( temp float)
+0:14 Negate value ( temp 4-component vector of float)
+0:14 'input' ( in 4-component vector of float)
+0:17 Function Definition: f4(vf4; ( temp float)
+0:17 Function Parameters:
+0:17 'input' ( in 4-component vector of float)
0:? Sequence
-0:2 move second child to first child ( temp 4-component vector of float)
+0:18 Sequence
+0:18 Pre-Decrement ( temp 4-component vector of float)
+0:18 'input' ( in 4-component vector of float)
+0:18 Loop with condition tested first
+0:18 Loop Condition
+0:18 any ( temp bool)
+0:18 NotEqual ( temp 4-component vector of bool)
+0:18 'input' ( in 4-component vector of float)
+0:18 'input' ( in 4-component vector of float)
+0:18 Loop Body
+0:? Sequence
+0:18 Branch: Return with expression
+0:18 Construct float ( temp float)
+0:18 Negate value ( temp 4-component vector of float)
+0:18 'input' ( in 4-component vector of float)
+0:18 Loop Terminal Expression
+0:18 add second child into first child ( temp 4-component vector of float)
+0:18 'input' ( in 4-component vector of float)
+0:18 Constant:
+0:18 2.000000
+0:21 Function Definition: f5(vf4; ( temp void)
+0:21 Function Parameters:
+0:21 'input' ( in 4-component vector of float)
+0:? Sequence
+0:? Sequence
+0:22 Loop with condition tested first
+0:22 No loop condition
+0:22 Loop Body
+0:22 Test condition and select ( temp void)
+0:22 Condition
+0:22 Compare Greater Than ( temp bool)
+0:22 direct index ( temp float)
+0:22 'input' ( in 4-component vector of float)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 2.000000
+0:22 true case
+0:22 Branch: Break
+0:25 Function Definition: f6(vf4; ( temp void)
+0:25 Function Parameters:
+0:25 'input' ( in 4-component vector of float)
+0:? Sequence
+0:? Sequence
+0:26 Loop with condition tested first
+0:26 No loop condition
+0:26 Loop Body
+0:26 Test condition and select ( temp void)
+0:26 Condition
+0:26 Compare Greater Than ( temp bool)
+0:26 direct index ( temp float)
+0:26 'input' ( in 4-component vector of float)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2.000000
+0:26 true case
+0:26 Branch: Continue
+0:29 Function Definition: f99( ( temp void)
+0:29 Function Parameters:
+0:? Sequence
+0:30 Sequence
+0:30 move second child to first child ( temp int)
+0:30 'first' ( temp int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 move second child to first child ( temp int)
+0:30 'second' ( temp int)
+0:30 Constant:
+0:30 1 (const int)
+0:30 Loop with condition tested first
+0:30 No loop condition
+0:30 Loop Body
+0:30 add ( temp int)
+0:30 'first' ( temp int)
+0:30 'second' ( temp int)
+0:33 Function Definition: f100(f1; ( temp void)
+0:33 Function Parameters:
+0:33 'ii' ( in float)
+0:? Sequence
+0:? Sequence
+0:34 Comma ( temp float)
+0:34 Comma ( temp float)
+0:34 Pre-Decrement ( temp float)
+0:34 'ii' ( in float)
+0:34 Pre-Decrement ( temp float)
+0:34 'ii' ( in float)
+0:34 Pre-Decrement ( temp float)
+0:34 'ii' ( in float)
+0:34 Loop with condition tested first
+0:34 No loop condition
+0:34 Loop Body
+0:34 'ii' ( in float)
+0:38 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:38 Function Parameters:
+0:38 'input' ( in 4-component vector of float)
+0:? Sequence
+0:39 Function Call: f0( ( temp void)
+0:40 Function Call: f1(vf4; ( temp void)
+0:40 'input' ( in 4-component vector of float)
+0:41 Function Call: f2(vf4; ( temp void)
+0:41 'input' ( in 4-component vector of float)
+0:42 Function Call: f3(vf4; ( temp float)
+0:42 'input' ( in 4-component vector of float)
+0:43 Function Call: f4(vf4; ( temp float)
+0:43 'input' ( in 4-component vector of float)
+0:44 Function Call: f5(vf4; ( temp void)
+0:44 'input' ( in 4-component vector of float)
+0:45 Function Call: f6(vf4; ( temp void)
+0:45 'input' ( in 4-component vector of float)
+0:48 Sequence
+0:48 move second child to first child ( temp int)
+0:48 'ii' ( temp int)
+0:48 Constant:
+0:48 -1 (const int)
+0:48 Loop with condition tested first
+0:48 Loop Condition
+0:48 Compare Less Than ( temp bool)
+0:48 'ii' ( temp int)
+0:48 Constant:
+0:48 3 (const int)
+0:48 Loop Body
+0:48 Test condition and select ( temp void)
+0:48 Condition
+0:48 Compare Equal ( temp bool)
+0:48 'ii' ( temp int)
+0:48 Constant:
+0:48 2 (const int)
+0:48 true case
+0:48 Branch: Continue
+0:48 Loop Terminal Expression
+0:48 Pre-Increment ( temp int)
+0:48 'ii' ( temp int)
+0:49 Pre-Decrement ( temp float)
+0:49 'ii' ( temp float)
+0:51 Function Call: f99( ( temp void)
+0:53 Sequence
+0:53 move second child to first child ( temp int)
+0:53 'i' ( temp int)
+0:53 Constant:
+0:53 0 (const int)
+0:53 move second child to first child ( temp int)
+0:53 'count' ( temp int)
+0:53 Convert float to int ( temp int)
+0:53 'ii' ( temp float)
+0:53 Loop with condition tested first
+0:53 Loop Condition
+0:53 Compare Less Than ( temp bool)
+0:53 'i' ( temp int)
+0:53 'count' ( temp int)
+0:53 No loop body
+0:53 Loop Terminal Expression
+0:53 Post-Increment ( temp int)
+0:53 'i' ( temp int)
+0:54 Sequence
+0:54 move second child to first child ( temp float)
+0:54 'first' ( temp float)
+0:54 Constant:
+0:54 0.000000
+0:54 Loop with condition tested first
+0:54 Loop Condition
+0:54 Compare Less Than ( temp bool)
+0:54 'first' ( temp float)
+0:54 direct index ( temp float)
+0:54 'second' ( temp 2-element array of float)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Loop Body
+0:54 add ( temp float)
+0:54 add ( temp float)
+0:54 'first' ( temp float)
+0:54 direct index ( temp float)
+0:54 'second' ( temp 2-element array of float)
+0:54 Constant:
+0:54 1 (const int)
+0:54 'third' ( temp float)
+0:54 Loop Terminal Expression
+0:54 Pre-Increment ( temp float)
+0:54 direct index ( temp float)
+0:54 'second' ( temp 2-element array of float)
+0:54 Constant:
+0:54 1 (const int)
+0:56 Function Call: f100(f1; ( temp void)
+0:56 'ii' ( temp float)
+0:58 Branch: Return with expression
+0:58 'input' ( in 4-component vector of float)
+0:38 Function Definition: PixelShaderFunction( ( temp void)
+0:38 Function Parameters:
+0:? Sequence
+0:38 move second child to first child ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
-0:2 move second child to first child ( temp 4-component vector of float)
+0:38 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:38 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
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 --git a/Test/baseResults/hlsl.format.rwtexture.frag.out b/Test/baseResults/hlsl.format.rwtexture.frag.out
index 7ab5329..699dafe 100644
--- a/Test/baseResults/hlsl.format.rwtexture.frag.out
+++ b/Test/baseResults/hlsl.format.rwtexture.frag.out
@@ -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 160
Capability Shader
diff --git a/Test/baseResults/hlsl.fraggeom.frag.out b/Test/baseResults/hlsl.fraggeom.frag.out
index af3564d..7509ddc 100644
--- a/Test/baseResults/hlsl.fraggeom.frag.out
+++ b/Test/baseResults/hlsl.fraggeom.frag.out
@@ -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 --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out
index 32d27ab..b954c2b 100644
--- a/Test/baseResults/hlsl.gather.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
index 57e4499..530bccd 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
index a0c8d15..de745d1 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
@@ -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 --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
index 85ba294..3a89712 100644
--- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
index c73547e..3601187 100644
--- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
index ac6c817..c2a4901 100644
--- a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
index 8617d70..8bb01d5 100644
--- a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
index 4a0d77a..a777678 100644
--- a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
index c9740b0..2acc975 100644
--- a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
index 5e2d422..8ad84cd 100644
--- a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
index eb92fbb..cf406ed 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.frag.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
index cccdfeb..51368b6 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
@@ -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 --git a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
index d8675a2..d096c38 100644
--- a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
+++ b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
index d1e2844..7c46c8e 100644
--- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
+++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.global-const-init.frag.out b/Test/baseResults/hlsl.global-const-init.frag.out
index a1aa55b..828c0c5 100644
--- a/Test/baseResults/hlsl.global-const-init.frag.out
+++ b/Test/baseResults/hlsl.global-const-init.frag.out
@@ -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 --git a/Test/baseResults/hlsl.groupid.comp.out b/Test/baseResults/hlsl.groupid.comp.out
index a76db50..65804b7 100644
--- a/Test/baseResults/hlsl.groupid.comp.out
+++ b/Test/baseResults/hlsl.groupid.comp.out
@@ -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 --git a/Test/baseResults/hlsl.gs-hs-mix.tesc.out b/Test/baseResults/hlsl.gs-hs-mix.tesc.out
index 4971371..ffa96b1 100644
--- a/Test/baseResults/hlsl.gs-hs-mix.tesc.out
+++ b/Test/baseResults/hlsl.gs-hs-mix.tesc.out
@@ -1,7 +1,6 @@
hlsl.gs-hs-mix.tesc
Shader version: 500
vertices = 3
-input primitive = triangles
vertex spacing = fractional_odd_spacing
triangle order = ccw
0:? Sequence
@@ -402,7 +401,6 @@
Shader version: 500
vertices = 3
-input primitive = triangles
vertex spacing = fractional_odd_spacing
triangle order = ccw
0:? Sequence
@@ -798,7 +796,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 --git a/Test/baseResults/hlsl.hlslOffset.vert.out b/Test/baseResults/hlsl.hlslOffset.vert.out
index b0c0467..099318c 100644
--- a/Test/baseResults/hlsl.hlslOffset.vert.out
+++ b/Test/baseResults/hlsl.hlslOffset.vert.out
@@ -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 --git a/Test/baseResults/hlsl.hull.1.tesc.out b/Test/baseResults/hlsl.hull.1.tesc.out
index 1be1498..ca4417d 100644
--- a/Test/baseResults/hlsl.hull.1.tesc.out
+++ b/Test/baseResults/hlsl.hull.1.tesc.out
@@ -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 --git a/Test/baseResults/hlsl.hull.2.tesc.out b/Test/baseResults/hlsl.hull.2.tesc.out
index c8218d2..70fc4f1 100644
--- a/Test/baseResults/hlsl.hull.2.tesc.out
+++ b/Test/baseResults/hlsl.hull.2.tesc.out
@@ -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 --git a/Test/baseResults/hlsl.hull.3.tesc.out b/Test/baseResults/hlsl.hull.3.tesc.out
index 4ff0198..fba7fac 100644
--- a/Test/baseResults/hlsl.hull.3.tesc.out
+++ b/Test/baseResults/hlsl.hull.3.tesc.out
@@ -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 --git a/Test/baseResults/hlsl.hull.4.tesc.out b/Test/baseResults/hlsl.hull.4.tesc.out
index a99730d..253bdc6 100644
--- a/Test/baseResults/hlsl.hull.4.tesc.out
+++ b/Test/baseResults/hlsl.hull.4.tesc.out
@@ -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 --git a/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out b/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out
index 41f3c0a..2bf3c7c 100644
--- a/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out
+++ b/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out
@@ -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 --git a/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out b/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out
index 986e110..62e48f7 100644
--- a/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out
+++ b/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out
@@ -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 --git a/Test/baseResults/hlsl.hull.void.tesc.out b/Test/baseResults/hlsl.hull.void.tesc.out
index c44c7e4..7c006db 100644
--- a/Test/baseResults/hlsl.hull.void.tesc.out
+++ b/Test/baseResults/hlsl.hull.void.tesc.out
@@ -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 --git a/Test/baseResults/hlsl.identifier.sample.frag.out b/Test/baseResults/hlsl.identifier.sample.frag.out
index a23451e..ddc4c51 100644
--- a/Test/baseResults/hlsl.identifier.sample.frag.out
+++ b/Test/baseResults/hlsl.identifier.sample.frag.out
@@ -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 --git a/Test/baseResults/hlsl.if.frag.out b/Test/baseResults/hlsl.if.frag.out
index 056b672..6b6de9c 100644
--- a/Test/baseResults/hlsl.if.frag.out
+++ b/Test/baseResults/hlsl.if.frag.out
@@ -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:11 Test condition and select ( temp void)
-0:11 Condition
-0:11 all ( temp bool)
-0:11 Equal ( temp 4-component vector of bool)
-0:11 'input' ( in 4-component vector of float)
-0:11 'input' ( in 4-component vector of float)
-0:11 true case is null
-0:14 Test condition and select ( temp void)
-0:14 Condition
-0:14 all ( temp bool)
-0:14 Equal ( temp 4-component vector of bool)
-0:14 'input' ( in 4-component vector of float)
-0:14 'input' ( in 4-component vector of float)
-0:14 true case is null
-0:19 Test condition and select ( temp void): Flatten
-0:19 Condition
-0:19 all ( temp bool)
-0:19 Equal ( temp 4-component vector of bool)
-0:19 'input' ( in 4-component vector of float)
-0:19 'input' ( in 4-component vector of float)
-0:19 true case
+0:9 'input' ( in 4-component vector of float)
+0:9 true case
0:? Sequence
-0:20 Branch: Return with expression
-0:20 'input' ( in 4-component vector of float)
+0:10 Branch: Return with expression
+0:10 'input' ( in 4-component vector of float)
+0:9 false case
+0:? Sequence
+0:12 Branch: Return with expression
+0:12 Negate value ( temp 4-component vector of float)
+0:12 'input' ( in 4-component vector of float)
+0:17 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:17 Function Parameters:
+0:17 'input' ( in 4-component vector of float)
+0:? Sequence
+0:18 Test condition and select ( temp void)
+0:18 Condition
+0:18 all ( temp bool)
+0:18 Equal ( temp 4-component vector of bool)
+0:18 'input' ( in 4-component vector of float)
+0:18 'input' ( in 4-component vector of float)
+0:18 true case
+0:19 Branch: Return with expression
+0:19 'input' ( in 4-component vector of float)
+0:21 Function Call: f0(vf4; ( temp 4-component vector of float)
+0:21 'input' ( in 4-component vector of float)
0:23 Test condition and select ( temp void)
0:23 Condition
0:23 all ( temp bool)
0:23 Equal ( temp 4-component vector of bool)
0:23 'input' ( in 4-component vector of float)
0:23 'input' ( in 4-component vector of float)
-0:23 true case
+0:23 true case is null
+0:26 Test condition and select ( temp void)
+0:26 Condition
+0:26 all ( temp bool)
+0:26 Equal ( temp 4-component vector of bool)
+0:26 'input' ( in 4-component vector of float)
+0:26 'input' ( in 4-component vector of float)
+0:26 true case is null
+0:31 Test condition and select ( temp void): Flatten
+0:31 Condition
+0:31 all ( temp bool)
+0:31 Equal ( temp 4-component vector of bool)
+0:31 'input' ( in 4-component vector of float)
+0:31 'input' ( in 4-component vector of float)
+0:31 true case
0:? Sequence
-0:24 Branch: Return with expression
-0:24 'input' ( in 4-component vector of float)
-0:23 false case
-0:? Sequence
-0:26 Branch: Return with expression
-0:26 Negate value ( temp 4-component vector of float)
-0:26 'input' ( in 4-component vector of float)
-0:30 Test condition and select ( temp void)
-0:30 Condition
-0:30 Convert float to bool ( temp bool)
-0:30 move second child to first child ( temp float)
-0:30 'ii' ( temp float)
-0:30 direct index ( temp float)
-0:30 'input' ( in 4-component vector of float)
-0:30 Constant:
-0:30 2 (const int)
-0:30 true case
-0:31 Pre-Increment ( temp float)
-0:31 'ii' ( temp float)
-0:32 Pre-Increment ( temp int)
-0:32 'ii' ( temp int)
-0:33 Test condition and select ( temp void)
-0:33 Condition
-0:33 Compare Equal ( temp bool)
-0:33 Convert int to float ( temp float)
-0:33 'ii' ( temp int)
-0:33 Constant:
-0:33 1.000000
-0:33 true case
-0:34 Pre-Increment ( temp int)
-0:34 'ii' ( temp int)
-0:2 Function Definition: PixelShaderFunction( ( temp void)
-0:2 Function Parameters:
+0:32 Branch: Return with expression
+0:32 'input' ( in 4-component vector of float)
+0:35 Function Call: f1(vf4; ( temp 4-component vector of float)
+0:35 'input' ( in 4-component vector of float)
+0:38 Test condition and select ( temp void)
+0:38 Condition
+0:38 Convert float to bool ( temp bool)
+0:38 move second child to first child ( temp float)
+0:38 'ii' ( temp float)
+0:38 direct index ( temp float)
+0:38 'input' ( in 4-component vector of float)
+0:38 Constant:
+0:38 2 (const int)
+0:38 true case
+0:39 Pre-Increment ( temp float)
+0:39 'ii' ( temp float)
+0:40 Pre-Increment ( temp int)
+0:40 'ii' ( temp int)
+0:41 Test condition and select ( temp void)
+0:41 Condition
+0:41 Compare Equal ( temp bool)
+0:41 Convert int to float ( temp float)
+0:41 'ii' ( temp int)
+0:41 Constant:
+0:41 1.000000
+0:41 true case
+0:42 Pre-Increment ( temp int)
+0:42 'ii' ( temp int)
+0:17 Function Definition: PixelShaderFunction( ( temp void)
+0:17 Function Parameters:
0:? Sequence
-0:2 move second child to first child ( temp 4-component vector of float)
+0:17 move second child to first child ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
-0:2 move second child to first child ( temp 4-component vector of float)
+0:17 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:17 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
@@ -112,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:3 Test condition and select ( temp void)
-0:3 Condition
-0:3 all ( temp bool)
-0:3 Equal ( temp 4-component vector of bool)
-0:3 'input' ( in 4-component vector of float)
-0:3 'input' ( in 4-component vector of float)
-0:3 true case
-0:4 Branch: Return with expression
-0:4 'input' ( in 4-component vector of float)
-0:6 Test condition and select ( temp void)
-0:6 Condition
-0:6 all ( temp bool)
-0:6 Equal ( temp 4-component vector of bool)
-0:6 'input' ( in 4-component vector of float)
-0:6 'input' ( in 4-component vector of float)
-0:6 true case
-0:7 Branch: Return with expression
-0:7 'input' ( in 4-component vector of float)
-0:6 false case
-0:9 Branch: Return with expression
-0:9 Negate value ( temp 4-component vector of float)
+0:2 Test condition and select ( temp void)
+0:2 Condition
+0:2 all ( temp bool)
+0:2 Equal ( temp 4-component vector of bool)
+0:2 'input' ( in 4-component vector of float)
+0:2 'input' ( in 4-component vector of float)
+0:2 true case
+0:3 Branch: Return with expression
+0:3 'input' ( in 4-component vector of float)
+0:2 false case
+0:5 Branch: Return with expression
+0:5 Negate value ( temp 4-component vector of float)
+0:5 'input' ( in 4-component vector of float)
+0:8 Function Definition: f1(vf4; ( temp 4-component vector of float)
+0:8 Function Parameters:
+0:8 'input' ( in 4-component vector of float)
+0:? Sequence
+0:9 Test condition and select ( temp void)
+0:9 Condition
+0:9 all ( temp bool)
+0:9 Equal ( temp 4-component vector of bool)
0:9 'input' ( in 4-component vector of float)
-0:11 Test condition and select ( temp void)
-0:11 Condition
-0:11 all ( temp bool)
-0:11 Equal ( temp 4-component vector of bool)
-0:11 'input' ( in 4-component vector of float)
-0:11 'input' ( in 4-component vector of float)
-0:11 true case is null
-0:14 Test condition and select ( temp void)
-0:14 Condition
-0:14 all ( temp bool)
-0:14 Equal ( temp 4-component vector of bool)
-0:14 'input' ( in 4-component vector of float)
-0:14 'input' ( in 4-component vector of float)
-0:14 true case is null
-0:19 Test condition and select ( temp void): Flatten
-0:19 Condition
-0:19 all ( temp bool)
-0:19 Equal ( temp 4-component vector of bool)
-0:19 'input' ( in 4-component vector of float)
-0:19 'input' ( in 4-component vector of float)
-0:19 true case
+0:9 'input' ( in 4-component vector of float)
+0:9 true case
0:? Sequence
-0:20 Branch: Return with expression
-0:20 'input' ( in 4-component vector of float)
+0:10 Branch: Return with expression
+0:10 'input' ( in 4-component vector of float)
+0:9 false case
+0:? Sequence
+0:12 Branch: Return with expression
+0:12 Negate value ( temp 4-component vector of float)
+0:12 'input' ( in 4-component vector of float)
+0:17 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:17 Function Parameters:
+0:17 'input' ( in 4-component vector of float)
+0:? Sequence
+0:18 Test condition and select ( temp void)
+0:18 Condition
+0:18 all ( temp bool)
+0:18 Equal ( temp 4-component vector of bool)
+0:18 'input' ( in 4-component vector of float)
+0:18 'input' ( in 4-component vector of float)
+0:18 true case
+0:19 Branch: Return with expression
+0:19 'input' ( in 4-component vector of float)
+0:21 Function Call: f0(vf4; ( temp 4-component vector of float)
+0:21 'input' ( in 4-component vector of float)
0:23 Test condition and select ( temp void)
0:23 Condition
0:23 all ( temp bool)
0:23 Equal ( temp 4-component vector of bool)
0:23 'input' ( in 4-component vector of float)
0:23 'input' ( in 4-component vector of float)
-0:23 true case
+0:23 true case is null
+0:26 Test condition and select ( temp void)
+0:26 Condition
+0:26 all ( temp bool)
+0:26 Equal ( temp 4-component vector of bool)
+0:26 'input' ( in 4-component vector of float)
+0:26 'input' ( in 4-component vector of float)
+0:26 true case is null
+0:31 Test condition and select ( temp void): Flatten
+0:31 Condition
+0:31 all ( temp bool)
+0:31 Equal ( temp 4-component vector of bool)
+0:31 'input' ( in 4-component vector of float)
+0:31 'input' ( in 4-component vector of float)
+0:31 true case
0:? Sequence
-0:24 Branch: Return with expression
-0:24 'input' ( in 4-component vector of float)
-0:23 false case
-0:? Sequence
-0:26 Branch: Return with expression
-0:26 Negate value ( temp 4-component vector of float)
-0:26 'input' ( in 4-component vector of float)
-0:30 Test condition and select ( temp void)
-0:30 Condition
-0:30 Convert float to bool ( temp bool)
-0:30 move second child to first child ( temp float)
-0:30 'ii' ( temp float)
-0:30 direct index ( temp float)
-0:30 'input' ( in 4-component vector of float)
-0:30 Constant:
-0:30 2 (const int)
-0:30 true case
-0:31 Pre-Increment ( temp float)
-0:31 'ii' ( temp float)
-0:32 Pre-Increment ( temp int)
-0:32 'ii' ( temp int)
-0:33 Test condition and select ( temp void)
-0:33 Condition
-0:33 Compare Equal ( temp bool)
-0:33 Convert int to float ( temp float)
-0:33 'ii' ( temp int)
-0:33 Constant:
-0:33 1.000000
-0:33 true case
-0:34 Pre-Increment ( temp int)
-0:34 'ii' ( temp int)
-0:2 Function Definition: PixelShaderFunction( ( temp void)
-0:2 Function Parameters:
+0:32 Branch: Return with expression
+0:32 'input' ( in 4-component vector of float)
+0:35 Function Call: f1(vf4; ( temp 4-component vector of float)
+0:35 'input' ( in 4-component vector of float)
+0:38 Test condition and select ( temp void)
+0:38 Condition
+0:38 Convert float to bool ( temp bool)
+0:38 move second child to first child ( temp float)
+0:38 'ii' ( temp float)
+0:38 direct index ( temp float)
+0:38 'input' ( in 4-component vector of float)
+0:38 Constant:
+0:38 2 (const int)
+0:38 true case
+0:39 Pre-Increment ( temp float)
+0:39 'ii' ( temp float)
+0:40 Pre-Increment ( temp int)
+0:40 'ii' ( temp int)
+0:41 Test condition and select ( temp void)
+0:41 Condition
+0:41 Compare Equal ( temp bool)
+0:41 Convert int to float ( temp float)
+0:41 'ii' ( temp int)
+0:41 Constant:
+0:41 1.000000
+0:41 true case
+0:42 Pre-Increment ( temp int)
+0:42 'ii' ( temp int)
+0:17 Function Definition: PixelShaderFunction( ( temp void)
+0:17 Function Parameters:
0:? Sequence
-0:2 move second child to first child ( temp 4-component vector of float)
+0:17 move second child to first child ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
-0:2 move second child to first child ( temp 4-component vector of float)
+0:17 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:17 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
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 --git a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out
index 721aeea..304f24b 100644
--- a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out
+++ b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out
@@ -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 --git a/Test/baseResults/hlsl.implicitBool.frag.out b/Test/baseResults/hlsl.implicitBool.frag.out
index c616125..8b5dcde 100644
--- a/Test/baseResults/hlsl.implicitBool.frag.out
+++ b/Test/baseResults/hlsl.implicitBool.frag.out
@@ -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 --git a/Test/baseResults/hlsl.include.vert.out b/Test/baseResults/hlsl.include.vert.out
index 88ee8e7..4a814ae 100644
--- a/Test/baseResults/hlsl.include.vert.out
+++ b/Test/baseResults/hlsl.include.vert.out
@@ -1,6 +1,6 @@
../Test/hlsl.include.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 44
Capability Shader
diff --git a/Test/baseResults/hlsl.inf.vert.out b/Test/baseResults/hlsl.inf.vert.out
index 1cedc55..02326b3 100644
--- a/Test/baseResults/hlsl.inf.vert.out
+++ b/Test/baseResults/hlsl.inf.vert.out
@@ -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 --git a/Test/baseResults/hlsl.init.frag.out b/Test/baseResults/hlsl.init.frag.out
index 1d9a5ef..2139adb 100644
--- a/Test/baseResults/hlsl.init.frag.out
+++ b/Test/baseResults/hlsl.init.frag.out
@@ -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 --git a/Test/baseResults/hlsl.init2.frag.out b/Test/baseResults/hlsl.init2.frag.out
index 9e03de3..0ba8bd2 100644
--- a/Test/baseResults/hlsl.init2.frag.out
+++ b/Test/baseResults/hlsl.init2.frag.out
@@ -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 --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out
index 42adb1a..2ffa3c5 100644
--- a/Test/baseResults/hlsl.inoutquals.frag.out
+++ b/Test/baseResults/hlsl.inoutquals.frag.out
@@ -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 --git a/Test/baseResults/hlsl.int.dot.frag.out b/Test/baseResults/hlsl.int.dot.frag.out
index afe44c8..7ea22a1 100644
--- a/Test/baseResults/hlsl.int.dot.frag.out
+++ b/Test/baseResults/hlsl.int.dot.frag.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsic.frexp.frag.out b/Test/baseResults/hlsl.intrinsic.frexp.frag.out
index 3a9d6fd..9fb9cc5 100644
--- a/Test/baseResults/hlsl.intrinsic.frexp.frag.out
+++ b/Test/baseResults/hlsl.intrinsic.frexp.frag.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsic.frexp.vert.out b/Test/baseResults/hlsl.intrinsic.frexp.vert.out
index 92bd7ef..7069ece 100644
--- a/Test/baseResults/hlsl.intrinsic.frexp.vert.out
+++ b/Test/baseResults/hlsl.intrinsic.frexp.vert.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.barriers.comp.out b/Test/baseResults/hlsl.intrinsics.barriers.comp.out
index 13fe578..a078978 100644
--- a/Test/baseResults/hlsl.intrinsics.barriers.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.barriers.comp.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out
index 3329c5c..761a3b3 100644
--- a/Test/baseResults/hlsl.intrinsics.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.comp.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out b/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out
index f2216de..4832241 100644
--- a/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.double.frag.out b/Test/baseResults/hlsl.intrinsics.double.frag.out
index 55a102f..472f31b 100644
--- a/Test/baseResults/hlsl.intrinsics.double.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.double.frag.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
index 3f69827..0260b93 100644
--- a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.f1632.frag.out b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
index c5619ef..5277c5c 100644
--- a/Test/baseResults/hlsl.intrinsics.f1632.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
@@ -17,8 +17,13 @@
0:7 'inF0' ( in 1-component vector of uint)
0:? Sequence
0:8 Branch: Return with expression
-0:8 Constant:
-0:8 0.000000
+0:8 Construct float ( temp 1-component vector of float)
+0:8 direct index ( temp float)
+0:8 unpackHalf2x16 ( temp 2-component vector of float)
+0:8 Construct uint ( in uint)
+0:8 'inF0' ( in 1-component vector of uint)
+0:8 Constant:
+0:8 0 (const int)
0:12 Function Definition: PixelShaderFunction2(vu2; ( temp 2-component vector of float)
0:12 Function Parameters:
0:12 'inF0' ( in 2-component vector of uint)
@@ -149,8 +154,13 @@
0:7 'inF0' ( in 1-component vector of uint)
0:? Sequence
0:8 Branch: Return with expression
-0:8 Constant:
-0:8 0.000000
+0:8 Construct float ( temp 1-component vector of float)
+0:8 direct index ( temp float)
+0:8 unpackHalf2x16 ( temp 2-component vector of float)
+0:8 Construct uint ( in uint)
+0:8 'inF0' ( in 1-component vector of uint)
+0:8 Constant:
+0:8 0 (const int)
0:12 Function Definition: PixelShaderFunction2(vu2; ( temp 2-component vector of float)
0:12 Function Parameters:
0:12 'inF0' ( in 2-component vector of uint)
@@ -260,13 +270,13 @@
0:? '@entryPointOutput' (layout( location=0) out 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 106
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 101
+ EntryPoint Fragment 4 "main" 104
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
@@ -281,8 +291,8 @@
Name 35 "PixelShaderFunction(vu4;"
Name 34 "inF0"
Name 38 "@main("
- Name 101 "@entryPointOutput"
- Decorate 101(@entryPointOutput) Location 0
+ Name 104 "@entryPointOutput"
+ Decorate 104(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -303,17 +313,17 @@
33: TypeFunction 32(fvec4) 31(ptr)
37: TypeFunction 32(fvec4)
42: 6(int) Constant 0
- 46: 8(float) Constant 0
- 53: 6(int) Constant 1
- 69: 6(int) Constant 2
- 89: 6(int) Constant 3
- 97: 32(fvec4) ConstantComposite 46 46 46 46
- 100: TypePointer Output 32(fvec4)
-101(@entryPointOutput): 100(ptr) Variable Output
+ 55: 6(int) Constant 1
+ 71: 6(int) Constant 2
+ 91: 6(int) Constant 3
+ 99: 8(float) Constant 0
+ 100: 32(fvec4) ConstantComposite 99 99 99 99
+ 103: TypePointer Output 32(fvec4)
+104(@entryPointOutput): 103(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 102: 32(fvec4) FunctionCall 38(@main()
- Store 101(@entryPointOutput) 102
+ 105: 32(fvec4) FunctionCall 38(@main()
+ Store 104(@entryPointOutput) 105
Return
FunctionEnd
11(PixelShaderFunctionS(u1;): 8(float) Function None 9
@@ -327,63 +337,66 @@
14(PixelShaderFunction1(vu1;): 8(float) Function None 9
13(inF0): 7(ptr) FunctionParameter
15: Label
- ReturnValue 46
+ 46: 6(int) Load 13(inF0)
+ 47: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 46
+ 48: 8(float) CompositeExtract 47 0
+ ReturnValue 48
FunctionEnd
21(PixelShaderFunction2(vu2;): 18(fvec2) Function None 19
20(inF0): 17(ptr) FunctionParameter
22: Label
- 49: 7(ptr) AccessChain 20(inF0) 42
- 50: 6(int) Load 49
- 51: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 50
- 52: 8(float) CompositeExtract 51 0
- 54: 7(ptr) AccessChain 20(inF0) 53
- 55: 6(int) Load 54
- 56: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 55
- 57: 8(float) CompositeExtract 56 0
- 58: 18(fvec2) CompositeConstruct 52 57
- ReturnValue 58
+ 51: 7(ptr) AccessChain 20(inF0) 42
+ 52: 6(int) Load 51
+ 53: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 52
+ 54: 8(float) CompositeExtract 53 0
+ 56: 7(ptr) AccessChain 20(inF0) 55
+ 57: 6(int) Load 56
+ 58: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 57
+ 59: 8(float) CompositeExtract 58 0
+ 60: 18(fvec2) CompositeConstruct 54 59
+ ReturnValue 60
FunctionEnd
28(PixelShaderFunction3(vu3;): 25(fvec3) Function None 26
27(inF0): 24(ptr) FunctionParameter
29: Label
- 61: 7(ptr) AccessChain 27(inF0) 42
- 62: 6(int) Load 61
- 63: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 62
- 64: 8(float) CompositeExtract 63 0
- 65: 7(ptr) AccessChain 27(inF0) 53
- 66: 6(int) Load 65
- 67: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 66
- 68: 8(float) CompositeExtract 67 0
- 70: 7(ptr) AccessChain 27(inF0) 69
- 71: 6(int) Load 70
- 72: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 71
- 73: 8(float) CompositeExtract 72 0
- 74: 25(fvec3) CompositeConstruct 64 68 73
- ReturnValue 74
+ 63: 7(ptr) AccessChain 27(inF0) 42
+ 64: 6(int) Load 63
+ 65: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 64
+ 66: 8(float) CompositeExtract 65 0
+ 67: 7(ptr) AccessChain 27(inF0) 55
+ 68: 6(int) Load 67
+ 69: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 68
+ 70: 8(float) CompositeExtract 69 0
+ 72: 7(ptr) AccessChain 27(inF0) 71
+ 73: 6(int) Load 72
+ 74: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 73
+ 75: 8(float) CompositeExtract 74 0
+ 76: 25(fvec3) CompositeConstruct 66 70 75
+ ReturnValue 76
FunctionEnd
35(PixelShaderFunction(vu4;): 32(fvec4) Function None 33
34(inF0): 31(ptr) FunctionParameter
36: Label
- 77: 7(ptr) AccessChain 34(inF0) 42
- 78: 6(int) Load 77
- 79: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 78
- 80: 8(float) CompositeExtract 79 0
- 81: 7(ptr) AccessChain 34(inF0) 53
- 82: 6(int) Load 81
- 83: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 82
- 84: 8(float) CompositeExtract 83 0
- 85: 7(ptr) AccessChain 34(inF0) 69
- 86: 6(int) Load 85
- 87: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 86
- 88: 8(float) CompositeExtract 87 0
- 90: 7(ptr) AccessChain 34(inF0) 89
- 91: 6(int) Load 90
- 92: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 91
- 93: 8(float) CompositeExtract 92 0
- 94: 32(fvec4) CompositeConstruct 80 84 88 93
- ReturnValue 94
+ 79: 7(ptr) AccessChain 34(inF0) 42
+ 80: 6(int) Load 79
+ 81: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 80
+ 82: 8(float) CompositeExtract 81 0
+ 83: 7(ptr) AccessChain 34(inF0) 55
+ 84: 6(int) Load 83
+ 85: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 84
+ 86: 8(float) CompositeExtract 85 0
+ 87: 7(ptr) AccessChain 34(inF0) 71
+ 88: 6(int) Load 87
+ 89: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 88
+ 90: 8(float) CompositeExtract 89 0
+ 92: 7(ptr) AccessChain 34(inF0) 91
+ 93: 6(int) Load 92
+ 94: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 93
+ 95: 8(float) CompositeExtract 94 0
+ 96: 32(fvec4) CompositeConstruct 82 86 90 95
+ ReturnValue 96
FunctionEnd
38(@main(): 32(fvec4) Function None 37
39: Label
- ReturnValue 97
+ ReturnValue 100
FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.f3216.frag.out b/Test/baseResults/hlsl.intrinsics.f3216.frag.out
index c447efc..77826b3 100644
--- a/Test/baseResults/hlsl.intrinsics.f3216.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.f3216.frag.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out
index b8add07..dca823b 100644
--- a/Test/baseResults/hlsl.intrinsics.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.frag.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.lit.frag.out b/Test/baseResults/hlsl.intrinsics.lit.frag.out
index 8b1454b..9a8cb29 100644
--- a/Test/baseResults/hlsl.intrinsics.lit.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.lit.frag.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.negative.comp.out b/Test/baseResults/hlsl.intrinsics.negative.comp.out
index 97d6719..920038f 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.comp.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.negative.vert.out b/Test/baseResults/hlsl.intrinsics.negative.vert.out
index c2711c6..3b1bac8 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.vert.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out
index 84ea6f4..2171698 100644
--- a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.promote.frag.out b/Test/baseResults/hlsl.intrinsics.promote.frag.out
index 988432e..41b1c68 100644
--- a/Test/baseResults/hlsl.intrinsics.promote.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.promote.frag.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
index 9f8ecf2..143fa72 100644
--- a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
@@ -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 --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out
index 460785e..28e8e41 100644
--- a/Test/baseResults/hlsl.intrinsics.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.vert.out
@@ -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 --git a/Test/baseResults/hlsl.isfinite.frag.out b/Test/baseResults/hlsl.isfinite.frag.out
index 7b8287f..a68bd1b 100644
--- a/Test/baseResults/hlsl.isfinite.frag.out
+++ b/Test/baseResults/hlsl.isfinite.frag.out
@@ -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 --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out
index 6a3eb04..1e4f171 100644
--- a/Test/baseResults/hlsl.layout.frag.out
+++ b/Test/baseResults/hlsl.layout.frag.out
@@ -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 --git a/Test/baseResults/hlsl.layoutOverride.vert.out b/Test/baseResults/hlsl.layoutOverride.vert.out
index 31593aa..cc09653 100644
--- a/Test/baseResults/hlsl.layoutOverride.vert.out
+++ b/Test/baseResults/hlsl.layoutOverride.vert.out
@@ -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 --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
index 8d7f70f..9597762 100644
--- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out
index e5c0f6e..f26d7df 100644
--- a/Test/baseResults/hlsl.load.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.array.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out
index b47e037..895a109 100644
--- a/Test/baseResults/hlsl.load.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out
index 99f3667..99a57a7 100644
--- a/Test/baseResults/hlsl.load.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out
@@ -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 --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out
index 969a99f..2255cf5 100644
--- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
index d404b27..08a1c56 100644
--- a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
@@ -172,7 +172,7 @@
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 75
Capability Shader
diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out
index 089329e..ebf1bd3 100644
--- a/Test/baseResults/hlsl.load.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
index 7df846b..297c737 100644
--- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
index 62009e1..7ad197c 100644
--- a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
index f05b335..77344ac 100644
--- a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
@@ -208,7 +208,7 @@
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 119
Capability Shader
diff --git a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
index c6e00ff..bf9ea2d 100644
--- a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.logical.binary.frag.out b/Test/baseResults/hlsl.logical.binary.frag.out
index 5b23a62..1df3966 100644
--- a/Test/baseResults/hlsl.logical.binary.frag.out
+++ b/Test/baseResults/hlsl.logical.binary.frag.out
@@ -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 --git a/Test/baseResults/hlsl.logical.binary.vec.frag.out b/Test/baseResults/hlsl.logical.binary.vec.frag.out
index 0e4f852..bc469dc 100644
--- a/Test/baseResults/hlsl.logical.binary.vec.frag.out
+++ b/Test/baseResults/hlsl.logical.binary.vec.frag.out
@@ -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 --git a/Test/baseResults/hlsl.logical.unary.frag.out b/Test/baseResults/hlsl.logical.unary.frag.out
index b342c34..57247c6 100644
--- a/Test/baseResults/hlsl.logical.unary.frag.out
+++ b/Test/baseResults/hlsl.logical.unary.frag.out
@@ -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 --git a/Test/baseResults/hlsl.logicalConvert.frag.out b/Test/baseResults/hlsl.logicalConvert.frag.out
index 6c595f8..4757f33 100644
--- a/Test/baseResults/hlsl.logicalConvert.frag.out
+++ b/Test/baseResults/hlsl.logicalConvert.frag.out
@@ -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 --git a/Test/baseResults/hlsl.loopattr.frag.out b/Test/baseResults/hlsl.loopattr.frag.out
index cc0073a..c6130f7 100644
--- a/Test/baseResults/hlsl.loopattr.frag.out
+++ b/Test/baseResults/hlsl.loopattr.frag.out
@@ -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 --git a/Test/baseResults/hlsl.matNx1.frag.out b/Test/baseResults/hlsl.matNx1.frag.out
index e8e0a7b..1d92d5f 100644
--- a/Test/baseResults/hlsl.matNx1.frag.out
+++ b/Test/baseResults/hlsl.matNx1.frag.out
@@ -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 --git a/Test/baseResults/hlsl.matType.bool.frag.out b/Test/baseResults/hlsl.matType.bool.frag.out
index b5543d8..1362ee7 100644
--- a/Test/baseResults/hlsl.matType.bool.frag.out
+++ b/Test/baseResults/hlsl.matType.bool.frag.out
@@ -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 --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out
index 80bb216..ed08983 100644
--- a/Test/baseResults/hlsl.matType.frag.out
+++ b/Test/baseResults/hlsl.matType.frag.out
@@ -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 --git a/Test/baseResults/hlsl.matType.int.frag.out b/Test/baseResults/hlsl.matType.int.frag.out
index a1854aa..ad0c314 100644
--- a/Test/baseResults/hlsl.matType.int.frag.out
+++ b/Test/baseResults/hlsl.matType.int.frag.out
@@ -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 --git a/Test/baseResults/hlsl.matpack-1.frag.out b/Test/baseResults/hlsl.matpack-1.frag.out
index c022587..829d0b1 100644
--- a/Test/baseResults/hlsl.matpack-1.frag.out
+++ b/Test/baseResults/hlsl.matpack-1.frag.out
@@ -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 --git a/Test/baseResults/hlsl.matpack-pragma.frag.out b/Test/baseResults/hlsl.matpack-pragma.frag.out
index 86e945e..a5e351e 100644
--- a/Test/baseResults/hlsl.matpack-pragma.frag.out
+++ b/Test/baseResults/hlsl.matpack-pragma.frag.out
@@ -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 --git a/Test/baseResults/hlsl.matrixSwizzle.vert.out b/Test/baseResults/hlsl.matrixSwizzle.vert.out
index 237ce5d..7bc0c17 100644
--- a/Test/baseResults/hlsl.matrixSwizzle.vert.out
+++ b/Test/baseResults/hlsl.matrixSwizzle.vert.out
@@ -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 --git a/Test/baseResults/hlsl.matrixindex.frag.out b/Test/baseResults/hlsl.matrixindex.frag.out
index 63ddc4d..1e5fbb9 100644
--- a/Test/baseResults/hlsl.matrixindex.frag.out
+++ b/Test/baseResults/hlsl.matrixindex.frag.out
@@ -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 --git a/Test/baseResults/hlsl.max.frag.out b/Test/baseResults/hlsl.max.frag.out
index db215a2..14cd8bf 100644
--- a/Test/baseResults/hlsl.max.frag.out
+++ b/Test/baseResults/hlsl.max.frag.out
@@ -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 --git a/Test/baseResults/hlsl.memberFunCall.frag.out b/Test/baseResults/hlsl.memberFunCall.frag.out
index 01cb99a..83dc86f 100644
--- a/Test/baseResults/hlsl.memberFunCall.frag.out
+++ b/Test/baseResults/hlsl.memberFunCall.frag.out
@@ -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 --git a/Test/baseResults/hlsl.mintypes.frag.out b/Test/baseResults/hlsl.mintypes.frag.out
index 4824bcb..2ce899b 100644
--- a/Test/baseResults/hlsl.mintypes.frag.out
+++ b/Test/baseResults/hlsl.mintypes.frag.out
@@ -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 --git a/Test/baseResults/hlsl.mip.operator.frag.out b/Test/baseResults/hlsl.mip.operator.frag.out
index 478e808..4123d23 100644
--- a/Test/baseResults/hlsl.mip.operator.frag.out
+++ b/Test/baseResults/hlsl.mip.operator.frag.out
@@ -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 --git a/Test/baseResults/hlsl.mul-truncate.frag.out b/Test/baseResults/hlsl.mul-truncate.frag.out
index a7de28c..c337ed4 100644
--- a/Test/baseResults/hlsl.mul-truncate.frag.out
+++ b/Test/baseResults/hlsl.mul-truncate.frag.out
@@ -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 --git a/Test/baseResults/hlsl.multiDescriptorSet.frag.out b/Test/baseResults/hlsl.multiDescriptorSet.frag.out
index 8bd1ad8..fa48092 100644
--- a/Test/baseResults/hlsl.multiDescriptorSet.frag.out
+++ b/Test/baseResults/hlsl.multiDescriptorSet.frag.out
@@ -1,6 +1,6 @@
hlsl.multiDescriptorSet.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 92
Capability Shader
diff --git a/Test/baseResults/hlsl.multiEntry.vert.out b/Test/baseResults/hlsl.multiEntry.vert.out
index c051591..d641512 100644
--- a/Test/baseResults/hlsl.multiEntry.vert.out
+++ b/Test/baseResults/hlsl.multiEntry.vert.out
@@ -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 --git a/Test/baseResults/hlsl.multiReturn.frag.out b/Test/baseResults/hlsl.multiReturn.frag.out
index 6c41c77..54b5107 100644
--- a/Test/baseResults/hlsl.multiReturn.frag.out
+++ b/Test/baseResults/hlsl.multiReturn.frag.out
@@ -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 --git a/Test/baseResults/hlsl.namespace.frag.out b/Test/baseResults/hlsl.namespace.frag.out
index 8df43ad..9431f66 100644
--- a/Test/baseResults/hlsl.namespace.frag.out
+++ b/Test/baseResults/hlsl.namespace.frag.out
@@ -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 --git a/Test/baseResults/hlsl.noSemantic.functionality1.comp.out b/Test/baseResults/hlsl.noSemantic.functionality1.comp.out
index 3ede90e..fc51e9c 100644
--- a/Test/baseResults/hlsl.noSemantic.functionality1.comp.out
+++ b/Test/baseResults/hlsl.noSemantic.functionality1.comp.out
@@ -1,6 +1,6 @@
hlsl.noSemantic.functionality1.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 30
Capability Shader
diff --git a/Test/baseResults/hlsl.nonint-index.frag.out b/Test/baseResults/hlsl.nonint-index.frag.out
index 131c1ec..0b6bdbc 100644
--- a/Test/baseResults/hlsl.nonint-index.frag.out
+++ b/Test/baseResults/hlsl.nonint-index.frag.out
@@ -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 --git a/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out b/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out
index 1927a4c..268e563 100644
--- a/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out
+++ b/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out
@@ -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 --git a/Test/baseResults/hlsl.numericsuffixes.frag.out b/Test/baseResults/hlsl.numericsuffixes.frag.out
index b1fa856..b433266 100644
--- a/Test/baseResults/hlsl.numericsuffixes.frag.out
+++ b/Test/baseResults/hlsl.numericsuffixes.frag.out
@@ -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 --git a/Test/baseResults/hlsl.numthreads.comp.out b/Test/baseResults/hlsl.numthreads.comp.out
index fd7de34..95cf29f 100644
--- a/Test/baseResults/hlsl.numthreads.comp.out
+++ b/Test/baseResults/hlsl.numthreads.comp.out
@@ -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 --git a/Test/baseResults/hlsl.opaque-type-bug.frag.out b/Test/baseResults/hlsl.opaque-type-bug.frag.out
index 918b462..4ac7a91 100644
--- a/Test/baseResults/hlsl.opaque-type-bug.frag.out
+++ b/Test/baseResults/hlsl.opaque-type-bug.frag.out
@@ -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 --git a/Test/baseResults/hlsl.overload.frag.out b/Test/baseResults/hlsl.overload.frag.out
index 5960d3d..d93c305 100644
--- a/Test/baseResults/hlsl.overload.frag.out
+++ b/Test/baseResults/hlsl.overload.frag.out
@@ -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 --git a/Test/baseResults/hlsl.params.default.frag.out b/Test/baseResults/hlsl.params.default.frag.out
index d1ecfa6..5d054bf 100644
--- a/Test/baseResults/hlsl.params.default.frag.out
+++ b/Test/baseResults/hlsl.params.default.frag.out
@@ -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 --git a/Test/baseResults/hlsl.partialFlattenLocal.vert.out b/Test/baseResults/hlsl.partialFlattenLocal.vert.out
index 46df206..c3ed3a2 100644
--- a/Test/baseResults/hlsl.partialFlattenLocal.vert.out
+++ b/Test/baseResults/hlsl.partialFlattenLocal.vert.out
@@ -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 --git a/Test/baseResults/hlsl.partialFlattenMixed.vert.out b/Test/baseResults/hlsl.partialFlattenMixed.vert.out
index da832b4..520a0fb 100644
--- a/Test/baseResults/hlsl.partialFlattenMixed.vert.out
+++ b/Test/baseResults/hlsl.partialFlattenMixed.vert.out
@@ -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 --git a/Test/baseResults/hlsl.partialInit.frag.out b/Test/baseResults/hlsl.partialInit.frag.out
index 6881671..551c579 100644
--- a/Test/baseResults/hlsl.partialInit.frag.out
+++ b/Test/baseResults/hlsl.partialInit.frag.out
@@ -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 --git a/Test/baseResults/hlsl.pp.line.frag.out b/Test/baseResults/hlsl.pp.line.frag.out
index 2c06fe9..0416cf4 100644
--- a/Test/baseResults/hlsl.pp.line.frag.out
+++ b/Test/baseResults/hlsl.pp.line.frag.out
@@ -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 --git a/Test/baseResults/hlsl.pp.line2.frag.out b/Test/baseResults/hlsl.pp.line2.frag.out
index 10bbf6a..338884a 100644
--- a/Test/baseResults/hlsl.pp.line2.frag.out
+++ b/Test/baseResults/hlsl.pp.line2.frag.out
@@ -1,6 +1,6 @@
hlsl.pp.line2.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 80
Capability Shader
diff --git a/Test/baseResults/hlsl.pp.line3.frag.out b/Test/baseResults/hlsl.pp.line3.frag.out
index 33e5d55..e94547c 100644
--- a/Test/baseResults/hlsl.pp.line3.frag.out
+++ b/Test/baseResults/hlsl.pp.line3.frag.out
@@ -1,6 +1,6 @@
hlsl.pp.line3.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 78
Capability Shader
diff --git a/Test/baseResults/hlsl.pp.line4.frag.out b/Test/baseResults/hlsl.pp.line4.frag.out
index ff92b52..1ddb98b 100644
--- a/Test/baseResults/hlsl.pp.line4.frag.out
+++ b/Test/baseResults/hlsl.pp.line4.frag.out
@@ -1,6 +1,6 @@
hlsl.pp.line4.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 115
Capability Shader
diff --git a/Test/baseResults/hlsl.pp.vert.out b/Test/baseResults/hlsl.pp.vert.out
index 24ddfd1..5d4e943 100644
--- a/Test/baseResults/hlsl.pp.vert.out
+++ b/Test/baseResults/hlsl.pp.vert.out
@@ -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 --git a/Test/baseResults/hlsl.precedence.frag.out b/Test/baseResults/hlsl.precedence.frag.out
index f4c5338..b51be0d 100644
--- a/Test/baseResults/hlsl.precedence.frag.out
+++ b/Test/baseResults/hlsl.precedence.frag.out
@@ -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 --git a/Test/baseResults/hlsl.precedence2.frag.out b/Test/baseResults/hlsl.precedence2.frag.out
index 9ce674d..7dd21a6 100644
--- a/Test/baseResults/hlsl.precedence2.frag.out
+++ b/Test/baseResults/hlsl.precedence2.frag.out
@@ -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 --git a/Test/baseResults/hlsl.precise.frag.out b/Test/baseResults/hlsl.precise.frag.out
index dd45069..84b2648 100644
--- a/Test/baseResults/hlsl.precise.frag.out
+++ b/Test/baseResults/hlsl.precise.frag.out
@@ -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 --git a/Test/baseResults/hlsl.preprocessor.frag.out b/Test/baseResults/hlsl.preprocessor.frag.out
index 3c36530..11ec1ad 100644
--- a/Test/baseResults/hlsl.preprocessor.frag.out
+++ b/Test/baseResults/hlsl.preprocessor.frag.out
@@ -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 --git a/Test/baseResults/hlsl.promote.atomic.frag.out b/Test/baseResults/hlsl.promote.atomic.frag.out
index bd781bd..4d56fba 100644
--- a/Test/baseResults/hlsl.promote.atomic.frag.out
+++ b/Test/baseResults/hlsl.promote.atomic.frag.out
@@ -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 --git a/Test/baseResults/hlsl.promote.binary.frag.out b/Test/baseResults/hlsl.promote.binary.frag.out
index 624a506..f63fc3e 100644
--- a/Test/baseResults/hlsl.promote.binary.frag.out
+++ b/Test/baseResults/hlsl.promote.binary.frag.out
@@ -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 --git a/Test/baseResults/hlsl.promote.vec1.frag.out b/Test/baseResults/hlsl.promote.vec1.frag.out
index b92d740..a6ad7ca 100644
--- a/Test/baseResults/hlsl.promote.vec1.frag.out
+++ b/Test/baseResults/hlsl.promote.vec1.frag.out
@@ -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 --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out
index cb79983..0a17395 100644
--- a/Test/baseResults/hlsl.promotions.frag.out
+++ b/Test/baseResults/hlsl.promotions.frag.out
@@ -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 --git a/Test/baseResults/hlsl.rw.atomics.frag.out b/Test/baseResults/hlsl.rw.atomics.frag.out
index 02aa00c..77b140b 100644
--- a/Test/baseResults/hlsl.rw.atomics.frag.out
+++ b/Test/baseResults/hlsl.rw.atomics.frag.out
@@ -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 --git a/Test/baseResults/hlsl.rw.bracket.frag.out b/Test/baseResults/hlsl.rw.bracket.frag.out
index dc60a29..70f8bbe 100644
--- a/Test/baseResults/hlsl.rw.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.bracket.frag.out
@@ -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 --git a/Test/baseResults/hlsl.rw.register.frag.out b/Test/baseResults/hlsl.rw.register.frag.out
index 01f6c89..6004512 100644
--- a/Test/baseResults/hlsl.rw.register.frag.out
+++ b/Test/baseResults/hlsl.rw.register.frag.out
@@ -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 --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
index aabee59..a8e33dd 100644
--- a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
@@ -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 --git a/Test/baseResults/hlsl.rw.swizzle.frag.out b/Test/baseResults/hlsl.rw.swizzle.frag.out
index 089c603..267d733 100644
--- a/Test/baseResults/hlsl.rw.swizzle.frag.out
+++ b/Test/baseResults/hlsl.rw.swizzle.frag.out
@@ -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 --git a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
index a3b5237..06c24e7 100644
--- a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
@@ -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 --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out
index 9066a1d..2d00531 100644
--- a/Test/baseResults/hlsl.sample.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
index 0940e10..1760902 100644
--- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.sample.dx9.frag.out b/Test/baseResults/hlsl.sample.dx9.frag.out
index 7b3432a..ce6d546 100644
--- a/Test/baseResults/hlsl.sample.dx9.frag.out
+++ b/Test/baseResults/hlsl.sample.dx9.frag.out
@@ -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 --git a/Test/baseResults/hlsl.sample.dx9.vert.out b/Test/baseResults/hlsl.sample.dx9.vert.out
index 732b043..2b29c0c 100644
--- a/Test/baseResults/hlsl.sample.dx9.vert.out
+++ b/Test/baseResults/hlsl.sample.dx9.vert.out
@@ -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 --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
index 5eadb4a..b641ad2 100644
--- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
index edc5d31..54dc467 100644
--- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
index cc44567..8aa0e7f 100644
--- a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
@@ -154,7 +154,7 @@
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 72
Capability Shader
diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
index c229502..aec493d 100644
--- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
index c840fa4..9a29c6d 100644
--- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
index be4b4f8..fb78b6c 100644
--- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
index ae33f40..8b7bd37 100644
--- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
index 54cbc04..8d0ff46 100644
--- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
index 90e1173..c44f16b 100644
--- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplecmp.dualmode.frag.out b/Test/baseResults/hlsl.samplecmp.dualmode.frag.out
index 7bcf085..fd5dd3e 100644
--- a/Test/baseResults/hlsl.samplecmp.dualmode.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.dualmode.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
index 29d02da..ca0fb8c 100644
--- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
index bf7b6f0..3d0b8fd 100644
--- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
index 5b21f70..ce13388 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
index fae6899..4bf15ec 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
index 0987ea8..b85daf0 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
index 7434514..6f460d0 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
index 67b5692..b2922a1 100644
--- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
index 7edb8da..161821e 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
index 979d48f..b683d98 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
@@ -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 --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
index 2620a67..81fbc0b 100644
--- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
index 87ad78b..01ca547 100644
--- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
index 4f07950..a5ff45a 100644
--- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
index ee982cc..6b91c17 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
index 0a8ae49..8f395ed 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
@@ -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 --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
index b007ee1..10b48ec 100644
--- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
index 302bc81..5fb25a0 100644
--- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
@@ -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 --git a/Test/baseResults/hlsl.scalar-length.frag.out b/Test/baseResults/hlsl.scalar-length.frag.out
index aa11af5..ec80897 100644
--- a/Test/baseResults/hlsl.scalar-length.frag.out
+++ b/Test/baseResults/hlsl.scalar-length.frag.out
@@ -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 --git a/Test/baseResults/hlsl.scalar2matrix.frag.out b/Test/baseResults/hlsl.scalar2matrix.frag.out
index 57d250e..cb996f6 100644
--- a/Test/baseResults/hlsl.scalar2matrix.frag.out
+++ b/Test/baseResults/hlsl.scalar2matrix.frag.out
@@ -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 --git a/Test/baseResults/hlsl.scalarCast.vert.out b/Test/baseResults/hlsl.scalarCast.vert.out
index 0e07c9f..40f0f20 100644
--- a/Test/baseResults/hlsl.scalarCast.vert.out
+++ b/Test/baseResults/hlsl.scalarCast.vert.out
@@ -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 --git a/Test/baseResults/hlsl.scope.frag.out b/Test/baseResults/hlsl.scope.frag.out
index b563380..882158e 100644
--- a/Test/baseResults/hlsl.scope.frag.out
+++ b/Test/baseResults/hlsl.scope.frag.out
@@ -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 --git a/Test/baseResults/hlsl.self_cast.frag.out b/Test/baseResults/hlsl.self_cast.frag.out
index 9d398ed..6f0e1dd 100644
--- a/Test/baseResults/hlsl.self_cast.frag.out
+++ b/Test/baseResults/hlsl.self_cast.frag.out
@@ -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 --git a/Test/baseResults/hlsl.semantic-1.vert.out b/Test/baseResults/hlsl.semantic-1.vert.out
index b5e4091..96c14a9 100644
--- a/Test/baseResults/hlsl.semantic-1.vert.out
+++ b/Test/baseResults/hlsl.semantic-1.vert.out
@@ -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 --git a/Test/baseResults/hlsl.semantic.geom.out b/Test/baseResults/hlsl.semantic.geom.out
index 773c8aa..29ec235 100644
--- a/Test/baseResults/hlsl.semantic.geom.out
+++ b/Test/baseResults/hlsl.semantic.geom.out
@@ -66,6 +66,58 @@
0:13 Function Call: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'OutputStream' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:21 Function Definition: notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
+0:21 Function Parameters:
+0:21 'VertexID' ( in 2-element array of uint)
+0:21 'OutputStream' ( out structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:? Sequence
+0:23 Sequence
+0:23 Sequence
+0:23 move second child to first child ( temp float)
+0:? 'OutputStream.clip0' ( out float Position)
+0:23 clip0: direct index for structure ( temp float)
+0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:23 Constant:
+0:23 0 (const int)
+0:? Sequence
+0:23 move second child to first child ( temp float)
+0:23 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
+0:23 Constant:
+0:23 0 (const int)
+0:23 clip0: direct index for structure ( temp float)
+0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:23 Constant:
+0:23 1 (const int)
+0:? Sequence
+0:23 move second child to first child ( temp float)
+0:23 direct index ( out float CullDistance)
+0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance)
+0:23 Constant:
+0:23 0 (const int)
+0:23 cull0: direct index for structure ( temp float)
+0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:23 Constant:
+0:23 2 (const int)
+0:23 move second child to first child ( temp uint)
+0:? 'OutputStream.vpai' ( out uint ViewportIndex)
+0:23 vpai: direct index for structure ( temp uint)
+0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:23 Constant:
+0:23 3 (const int)
+0:23 move second child to first child ( temp uint)
+0:? 'OutputStream.rtai' ( out uint Layer)
+0:23 rtai: direct index for structure ( temp uint)
+0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:23 Constant:
+0:23 4 (const int)
+0:23 move second child to first child ( temp int)
+0:? 'OutputStream.ii' (layout( location=0) out int)
+0:23 ii: direct index for structure ( temp int)
+0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:23 Constant:
+0:23 5 (const int)
+0:23 EmitVertex ( temp void)
0:? Linker Objects
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? 'OutputStream.clip0' ( out float Position)
@@ -146,6 +198,58 @@
0:13 Function Call: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'OutputStream' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:21 Function Definition: notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
+0:21 Function Parameters:
+0:21 'VertexID' ( in 2-element array of uint)
+0:21 'OutputStream' ( out structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:? Sequence
+0:23 Sequence
+0:23 Sequence
+0:23 move second child to first child ( temp float)
+0:? 'OutputStream.clip0' ( out float Position)
+0:23 clip0: direct index for structure ( temp float)
+0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:23 Constant:
+0:23 0 (const int)
+0:? Sequence
+0:23 move second child to first child ( temp float)
+0:23 direct index ( out float ClipDistance)
+0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
+0:23 Constant:
+0:23 0 (const int)
+0:23 clip0: direct index for structure ( temp float)
+0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:23 Constant:
+0:23 1 (const int)
+0:? Sequence
+0:23 move second child to first child ( temp float)
+0:23 direct index ( out float CullDistance)
+0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance)
+0:23 Constant:
+0:23 0 (const int)
+0:23 cull0: direct index for structure ( temp float)
+0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:23 Constant:
+0:23 2 (const int)
+0:23 move second child to first child ( temp uint)
+0:? 'OutputStream.vpai' ( out uint ViewportIndex)
+0:23 vpai: direct index for structure ( temp uint)
+0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:23 Constant:
+0:23 3 (const int)
+0:23 move second child to first child ( temp uint)
+0:? 'OutputStream.rtai' ( out uint Layer)
+0:23 rtai: direct index for structure ( temp uint)
+0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:23 Constant:
+0:23 4 (const int)
+0:23 move second child to first child ( temp int)
+0:? 'OutputStream.ii' (layout( location=0) out int)
+0:23 ii: direct index for structure ( temp int)
+0:23 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
+0:23 Constant:
+0:23 5 (const int)
+0:23 EmitVertex ( temp void)
0:? Linker Objects
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? 'OutputStream.clip0' ( out float Position)
@@ -157,8 +261,8 @@
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
-// Id's are bound by 65
+// Generated by (magic number): 80008
+// Id's are bound by 88
Capability Geometry
Capability ClipDistance
@@ -166,7 +270,7 @@
Capability MultiViewport
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Geometry 4 "main" 20 29 34 40 45 50 57
+ EntryPoint Geometry 4 "main" 28 37 42 48 53 58 65
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputLineStrip
@@ -183,25 +287,29 @@
Name 17 "@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;"
Name 15 "VertexID"
Name 16 "OutputStream"
- Name 20 "OutputStream.clip0"
- Name 21 "s"
- Name 29 "OutputStream.clip0"
- Name 34 "OutputStream.cull0"
- Name 40 "OutputStream.vpai"
- Name 45 "OutputStream.rtai"
- Name 50 "OutputStream.ii"
- Name 55 "VertexID"
- Name 57 "VertexID"
- Name 59 "OutputStream"
- Name 60 "param"
- Name 62 "param"
- Decorate 20(OutputStream.clip0) BuiltIn Position
- Decorate 29(OutputStream.clip0) BuiltIn ClipDistance
- Decorate 34(OutputStream.cull0) BuiltIn CullDistance
- Decorate 40(OutputStream.vpai) BuiltIn ViewportIndex
- Decorate 45(OutputStream.rtai) BuiltIn Layer
- Decorate 50(OutputStream.ii) Location 0
- Decorate 57(VertexID) Location 0
+ Name 25 "notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11;"
+ Name 23 "VertexID"
+ Name 24 "OutputStream"
+ Name 28 "OutputStream.clip0"
+ Name 29 "s"
+ Name 37 "OutputStream.clip0"
+ Name 42 "OutputStream.cull0"
+ Name 48 "OutputStream.vpai"
+ Name 53 "OutputStream.rtai"
+ Name 58 "OutputStream.ii"
+ Name 63 "VertexID"
+ Name 65 "VertexID"
+ Name 67 "OutputStream"
+ Name 68 "param"
+ Name 70 "param"
+ Name 73 "s"
+ Decorate 28(OutputStream.clip0) BuiltIn Position
+ Decorate 37(OutputStream.clip0) BuiltIn ClipDistance
+ Decorate 42(OutputStream.cull0) BuiltIn CullDistance
+ Decorate 48(OutputStream.vpai) BuiltIn ViewportIndex
+ Decorate 53(OutputStream.rtai) BuiltIn Layer
+ Decorate 58(OutputStream.ii) Location 0
+ Decorate 65(VertexID) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -213,69 +321,101 @@
12(S): TypeStruct 10(float) 10(float) 10(float) 6(int) 6(int) 11(int)
13: TypePointer Function 12(S)
14: TypeFunction 2 9(ptr) 13(ptr)
- 19: TypePointer Output 10(float)
-20(OutputStream.clip0): 19(ptr) Variable Output
- 22: 11(int) Constant 0
- 23: TypePointer Function 10(float)
- 26: 6(int) Constant 1
- 27: TypeArray 10(float) 26
- 28: TypePointer Output 27
-29(OutputStream.clip0): 28(ptr) Variable Output
- 30: 11(int) Constant 1
-34(OutputStream.cull0): 28(ptr) Variable Output
- 35: 11(int) Constant 2
- 39: TypePointer Output 6(int)
-40(OutputStream.vpai): 39(ptr) Variable Output
- 41: 11(int) Constant 3
- 42: TypePointer Function 6(int)
-45(OutputStream.rtai): 39(ptr) Variable Output
- 46: 11(int) Constant 4
- 49: TypePointer Output 11(int)
-50(OutputStream.ii): 49(ptr) Variable Output
- 51: 11(int) Constant 5
- 52: TypePointer Function 11(int)
- 56: TypePointer Input 8
- 57(VertexID): 56(ptr) Variable Input
+ 19: 6(int) Constant 2
+ 20: TypeArray 6(int) 19
+ 21: TypePointer Function 20
+ 22: TypeFunction 2 21(ptr) 13(ptr)
+ 27: TypePointer Output 10(float)
+28(OutputStream.clip0): 27(ptr) Variable Output
+ 30: 11(int) Constant 0
+ 31: TypePointer Function 10(float)
+ 34: 6(int) Constant 1
+ 35: TypeArray 10(float) 34
+ 36: TypePointer Output 35
+37(OutputStream.clip0): 36(ptr) Variable Output
+ 38: 11(int) Constant 1
+42(OutputStream.cull0): 36(ptr) Variable Output
+ 43: 11(int) Constant 2
+ 47: TypePointer Output 6(int)
+48(OutputStream.vpai): 47(ptr) Variable Output
+ 49: 11(int) Constant 3
+ 50: TypePointer Function 6(int)
+53(OutputStream.rtai): 47(ptr) Variable Output
+ 54: 11(int) Constant 4
+ 57: TypePointer Output 11(int)
+58(OutputStream.ii): 57(ptr) Variable Output
+ 59: 11(int) Constant 5
+ 60: TypePointer Function 11(int)
+ 64: TypePointer Input 8
+ 65(VertexID): 64(ptr) Variable Input
4(main): 2 Function None 3
5: Label
- 55(VertexID): 9(ptr) Variable Function
-59(OutputStream): 13(ptr) Variable Function
- 60(param): 9(ptr) Variable Function
- 62(param): 13(ptr) Variable Function
- 58: 8 Load 57(VertexID)
- Store 55(VertexID) 58
- 61: 8 Load 55(VertexID)
- Store 60(param) 61
- 63: 2 FunctionCall 17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;) 60(param) 62(param)
- 64: 12(S) Load 62(param)
- Store 59(OutputStream) 64
+ 63(VertexID): 9(ptr) Variable Function
+67(OutputStream): 13(ptr) Variable Function
+ 68(param): 9(ptr) Variable Function
+ 70(param): 13(ptr) Variable Function
+ 66: 8 Load 65(VertexID)
+ Store 63(VertexID) 66
+ 69: 8 Load 63(VertexID)
+ Store 68(param) 69
+ 71: 2 FunctionCall 17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;) 68(param) 70(param)
+ 72: 12(S) Load 70(param)
+ Store 67(OutputStream) 72
Return
FunctionEnd
17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;): 2 Function None 14
15(VertexID): 9(ptr) FunctionParameter
16(OutputStream): 13(ptr) FunctionParameter
18: Label
- 21(s): 13(ptr) Variable Function
- 24: 23(ptr) AccessChain 21(s) 22
- 25: 10(float) Load 24
- Store 20(OutputStream.clip0) 25
- 31: 23(ptr) AccessChain 21(s) 30
- 32: 10(float) Load 31
- 33: 19(ptr) AccessChain 29(OutputStream.clip0) 22
- Store 33 32
- 36: 23(ptr) AccessChain 21(s) 35
- 37: 10(float) Load 36
- 38: 19(ptr) AccessChain 34(OutputStream.cull0) 22
- Store 38 37
- 43: 42(ptr) AccessChain 21(s) 41
- 44: 6(int) Load 43
- Store 40(OutputStream.vpai) 44
- 47: 42(ptr) AccessChain 21(s) 46
- 48: 6(int) Load 47
- Store 45(OutputStream.rtai) 48
- 53: 52(ptr) AccessChain 21(s) 51
- 54: 11(int) Load 53
- Store 50(OutputStream.ii) 54
+ 29(s): 13(ptr) Variable Function
+ 32: 31(ptr) AccessChain 29(s) 30
+ 33: 10(float) Load 32
+ Store 28(OutputStream.clip0) 33
+ 39: 31(ptr) AccessChain 29(s) 38
+ 40: 10(float) Load 39
+ 41: 27(ptr) AccessChain 37(OutputStream.clip0) 30
+ Store 41 40
+ 44: 31(ptr) AccessChain 29(s) 43
+ 45: 10(float) Load 44
+ 46: 27(ptr) AccessChain 42(OutputStream.cull0) 30
+ Store 46 45
+ 51: 50(ptr) AccessChain 29(s) 49
+ 52: 6(int) Load 51
+ Store 48(OutputStream.vpai) 52
+ 55: 50(ptr) AccessChain 29(s) 54
+ 56: 6(int) Load 55
+ Store 53(OutputStream.rtai) 56
+ 61: 60(ptr) AccessChain 29(s) 59
+ 62: 11(int) Load 61
+ Store 58(OutputStream.ii) 62
+ EmitVertex
+ Return
+ FunctionEnd
+25(notmain(u1[2];struct-S-f1-f1-f1-u1-u1-i11;): 2 Function None 22
+ 23(VertexID): 21(ptr) FunctionParameter
+24(OutputStream): 13(ptr) FunctionParameter
+ 26: Label
+ 73(s): 13(ptr) Variable Function
+ 74: 31(ptr) AccessChain 73(s) 30
+ 75: 10(float) Load 74
+ Store 28(OutputStream.clip0) 75
+ 76: 31(ptr) AccessChain 73(s) 38
+ 77: 10(float) Load 76
+ 78: 27(ptr) AccessChain 37(OutputStream.clip0) 30
+ Store 78 77
+ 79: 31(ptr) AccessChain 73(s) 43
+ 80: 10(float) Load 79
+ 81: 27(ptr) AccessChain 42(OutputStream.cull0) 30
+ Store 81 80
+ 82: 50(ptr) AccessChain 73(s) 49
+ 83: 6(int) Load 82
+ Store 48(OutputStream.vpai) 83
+ 84: 50(ptr) AccessChain 73(s) 54
+ 85: 6(int) Load 84
+ Store 53(OutputStream.rtai) 85
+ 86: 60(ptr) AccessChain 73(s) 59
+ 87: 11(int) Load 86
+ Store 58(OutputStream.ii) 87
EmitVertex
Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.semantic.vert.out b/Test/baseResults/hlsl.semantic.vert.out
index 2dbcd57..144df05 100644
--- a/Test/baseResults/hlsl.semantic.vert.out
+++ b/Test/baseResults/hlsl.semantic.vert.out
@@ -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 --git a/Test/baseResults/hlsl.semicolons.frag.out b/Test/baseResults/hlsl.semicolons.frag.out
index 94307a6..b45f59d 100644
--- a/Test/baseResults/hlsl.semicolons.frag.out
+++ b/Test/baseResults/hlsl.semicolons.frag.out
@@ -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 --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out
index d283809..8da8d48 100644
--- a/Test/baseResults/hlsl.shapeConv.frag.out
+++ b/Test/baseResults/hlsl.shapeConv.frag.out
@@ -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 --git a/Test/baseResults/hlsl.shapeConvRet.frag.out b/Test/baseResults/hlsl.shapeConvRet.frag.out
index fc12f7f..efcbe04 100644
--- a/Test/baseResults/hlsl.shapeConvRet.frag.out
+++ b/Test/baseResults/hlsl.shapeConvRet.frag.out
@@ -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 --git a/Test/baseResults/hlsl.sin.frag.out b/Test/baseResults/hlsl.sin.frag.out
index b92085e..3128cec 100644
--- a/Test/baseResults/hlsl.sin.frag.out
+++ b/Test/baseResults/hlsl.sin.frag.out
@@ -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 --git a/Test/baseResults/hlsl.singleArgIntPromo.vert.out b/Test/baseResults/hlsl.singleArgIntPromo.vert.out
new file mode 100755
index 0000000..71c1bb2
--- /dev/null
+++ b/Test/baseResults/hlsl.singleArgIntPromo.vert.out
@@ -0,0 +1,312 @@
+hlsl.singleArgIntPromo.vert
+Shader version: 500
+0:? Sequence
+0:2 Function Definition: @main( ( temp float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Sequence
+0:3 move second child to first child ( temp int)
+0:3 'd' ( temp int)
+0:3 Constant:
+0:3 4 (const int)
+0:4 Sequence
+0:4 move second child to first child ( temp 2-component vector of int)
+0:4 'd2' ( temp 2-component vector of int)
+0:? Construct ivec2 ( temp 2-component vector of int)
+0:4 Constant:
+0:4 5 (const int)
+0:4 'd' ( temp int)
+0:5 Sequence
+0:5 move second child to first child ( temp float)
+0:5 'f1' ( temp float)
+0:5 Constant:
+0:5 2.321928
+0:6 Sequence
+0:6 move second child to first child ( temp 2-component vector of float)
+0:6 'f2' ( temp 2-component vector of float)
+0:6 log ( temp 2-component vector of float)
+0:6 Convert int to float ( temp 2-component vector of float)
+0:6 'd2' ( temp 2-component vector of int)
+0:7 Sequence
+0:7 move second child to first child ( temp 3-component vector of float)
+0:7 'f3' ( temp 3-component vector of float)
+0:? Constant:
+0:? 1.945910
+0:? 0.693147
+0:? 1.098612
+0:8 Sequence
+0:8 move second child to first child ( temp 2-component vector of float)
+0:8 'f22' ( temp 2-component vector of float)
+0:8 Constant:
+0:8 0.000000
+0:8 0.000000
+0:10 Sequence
+0:10 move second child to first child ( temp int)
+0:10 'a' ( temp int)
+0:10 Constant:
+0:10 5 (const int)
+0:11 Sequence
+0:11 move second child to first child ( temp mediump float)
+0:11 'b' ( temp mediump float)
+0:11 direct index ( temp mediump float)
+0:11 unpackHalf2x16 ( temp mediump 2-component vector of float)
+0:11 Convert int to uint ( temp mediump uint)
+0:11 'a' ( temp mediump int)
+0:11 Constant:
+0:11 0 (const int)
+0:12 multiply second child into first child ( temp mediump float)
+0:12 'b' ( temp mediump float)
+0:12 'b' ( temp mediump float)
+0:13 Sequence
+0:13 move second child to first child ( temp uint)
+0:13 'c' ( temp uint)
+0:13 packHalf2x16 ( temp uint)
+0:13 Construct vec2 ( temp 2-component vector of float)
+0:13 'b' ( temp mediump float)
+0:13 Constant:
+0:13 0.000000
+0:15 Branch: Return with expression
+0:15 add ( temp float)
+0:15 add ( temp float)
+0:15 add ( temp float)
+0:15 add ( temp float)
+0:15 'f1' ( temp float)
+0:15 direct index ( temp float)
+0:15 'f2' ( temp 2-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:15 direct index ( temp float)
+0:15 'f3' ( temp 3-component vector of float)
+0:15 Constant:
+0:15 2 (const int)
+0:15 direct index ( temp float)
+0:15 'f22' ( temp 2-component vector of float)
+0:15 Constant:
+0:15 1 (const int)
+0:15 Convert uint to float ( temp float)
+0:15 'c' ( temp uint)
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp float)
+0:? '@entryPointOutput' (layout( location=0) out float)
+0:2 Function Call: @main( ( temp float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out float)
+
+
+Linked vertex stage:
+
+
+Shader version: 500
+0:? Sequence
+0:2 Function Definition: @main( ( temp float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Sequence
+0:3 move second child to first child ( temp int)
+0:3 'd' ( temp int)
+0:3 Constant:
+0:3 4 (const int)
+0:4 Sequence
+0:4 move second child to first child ( temp 2-component vector of int)
+0:4 'd2' ( temp 2-component vector of int)
+0:? Construct ivec2 ( temp 2-component vector of int)
+0:4 Constant:
+0:4 5 (const int)
+0:4 'd' ( temp int)
+0:5 Sequence
+0:5 move second child to first child ( temp float)
+0:5 'f1' ( temp float)
+0:5 Constant:
+0:5 2.321928
+0:6 Sequence
+0:6 move second child to first child ( temp 2-component vector of float)
+0:6 'f2' ( temp 2-component vector of float)
+0:6 log ( temp 2-component vector of float)
+0:6 Convert int to float ( temp 2-component vector of float)
+0:6 'd2' ( temp 2-component vector of int)
+0:7 Sequence
+0:7 move second child to first child ( temp 3-component vector of float)
+0:7 'f3' ( temp 3-component vector of float)
+0:? Constant:
+0:? 1.945910
+0:? 0.693147
+0:? 1.098612
+0:8 Sequence
+0:8 move second child to first child ( temp 2-component vector of float)
+0:8 'f22' ( temp 2-component vector of float)
+0:8 Constant:
+0:8 0.000000
+0:8 0.000000
+0:10 Sequence
+0:10 move second child to first child ( temp int)
+0:10 'a' ( temp int)
+0:10 Constant:
+0:10 5 (const int)
+0:11 Sequence
+0:11 move second child to first child ( temp mediump float)
+0:11 'b' ( temp mediump float)
+0:11 direct index ( temp mediump float)
+0:11 unpackHalf2x16 ( temp mediump 2-component vector of float)
+0:11 Convert int to uint ( temp mediump uint)
+0:11 'a' ( temp mediump int)
+0:11 Constant:
+0:11 0 (const int)
+0:12 multiply second child into first child ( temp mediump float)
+0:12 'b' ( temp mediump float)
+0:12 'b' ( temp mediump float)
+0:13 Sequence
+0:13 move second child to first child ( temp uint)
+0:13 'c' ( temp uint)
+0:13 packHalf2x16 ( temp uint)
+0:13 Construct vec2 ( temp 2-component vector of float)
+0:13 'b' ( temp mediump float)
+0:13 Constant:
+0:13 0.000000
+0:15 Branch: Return with expression
+0:15 add ( temp float)
+0:15 add ( temp float)
+0:15 add ( temp float)
+0:15 add ( temp float)
+0:15 'f1' ( temp float)
+0:15 direct index ( temp float)
+0:15 'f2' ( temp 2-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:15 direct index ( temp float)
+0:15 'f3' ( temp 3-component vector of float)
+0:15 Constant:
+0:15 2 (const int)
+0:15 direct index ( temp float)
+0:15 'f22' ( temp 2-component vector of float)
+0:15 Constant:
+0:15 1 (const int)
+0:15 Convert uint to float ( temp float)
+0:15 'c' ( temp uint)
+0:2 Function Definition: main( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp float)
+0:? '@entryPointOutput' (layout( location=0) out float)
+0:2 Function Call: @main( ( temp float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out float)
+
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 75
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 73
+ Source HLSL 500
+ Name 4 "main"
+ Name 8 "@main("
+ Name 12 "d"
+ Name 16 "d2"
+ Name 21 "f1"
+ Name 25 "f2"
+ Name 31 "f3"
+ Name 36 "f22"
+ Name 39 "a"
+ Name 40 "b"
+ Name 51 "c"
+ Name 73 "@entryPointOutput"
+ Decorate 40(b) RelaxedPrecision
+ Decorate 41 RelaxedPrecision
+ Decorate 43 RelaxedPrecision
+ Decorate 44 RelaxedPrecision
+ Decorate 46 RelaxedPrecision
+ Decorate 47 RelaxedPrecision
+ Decorate 48 RelaxedPrecision
+ Decorate 49 RelaxedPrecision
+ Decorate 52 RelaxedPrecision
+ Decorate 73(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeFunction 6(float)
+ 10: TypeInt 32 1
+ 11: TypePointer Function 10(int)
+ 13: 10(int) Constant 4
+ 14: TypeVector 10(int) 2
+ 15: TypePointer Function 14(ivec2)
+ 17: 10(int) Constant 5
+ 20: TypePointer Function 6(float)
+ 22: 6(float) Constant 1075092088
+ 23: TypeVector 6(float) 2
+ 24: TypePointer Function 23(fvec2)
+ 29: TypeVector 6(float) 3
+ 30: TypePointer Function 29(fvec3)
+ 32: 6(float) Constant 1073288085
+ 33: 6(float) Constant 1060205080
+ 34: 6(float) Constant 1066180436
+ 35: 29(fvec3) ConstantComposite 32 33 34
+ 37: 6(float) Constant 0
+ 38: 23(fvec2) ConstantComposite 37 37
+ 42: TypeInt 32 0
+ 45: 42(int) Constant 0
+ 50: TypePointer Function 42(int)
+ 59: 42(int) Constant 2
+ 63: 42(int) Constant 1
+ 72: TypePointer Output 6(float)
+73(@entryPointOutput): 72(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 74: 6(float) FunctionCall 8(@main()
+ Store 73(@entryPointOutput) 74
+ Return
+ FunctionEnd
+ 8(@main(): 6(float) Function None 7
+ 9: Label
+ 12(d): 11(ptr) Variable Function
+ 16(d2): 15(ptr) Variable Function
+ 21(f1): 20(ptr) Variable Function
+ 25(f2): 24(ptr) Variable Function
+ 31(f3): 30(ptr) Variable Function
+ 36(f22): 24(ptr) Variable Function
+ 39(a): 11(ptr) Variable Function
+ 40(b): 20(ptr) Variable Function
+ 51(c): 50(ptr) Variable Function
+ Store 12(d) 13
+ 18: 10(int) Load 12(d)
+ 19: 14(ivec2) CompositeConstruct 17 18
+ Store 16(d2) 19
+ Store 21(f1) 22
+ 26: 14(ivec2) Load 16(d2)
+ 27: 23(fvec2) ConvertSToF 26
+ 28: 23(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 27
+ Store 25(f2) 28
+ Store 31(f3) 35
+ Store 36(f22) 38
+ Store 39(a) 17
+ 41: 10(int) Load 39(a)
+ 43: 42(int) Bitcast 41
+ 44: 23(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 43
+ 46: 6(float) CompositeExtract 44 0
+ Store 40(b) 46
+ 47: 6(float) Load 40(b)
+ 48: 6(float) Load 40(b)
+ 49: 6(float) FMul 48 47
+ Store 40(b) 49
+ 52: 6(float) Load 40(b)
+ 53: 23(fvec2) CompositeConstruct 52 37
+ 54: 42(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 53
+ Store 51(c) 54
+ 55: 6(float) Load 21(f1)
+ 56: 20(ptr) AccessChain 25(f2) 45
+ 57: 6(float) Load 56
+ 58: 6(float) FAdd 55 57
+ 60: 20(ptr) AccessChain 31(f3) 59
+ 61: 6(float) Load 60
+ 62: 6(float) FAdd 58 61
+ 64: 20(ptr) AccessChain 36(f22) 63
+ 65: 6(float) Load 64
+ 66: 6(float) FAdd 62 65
+ 67: 42(int) Load 51(c)
+ 68: 6(float) ConvertUToF 67
+ 69: 6(float) FAdd 66 68
+ ReturnValue 69
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.snorm.uav.comp.out b/Test/baseResults/hlsl.snorm.uav.comp.out
index 4c5e603..739d77d 100644
--- a/Test/baseResults/hlsl.snorm.uav.comp.out
+++ b/Test/baseResults/hlsl.snorm.uav.comp.out
@@ -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 --git a/Test/baseResults/hlsl.specConstant.frag.out b/Test/baseResults/hlsl.specConstant.frag.out
index c2942e3..fdcc2a0 100755
--- a/Test/baseResults/hlsl.specConstant.frag.out
+++ b/Test/baseResults/hlsl.specConstant.frag.out
@@ -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 --git a/Test/baseResults/hlsl.staticFuncInit.frag.out b/Test/baseResults/hlsl.staticFuncInit.frag.out
index d468cec..04924ed 100644
--- a/Test/baseResults/hlsl.staticFuncInit.frag.out
+++ b/Test/baseResults/hlsl.staticFuncInit.frag.out
@@ -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 --git a/Test/baseResults/hlsl.staticMemberFunction.frag.out b/Test/baseResults/hlsl.staticMemberFunction.frag.out
index 2c7e418..5ae189d 100644
--- a/Test/baseResults/hlsl.staticMemberFunction.frag.out
+++ b/Test/baseResults/hlsl.staticMemberFunction.frag.out
@@ -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 --git a/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out b/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out
index 29a14c4..f5e004d 100644
--- a/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out
+++ b/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out
@@ -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 --git a/Test/baseResults/hlsl.string.frag.out b/Test/baseResults/hlsl.string.frag.out
index 9181b93..6ee1945 100644
--- a/Test/baseResults/hlsl.string.frag.out
+++ b/Test/baseResults/hlsl.string.frag.out
@@ -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 --git a/Test/baseResults/hlsl.stringtoken.frag.out b/Test/baseResults/hlsl.stringtoken.frag.out
index 15263c5..1b6e0a8 100644
--- a/Test/baseResults/hlsl.stringtoken.frag.out
+++ b/Test/baseResults/hlsl.stringtoken.frag.out
@@ -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 --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out
index 192041f..a255b36 100644
--- a/Test/baseResults/hlsl.struct.frag.out
+++ b/Test/baseResults/hlsl.struct.frag.out
@@ -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 --git a/Test/baseResults/hlsl.struct.split-1.vert.out b/Test/baseResults/hlsl.struct.split-1.vert.out
index d7d6e92..8c25ca2 100644
--- a/Test/baseResults/hlsl.struct.split-1.vert.out
+++ b/Test/baseResults/hlsl.struct.split-1.vert.out
@@ -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 --git a/Test/baseResults/hlsl.struct.split.array.geom.out b/Test/baseResults/hlsl.struct.split.array.geom.out
index 081b05c..c489ffb 100644
--- a/Test/baseResults/hlsl.struct.split.array.geom.out
+++ b/Test/baseResults/hlsl.struct.split.array.geom.out
@@ -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 --git a/Test/baseResults/hlsl.struct.split.assign.frag.out b/Test/baseResults/hlsl.struct.split.assign.frag.out
index 24c8879..3209ab7 100644
--- a/Test/baseResults/hlsl.struct.split.assign.frag.out
+++ b/Test/baseResults/hlsl.struct.split.assign.frag.out
@@ -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 --git a/Test/baseResults/hlsl.struct.split.call.vert.out b/Test/baseResults/hlsl.struct.split.call.vert.out
index 50d1d2b..7c65c06 100644
--- a/Test/baseResults/hlsl.struct.split.call.vert.out
+++ b/Test/baseResults/hlsl.struct.split.call.vert.out
@@ -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 --git a/Test/baseResults/hlsl.struct.split.nested.geom.out b/Test/baseResults/hlsl.struct.split.nested.geom.out
index 7a72a3f..75b5003 100644
--- a/Test/baseResults/hlsl.struct.split.nested.geom.out
+++ b/Test/baseResults/hlsl.struct.split.nested.geom.out
@@ -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 --git a/Test/baseResults/hlsl.struct.split.trivial.geom.out b/Test/baseResults/hlsl.struct.split.trivial.geom.out
index 477fbd2..ecb929e 100644
--- a/Test/baseResults/hlsl.struct.split.trivial.geom.out
+++ b/Test/baseResults/hlsl.struct.split.trivial.geom.out
@@ -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 --git a/Test/baseResults/hlsl.struct.split.trivial.vert.out b/Test/baseResults/hlsl.struct.split.trivial.vert.out
index 8bf477e..f516ea0 100644
--- a/Test/baseResults/hlsl.struct.split.trivial.vert.out
+++ b/Test/baseResults/hlsl.struct.split.trivial.vert.out
@@ -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 --git a/Test/baseResults/hlsl.structIoFourWay.frag.out b/Test/baseResults/hlsl.structIoFourWay.frag.out
index 9938be8..ae47037 100644
--- a/Test/baseResults/hlsl.structIoFourWay.frag.out
+++ b/Test/baseResults/hlsl.structIoFourWay.frag.out
@@ -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
diff --git a/Test/baseResults/hlsl.structStructName.frag.out b/Test/baseResults/hlsl.structStructName.frag.out
index 183dcf6..6e767e4 100644
--- a/Test/baseResults/hlsl.structStructName.frag.out
+++ b/Test/baseResults/hlsl.structStructName.frag.out
@@ -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 --git a/Test/baseResults/hlsl.structarray.flatten.frag.out b/Test/baseResults/hlsl.structarray.flatten.frag.out
index 5d34aec..b654c32 100644
--- a/Test/baseResults/hlsl.structarray.flatten.frag.out
+++ b/Test/baseResults/hlsl.structarray.flatten.frag.out
@@ -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 --git a/Test/baseResults/hlsl.structarray.flatten.geom.out b/Test/baseResults/hlsl.structarray.flatten.geom.out
index f88118d..426214b 100644
--- a/Test/baseResults/hlsl.structarray.flatten.geom.out
+++ b/Test/baseResults/hlsl.structarray.flatten.geom.out
@@ -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 --git a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
index 36050fb..c61b1d8 100644
--- a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
@@ -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 --git a/Test/baseResults/hlsl.structbuffer.append.frag.out b/Test/baseResults/hlsl.structbuffer.append.frag.out
index 2e5c564..e213b4b 100644
--- a/Test/baseResults/hlsl.structbuffer.append.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.append.frag.out
@@ -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 --git a/Test/baseResults/hlsl.structbuffer.atomics.frag.out b/Test/baseResults/hlsl.structbuffer.atomics.frag.out
index e242cf6..d038fbd 100644
--- a/Test/baseResults/hlsl.structbuffer.atomics.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.atomics.frag.out
@@ -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 --git a/Test/baseResults/hlsl.structbuffer.byte.frag.out b/Test/baseResults/hlsl.structbuffer.byte.frag.out
index 26c7a06..e0f1131 100644
--- a/Test/baseResults/hlsl.structbuffer.byte.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.byte.frag.out
@@ -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 --git a/Test/baseResults/hlsl.structbuffer.coherent.frag.out b/Test/baseResults/hlsl.structbuffer.coherent.frag.out
index b33b44d..34b029b 100644
--- a/Test/baseResults/hlsl.structbuffer.coherent.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.coherent.frag.out
@@ -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 --git a/Test/baseResults/hlsl.structbuffer.floatidx.comp.out b/Test/baseResults/hlsl.structbuffer.floatidx.comp.out
index fbb07c2..e1c5466 100644
--- a/Test/baseResults/hlsl.structbuffer.floatidx.comp.out
+++ b/Test/baseResults/hlsl.structbuffer.floatidx.comp.out
@@ -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 --git a/Test/baseResults/hlsl.structbuffer.fn.frag.out b/Test/baseResults/hlsl.structbuffer.fn.frag.out
index 085d9dd..1df5880 100644
--- a/Test/baseResults/hlsl.structbuffer.fn.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.fn.frag.out
@@ -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 --git a/Test/baseResults/hlsl.structbuffer.fn2.comp.out b/Test/baseResults/hlsl.structbuffer.fn2.comp.out
index 517b48c..d25446b 100644
--- a/Test/baseResults/hlsl.structbuffer.fn2.comp.out
+++ b/Test/baseResults/hlsl.structbuffer.fn2.comp.out
@@ -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 --git a/Test/baseResults/hlsl.structbuffer.frag.out b/Test/baseResults/hlsl.structbuffer.frag.out
index 9a67fd7..38e915d 100644
--- a/Test/baseResults/hlsl.structbuffer.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.frag.out
@@ -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 --git a/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out b/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out
index 5c73619..57f387c 100644
--- a/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out
+++ b/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out
@@ -1,6 +1,6 @@
hlsl.structbuffer.incdec.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 70
Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.incdec.frag.out b/Test/baseResults/hlsl.structbuffer.incdec.frag.out
index 452e9ee..b9c1630 100644
--- a/Test/baseResults/hlsl.structbuffer.incdec.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.incdec.frag.out
@@ -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 --git a/Test/baseResults/hlsl.structbuffer.rw.frag.out b/Test/baseResults/hlsl.structbuffer.rw.frag.out
index ceccd5b..fbd48a2 100644
--- a/Test/baseResults/hlsl.structbuffer.rw.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.rw.frag.out
@@ -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 --git a/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out b/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
index 00a055e..a061eac 100644
--- a/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
@@ -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 --git a/Test/baseResults/hlsl.structin.vert.out b/Test/baseResults/hlsl.structin.vert.out
index d7f539d..ad9c0d4 100644
--- a/Test/baseResults/hlsl.structin.vert.out
+++ b/Test/baseResults/hlsl.structin.vert.out
@@ -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 --git a/Test/baseResults/hlsl.subpass.frag.out b/Test/baseResults/hlsl.subpass.frag.out
index ad5a013..8d48028 100644
--- a/Test/baseResults/hlsl.subpass.frag.out
+++ b/Test/baseResults/hlsl.subpass.frag.out
@@ -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 --git a/Test/baseResults/hlsl.switch.frag.out b/Test/baseResults/hlsl.switch.frag.out
index b72891e..b94187d 100644
--- a/Test/baseResults/hlsl.switch.frag.out
+++ b/Test/baseResults/hlsl.switch.frag.out
@@ -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 --git a/Test/baseResults/hlsl.swizzle.frag.out b/Test/baseResults/hlsl.swizzle.frag.out
index c734d50..87ccdc7 100644
--- a/Test/baseResults/hlsl.swizzle.frag.out
+++ b/Test/baseResults/hlsl.swizzle.frag.out
@@ -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 --git a/Test/baseResults/hlsl.synthesizeInput.frag.out b/Test/baseResults/hlsl.synthesizeInput.frag.out
index bbe9743..31f7b7a 100644
--- a/Test/baseResults/hlsl.synthesizeInput.frag.out
+++ b/Test/baseResults/hlsl.synthesizeInput.frag.out
@@ -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 --git a/Test/baseResults/hlsl.target.frag.out b/Test/baseResults/hlsl.target.frag.out
index 0001796..0ab23e8 100644
--- a/Test/baseResults/hlsl.target.frag.out
+++ b/Test/baseResults/hlsl.target.frag.out
@@ -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 --git a/Test/baseResults/hlsl.targetStruct1.frag.out b/Test/baseResults/hlsl.targetStruct1.frag.out
index 371ce2a..93d787c 100644
--- a/Test/baseResults/hlsl.targetStruct1.frag.out
+++ b/Test/baseResults/hlsl.targetStruct1.frag.out
@@ -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 --git a/Test/baseResults/hlsl.targetStruct2.frag.out b/Test/baseResults/hlsl.targetStruct2.frag.out
index e6099c9..0fae66f 100644
--- a/Test/baseResults/hlsl.targetStruct2.frag.out
+++ b/Test/baseResults/hlsl.targetStruct2.frag.out
@@ -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 --git a/Test/baseResults/hlsl.templatetypes.frag.out b/Test/baseResults/hlsl.templatetypes.frag.out
index 3fc5846..1dcfc46 100644
--- a/Test/baseResults/hlsl.templatetypes.frag.out
+++ b/Test/baseResults/hlsl.templatetypes.frag.out
@@ -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 --git a/Test/baseResults/hlsl.texture.struct.frag.out b/Test/baseResults/hlsl.texture.struct.frag.out
index 6fc5428..7835d32 100644
--- a/Test/baseResults/hlsl.texture.struct.frag.out
+++ b/Test/baseResults/hlsl.texture.struct.frag.out
@@ -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 --git a/Test/baseResults/hlsl.texture.subvec4.frag.out b/Test/baseResults/hlsl.texture.subvec4.frag.out
index 1beb027..01f32da 100644
--- a/Test/baseResults/hlsl.texture.subvec4.frag.out
+++ b/Test/baseResults/hlsl.texture.subvec4.frag.out
@@ -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 --git a/Test/baseResults/hlsl.texturebuffer.frag.out b/Test/baseResults/hlsl.texturebuffer.frag.out
index 0f761af..1aa9dbc 100644
--- a/Test/baseResults/hlsl.texturebuffer.frag.out
+++ b/Test/baseResults/hlsl.texturebuffer.frag.out
@@ -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 --git a/Test/baseResults/hlsl.this.frag.out b/Test/baseResults/hlsl.this.frag.out
index ac5fde8..f32f109 100644
--- a/Test/baseResults/hlsl.this.frag.out
+++ b/Test/baseResults/hlsl.this.frag.out
@@ -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 --git a/Test/baseResults/hlsl.tristream-append.geom.out b/Test/baseResults/hlsl.tristream-append.geom.out
index 94344cd..514ce16 100644
--- a/Test/baseResults/hlsl.tristream-append.geom.out
+++ b/Test/baseResults/hlsl.tristream-append.geom.out
@@ -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 --git a/Test/baseResults/hlsl.tx.bracket.frag.out b/Test/baseResults/hlsl.tx.bracket.frag.out
index f5c8288..0e8fb5c 100644
--- a/Test/baseResults/hlsl.tx.bracket.frag.out
+++ b/Test/baseResults/hlsl.tx.bracket.frag.out
@@ -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 --git a/Test/baseResults/hlsl.tx.overload.frag.out b/Test/baseResults/hlsl.tx.overload.frag.out
index 3277954..8556b9e 100644
--- a/Test/baseResults/hlsl.tx.overload.frag.out
+++ b/Test/baseResults/hlsl.tx.overload.frag.out
@@ -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 --git a/Test/baseResults/hlsl.type.half.frag.out b/Test/baseResults/hlsl.type.half.frag.out
index 6b5a945..719b139 100644
--- a/Test/baseResults/hlsl.type.half.frag.out
+++ b/Test/baseResults/hlsl.type.half.frag.out
@@ -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 --git a/Test/baseResults/hlsl.type.identifier.frag.out b/Test/baseResults/hlsl.type.identifier.frag.out
index 2eaa2ae..adec4a3 100644
--- a/Test/baseResults/hlsl.type.identifier.frag.out
+++ b/Test/baseResults/hlsl.type.identifier.frag.out
@@ -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 --git a/Test/baseResults/hlsl.type.type.conversion.valid.frag.out b/Test/baseResults/hlsl.type.type.conversion.valid.frag.out
index fc67200..3e511ff 100644
--- a/Test/baseResults/hlsl.type.type.conversion.valid.frag.out
+++ b/Test/baseResults/hlsl.type.type.conversion.valid.frag.out
@@ -1364,7 +1364,7 @@
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 122
Capability Shader
diff --git a/Test/baseResults/hlsl.typeGraphCopy.vert.out b/Test/baseResults/hlsl.typeGraphCopy.vert.out
index 8509cc4..1ca93bb 100644
--- a/Test/baseResults/hlsl.typeGraphCopy.vert.out
+++ b/Test/baseResults/hlsl.typeGraphCopy.vert.out
@@ -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 --git a/Test/baseResults/hlsl.typedef.frag.out b/Test/baseResults/hlsl.typedef.frag.out
index 11fd107..d4ab66e 100644
--- a/Test/baseResults/hlsl.typedef.frag.out
+++ b/Test/baseResults/hlsl.typedef.frag.out
@@ -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 --git a/Test/baseResults/hlsl.void.frag.out b/Test/baseResults/hlsl.void.frag.out
index 30edd63..99de9d9 100644
--- a/Test/baseResults/hlsl.void.frag.out
+++ b/Test/baseResults/hlsl.void.frag.out
@@ -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 --git a/Test/baseResults/hlsl.wavebroadcast.comp.out b/Test/baseResults/hlsl.wavebroadcast.comp.out
index f1c9679..a9fc9b4 100644
--- a/Test/baseResults/hlsl.wavebroadcast.comp.out
+++ b/Test/baseResults/hlsl.wavebroadcast.comp.out
@@ -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 --git a/Test/baseResults/hlsl.waveprefix.comp.out b/Test/baseResults/hlsl.waveprefix.comp.out
index a9a4b75..3fc8497 100644
--- a/Test/baseResults/hlsl.waveprefix.comp.out
+++ b/Test/baseResults/hlsl.waveprefix.comp.out
@@ -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 --git a/Test/baseResults/hlsl.wavequad.comp.out b/Test/baseResults/hlsl.wavequad.comp.out
index e7e10f1..e237e15 100644
--- a/Test/baseResults/hlsl.wavequad.comp.out
+++ b/Test/baseResults/hlsl.wavequad.comp.out
@@ -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 --git a/Test/baseResults/hlsl.wavequery.comp.out b/Test/baseResults/hlsl.wavequery.comp.out
index 67da71d..09cba4d 100644
--- a/Test/baseResults/hlsl.wavequery.comp.out
+++ b/Test/baseResults/hlsl.wavequery.comp.out
@@ -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 --git a/Test/baseResults/hlsl.wavequery.frag.out b/Test/baseResults/hlsl.wavequery.frag.out
index 52304a6..8848a15 100644
--- a/Test/baseResults/hlsl.wavequery.frag.out
+++ b/Test/baseResults/hlsl.wavequery.frag.out
@@ -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 --git a/Test/baseResults/hlsl.wavereduction.comp.out b/Test/baseResults/hlsl.wavereduction.comp.out
index 3e0d3fb..c31f7f5 100644
--- a/Test/baseResults/hlsl.wavereduction.comp.out
+++ b/Test/baseResults/hlsl.wavereduction.comp.out
@@ -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 --git a/Test/baseResults/hlsl.wavevote.comp.out b/Test/baseResults/hlsl.wavevote.comp.out
index 7b671bf..b5c095d 100644
--- a/Test/baseResults/hlsl.wavevote.comp.out
+++ b/Test/baseResults/hlsl.wavevote.comp.out
@@ -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 --git a/Test/baseResults/hlsl.whileLoop.frag.out b/Test/baseResults/hlsl.whileLoop.frag.out
index babc77d..a63d006 100644
--- a/Test/baseResults/hlsl.whileLoop.frag.out
+++ b/Test/baseResults/hlsl.whileLoop.frag.out
@@ -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 --git a/Test/baseResults/hlsl.y-negate-1.vert.out b/Test/baseResults/hlsl.y-negate-1.vert.out
index c086cc0..08413d2 100644
--- a/Test/baseResults/hlsl.y-negate-1.vert.out
+++ b/Test/baseResults/hlsl.y-negate-1.vert.out
@@ -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 --git a/Test/baseResults/hlsl.y-negate-2.vert.out b/Test/baseResults/hlsl.y-negate-2.vert.out
index 4e6f189..9e90d3b 100644
--- a/Test/baseResults/hlsl.y-negate-2.vert.out
+++ b/Test/baseResults/hlsl.y-negate-2.vert.out
@@ -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 --git a/Test/baseResults/hlsl.y-negate-3.vert.out b/Test/baseResults/hlsl.y-negate-3.vert.out
index 6374551..29f63f1 100644
--- a/Test/baseResults/hlsl.y-negate-3.vert.out
+++ b/Test/baseResults/hlsl.y-negate-3.vert.out
@@ -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 --git a/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out
new file mode 100755
index 0000000..b8ba789
--- /dev/null
+++ b/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out
@@ -0,0 +1,177 @@
+link.multiAnonBlocksInvalid.0.0.vert
+ERROR: 0:22: 'ColorBlock' : nameless block contains a member that already has a name at global scope
+ERROR: 0:42: 'v1' : redefinition
+ERROR: 0:43: 'uProj' : redefinition
+ERROR: 3 compilation errors. No code generated.
+
+
+Shader version: 430
+ERROR: node is still EOpNull!
+0:46 Function Definition: main( ( global void)
+0:46 Function Parameters:
+0:48 Sequence
+0:48 move second child to first child ( temp 4-component vector of float)
+0:48 'oColor' ( smooth out 4-component vector of float)
+0:48 component-wise multiply ( temp 4-component vector of float)
+0:48 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:48 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2, layout( column_major std140 offset=32) uniform 4-component vector of float v1})
+0:48 Constant:
+0:48 0 (const uint)
+0:48 Function Call: getColor2( ( global 4-component vector of float)
+0:49 move second child to first child ( temp 4-component vector of float)
+0:49 v1: direct index for structure ( out 4-component vector of float)
+0:49 'anon@2' ( out block{ out 4-component vector of float v1})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:49 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2, layout( column_major std140 offset=32) uniform 4-component vector of float v1})
+0:49 Constant:
+0:49 0 (const uint)
+0:51 move second child to first child ( temp 4-component vector of float)
+0:51 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:51 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 matrix-times-vector ( temp 4-component vector of float)
+0:51 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float)
+0:51 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 Function Call: getWorld( ( global 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj})
+0:? 'anon@1' (layout( column_major shared) buffer block{layout( column_major shared) buffer 4-component vector of float b})
+0:? 'anon@2' ( out block{ out 4-component vector of float v1})
+0:? 'myName' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m})
+0:? 'oColor' ( smooth out 4-component vector of float)
+0:? 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+link.multiAnonBlocksInvalid.0.1.vert
+Shader version: 430
+0:? Sequence
+0:38 Function Definition: getColor2( ( global 4-component vector of float)
+0:38 Function Parameters:
+0:40 Sequence
+0:40 Branch: Return with expression
+0:40 color2: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:40 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2})
+0:40 Constant:
+0:40 0 (const uint)
+0:43 Function Definition: getWorld( ( global 4-component vector of float)
+0:43 Function Parameters:
+0:45 Sequence
+0:45 Branch: Return with expression
+0:45 matrix-times-vector ( temp 4-component vector of float)
+0:45 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform 4X4 matrix of float)
+0:45 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:45 Constant:
+0:45 1 (const uint)
+0:45 'P' ( in 4-component vector of float)
+0:46 move second child to first child ( temp 4-component vector of float)
+0:46 v2: direct index for structure ( out 4-component vector of float)
+0:46 'anon@2' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:46 Constant:
+0:46 1 (const uint)
+0:46 Constant:
+0:46 1.000000
+0:46 1.000000
+0:46 1.000000
+0:46 1.000000
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:? 'anon@2' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:? 'anon@3' (layout( column_major shared) buffer block{layout( column_major shared) buffer 4-component vector of float a})
+0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m})
+0:? 'P' ( in 4-component vector of float)
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+ERROR: Linking vertex stage: Types must match:
+ anon@0: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}" versus anon@1: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}"
+ERROR: Linking vertex stage: Types must match:
+ anon@2: " out block{ out 4-component vector of float v1}" versus " out block{ out 4-component vector of float v1, out 4-component vector of float v2}"
+ERROR: Linking vertex stage: Types must match:
+ anon@1: "layout( column_major shared) buffer block{layout( column_major shared) buffer 4-component vector of float b}" versus anon@3: "layout( column_major shared) buffer block{layout( column_major shared) buffer 4-component vector of float a}"
+ERROR: Linking vertex stage: Matched Uniform or Storage blocks must all be anonymous, or all be named:
+WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
+ myName: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m}" versus anon@4: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m}"
+
+Shader version: 430
+ERROR: node is still EOpNull!
+0:46 Function Definition: main( ( global void)
+0:46 Function Parameters:
+0:48 Sequence
+0:48 move second child to first child ( temp 4-component vector of float)
+0:48 'oColor' ( smooth out 4-component vector of float)
+0:48 component-wise multiply ( temp 4-component vector of float)
+0:48 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:48 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2, layout( column_major std140 offset=32) uniform 4-component vector of float v1})
+0:48 Constant:
+0:48 0 (const uint)
+0:48 Function Call: getColor2( ( global 4-component vector of float)
+0:49 move second child to first child ( temp 4-component vector of float)
+0:49 v1: direct index for structure ( out 4-component vector of float)
+0:49 'anon@2' ( out block{ out 4-component vector of float v1})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:49 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2, layout( column_major std140 offset=32) uniform 4-component vector of float v1})
+0:49 Constant:
+0:49 0 (const uint)
+0:51 move second child to first child ( temp 4-component vector of float)
+0:51 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:51 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 matrix-times-vector ( temp 4-component vector of float)
+0:51 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float)
+0:51 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 Function Call: getWorld( ( global 4-component vector of float)
+0:38 Function Definition: getColor2( ( global 4-component vector of float)
+0:38 Function Parameters:
+0:40 Sequence
+0:40 Branch: Return with expression
+0:40 color2: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:40 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2})
+0:40 Constant:
+0:40 0 (const uint)
+0:43 Function Definition: getWorld( ( global 4-component vector of float)
+0:43 Function Parameters:
+0:45 Sequence
+0:45 Branch: Return with expression
+0:45 matrix-times-vector ( temp 4-component vector of float)
+0:45 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform 4X4 matrix of float)
+0:45 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:45 Constant:
+0:45 1 (const uint)
+0:45 'P' ( in 4-component vector of float)
+0:46 move second child to first child ( temp 4-component vector of float)
+0:46 v2: direct index for structure ( out 4-component vector of float)
+0:46 'anon@2' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:46 Constant:
+0:46 1 (const uint)
+0:46 Constant:
+0:46 1.000000
+0:46 1.000000
+0:46 1.000000
+0:46 1.000000
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj})
+0:? 'anon@1' (layout( column_major shared) buffer block{layout( column_major shared) buffer 4-component vector of float b})
+0:? 'anon@2' ( out block{ out 4-component vector of float v1})
+0:? 'myName' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m})
+0:? 'oColor' ( smooth out 4-component vector of float)
+0:? 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2})
+0:? 'P' ( in 4-component vector of float)
+
diff --git a/Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out b/Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out
new file mode 100755
index 0000000..87c31b1
--- /dev/null
+++ b/Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out
@@ -0,0 +1,157 @@
+link.multiAnonBlocksValid.0.0.vert
+Shader version: 430
+0:? Sequence
+0:32 Function Definition: main( ( global void)
+0:32 Function Parameters:
+0:34 Sequence
+0:34 move second child to first child ( temp 4-component vector of float)
+0:34 'oColor' ( smooth out 4-component vector of float)
+0:34 component-wise multiply ( temp 4-component vector of float)
+0:34 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:34 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 Function Call: getColor2( ( global 4-component vector of float)
+0:35 move second child to first child ( temp 4-component vector of float)
+0:35 v1: direct index for structure ( out 4-component vector of float)
+0:35 'anon@1' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:35 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:35 Constant:
+0:35 0 (const uint)
+0:37 move second child to first child ( temp 4-component vector of float)
+0:37 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:37 'anon@3' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 matrix-times-vector ( temp 4-component vector of float)
+0:37 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float)
+0:37 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 Function Call: getWorld( ( global 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:? 'anon@1' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:? 'oColor' ( smooth out 4-component vector of float)
+0:? 'anon@3' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+link.multiAnonBlocksValid.0.1.vert
+Shader version: 430
+0:? Sequence
+0:24 Function Definition: getColor2( ( global 4-component vector of float)
+0:24 Function Parameters:
+0:26 Sequence
+0:26 Branch: Return with expression
+0:26 color2: direct index for structure (layout( column_major std140 offset=16) uniform 4-component vector of float)
+0:26 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:26 Constant:
+0:26 1 (const uint)
+0:29 Function Definition: getWorld( ( global 4-component vector of float)
+0:29 Function Parameters:
+0:31 Sequence
+0:31 Branch: Return with expression
+0:31 matrix-times-vector ( temp 4-component vector of float)
+0:31 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform 4X4 matrix of float)
+0:31 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:31 Constant:
+0:31 1 (const uint)
+0:31 'P' ( in 4-component vector of float)
+0:32 move second child to first child ( temp 4-component vector of float)
+0:32 v2: direct index for structure ( out 4-component vector of float)
+0:32 'anon@2' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:32 Constant:
+0:32 1 (const uint)
+0:32 Constant:
+0:32 1.000000
+0:32 1.000000
+0:32 1.000000
+0:32 1.000000
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:? 'anon@2' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:? 'P' ( in 4-component vector of float)
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 430
+0:? Sequence
+0:32 Function Definition: main( ( global void)
+0:32 Function Parameters:
+0:34 Sequence
+0:34 move second child to first child ( temp 4-component vector of float)
+0:34 'oColor' ( smooth out 4-component vector of float)
+0:34 component-wise multiply ( temp 4-component vector of float)
+0:34 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:34 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 Function Call: getColor2( ( global 4-component vector of float)
+0:35 move second child to first child ( temp 4-component vector of float)
+0:35 v1: direct index for structure ( out 4-component vector of float)
+0:35 'anon@1' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:35 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:35 Constant:
+0:35 0 (const uint)
+0:37 move second child to first child ( temp 4-component vector of float)
+0:37 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:37 'anon@3' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 matrix-times-vector ( temp 4-component vector of float)
+0:37 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float)
+0:37 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 Function Call: getWorld( ( global 4-component vector of float)
+0:24 Function Definition: getColor2( ( global 4-component vector of float)
+0:24 Function Parameters:
+0:26 Sequence
+0:26 Branch: Return with expression
+0:26 color2: direct index for structure (layout( column_major std140 offset=16) uniform 4-component vector of float)
+0:26 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:26 Constant:
+0:26 1 (const uint)
+0:29 Function Definition: getWorld( ( global 4-component vector of float)
+0:29 Function Parameters:
+0:31 Sequence
+0:31 Branch: Return with expression
+0:31 matrix-times-vector ( temp 4-component vector of float)
+0:31 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform 4X4 matrix of float)
+0:31 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:31 Constant:
+0:31 1 (const uint)
+0:31 'P' ( in 4-component vector of float)
+0:32 move second child to first child ( temp 4-component vector of float)
+0:32 v2: direct index for structure ( out 4-component vector of float)
+0:32 'anon@2' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:32 Constant:
+0:32 1 (const uint)
+0:32 Constant:
+0:32 1.000000
+0:32 1.000000
+0:32 1.000000
+0:32 1.000000
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:? 'anon@1' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:? 'oColor' ( smooth out 4-component vector of float)
+0:? 'anon@3' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+0:? 'P' ( in 4-component vector of float)
+
diff --git a/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out
new file mode 100755
index 0000000..12b5c43
--- /dev/null
+++ b/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out
@@ -0,0 +1,182 @@
+link.multiBlocksInvalid.0.0.vert
+Shader version: 430
+0:? Sequence
+0:34 Function Definition: main( ( global void)
+0:34 Function Parameters:
+0:36 Sequence
+0:36 move second child to first child ( temp 4-component vector of float)
+0:36 'oColor' ( smooth out 4-component vector of float)
+0:36 component-wise multiply ( temp 4-component vector of float)
+0:36 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:36 'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1})
+0:36 Constant:
+0:36 0 (const int)
+0:36 Function Call: getColor2( ( global 4-component vector of float)
+0:37 move second child to first child ( temp 4-component vector of float)
+0:37 v1: direct index for structure ( out 4-component vector of float)
+0:37 'oV' ( out block{ out 4-component vector of float v1})
+0:37 Constant:
+0:37 0 (const int)
+0:37 add ( temp 4-component vector of float)
+0:37 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:37 'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1})
+0:37 Constant:
+0:37 0 (const int)
+0:37 color1: direct index for structure (layout( column_major std430 offset=0) buffer 4-component vector of float)
+0:37 'uBufC' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float color1})
+0:37 Constant:
+0:37 0 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:39 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 matrix-times-vector ( temp 4-component vector of float)
+0:39 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float)
+0:39 'uD' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Function Call: getWorld( ( global 4-component vector of float)
+0:? Linker Objects
+0:? 'uD' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj})
+0:? 'oV' ( out block{ out 4-component vector of float v1})
+0:? 'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1})
+0:? 'uBufC' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float color1})
+0:? 'oColor' ( smooth out 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+link.multiBlocksInvalid.0.1.vert
+Shader version: 430
+0:? Sequence
+0:21 Function Definition: getColor2( ( global 4-component vector of float)
+0:21 Function Parameters:
+0:23 Sequence
+0:23 Branch: Return with expression
+0:23 color2: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:23 'uColorB' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2})
+0:23 Constant:
+0:23 0 (const int)
+0:26 Function Definition: getWorld( ( global 4-component vector of float)
+0:26 Function Parameters:
+0:28 Sequence
+0:28 Branch: Return with expression
+0:28 matrix-times-vector ( temp 4-component vector of float)
+0:28 uWorld: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float)
+0:28 'uDefaultB' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uWorld})
+0:28 Constant:
+0:28 0 (const int)
+0:28 'P' ( in 4-component vector of float)
+0:29 move second child to first child ( temp 4-component vector of float)
+0:29 v2: direct index for structure ( out 4-component vector of float)
+0:29 'oVert' ( out block{ out 4-component vector of float v2})
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 1.000000
+0:29 1.000000
+0:29 1.000000
+0:29 1.000000
+0:? Linker Objects
+0:? 'uColorB' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2})
+0:? 'uDefaultB' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uWorld})
+0:? 'oVert' ( out block{ out 4-component vector of float v2})
+0:? 'P' ( in 4-component vector of float)
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+ERROR: Linking vertex stage: Types must match:
+WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
+ uC: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1}" versus uColorB: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2}"
+ERROR: Linking vertex stage: Types must match:
+ERROR: Linking vertex stage: Storage qualifiers must match:
+ERROR: Linking vertex stage: Layout qualification must match:
+ uBufC: "layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float color1}" versus uColorB: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2}"
+ERROR: Linking vertex stage: Types must match:
+WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
+ uD: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}" versus uDefaultB: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uWorld}"
+ERROR: Linking vertex stage: Types must match:
+WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
+ oV: " out block{ out 4-component vector of float v1}" versus oVert: " out block{ out 4-component vector of float v2}"
+
+Shader version: 430
+0:? Sequence
+0:34 Function Definition: main( ( global void)
+0:34 Function Parameters:
+0:36 Sequence
+0:36 move second child to first child ( temp 4-component vector of float)
+0:36 'oColor' ( smooth out 4-component vector of float)
+0:36 component-wise multiply ( temp 4-component vector of float)
+0:36 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:36 'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1})
+0:36 Constant:
+0:36 0 (const int)
+0:36 Function Call: getColor2( ( global 4-component vector of float)
+0:37 move second child to first child ( temp 4-component vector of float)
+0:37 v1: direct index for structure ( out 4-component vector of float)
+0:37 'oV' ( out block{ out 4-component vector of float v1})
+0:37 Constant:
+0:37 0 (const int)
+0:37 add ( temp 4-component vector of float)
+0:37 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:37 'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1})
+0:37 Constant:
+0:37 0 (const int)
+0:37 color1: direct index for structure (layout( column_major std430 offset=0) buffer 4-component vector of float)
+0:37 'uBufC' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float color1})
+0:37 Constant:
+0:37 0 (const int)
+0:39 move second child to first child ( temp 4-component vector of float)
+0:39 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:39 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 matrix-times-vector ( temp 4-component vector of float)
+0:39 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float)
+0:39 'uD' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj})
+0:39 Constant:
+0:39 0 (const int)
+0:39 Function Call: getWorld( ( global 4-component vector of float)
+0:21 Function Definition: getColor2( ( global 4-component vector of float)
+0:21 Function Parameters:
+0:23 Sequence
+0:23 Branch: Return with expression
+0:23 color2: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:23 'uColorB' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2})
+0:23 Constant:
+0:23 0 (const int)
+0:26 Function Definition: getWorld( ( global 4-component vector of float)
+0:26 Function Parameters:
+0:28 Sequence
+0:28 Branch: Return with expression
+0:28 matrix-times-vector ( temp 4-component vector of float)
+0:28 uWorld: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float)
+0:28 'uDefaultB' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uWorld})
+0:28 Constant:
+0:28 0 (const int)
+0:28 'P' ( in 4-component vector of float)
+0:29 move second child to first child ( temp 4-component vector of float)
+0:29 v2: direct index for structure ( out 4-component vector of float)
+0:29 'oVert' ( out block{ out 4-component vector of float v2})
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 1.000000
+0:29 1.000000
+0:29 1.000000
+0:29 1.000000
+0:? Linker Objects
+0:? 'uD' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj})
+0:? 'oV' ( out block{ out 4-component vector of float v1})
+0:? 'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1})
+0:? 'uBufC' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float color1})
+0:? 'oColor' ( smooth out 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+0:? 'P' ( in 4-component vector of float)
+
diff --git a/Test/baseResults/link.multiBlocksValid.1.0.vert.out b/Test/baseResults/link.multiBlocksValid.1.0.vert.out
new file mode 100755
index 0000000..2f32abd
--- /dev/null
+++ b/Test/baseResults/link.multiBlocksValid.1.0.vert.out
@@ -0,0 +1,163 @@
+link.multiBlocksValid.1.0.vert
+Shader version: 430
+0:? Sequence
+0:26 Function Definition: main( ( global void)
+0:26 Function Parameters:
+0:28 Sequence
+0:28 move second child to first child ( temp 4-component vector of float)
+0:28 'oColor' ( smooth out 4-component vector of float)
+0:28 component-wise multiply ( temp 4-component vector of float)
+0:28 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:28 'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Function Call: getColor2( ( global 4-component vector of float)
+0:29 move second child to first child ( temp 4-component vector of float)
+0:29 v1: direct index for structure ( out 4-component vector of float)
+0:29 'b' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:29 Constant:
+0:29 0 (const int)
+0:29 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:29 'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:29 Constant:
+0:29 0 (const int)
+0:31 move second child to first child ( temp 4-component vector of float)
+0:31 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:31 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 matrix-times-vector ( temp 4-component vector of float)
+0:31 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float)
+0:31 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:31 Constant:
+0:31 0 (const int)
+0:31 Function Call: getWorld( ( global 4-component vector of float)
+0:? Linker Objects
+0:? 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:? 'b' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:? 'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:? 'oColor' ( smooth out 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+link.multiBlocksValid.1.1.vert
+Shader version: 430
+0:? Sequence
+0:24 Function Definition: getColor2( ( global 4-component vector of float)
+0:24 Function Parameters:
+0:26 Sequence
+0:26 Branch: Return with expression
+0:26 color2: direct index for structure (layout( column_major std140 offset=16) uniform 4-component vector of float)
+0:26 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:26 Constant:
+0:26 1 (const int)
+0:29 Function Definition: getWorld( ( global 4-component vector of float)
+0:29 Function Parameters:
+0:31 Sequence
+0:31 Branch: Return with expression
+0:31 matrix-times-vector ( temp 4-component vector of float)
+0:31 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform 4X4 matrix of float)
+0:31 'b' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:31 Constant:
+0:31 1 (const int)
+0:31 'P' ( in 4-component vector of float)
+0:32 move second child to first child ( temp 4-component vector of float)
+0:32 v2: direct index for structure ( out 4-component vector of float)
+0:32 'c' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 1.000000
+0:32 1.000000
+0:32 1.000000
+0:32 1.000000
+0:? Linker Objects
+0:? 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:? 'b' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:? 'c' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:? 'P' ( in 4-component vector of float)
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
+ c: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}" versus a: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}"
+WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
+ a: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}" versus b: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}"
+WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
+ b: " out block{ out 4-component vector of float v1, out 4-component vector of float v2}" versus c: " out block{ out 4-component vector of float v1, out 4-component vector of float v2}"
+
+Shader version: 430
+0:? Sequence
+0:26 Function Definition: main( ( global void)
+0:26 Function Parameters:
+0:28 Sequence
+0:28 move second child to first child ( temp 4-component vector of float)
+0:28 'oColor' ( smooth out 4-component vector of float)
+0:28 component-wise multiply ( temp 4-component vector of float)
+0:28 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:28 'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:28 Constant:
+0:28 0 (const int)
+0:28 Function Call: getColor2( ( global 4-component vector of float)
+0:29 move second child to first child ( temp 4-component vector of float)
+0:29 v1: direct index for structure ( out 4-component vector of float)
+0:29 'b' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:29 Constant:
+0:29 0 (const int)
+0:29 color1: direct index for structure (layout( column_major std140 offset=0) uniform 4-component vector of float)
+0:29 'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:29 Constant:
+0:29 0 (const int)
+0:31 move second child to first child ( temp 4-component vector of float)
+0:31 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:31 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 matrix-times-vector ( temp 4-component vector of float)
+0:31 uProj: direct index for structure (layout( column_major std140 offset=0) uniform 4X4 matrix of float)
+0:31 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:31 Constant:
+0:31 0 (const int)
+0:31 Function Call: getWorld( ( global 4-component vector of float)
+0:24 Function Definition: getColor2( ( global 4-component vector of float)
+0:24 Function Parameters:
+0:26 Sequence
+0:26 Branch: Return with expression
+0:26 color2: direct index for structure (layout( column_major std140 offset=16) uniform 4-component vector of float)
+0:26 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:26 Constant:
+0:26 1 (const int)
+0:29 Function Definition: getWorld( ( global 4-component vector of float)
+0:29 Function Parameters:
+0:31 Sequence
+0:31 Branch: Return with expression
+0:31 matrix-times-vector ( temp 4-component vector of float)
+0:31 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform 4X4 matrix of float)
+0:31 'b' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:31 Constant:
+0:31 1 (const int)
+0:31 'P' ( in 4-component vector of float)
+0:32 move second child to first child ( temp 4-component vector of float)
+0:32 v2: direct index for structure ( out 4-component vector of float)
+0:32 'c' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 1.000000
+0:32 1.000000
+0:32 1.000000
+0:32 1.000000
+0:? Linker Objects
+0:? 'a' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld})
+0:? 'b' ( out block{ out 4-component vector of float v1, out 4-component vector of float v2})
+0:? 'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
+0:? 'oColor' ( smooth out 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+0:? 'P' ( in 4-component vector of float)
+
diff --git a/Test/baseResults/link.vk.differentPC.0.0.frag.out b/Test/baseResults/link.vk.differentPC.0.0.frag.out
new file mode 100755
index 0000000..d7cfd22
--- /dev/null
+++ b/Test/baseResults/link.vk.differentPC.0.0.frag.out
@@ -0,0 +1,95 @@
+link.vk.differentPC.0.0.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15 Function Definition: main( ( global void)
+0:15 Function Parameters:
+0:17 Sequence
+0:17 move second child to first child ( temp highp 4-component vector of float)
+0:17 'color' (layout( location=0) out highp 4-component vector of float)
+0:17 add ( temp highp 4-component vector of float)
+0:17 color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float)
+0:17 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:17 Constant:
+0:17 0 (const int)
+0:17 vector-scale ( temp highp 4-component vector of float)
+0:17 Function Call: getColor2( ( global highp 4-component vector of float)
+0:17 Function Call: getScale( ( global highp float)
+0:? Linker Objects
+0:? 'color' (layout( location=0) out highp 4-component vector of float)
+0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+
+link.vk.differentPC.0.1.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:11 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 Branch: Return with expression
+0:13 color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float)
+0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:13 Constant:
+0:13 1 (const int)
+0:? Linker Objects
+0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+
+link.vk.differentPC.0.2.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:11 Function Definition: getScale( ( global highp float)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 Branch: Return with expression
+0:13 scale2: direct index for structure (layout( column_major std430 offset=32) uniform highp float)
+0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale2})
+0:13 Constant:
+0:13 2 (const int)
+0:? Linker Objects
+0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale2})
+
+
+Linked fragment stage:
+
+ERROR: Linking fragment stage: Types must match:
+ uPC: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}" versus "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale2}"
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15 Function Definition: main( ( global void)
+0:15 Function Parameters:
+0:17 Sequence
+0:17 move second child to first child ( temp highp 4-component vector of float)
+0:17 'color' (layout( location=0) out highp 4-component vector of float)
+0:17 add ( temp highp 4-component vector of float)
+0:17 color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float)
+0:17 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:17 Constant:
+0:17 0 (const int)
+0:17 vector-scale ( temp highp 4-component vector of float)
+0:17 Function Call: getColor2( ( global highp 4-component vector of float)
+0:17 Function Call: getScale( ( global highp float)
+0:11 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 Branch: Return with expression
+0:13 color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float)
+0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:13 Constant:
+0:13 1 (const int)
+0:11 Function Definition: getScale( ( global highp float)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 Branch: Return with expression
+0:13 scale2: direct index for structure (layout( column_major std430 offset=32) uniform highp float)
+0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale2})
+0:13 Constant:
+0:13 2 (const int)
+0:? Linker Objects
+0:? 'color' (layout( location=0) out highp 4-component vector of float)
+0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+
+Validation failed
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/link.vk.differentPC.1.0.frag.out b/Test/baseResults/link.vk.differentPC.1.0.frag.out
new file mode 100755
index 0000000..632f18b
--- /dev/null
+++ b/Test/baseResults/link.vk.differentPC.1.0.frag.out
@@ -0,0 +1,97 @@
+link.vk.differentPC.1.0.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:12 Function Definition: getScale( ( global highp float)
+0:12 Function Parameters:
+0:14 Sequence
+0:14 Branch: Return with expression
+0:14 scale: direct index for structure (layout( column_major std430 offset=32) uniform highp float)
+0:14 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2})
+0:14 Constant:
+0:14 2 (const int)
+0:? Linker Objects
+0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2})
+
+link.vk.differentPC.1.1.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:11 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 Branch: Return with expression
+0:13 color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float)
+0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:13 Constant:
+0:13 1 (const int)
+0:? Linker Objects
+0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+
+link.vk.differentPC.1.2.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15 Function Definition: main( ( global void)
+0:15 Function Parameters:
+0:17 Sequence
+0:17 move second child to first child ( temp highp 4-component vector of float)
+0:17 'color' (layout( location=0) out highp 4-component vector of float)
+0:17 add ( temp highp 4-component vector of float)
+0:17 color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float)
+0:17 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:17 Constant:
+0:17 0 (const int)
+0:17 vector-scale ( temp highp 4-component vector of float)
+0:17 Function Call: getColor2( ( global highp 4-component vector of float)
+0:17 Function Call: getScale( ( global highp float)
+0:? Linker Objects
+0:? 'color' (layout( location=0) out highp 4-component vector of float)
+0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+
+
+Linked fragment stage:
+
+ERROR: Linking fragment stage: Types must match:
+ uPC: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2}" versus "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}"
+ERROR: Linking fragment stage: Types must match:
+ uPC: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2}" versus "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}"
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:12 Function Definition: getScale( ( global highp float)
+0:12 Function Parameters:
+0:14 Sequence
+0:14 Branch: Return with expression
+0:14 scale: direct index for structure (layout( column_major std430 offset=32) uniform highp float)
+0:14 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2})
+0:14 Constant:
+0:14 2 (const int)
+0:11 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 Branch: Return with expression
+0:13 color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float)
+0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:13 Constant:
+0:13 1 (const int)
+0:15 Function Definition: main( ( global void)
+0:15 Function Parameters:
+0:17 Sequence
+0:17 move second child to first child ( temp highp 4-component vector of float)
+0:17 'color' (layout( location=0) out highp 4-component vector of float)
+0:17 add ( temp highp 4-component vector of float)
+0:17 color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float)
+0:17 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:17 Constant:
+0:17 0 (const int)
+0:17 vector-scale ( temp highp 4-component vector of float)
+0:17 Function Call: getColor2( ( global highp 4-component vector of float)
+0:17 Function Call: getScale( ( global highp float)
+0:? Linker Objects
+0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2})
+0:? 'color' (layout( location=0) out highp 4-component vector of float)
+
+Validation failed
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/link.vk.matchingPC.0.0.frag.out b/Test/baseResults/link.vk.matchingPC.0.0.frag.out
new file mode 100755
index 0000000..1d6875a
--- /dev/null
+++ b/Test/baseResults/link.vk.matchingPC.0.0.frag.out
@@ -0,0 +1,155 @@
+link.vk.matchingPC.0.0.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15 Function Definition: main( ( global void)
+0:15 Function Parameters:
+0:17 Sequence
+0:17 move second child to first child ( temp highp 4-component vector of float)
+0:17 'color' (layout( location=0) out highp 4-component vector of float)
+0:17 add ( temp highp 4-component vector of float)
+0:17 color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float)
+0:17 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:17 Constant:
+0:17 0 (const int)
+0:17 vector-scale ( temp highp 4-component vector of float)
+0:17 Function Call: getColor2( ( global highp 4-component vector of float)
+0:17 Function Call: getScale( ( global highp float)
+0:? Linker Objects
+0:? 'color' (layout( location=0) out highp 4-component vector of float)
+0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+
+link.vk.matchingPC.0.1.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:11 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 Branch: Return with expression
+0:13 color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float)
+0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:13 Constant:
+0:13 1 (const int)
+0:? Linker Objects
+0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+
+link.vk.matchingPC.0.2.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:11 Function Definition: getScale( ( global highp float)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 Branch: Return with expression
+0:13 scale: direct index for structure (layout( column_major std430 offset=32) uniform highp float)
+0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:13 Constant:
+0:13 2 (const int)
+0:? Linker Objects
+0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15 Function Definition: main( ( global void)
+0:15 Function Parameters:
+0:17 Sequence
+0:17 move second child to first child ( temp highp 4-component vector of float)
+0:17 'color' (layout( location=0) out highp 4-component vector of float)
+0:17 add ( temp highp 4-component vector of float)
+0:17 color: direct index for structure (layout( column_major std430 offset=0) uniform highp 4-component vector of float)
+0:17 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:17 Constant:
+0:17 0 (const int)
+0:17 vector-scale ( temp highp 4-component vector of float)
+0:17 Function Call: getColor2( ( global highp 4-component vector of float)
+0:17 Function Call: getScale( ( global highp float)
+0:11 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 Branch: Return with expression
+0:13 color2: direct index for structure (layout( column_major std430 offset=16) uniform highp 4-component vector of float)
+0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:13 Constant:
+0:13 1 (const int)
+0:11 Function Definition: getScale( ( global highp float)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 Branch: Return with expression
+0:13 scale: direct index for structure (layout( column_major std430 offset=32) uniform highp float)
+0:13 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+0:13 Constant:
+0:13 2 (const int)
+0:? Linker Objects
+0:? 'color' (layout( location=0) out highp 4-component vector of float)
+0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale})
+
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 39
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 15
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "getColor2("
+ Name 12 "getScale("
+ Name 15 "color"
+ Name 16 "PushConstantBlock"
+ MemberName 16(PushConstantBlock) 0 "color"
+ MemberName 16(PushConstantBlock) 1 "color2"
+ MemberName 16(PushConstantBlock) 2 "scale"
+ Name 18 "uPC"
+ Decorate 15(color) Location 0
+ MemberDecorate 16(PushConstantBlock) 0 Offset 0
+ MemberDecorate 16(PushConstantBlock) 1 Offset 16
+ MemberDecorate 16(PushConstantBlock) 2 Offset 32
+ Decorate 16(PushConstantBlock) Block
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeFunction 6(float)
+ 14: TypePointer Output 7(fvec4)
+ 15(color): 14(ptr) Variable Output
+16(PushConstantBlock): TypeStruct 7(fvec4) 7(fvec4) 6(float)
+ 17: TypePointer PushConstant 16(PushConstantBlock)
+ 18(uPC): 17(ptr) Variable PushConstant
+ 19: TypeInt 32 1
+ 20: 19(int) Constant 0
+ 21: TypePointer PushConstant 7(fvec4)
+ 28: 19(int) Constant 1
+ 33: 19(int) Constant 2
+ 34: TypePointer PushConstant 6(float)
+ 4(main): 2 Function None 3
+ 5: Label
+ 22: 21(ptr) AccessChain 18(uPC) 20
+ 23: 7(fvec4) Load 22
+ 24: 7(fvec4) FunctionCall 9(getColor2()
+ 25: 6(float) FunctionCall 12(getScale()
+ 26: 7(fvec4) VectorTimesScalar 24 25
+ 27: 7(fvec4) FAdd 23 26
+ Store 15(color) 27
+ Return
+ FunctionEnd
+ 9(getColor2(): 7(fvec4) Function None 8
+ 10: Label
+ 29: 21(ptr) AccessChain 18(uPC) 28
+ 30: 7(fvec4) Load 29
+ ReturnValue 30
+ FunctionEnd
+ 12(getScale(): 6(float) Function None 11
+ 13: Label
+ 35: 34(ptr) AccessChain 18(uPC) 33
+ 36: 6(float) Load 35
+ ReturnValue 36
+ FunctionEnd
diff --git a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out
new file mode 100755
index 0000000..6440a3b
--- /dev/null
+++ b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out
@@ -0,0 +1,321 @@
+link.vk.multiBlocksValid.0.0.vert
+Shader version: 430
+0:? Sequence
+0:43 Function Definition: main( ( global void)
+0:43 Function Parameters:
+0:45 Sequence
+0:45 move second child to first child ( temp highp 4-component vector of float)
+0:45 'oColor' ( smooth out highp 4-component vector of float)
+0:45 component-wise multiply ( temp highp 4-component vector of float)
+0:45 component-wise multiply ( temp highp 4-component vector of float)
+0:45 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
+0:45 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:45 Constant:
+0:45 0 (const int)
+0:45 Function Call: getColor2( ( global highp 4-component vector of float)
+0:45 c: direct index for structure (layout( column_major std430 offset=0) buffer highp 4-component vector of float)
+0:45 'uColorBuf' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4-component vector of float c})
+0:45 Constant:
+0:45 0 (const int)
+0:46 move second child to first child ( temp highp 4-component vector of float)
+0:46 v1: direct index for structure ( out highp 4-component vector of float)
+0:46 'oV' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
+0:46 Constant:
+0:46 0 (const int)
+0:46 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
+0:46 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:46 Constant:
+0:46 0 (const int)
+0:48 move second child to first child ( temp highp 4-component vector of float)
+0:48 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:48 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:48 Constant:
+0:48 0 (const uint)
+0:48 matrix-times-vector ( temp highp 4-component vector of float)
+0:48 uProj: direct index for structure (layout( column_major std140 offset=0) uniform highp 4X4 matrix of float)
+0:48 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:48 Constant:
+0:48 0 (const int)
+0:48 Function Call: getWorld( ( global highp 4-component vector of float)
+0:? Linker Objects
+0:? 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:? 'oV' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
+0:? 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:? 'uBuf' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p})
+0:? 'uColorBuf' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4-component vector of float c})
+0:? 'oColor' ( smooth out highp 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+
+link.vk.multiBlocksValid.0.1.vert
+Shader version: 430
+0:? Sequence
+0:36 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:36 Function Parameters:
+0:38 Sequence
+0:38 Branch: Return with expression
+0:38 color2: direct index for structure (layout( column_major std140 offset=32) uniform highp 4-component vector of float)
+0:38 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:38 Constant:
+0:38 2 (const int)
+0:41 Function Definition: getWorld( ( global highp 4-component vector of float)
+0:41 Function Parameters:
+0:43 Sequence
+0:43 move second child to first child ( temp highp 4-component vector of float)
+0:43 v1: direct index for structure ( out highp 4-component vector of float)
+0:43 'anon@0' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
+0:43 Constant:
+0:43 0 (const uint)
+0:43 Constant:
+0:43 1.000000
+0:43 1.000000
+0:43 1.000000
+0:43 1.000000
+0:44 Branch: Return with expression
+0:44 matrix-times-vector ( temp highp 4-component vector of float)
+0:44 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float)
+0:44 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:44 Constant:
+0:44 1 (const int)
+0:44 'P' ( in highp 4-component vector of float)
+0:? Linker Objects
+0:? 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:? 'uBuffer' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p})
+0:? 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:? 'anon@0' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
+0:? 'P' ( in highp 4-component vector of float)
+
+
+Linked vertex stage:
+
+WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
+ uC: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}" versus uColor: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}"
+WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
+ uBuf: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}" versus uBuffer: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}"
+WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
+ uM: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}" versus uMatrix: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}"
+WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
+ oV: " out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}" versus anon@0: " out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}"
+
+Shader version: 430
+0:? Sequence
+0:43 Function Definition: main( ( global void)
+0:43 Function Parameters:
+0:45 Sequence
+0:45 move second child to first child ( temp highp 4-component vector of float)
+0:45 'oColor' ( smooth out highp 4-component vector of float)
+0:45 component-wise multiply ( temp highp 4-component vector of float)
+0:45 component-wise multiply ( temp highp 4-component vector of float)
+0:45 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
+0:45 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:45 Constant:
+0:45 0 (const int)
+0:45 Function Call: getColor2( ( global highp 4-component vector of float)
+0:45 c: direct index for structure (layout( column_major std430 offset=0) buffer highp 4-component vector of float)
+0:45 'uColorBuf' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4-component vector of float c})
+0:45 Constant:
+0:45 0 (const int)
+0:46 move second child to first child ( temp highp 4-component vector of float)
+0:46 v1: direct index for structure ( out highp 4-component vector of float)
+0:46 'oV' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
+0:46 Constant:
+0:46 0 (const int)
+0:46 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
+0:46 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:46 Constant:
+0:46 0 (const int)
+0:48 move second child to first child ( temp highp 4-component vector of float)
+0:48 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:48 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:48 Constant:
+0:48 0 (const uint)
+0:48 matrix-times-vector ( temp highp 4-component vector of float)
+0:48 uProj: direct index for structure (layout( column_major std140 offset=0) uniform highp 4X4 matrix of float)
+0:48 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:48 Constant:
+0:48 0 (const int)
+0:48 Function Call: getWorld( ( global highp 4-component vector of float)
+0:36 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:36 Function Parameters:
+0:38 Sequence
+0:38 Branch: Return with expression
+0:38 color2: direct index for structure (layout( column_major std140 offset=32) uniform highp 4-component vector of float)
+0:38 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:38 Constant:
+0:38 2 (const int)
+0:41 Function Definition: getWorld( ( global highp 4-component vector of float)
+0:41 Function Parameters:
+0:43 Sequence
+0:43 move second child to first child ( temp highp 4-component vector of float)
+0:43 v1: direct index for structure ( out highp 4-component vector of float)
+0:43 'anon@0' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
+0:43 Constant:
+0:43 0 (const uint)
+0:43 Constant:
+0:43 1.000000
+0:43 1.000000
+0:43 1.000000
+0:43 1.000000
+0:44 Branch: Return with expression
+0:44 matrix-times-vector ( temp highp 4-component vector of float)
+0:44 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float)
+0:44 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:44 Constant:
+0:44 1 (const int)
+0:44 'P' ( in highp 4-component vector of float)
+0:? Linker Objects
+0:? 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:? 'oV' ( out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2})
+0:? 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:? 'uBuf' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p})
+0:? 'uColorBuf' (layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4-component vector of float c})
+0:? 'oColor' ( smooth out highp 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'P' ( in highp 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 73
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 14 34 42 65
+ Source GLSL 430
+ Name 4 "main"
+ Name 9 "getColor2("
+ Name 11 "getWorld("
+ Name 14 "oColor"
+ Name 16 "ColorBlock"
+ MemberName 16(ColorBlock) 0 "color1"
+ MemberName 16(ColorBlock) 1 "b"
+ MemberName 16(ColorBlock) 2 "color2"
+ MemberName 16(ColorBlock) 3 "color3"
+ Name 18 "uC"
+ Name 26 "SecondaryColorBlock"
+ MemberName 26(SecondaryColorBlock) 0 "c"
+ Name 28 "uColorBuf"
+ Name 32 "Vertex"
+ MemberName 32(Vertex) 0 "v1"
+ MemberName 32(Vertex) 1 "v2"
+ Name 34 "oV"
+ Name 40 "gl_PerVertex"
+ MemberName 40(gl_PerVertex) 0 "gl_Position"
+ MemberName 40(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 40(gl_PerVertex) 2 "gl_ClipDistance"
+ Name 42 ""
+ Name 44 "MatrixBlock"
+ MemberName 44(MatrixBlock) 0 "uProj"
+ MemberName 44(MatrixBlock) 1 "uWorld"
+ Name 46 "uM"
+ Name 65 "P"
+ Name 70 "BufferBlock"
+ MemberName 70(BufferBlock) 0 "p"
+ Name 72 "uBuf"
+ MemberDecorate 16(ColorBlock) 0 Offset 0
+ MemberDecorate 16(ColorBlock) 1 Offset 16
+ MemberDecorate 16(ColorBlock) 2 Offset 32
+ MemberDecorate 16(ColorBlock) 3 Offset 48
+ Decorate 16(ColorBlock) Block
+ Decorate 18(uC) DescriptorSet 0
+ Decorate 18(uC) Binding 1
+ MemberDecorate 26(SecondaryColorBlock) 0 Offset 0
+ Decorate 26(SecondaryColorBlock) BufferBlock
+ Decorate 28(uColorBuf) DescriptorSet 0
+ Decorate 28(uColorBuf) Binding 0
+ Decorate 32(Vertex) Block
+ MemberDecorate 40(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 40(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 40(gl_PerVertex) 2 BuiltIn ClipDistance
+ Decorate 40(gl_PerVertex) Block
+ MemberDecorate 44(MatrixBlock) 0 ColMajor
+ MemberDecorate 44(MatrixBlock) 0 Offset 0
+ MemberDecorate 44(MatrixBlock) 0 MatrixStride 16
+ MemberDecorate 44(MatrixBlock) 1 ColMajor
+ MemberDecorate 44(MatrixBlock) 1 Offset 64
+ MemberDecorate 44(MatrixBlock) 1 MatrixStride 16
+ Decorate 44(MatrixBlock) Block
+ Decorate 46(uM) DescriptorSet 0
+ Decorate 46(uM) Binding 0
+ MemberDecorate 70(BufferBlock) 0 ColMajor
+ MemberDecorate 70(BufferBlock) 0 Offset 0
+ MemberDecorate 70(BufferBlock) 0 MatrixStride 16
+ Decorate 70(BufferBlock) BufferBlock
+ Decorate 72(uBuf) DescriptorSet 0
+ Decorate 72(uBuf) Binding 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 13: TypePointer Output 7(fvec4)
+ 14(oColor): 13(ptr) Variable Output
+ 15: TypeInt 32 0
+ 16(ColorBlock): TypeStruct 7(fvec4) 15(int) 7(fvec4) 7(fvec4)
+ 17: TypePointer Uniform 16(ColorBlock)
+ 18(uC): 17(ptr) Variable Uniform
+ 19: TypeInt 32 1
+ 20: 19(int) Constant 0
+ 21: TypePointer Uniform 7(fvec4)
+26(SecondaryColorBlock): TypeStruct 7(fvec4)
+ 27: TypePointer Uniform 26(SecondaryColorBlock)
+ 28(uColorBuf): 27(ptr) Variable Uniform
+ 32(Vertex): TypeStruct 7(fvec4) 7(fvec4)
+ 33: TypePointer Output 32(Vertex)
+ 34(oV): 33(ptr) Variable Output
+ 38: 15(int) Constant 1
+ 39: TypeArray 6(float) 38
+40(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 39
+ 41: TypePointer Output 40(gl_PerVertex)
+ 42: 41(ptr) Variable Output
+ 43: TypeMatrix 7(fvec4) 4
+ 44(MatrixBlock): TypeStruct 43 43
+ 45: TypePointer Uniform 44(MatrixBlock)
+ 46(uM): 45(ptr) Variable Uniform
+ 47: TypePointer Uniform 43
+ 53: 19(int) Constant 2
+ 58: 6(float) Constant 1065353216
+ 59: 7(fvec4) ConstantComposite 58 58 58 58
+ 61: 19(int) Constant 1
+ 64: TypePointer Input 7(fvec4)
+ 65(P): 64(ptr) Variable Input
+ 70(BufferBlock): TypeStruct 43
+ 71: TypePointer Uniform 70(BufferBlock)
+ 72(uBuf): 71(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 22: 21(ptr) AccessChain 18(uC) 20
+ 23: 7(fvec4) Load 22
+ 24: 7(fvec4) FunctionCall 9(getColor2()
+ 25: 7(fvec4) FMul 23 24
+ 29: 21(ptr) AccessChain 28(uColorBuf) 20
+ 30: 7(fvec4) Load 29
+ 31: 7(fvec4) FMul 25 30
+ Store 14(oColor) 31
+ 35: 21(ptr) AccessChain 18(uC) 20
+ 36: 7(fvec4) Load 35
+ 37: 13(ptr) AccessChain 34(oV) 20
+ Store 37 36
+ 48: 47(ptr) AccessChain 46(uM) 20
+ 49: 43 Load 48
+ 50: 7(fvec4) FunctionCall 11(getWorld()
+ 51: 7(fvec4) MatrixTimesVector 49 50
+ 52: 13(ptr) AccessChain 42 20
+ Store 52 51
+ Return
+ FunctionEnd
+ 9(getColor2(): 7(fvec4) Function None 8
+ 10: Label
+ 54: 21(ptr) AccessChain 18(uC) 53
+ 55: 7(fvec4) Load 54
+ ReturnValue 55
+ FunctionEnd
+ 11(getWorld(): 7(fvec4) Function None 8
+ 12: Label
+ 60: 13(ptr) AccessChain 34(oV) 20
+ Store 60 59
+ 62: 47(ptr) AccessChain 46(uM) 61
+ 63: 43 Load 62
+ 66: 7(fvec4) Load 65(P)
+ 67: 7(fvec4) MatrixTimesVector 63 66
+ ReturnValue 67
+ FunctionEnd
diff --git a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out
new file mode 100755
index 0000000..413da7e
--- /dev/null
+++ b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out
@@ -0,0 +1,451 @@
+link.vk.multiBlocksValid.1.0.geom
+Shader version: 430
+invocations = -1
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+0:? Sequence
+0:48 Function Definition: main( ( global void)
+0:48 Function Parameters:
+0:50 Sequence
+0:50 move second child to first child ( temp highp 4-component vector of float)
+0:50 'oColor' (layout( stream=0) out highp 4-component vector of float)
+0:50 component-wise multiply ( temp highp 4-component vector of float)
+0:50 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
+0:50 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:50 Constant:
+0:50 0 (const int)
+0:50 Function Call: getColor2( ( global highp 4-component vector of float)
+0:52 move second child to first child ( temp highp float)
+0:52 'globalF' ( global highp float)
+0:52 Constant:
+0:52 1.000000
+0:54 Sequence
+0:54 Sequence
+0:54 move second child to first child ( temp highp int)
+0:54 'i' ( temp highp int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Loop with condition tested first
+0:54 Loop Condition
+0:54 Compare Less Than ( temp bool)
+0:54 'i' ( temp highp int)
+0:54 Constant:
+0:54 3 (const int)
+0:54 Loop Body
+0:56 Sequence
+0:56 move second child to first child ( temp highp 4-component vector of float)
+0:56 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position)
+0:56 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:56 Constant:
+0:56 0 (const uint)
+0:56 matrix-times-vector ( temp highp 4-component vector of float)
+0:56 uProj: direct index for structure (layout( column_major std140 offset=0) uniform highp 4X4 matrix of float)
+0:56 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:56 Constant:
+0:56 0 (const int)
+0:56 Function Call: getWorld(i1; ( global highp 4-component vector of float)
+0:56 'i' ( temp highp int)
+0:57 move second child to first child ( temp highp 4-component vector of float)
+0:57 val1: direct index for structure (layout( stream=0) out highp 4-component vector of float)
+0:57 'oV' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
+0:57 Constant:
+0:57 0 (const int)
+0:57 add ( temp highp 4-component vector of float)
+0:57 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
+0:57 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:57 Constant:
+0:57 0 (const int)
+0:57 vector-scale ( temp highp 4-component vector of float)
+0:57 v2: direct index for structure ( in highp 4-component vector of float)
+0:57 indirect index ( temp block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2})
+0:57 'iV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2})
+0:57 'i' ( temp highp int)
+0:57 Constant:
+0:57 1 (const int)
+0:57 'globalF' ( global highp float)
+0:58 EmitVertex ( global void)
+0:54 Loop Terminal Expression
+0:54 Post-Increment ( temp highp int)
+0:54 'i' ( temp highp int)
+0:61 EndPrimitive ( global void)
+0:? Linker Objects
+0:? 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:? 'iV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2})
+0:? 'oV' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
+0:? 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:? 'uBuf' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p})
+0:? 'oColor' (layout( stream=0) out highp 4-component vector of float)
+0:? 'globalF' ( global highp float)
+0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance})
+
+link.vk.multiBlocksValid.1.1.geom
+Shader version: 430
+invocations = -1
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+0:? Sequence
+0:44 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:44 Function Parameters:
+0:46 Sequence
+0:46 Branch: Return with expression
+0:46 color2: direct index for structure (layout( column_major std140 offset=32) uniform highp 4-component vector of float)
+0:46 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:46 Constant:
+0:46 2 (const int)
+0:49 Function Definition: getWorld(i1; ( global highp 4-component vector of float)
+0:49 Function Parameters:
+0:49 'i' ( in highp int)
+0:51 Sequence
+0:51 move second child to first child ( temp highp 4-component vector of float)
+0:51 val1: direct index for structure (layout( stream=0) out highp 4-component vector of float)
+0:51 'anon@0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 Constant:
+0:51 1.000000
+0:51 1.000000
+0:51 1.000000
+0:51 1.000000
+0:52 Branch: Return with expression
+0:52 matrix-times-vector ( temp highp 4-component vector of float)
+0:52 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float)
+0:52 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:52 Constant:
+0:52 1 (const int)
+0:52 v1: direct index for structure ( in highp 4-component vector of float)
+0:52 indirect index ( temp block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2})
+0:52 'iVV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2})
+0:52 'i' ( in highp int)
+0:52 Constant:
+0:52 0 (const int)
+0:? Linker Objects
+0:? 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:? 'uBuffer' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p})
+0:? 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
+0:? 'iVV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2})
+0:? 'P' ( in 3-element array of highp 4-component vector of float)
+
+
+Linked geometry stage:
+
+WARNING: Linking geometry stage: Matched shader interfaces are using different instance names.
+ uC: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}" versus uColor: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}"
+WARNING: Linking geometry stage: Matched shader interfaces are using different instance names.
+ uBuf: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}" versus uBuffer: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}"
+WARNING: Linking geometry stage: Matched shader interfaces are using different instance names.
+ uM: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}" versus uMatrix: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}"
+WARNING: Linking geometry stage: Matched shader interfaces are using different instance names.
+ oV: "layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}" versus anon@0: "layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}"
+WARNING: Linking geometry stage: Matched shader interfaces are using different instance names.
+ iV: " in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}" versus iVV: " in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}"
+
+Shader version: 430
+invocations = 1
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+0:? Sequence
+0:48 Function Definition: main( ( global void)
+0:48 Function Parameters:
+0:50 Sequence
+0:50 move second child to first child ( temp highp 4-component vector of float)
+0:50 'oColor' (layout( stream=0) out highp 4-component vector of float)
+0:50 component-wise multiply ( temp highp 4-component vector of float)
+0:50 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
+0:50 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:50 Constant:
+0:50 0 (const int)
+0:50 Function Call: getColor2( ( global highp 4-component vector of float)
+0:52 move second child to first child ( temp highp float)
+0:52 'globalF' ( global highp float)
+0:52 Constant:
+0:52 1.000000
+0:54 Sequence
+0:54 Sequence
+0:54 move second child to first child ( temp highp int)
+0:54 'i' ( temp highp int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Loop with condition tested first
+0:54 Loop Condition
+0:54 Compare Less Than ( temp bool)
+0:54 'i' ( temp highp int)
+0:54 Constant:
+0:54 3 (const int)
+0:54 Loop Body
+0:56 Sequence
+0:56 move second child to first child ( temp highp 4-component vector of float)
+0:56 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position)
+0:56 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance})
+0:56 Constant:
+0:56 0 (const uint)
+0:56 matrix-times-vector ( temp highp 4-component vector of float)
+0:56 uProj: direct index for structure (layout( column_major std140 offset=0) uniform highp 4X4 matrix of float)
+0:56 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:56 Constant:
+0:56 0 (const int)
+0:56 Function Call: getWorld(i1; ( global highp 4-component vector of float)
+0:56 'i' ( temp highp int)
+0:57 move second child to first child ( temp highp 4-component vector of float)
+0:57 val1: direct index for structure (layout( stream=0) out highp 4-component vector of float)
+0:57 'oV' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
+0:57 Constant:
+0:57 0 (const int)
+0:57 add ( temp highp 4-component vector of float)
+0:57 color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
+0:57 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:57 Constant:
+0:57 0 (const int)
+0:57 vector-scale ( temp highp 4-component vector of float)
+0:57 v2: direct index for structure ( in highp 4-component vector of float)
+0:57 indirect index ( temp block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2})
+0:57 'iV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2})
+0:57 'i' ( temp highp int)
+0:57 Constant:
+0:57 1 (const int)
+0:57 'globalF' ( global highp float)
+0:58 EmitVertex ( global void)
+0:54 Loop Terminal Expression
+0:54 Post-Increment ( temp highp int)
+0:54 'i' ( temp highp int)
+0:61 EndPrimitive ( global void)
+0:44 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:44 Function Parameters:
+0:46 Sequence
+0:46 Branch: Return with expression
+0:46 color2: direct index for structure (layout( column_major std140 offset=32) uniform highp 4-component vector of float)
+0:46 'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:46 Constant:
+0:46 2 (const int)
+0:49 Function Definition: getWorld(i1; ( global highp 4-component vector of float)
+0:49 Function Parameters:
+0:49 'i' ( in highp int)
+0:51 Sequence
+0:51 move second child to first child ( temp highp 4-component vector of float)
+0:51 val1: direct index for structure (layout( stream=0) out highp 4-component vector of float)
+0:51 'anon@0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 Constant:
+0:51 1.000000
+0:51 1.000000
+0:51 1.000000
+0:51 1.000000
+0:52 Branch: Return with expression
+0:52 matrix-times-vector ( temp highp 4-component vector of float)
+0:52 uWorld: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float)
+0:52 'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:52 Constant:
+0:52 1 (const int)
+0:52 v1: direct index for structure ( in highp 4-component vector of float)
+0:52 indirect index ( temp block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2})
+0:52 'iVV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2})
+0:52 'i' ( in highp int)
+0:52 Constant:
+0:52 0 (const int)
+0:? Linker Objects
+0:? 'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
+0:? 'iV' ( in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2})
+0:? 'oV' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
+0:? 'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
+0:? 'uBuf' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p})
+0:? 'oColor' (layout( stream=0) out highp 4-component vector of float)
+0:? 'globalF' ( global highp float)
+0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'P' ( in 3-element array of highp 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 101
+
+ Capability Geometry
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Geometry 4 "main" 18 46 61 68 100
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 Invocations 1
+ ExecutionMode 4 OutputTriangleStrip
+ ExecutionMode 4 OutputVertices 3
+ Source GLSL 430
+ Name 4 "main"
+ Name 9 "getColor2("
+ Name 15 "getWorld(i1;"
+ Name 14 "i"
+ Name 18 "oColor"
+ Name 20 "ColorBlock"
+ MemberName 20(ColorBlock) 0 "color1"
+ MemberName 20(ColorBlock) 1 "b"
+ MemberName 20(ColorBlock) 2 "color2"
+ MemberName 20(ColorBlock) 3 "color3"
+ Name 22 "uC"
+ Name 30 "globalF"
+ Name 32 "i"
+ Name 44 "gl_PerVertex"
+ MemberName 44(gl_PerVertex) 0 "gl_Position"
+ MemberName 44(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 44(gl_PerVertex) 2 "gl_ClipDistance"
+ Name 46 ""
+ Name 48 "MatrixBlock"
+ MemberName 48(MatrixBlock) 0 "uProj"
+ MemberName 48(MatrixBlock) 1 "uWorld"
+ Name 50 "uM"
+ Name 54 "param"
+ Name 59 "Vertex"
+ MemberName 59(Vertex) 0 "val1"
+ Name 61 "oV"
+ Name 64 "Vertex"
+ MemberName 64(Vertex) 0 "v1"
+ MemberName 64(Vertex) 1 "v2"
+ Name 68 "iV"
+ Name 95 "BufferBlock"
+ MemberName 95(BufferBlock) 0 "p"
+ Name 97 "uBuf"
+ Name 100 "P"
+ MemberDecorate 20(ColorBlock) 0 Offset 0
+ MemberDecorate 20(ColorBlock) 1 Offset 16
+ MemberDecorate 20(ColorBlock) 2 Offset 32
+ MemberDecorate 20(ColorBlock) 3 Offset 48
+ Decorate 20(ColorBlock) Block
+ Decorate 22(uC) DescriptorSet 0
+ Decorate 22(uC) Binding 1
+ MemberDecorate 44(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 44(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 44(gl_PerVertex) 2 BuiltIn ClipDistance
+ Decorate 44(gl_PerVertex) Block
+ MemberDecorate 48(MatrixBlock) 0 ColMajor
+ MemberDecorate 48(MatrixBlock) 0 Offset 0
+ MemberDecorate 48(MatrixBlock) 0 MatrixStride 16
+ MemberDecorate 48(MatrixBlock) 1 ColMajor
+ MemberDecorate 48(MatrixBlock) 1 Offset 64
+ MemberDecorate 48(MatrixBlock) 1 MatrixStride 16
+ Decorate 48(MatrixBlock) Block
+ Decorate 50(uM) DescriptorSet 0
+ Decorate 50(uM) Binding 0
+ Decorate 59(Vertex) Block
+ Decorate 64(Vertex) Block
+ MemberDecorate 95(BufferBlock) 0 ColMajor
+ MemberDecorate 95(BufferBlock) 0 Offset 0
+ MemberDecorate 95(BufferBlock) 0 MatrixStride 16
+ Decorate 95(BufferBlock) BufferBlock
+ Decorate 97(uBuf) DescriptorSet 0
+ Decorate 97(uBuf) Binding 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeInt 32 1
+ 12: TypePointer Function 11(int)
+ 13: TypeFunction 7(fvec4) 12(ptr)
+ 17: TypePointer Output 7(fvec4)
+ 18(oColor): 17(ptr) Variable Output
+ 19: TypeInt 32 0
+ 20(ColorBlock): TypeStruct 7(fvec4) 19(int) 7(fvec4) 7(fvec4)
+ 21: TypePointer Uniform 20(ColorBlock)
+ 22(uC): 21(ptr) Variable Uniform
+ 23: 11(int) Constant 0
+ 24: TypePointer Uniform 7(fvec4)
+ 29: TypePointer Private 6(float)
+ 30(globalF): 29(ptr) Variable Private
+ 31: 6(float) Constant 1065353216
+ 39: 11(int) Constant 3
+ 40: TypeBool
+ 42: 19(int) Constant 1
+ 43: TypeArray 6(float) 42
+44(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 43
+ 45: TypePointer Output 44(gl_PerVertex)
+ 46: 45(ptr) Variable Output
+ 47: TypeMatrix 7(fvec4) 4
+ 48(MatrixBlock): TypeStruct 47 47
+ 49: TypePointer Uniform 48(MatrixBlock)
+ 50(uM): 49(ptr) Variable Uniform
+ 51: TypePointer Uniform 47
+ 59(Vertex): TypeStruct 7(fvec4)
+ 60: TypePointer Output 59(Vertex)
+ 61(oV): 60(ptr) Variable Output
+ 64(Vertex): TypeStruct 7(fvec4) 7(fvec4)
+ 65: 19(int) Constant 3
+ 66: TypeArray 64(Vertex) 65
+ 67: TypePointer Input 66
+ 68(iV): 67(ptr) Variable Input
+ 70: 11(int) Constant 1
+ 71: TypePointer Input 7(fvec4)
+ 80: 11(int) Constant 2
+ 85: 7(fvec4) ConstantComposite 31 31 31 31
+ 95(BufferBlock): TypeStruct 47
+ 96: TypePointer Uniform 95(BufferBlock)
+ 97(uBuf): 96(ptr) Variable Uniform
+ 98: TypeArray 7(fvec4) 65
+ 99: TypePointer Input 98
+ 100(P): 99(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 32(i): 12(ptr) Variable Function
+ 54(param): 12(ptr) Variable Function
+ 25: 24(ptr) AccessChain 22(uC) 23
+ 26: 7(fvec4) Load 25
+ 27: 7(fvec4) FunctionCall 9(getColor2()
+ 28: 7(fvec4) FMul 26 27
+ Store 18(oColor) 28
+ Store 30(globalF) 31
+ Store 32(i) 23
+ Branch 33
+ 33: Label
+ LoopMerge 35 36 None
+ Branch 37
+ 37: Label
+ 38: 11(int) Load 32(i)
+ 41: 40(bool) SLessThan 38 39
+ BranchConditional 41 34 35
+ 34: Label
+ 52: 51(ptr) AccessChain 50(uM) 23
+ 53: 47 Load 52
+ 55: 11(int) Load 32(i)
+ Store 54(param) 55
+ 56: 7(fvec4) FunctionCall 15(getWorld(i1;) 54(param)
+ 57: 7(fvec4) MatrixTimesVector 53 56
+ 58: 17(ptr) AccessChain 46 23
+ Store 58 57
+ 62: 24(ptr) AccessChain 22(uC) 23
+ 63: 7(fvec4) Load 62
+ 69: 11(int) Load 32(i)
+ 72: 71(ptr) AccessChain 68(iV) 69 70
+ 73: 7(fvec4) Load 72
+ 74: 6(float) Load 30(globalF)
+ 75: 7(fvec4) VectorTimesScalar 73 74
+ 76: 7(fvec4) FAdd 63 75
+ 77: 17(ptr) AccessChain 61(oV) 23
+ Store 77 76
+ EmitVertex
+ Branch 36
+ 36: Label
+ 78: 11(int) Load 32(i)
+ 79: 11(int) IAdd 78 70
+ Store 32(i) 79
+ Branch 33
+ 35: Label
+ EndPrimitive
+ Return
+ FunctionEnd
+ 9(getColor2(): 7(fvec4) Function None 8
+ 10: Label
+ 81: 24(ptr) AccessChain 22(uC) 80
+ 82: 7(fvec4) Load 81
+ ReturnValue 82
+ FunctionEnd
+15(getWorld(i1;): 7(fvec4) Function None 13
+ 14(i): 12(ptr) FunctionParameter
+ 16: Label
+ 86: 17(ptr) AccessChain 61(oV) 23
+ Store 86 85
+ 87: 51(ptr) AccessChain 50(uM) 70
+ 88: 47 Load 87
+ 89: 11(int) Load 14(i)
+ 90: 71(ptr) AccessChain 68(iV) 89 23
+ 91: 7(fvec4) Load 90
+ 92: 7(fvec4) MatrixTimesVector 88 91
+ ReturnValue 92
+ FunctionEnd
diff --git a/Test/baseResults/link.vk.pcNamingInvalid.0.0.vert.out b/Test/baseResults/link.vk.pcNamingInvalid.0.0.vert.out
new file mode 100755
index 0000000..45f6a39
--- /dev/null
+++ b/Test/baseResults/link.vk.pcNamingInvalid.0.0.vert.out
@@ -0,0 +1,111 @@
+link.vk.pcNamingInvalid.0.0.vert
+Shader version: 450
+0:? Sequence
+0:16 Function Definition: main( ( global void)
+0:16 Function Parameters:
+0:18 Sequence
+0:18 move second child to first child ( temp highp 4-component vector of float)
+0:18 'oColor' ( smooth out highp 4-component vector of float)
+0:18 component-wise multiply ( temp highp 4-component vector of float)
+0:18 color1: direct index for structure (layout( column_major std430 offset=128) uniform highp 4-component vector of float)
+0:18 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:18 Constant:
+0:18 2 (const int)
+0:18 Function Call: getColor2( ( global highp 4-component vector of float)
+0:20 move second child to first child ( temp highp 4-component vector of float)
+0:20 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:20 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 matrix-times-vector ( temp highp 4-component vector of float)
+0:20 uProj: direct index for structure (layout( column_major std430 offset=64) uniform highp 4X4 matrix of float)
+0:20 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:20 Constant:
+0:20 1 (const int)
+0:20 Function Call: getWorld( ( global highp 4-component vector of float)
+0:? Linker Objects
+0:? 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:? 'oColor' ( smooth out highp 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance})
+
+link.vk.pcNamingInvalid.0.1.vert
+Shader version: 450
+0:? Sequence
+0:13 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:13 Function Parameters:
+0:15 Sequence
+0:15 Branch: Return with expression
+0:15 color2: direct index for structure (layout( column_major std430 offset=144) uniform highp 4-component vector of float)
+0:15 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:15 Constant:
+0:15 3 (const int)
+0:18 Function Definition: getWorld( ( global highp 4-component vector of float)
+0:18 Function Parameters:
+0:20 Sequence
+0:20 Branch: Return with expression
+0:20 matrix-times-vector ( temp highp 4-component vector of float)
+0:20 uWorld: direct index for structure (layout( column_major std430 offset=0) uniform highp 4X4 matrix of float)
+0:20 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:20 Constant:
+0:20 0 (const int)
+0:20 'P' ( in highp 4-component vector of float)
+0:? Linker Objects
+0:? 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:? 'P' ( in highp 4-component vector of float)
+
+
+Linked vertex stage:
+
+ERROR: Linking vertex stage: Only one push_constant block is allowed per stage
+
+Shader version: 450
+0:? Sequence
+0:16 Function Definition: main( ( global void)
+0:16 Function Parameters:
+0:18 Sequence
+0:18 move second child to first child ( temp highp 4-component vector of float)
+0:18 'oColor' ( smooth out highp 4-component vector of float)
+0:18 component-wise multiply ( temp highp 4-component vector of float)
+0:18 color1: direct index for structure (layout( column_major std430 offset=128) uniform highp 4-component vector of float)
+0:18 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:18 Constant:
+0:18 2 (const int)
+0:18 Function Call: getColor2( ( global highp 4-component vector of float)
+0:20 move second child to first child ( temp highp 4-component vector of float)
+0:20 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:20 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 matrix-times-vector ( temp highp 4-component vector of float)
+0:20 uProj: direct index for structure (layout( column_major std430 offset=64) uniform highp 4X4 matrix of float)
+0:20 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:20 Constant:
+0:20 1 (const int)
+0:20 Function Call: getWorld( ( global highp 4-component vector of float)
+0:13 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:13 Function Parameters:
+0:15 Sequence
+0:15 Branch: Return with expression
+0:15 color2: direct index for structure (layout( column_major std430 offset=144) uniform highp 4-component vector of float)
+0:15 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:15 Constant:
+0:15 3 (const int)
+0:18 Function Definition: getWorld( ( global highp 4-component vector of float)
+0:18 Function Parameters:
+0:20 Sequence
+0:20 Branch: Return with expression
+0:20 matrix-times-vector ( temp highp 4-component vector of float)
+0:20 uWorld: direct index for structure (layout( column_major std430 offset=0) uniform highp 4X4 matrix of float)
+0:20 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:20 Constant:
+0:20 0 (const int)
+0:20 'P' ( in highp 4-component vector of float)
+0:? Linker Objects
+0:? 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:? 'oColor' ( smooth out highp 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance})
+0:? 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:? 'P' ( in highp 4-component vector of float)
+
+Validation failed
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out
new file mode 100755
index 0000000..c9dba15
--- /dev/null
+++ b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out
@@ -0,0 +1,206 @@
+link.vk.pcNamingValid.0.0.vert
+Shader version: 450
+0:? Sequence
+0:16 Function Definition: main( ( global void)
+0:16 Function Parameters:
+0:18 Sequence
+0:18 move second child to first child ( temp highp 4-component vector of float)
+0:18 'oColor' (layout( location=0) smooth out highp 4-component vector of float)
+0:18 component-wise multiply ( temp highp 4-component vector of float)
+0:18 color1: direct index for structure (layout( column_major std430 offset=128) uniform highp 4-component vector of float)
+0:18 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:18 Constant:
+0:18 2 (const int)
+0:18 Function Call: getColor2( ( global highp 4-component vector of float)
+0:20 move second child to first child ( temp highp 4-component vector of float)
+0:20 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:20 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 matrix-times-vector ( temp highp 4-component vector of float)
+0:20 uProj: direct index for structure (layout( column_major std430 offset=64) uniform highp 4X4 matrix of float)
+0:20 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:20 Constant:
+0:20 1 (const int)
+0:20 Function Call: getWorld( ( global highp 4-component vector of float)
+0:? Linker Objects
+0:? 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:? 'oColor' (layout( location=0) smooth out highp 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance})
+
+link.vk.pcNamingValid.0.1.vert
+Shader version: 450
+0:? Sequence
+0:13 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:13 Function Parameters:
+0:15 Sequence
+0:15 Branch: Return with expression
+0:15 color2: direct index for structure (layout( column_major std430 offset=144) uniform highp 4-component vector of float)
+0:15 'b' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:15 Constant:
+0:15 3 (const int)
+0:18 Function Definition: getWorld( ( global highp 4-component vector of float)
+0:18 Function Parameters:
+0:20 Sequence
+0:20 Branch: Return with expression
+0:20 matrix-times-vector ( temp highp 4-component vector of float)
+0:20 uWorld: direct index for structure (layout( column_major std430 offset=0) uniform highp 4X4 matrix of float)
+0:20 'b' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:20 Constant:
+0:20 0 (const int)
+0:20 'P' (layout( location=0) in highp 4-component vector of float)
+0:? Linker Objects
+0:? 'b' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:? 'P' (layout( location=0) in highp 4-component vector of float)
+
+
+Linked vertex stage:
+
+WARNING: Linking vertex stage: Matched shader interfaces are using different instance names.
+ a: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}" versus b: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}"
+
+Shader version: 450
+0:? Sequence
+0:16 Function Definition: main( ( global void)
+0:16 Function Parameters:
+0:18 Sequence
+0:18 move second child to first child ( temp highp 4-component vector of float)
+0:18 'oColor' (layout( location=0) smooth out highp 4-component vector of float)
+0:18 component-wise multiply ( temp highp 4-component vector of float)
+0:18 color1: direct index for structure (layout( column_major std430 offset=128) uniform highp 4-component vector of float)
+0:18 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:18 Constant:
+0:18 2 (const int)
+0:18 Function Call: getColor2( ( global highp 4-component vector of float)
+0:20 move second child to first child ( temp highp 4-component vector of float)
+0:20 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:20 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 matrix-times-vector ( temp highp 4-component vector of float)
+0:20 uProj: direct index for structure (layout( column_major std430 offset=64) uniform highp 4X4 matrix of float)
+0:20 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:20 Constant:
+0:20 1 (const int)
+0:20 Function Call: getWorld( ( global highp 4-component vector of float)
+0:13 Function Definition: getColor2( ( global highp 4-component vector of float)
+0:13 Function Parameters:
+0:15 Sequence
+0:15 Branch: Return with expression
+0:15 color2: direct index for structure (layout( column_major std430 offset=144) uniform highp 4-component vector of float)
+0:15 'b' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:15 Constant:
+0:15 3 (const int)
+0:18 Function Definition: getWorld( ( global highp 4-component vector of float)
+0:18 Function Parameters:
+0:20 Sequence
+0:20 Branch: Return with expression
+0:20 matrix-times-vector ( temp highp 4-component vector of float)
+0:20 uWorld: direct index for structure (layout( column_major std430 offset=0) uniform highp 4X4 matrix of float)
+0:20 'b' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:20 Constant:
+0:20 0 (const int)
+0:20 'P' (layout( location=0) in highp 4-component vector of float)
+0:? Linker Objects
+0:? 'a' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2})
+0:? 'oColor' (layout( location=0) smooth out highp 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance})
+0:? 'P' (layout( location=0) in highp 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 53
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 14 31 48
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "getColor2("
+ Name 11 "getWorld("
+ Name 14 "oColor"
+ Name 16 "PCBlock"
+ MemberName 16(PCBlock) 0 "uWorld"
+ MemberName 16(PCBlock) 1 "uProj"
+ MemberName 16(PCBlock) 2 "color1"
+ MemberName 16(PCBlock) 3 "color2"
+ Name 18 "a"
+ Name 29 "gl_PerVertex"
+ MemberName 29(gl_PerVertex) 0 "gl_Position"
+ MemberName 29(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 29(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 29(gl_PerVertex) 3 "gl_CullDistance"
+ Name 31 ""
+ Name 48 "P"
+ Decorate 14(oColor) Location 0
+ MemberDecorate 16(PCBlock) 0 ColMajor
+ MemberDecorate 16(PCBlock) 0 Offset 0
+ MemberDecorate 16(PCBlock) 0 MatrixStride 16
+ MemberDecorate 16(PCBlock) 1 ColMajor
+ MemberDecorate 16(PCBlock) 1 Offset 64
+ MemberDecorate 16(PCBlock) 1 MatrixStride 16
+ MemberDecorate 16(PCBlock) 2 Offset 128
+ MemberDecorate 16(PCBlock) 3 Offset 144
+ Decorate 16(PCBlock) Block
+ MemberDecorate 29(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 29(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 29(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 29(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 29(gl_PerVertex) Block
+ Decorate 48(P) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 13: TypePointer Output 7(fvec4)
+ 14(oColor): 13(ptr) Variable Output
+ 15: TypeMatrix 7(fvec4) 4
+ 16(PCBlock): TypeStruct 15 15 7(fvec4) 7(fvec4)
+ 17: TypePointer PushConstant 16(PCBlock)
+ 18(a): 17(ptr) Variable PushConstant
+ 19: TypeInt 32 1
+ 20: 19(int) Constant 2
+ 21: TypePointer PushConstant 7(fvec4)
+ 26: TypeInt 32 0
+ 27: 26(int) Constant 1
+ 28: TypeArray 6(float) 27
+29(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 28 28
+ 30: TypePointer Output 29(gl_PerVertex)
+ 31: 30(ptr) Variable Output
+ 32: 19(int) Constant 0
+ 33: 19(int) Constant 1
+ 34: TypePointer PushConstant 15
+ 40: 19(int) Constant 3
+ 47: TypePointer Input 7(fvec4)
+ 48(P): 47(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 22: 21(ptr) AccessChain 18(a) 20
+ 23: 7(fvec4) Load 22
+ 24: 7(fvec4) FunctionCall 9(getColor2()
+ 25: 7(fvec4) FMul 23 24
+ Store 14(oColor) 25
+ 35: 34(ptr) AccessChain 18(a) 33
+ 36: 15 Load 35
+ 37: 7(fvec4) FunctionCall 11(getWorld()
+ 38: 7(fvec4) MatrixTimesVector 36 37
+ 39: 13(ptr) AccessChain 31 32
+ Store 39 38
+ Return
+ FunctionEnd
+ 9(getColor2(): 7(fvec4) Function None 8
+ 10: Label
+ 41: 21(ptr) AccessChain 18(a) 40
+ 42: 7(fvec4) Load 41
+ ReturnValue 42
+ FunctionEnd
+ 11(getWorld(): 7(fvec4) Function None 8
+ 12: Label
+ 45: 34(ptr) AccessChain 18(a) 32
+ 46: 15 Load 45
+ 49: 7(fvec4) Load 48(P)
+ 50: 7(fvec4) MatrixTimesVector 46 49
+ ReturnValue 50
+ FunctionEnd
diff --git a/Test/baseResults/link1.vk.frag.out b/Test/baseResults/link1.vk.frag.out
index 094a50d..94debe1 100644
--- a/Test/baseResults/link1.vk.frag.out
+++ b/Test/baseResults/link1.vk.frag.out
@@ -197,7 +197,7 @@
0:? 's2D' (layout( binding=1) uniform highp sampler2D)
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 70
Capability Shader
diff --git a/Test/baseResults/rayQuery-allOps.Error.rgen.out b/Test/baseResults/rayQuery-allOps.Error.rgen.out
new file mode 100644
index 0000000..98101c3
--- /dev/null
+++ b/Test/baseResults/rayQuery-allOps.Error.rgen.out
@@ -0,0 +1,26 @@
+rayQuery-allOps.Error.rgen
+ERROR: 0:47: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type ' global bool' and a right operand of type ' const int' (or there is no acceptable conversion)
+ERROR: 0:49: '=' : cannot convert from ' global uint' to ' temp highp int'
+ERROR: 0:59: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type ' global bool' and a right operand of type ' const int' (or there is no acceptable conversion)
+ERROR: 0:64: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type ' global 2-component vector of float' and a right operand of type ' const int' (or there is no acceptable conversion)
+ERROR: 0:69: '' : boolean expression expected
+ERROR: 0:74: '' : boolean expression expected
+ERROR: 0:79: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type ' global 3-component vector of float' and a right operand of type ' const int' (or there is no acceptable conversion)
+ERROR: 0:84: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type ' global 3-component vector of float' and a right operand of type ' const int' (or there is no acceptable conversion)
+ERROR: 0:89: '' : boolean expression expected
+ERROR: 0:94: '' : boolean expression expected
+ERROR: 0:99: '' : boolean expression expected
+ERROR: 0:127: '=' : cannot convert from ' global uint' to ' temp highp int'
+ERROR: 0:145: '==' : wrong operand types: no operation '==' exists that takes a left-hand operand of type ' global 2-component vector of float' and a right operand of type ' const int' (or there is no acceptable conversion)
+ERROR: 0:158: '' : boolean expression expected
+ERROR: 0:163: '' : boolean expression expected
+ERROR: 0:168: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type ' global 3-component vector of float' and a right operand of type ' const int' (or there is no acceptable conversion)
+ERROR: 0:173: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type ' global 3-component vector of float' and a right operand of type ' const int' (or there is no acceptable conversion)
+ERROR: 0:178: '' : boolean expression expected
+ERROR: 0:183: '' : boolean expression expected
+ERROR: 0:195: '' : boolean expression expected
+ERROR: 0:200: '' : boolean expression expected
+ERROR: 21 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/rayQuery-allOps.comp.out b/Test/baseResults/rayQuery-allOps.comp.out
new file mode 100644
index 0000000..2ac7cd3
--- /dev/null
+++ b/Test/baseResults/rayQuery-allOps.comp.out
@@ -0,0 +1,433 @@
+rayQuery-allOps.comp
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 258
+
+ Capability Shader
+ Capability RayQueryProvisionalKHR
+ Capability RayTraversalPrimitiveCullingProvisionalKHR
+ Extension "SPV_KHR_ray_query"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main"
+ ExecutionMode 4 LocalSize 1 1 1
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_flags_primitive_culling"
+ SourceExtension "GL_EXT_ray_query"
+ Name 4 "main"
+ Name 6 "doSomething("
+ Name 10 "Ray"
+ MemberName 10(Ray) 0 "pos"
+ MemberName 10(Ray) 1 "tmin"
+ MemberName 10(Ray) 2 "dir"
+ MemberName 10(Ray) 3 "tmax"
+ Name 12 "makeRayDesc("
+ Name 15 "Log"
+ MemberName 15(Log) 0 "x"
+ MemberName 15(Log) 1 "y"
+ Name 17 ""
+ Name 26 "ray"
+ Name 43 "ray"
+ Name 47 "rayQuery"
+ Name 50 "rtas"
+ Name 69 "candidateType"
+ Name 78 "_mat4x3"
+ Name 83 "_mat3x4"
+ Name 143 "t"
+ Name 156 "committedStatus"
+ Name 241 "o"
+ Name 243 "d"
+ Name 253 "Ray"
+ MemberName 253(Ray) 0 "pos"
+ MemberName 253(Ray) 1 "tmin"
+ MemberName 253(Ray) 2 "dir"
+ MemberName 253(Ray) 3 "tmax"
+ Name 255 "Rays"
+ MemberName 255(Rays) 0 "rays"
+ Name 257 ""
+ MemberDecorate 15(Log) 0 Offset 0
+ MemberDecorate 15(Log) 1 Offset 4
+ Decorate 15(Log) BufferBlock
+ Decorate 17 DescriptorSet 0
+ Decorate 17 Binding 0
+ Decorate 50(rtas) DescriptorSet 0
+ Decorate 50(rtas) Binding 1
+ MemberDecorate 253(Ray) 0 Offset 0
+ MemberDecorate 253(Ray) 1 Offset 12
+ MemberDecorate 253(Ray) 2 Offset 16
+ MemberDecorate 253(Ray) 3 Offset 28
+ Decorate 254 ArrayStride 32
+ MemberDecorate 255(Rays) 0 Offset 0
+ Decorate 255(Rays) BufferBlock
+ Decorate 257 DescriptorSet 0
+ Decorate 257 Binding 2
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 8: TypeFloat 32
+ 9: TypeVector 8(float) 3
+ 10(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float)
+ 11: TypeFunction 10(Ray)
+ 14: TypeInt 32 0
+ 15(Log): TypeStruct 14(int) 14(int)
+ 16: TypePointer Uniform 15(Log)
+ 17: 16(ptr) Variable Uniform
+ 18: TypeInt 32 1
+ 19: 18(int) Constant 0
+ 20: 14(int) Constant 0
+ 21: TypePointer Uniform 14(int)
+ 23: 18(int) Constant 1
+ 25: TypePointer Function 10(Ray)
+ 27: 8(float) Constant 0
+ 28: 9(fvec3) ConstantComposite 27 27 27
+ 29: TypePointer Function 9(fvec3)
+ 31: 18(int) Constant 2
+ 32: 8(float) Constant 1065353216
+ 33: 9(fvec3) ConstantComposite 32 27 27
+ 35: TypePointer Function 8(float)
+ 37: 18(int) Constant 3
+ 38: 8(float) Constant 1176255488
+ 45: TypeRayQueryProvisionalKHR
+ 46: TypePointer Function 45
+ 48: TypeAccelerationStructureKHR
+ 49: TypePointer UniformConstant 48
+ 50(rtas): 49(ptr) Variable UniformConstant
+ 52: 14(int) Constant 255
+ 66: TypeBool
+ 68: TypePointer Function 14(int)
+ 70: 66(bool) ConstantFalse
+ 76: TypeMatrix 9(fvec3) 4
+ 77: TypePointer Function 76
+ 80: TypeVector 8(float) 4
+ 81: TypeMatrix 80(fvec4) 3
+ 82: TypePointer Function 81
+ 86: 66(bool) ConstantTrue
+ 91: TypeVector 8(float) 2
+ 144: 8(float) Constant 1056964608
+ 175: 14(int) Constant 1
+ 198: 14(int) Constant 2
+ 231: 14(int) Constant 256
+ 253(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float)
+ 254: TypeRuntimeArray 253(Ray)
+ 255(Rays): TypeStruct 254
+ 256: TypePointer Uniform 255(Rays)
+ 257: 256(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 43(ray): 25(ptr) Variable Function
+ 47(rayQuery): 46(ptr) Variable Function
+69(candidateType): 68(ptr) Variable Function
+ 78(_mat4x3): 77(ptr) Variable Function
+ 83(_mat3x4): 82(ptr) Variable Function
+ 143(t): 35(ptr) Variable Function
+156(committedStatus): 68(ptr) Variable Function
+ 241(o): 29(ptr) Variable Function
+ 243(d): 29(ptr) Variable Function
+ 44: 10(Ray) FunctionCall 12(makeRayDesc()
+ Store 43(ray) 44
+ 51: 48 Load 50(rtas)
+ 53: 29(ptr) AccessChain 43(ray) 19
+ 54: 9(fvec3) Load 53
+ 55: 35(ptr) AccessChain 43(ray) 23
+ 56: 8(float) Load 55
+ 57: 29(ptr) AccessChain 43(ray) 31
+ 58: 9(fvec3) Load 57
+ 59: 35(ptr) AccessChain 43(ray) 37
+ 60: 8(float) Load 59
+ RayQueryInitializeKHR 47(rayQuery) 51 20 52 54 56 58 60
+ Branch 61
+ 61: Label
+ LoopMerge 63 64 None
+ Branch 65
+ 65: Label
+ 67: 66(bool) RayQueryProceedKHR 47(rayQuery)
+ BranchConditional 67 62 63
+ 62: Label
+ 71: 14(int) RayQueryGetIntersectionTypeKHR 47(rayQuery) 19
+ Store 69(candidateType) 71
+ 72: 14(int) Load 69(candidateType)
+ SelectionMerge 75 None
+ Switch 72 75
+ case 0: 73
+ case 1: 74
+ 73: Label
+ RayQueryTerminateKHR 47(rayQuery)
+ 79: 76 RayQueryGetIntersectionObjectToWorldKHR 47(rayQuery) 19
+ Store 78(_mat4x3) 79
+ 84: 76 Load 78(_mat4x3)
+ 85: 81 Transpose 84
+ Store 83(_mat3x4) 85
+ RayQueryConfirmIntersectionKHR 47(rayQuery)
+ 87: 66(bool) RayQueryGetIntersectionFrontFaceKHR 47(rayQuery) 23
+ SelectionMerge 89 None
+ BranchConditional 87 88 89
+ 88: Label
+ 90: 2 FunctionCall 6(doSomething()
+ Branch 89
+ 89: Label
+ 92: 91(fvec2) RayQueryGetIntersectionBarycentricsKHR 47(rayQuery) 23
+ 93: 8(float) CompositeExtract 92 0
+ 94: 66(bool) FOrdEqual 93 27
+ SelectionMerge 96 None
+ BranchConditional 94 95 96
+ 95: Label
+ 97: 2 FunctionCall 6(doSomething()
+ Branch 96
+ 96: Label
+ 98: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23
+ 99: 66(bool) SGreaterThan 98 19
+ SelectionMerge 101 None
+ BranchConditional 99 100 101
+ 100: Label
+ 102: 2 FunctionCall 6(doSomething()
+ Branch 101
+ 101: Label
+ 103: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23
+ 104: 66(bool) SGreaterThan 103 19
+ SelectionMerge 106 None
+ BranchConditional 104 105 106
+ 105: Label
+ 107: 2 FunctionCall 6(doSomething()
+ Branch 106
+ 106: Label
+ 108: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23
+ 109: 8(float) CompositeExtract 108 0
+ 110: 66(bool) FOrdGreaterThan 109 27
+ SelectionMerge 112 None
+ BranchConditional 110 111 112
+ 111: Label
+ 113: 2 FunctionCall 6(doSomething()
+ Branch 112
+ 112: Label
+ 114: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23
+ 115: 8(float) CompositeExtract 114 0
+ 116: 66(bool) FOrdGreaterThan 115 27
+ SelectionMerge 118 None
+ BranchConditional 116 117 118
+ 117: Label
+ 119: 2 FunctionCall 6(doSomething()
+ Branch 118
+ 118: Label
+ 120: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23
+ 121: 66(bool) SGreaterThan 120 19
+ SelectionMerge 123 None
+ BranchConditional 121 122 123
+ 122: Label
+ 124: 2 FunctionCall 6(doSomething()
+ Branch 123
+ 123: Label
+ 125: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23
+ 126: 66(bool) FOrdGreaterThan 125 27
+ SelectionMerge 128 None
+ BranchConditional 126 127 128
+ 127: Label
+ 129: 2 FunctionCall 6(doSomething()
+ Branch 128
+ 128: Label
+ 130: 18(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23
+ 131: 66(bool) UGreaterThan 130 20
+ SelectionMerge 133 None
+ BranchConditional 131 132 133
+ 132: Label
+ 134: 2 FunctionCall 6(doSomething()
+ Branch 133
+ 133: Label
+ Branch 75
+ 74: Label
+ 136: 76 RayQueryGetIntersectionObjectToWorldKHR 47(rayQuery) 19
+ Store 78(_mat4x3) 136
+ 137: 76 Load 78(_mat4x3)
+ 138: 81 Transpose 137
+ Store 83(_mat3x4) 138
+ 139: 66(bool) RayQueryGetIntersectionCandidateAABBOpaqueKHR 47(rayQuery)
+ SelectionMerge 141 None
+ BranchConditional 139 140 141
+ 140: Label
+ 142: 2 FunctionCall 6(doSomething()
+ Branch 141
+ 141: Label
+ Store 143(t) 144
+ 145: 8(float) Load 143(t)
+ RayQueryGenerateIntersectionKHR 47(rayQuery) 145
+ RayQueryTerminateKHR 47(rayQuery)
+ Branch 75
+ 75: Label
+ Branch 64
+ 64: Label
+ Branch 61
+ 63: Label
+ 148: 35(ptr) AccessChain 83(_mat3x4) 19 20
+ 149: 8(float) Load 148
+ 150: 35(ptr) AccessChain 78(_mat4x3) 19 20
+ 151: 8(float) Load 150
+ 152: 66(bool) FOrdEqual 149 151
+ SelectionMerge 154 None
+ BranchConditional 152 153 154
+ 153: Label
+ 155: 2 FunctionCall 6(doSomething()
+ Branch 154
+ 154: Label
+ 157: 14(int) RayQueryGetIntersectionTypeKHR 47(rayQuery) 23
+ Store 156(committedStatus) 157
+ 158: 14(int) Load 156(committedStatus)
+ SelectionMerge 162 None
+ Switch 158 162
+ case 0: 159
+ case 1: 160
+ case 2: 161
+ 159: Label
+ 163: 76 RayQueryGetIntersectionWorldToObjectKHR 47(rayQuery) 19
+ Store 78(_mat4x3) 163
+ 164: 76 Load 78(_mat4x3)
+ 165: 81 Transpose 164
+ Store 83(_mat3x4) 165
+ Branch 162
+ 160: Label
+ 167: 76 RayQueryGetIntersectionWorldToObjectKHR 47(rayQuery) 23
+ Store 78(_mat4x3) 167
+ 168: 76 Load 78(_mat4x3)
+ 169: 81 Transpose 168
+ Store 83(_mat3x4) 169
+ 170: 66(bool) RayQueryGetIntersectionFrontFaceKHR 47(rayQuery) 23
+ SelectionMerge 172 None
+ BranchConditional 170 171 172
+ 171: Label
+ 173: 2 FunctionCall 6(doSomething()
+ Branch 172
+ 172: Label
+ 174: 91(fvec2) RayQueryGetIntersectionBarycentricsKHR 47(rayQuery) 23
+ 176: 8(float) CompositeExtract 174 1
+ 177: 66(bool) FOrdEqual 176 27
+ SelectionMerge 179 None
+ BranchConditional 177 178 179
+ 178: Label
+ 180: 2 FunctionCall 6(doSomething()
+ Branch 179
+ 179: Label
+ Branch 162
+ 161: Label
+ 182: 18(int) RayQueryGetIntersectionGeometryIndexKHR 47(rayQuery) 23
+ 183: 66(bool) SGreaterThan 182 19
+ SelectionMerge 185 None
+ BranchConditional 183 184 185
+ 184: Label
+ 186: 2 FunctionCall 6(doSomething()
+ Branch 185
+ 185: Label
+ 187: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23
+ 188: 66(bool) SGreaterThan 187 19
+ SelectionMerge 190 None
+ BranchConditional 188 189 190
+ 189: Label
+ 191: 2 FunctionCall 6(doSomething()
+ Branch 190
+ 190: Label
+ 192: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23
+ 193: 66(bool) SGreaterThan 192 19
+ SelectionMerge 195 None
+ BranchConditional 193 194 195
+ 194: Label
+ 196: 2 FunctionCall 6(doSomething()
+ Branch 195
+ 195: Label
+ 197: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23
+ 199: 8(float) CompositeExtract 197 2
+ 200: 66(bool) FOrdGreaterThan 199 27
+ SelectionMerge 202 None
+ BranchConditional 200 201 202
+ 201: Label
+ 203: 2 FunctionCall 6(doSomething()
+ Branch 202
+ 202: Label
+ 204: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23
+ 205: 8(float) CompositeExtract 204 0
+ 206: 66(bool) FOrdGreaterThan 205 27
+ SelectionMerge 208 None
+ BranchConditional 206 207 208
+ 207: Label
+ 209: 2 FunctionCall 6(doSomething()
+ Branch 208
+ 208: Label
+ 210: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23
+ 211: 66(bool) SGreaterThan 210 19
+ SelectionMerge 213 None
+ BranchConditional 211 212 213
+ 212: Label
+ 214: 2 FunctionCall 6(doSomething()
+ Branch 213
+ 213: Label
+ 215: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23
+ 216: 66(bool) FOrdGreaterThan 215 27
+ SelectionMerge 218 None
+ BranchConditional 216 217 218
+ 217: Label
+ 219: 2 FunctionCall 6(doSomething()
+ Branch 218
+ 218: Label
+ Branch 162
+ 162: Label
+ 222: 35(ptr) AccessChain 83(_mat3x4) 19 20
+ 223: 8(float) Load 222
+ 224: 35(ptr) AccessChain 78(_mat4x3) 19 20
+ 225: 8(float) Load 224
+ 226: 66(bool) FOrdEqual 223 225
+ SelectionMerge 228 None
+ BranchConditional 226 227 228
+ 227: Label
+ 229: 2 FunctionCall 6(doSomething()
+ Branch 228
+ 228: Label
+ 230: 14(int) RayQueryGetRayFlagsKHR 47(rayQuery)
+ 232: 66(bool) UGreaterThan 230 231
+ SelectionMerge 234 None
+ BranchConditional 232 233 234
+ 233: Label
+ 235: 2 FunctionCall 6(doSomething()
+ Branch 234
+ 234: Label
+ 236: 8(float) RayQueryGetRayTMinKHR 47(rayQuery)
+ 237: 66(bool) FOrdGreaterThan 236 27
+ SelectionMerge 239 None
+ BranchConditional 237 238 239
+ 238: Label
+ 240: 2 FunctionCall 6(doSomething()
+ Branch 239
+ 239: Label
+ 242: 9(fvec3) RayQueryGetWorldRayOriginKHR 47(rayQuery)
+ Store 241(o) 242
+ 244: 9(fvec3) RayQueryGetWorldRayDirectionKHR 47(rayQuery)
+ Store 243(d) 244
+ 245: 35(ptr) AccessChain 241(o) 20
+ 246: 8(float) Load 245
+ 247: 35(ptr) AccessChain 243(d) 198
+ 248: 8(float) Load 247
+ 249: 66(bool) FOrdEqual 246 248
+ SelectionMerge 251 None
+ BranchConditional 249 250 251
+ 250: Label
+ 252: 2 FunctionCall 6(doSomething()
+ Branch 251
+ 251: Label
+ Return
+ FunctionEnd
+ 6(doSomething(): 2 Function None 3
+ 7: Label
+ 22: 21(ptr) AccessChain 17 19
+ Store 22 20
+ 24: 21(ptr) AccessChain 17 23
+ Store 24 20
+ Return
+ FunctionEnd
+12(makeRayDesc(): 10(Ray) Function None 11
+ 13: Label
+ 26(ray): 25(ptr) Variable Function
+ 30: 29(ptr) AccessChain 26(ray) 19
+ Store 30 28
+ 34: 29(ptr) AccessChain 26(ray) 31
+ Store 34 33
+ 36: 35(ptr) AccessChain 26(ray) 23
+ Store 36 27
+ 39: 35(ptr) AccessChain 26(ray) 37
+ Store 39 38
+ 40: 10(Ray) Load 26(ray)
+ ReturnValue 40
+ FunctionEnd
diff --git a/Test/baseResults/rayQuery-allOps.frag.out b/Test/baseResults/rayQuery-allOps.frag.out
new file mode 100644
index 0000000..3160c2b
--- /dev/null
+++ b/Test/baseResults/rayQuery-allOps.frag.out
@@ -0,0 +1,431 @@
+rayQuery-allOps.frag
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 257
+
+ Capability Shader
+ Capability RayQueryProvisionalKHR
+ Extension "SPV_KHR_ray_query"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_query"
+ SourceExtension "GL_NV_ray_tracing"
+ Name 4 "main"
+ Name 6 "doSomething("
+ Name 10 "Ray"
+ MemberName 10(Ray) 0 "pos"
+ MemberName 10(Ray) 1 "tmin"
+ MemberName 10(Ray) 2 "dir"
+ MemberName 10(Ray) 3 "tmax"
+ Name 12 "makeRayDesc("
+ Name 15 "Log"
+ MemberName 15(Log) 0 "x"
+ MemberName 15(Log) 1 "y"
+ Name 17 ""
+ Name 26 "ray"
+ Name 43 "ray"
+ Name 47 "rayQuery"
+ Name 50 "rtas"
+ Name 69 "candidateType"
+ Name 78 "_mat4x3"
+ Name 83 "_mat3x4"
+ Name 143 "t"
+ Name 156 "committedStatus"
+ Name 240 "o"
+ Name 242 "d"
+ Name 252 "Ray"
+ MemberName 252(Ray) 0 "pos"
+ MemberName 252(Ray) 1 "tmin"
+ MemberName 252(Ray) 2 "dir"
+ MemberName 252(Ray) 3 "tmax"
+ Name 254 "Rays"
+ MemberName 254(Rays) 0 "rays"
+ Name 256 ""
+ MemberDecorate 15(Log) 0 Offset 0
+ MemberDecorate 15(Log) 1 Offset 4
+ Decorate 15(Log) BufferBlock
+ Decorate 17 DescriptorSet 0
+ Decorate 17 Binding 0
+ Decorate 50(rtas) DescriptorSet 0
+ Decorate 50(rtas) Binding 1
+ MemberDecorate 252(Ray) 0 Offset 0
+ MemberDecorate 252(Ray) 1 Offset 12
+ MemberDecorate 252(Ray) 2 Offset 16
+ MemberDecorate 252(Ray) 3 Offset 28
+ Decorate 253 ArrayStride 32
+ MemberDecorate 254(Rays) 0 Offset 0
+ Decorate 254(Rays) BufferBlock
+ Decorate 256 DescriptorSet 0
+ Decorate 256 Binding 2
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 8: TypeFloat 32
+ 9: TypeVector 8(float) 3
+ 10(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float)
+ 11: TypeFunction 10(Ray)
+ 14: TypeInt 32 0
+ 15(Log): TypeStruct 14(int) 14(int)
+ 16: TypePointer Uniform 15(Log)
+ 17: 16(ptr) Variable Uniform
+ 18: TypeInt 32 1
+ 19: 18(int) Constant 0
+ 20: 14(int) Constant 0
+ 21: TypePointer Uniform 14(int)
+ 23: 18(int) Constant 1
+ 25: TypePointer Function 10(Ray)
+ 27: 8(float) Constant 0
+ 28: 9(fvec3) ConstantComposite 27 27 27
+ 29: TypePointer Function 9(fvec3)
+ 31: 18(int) Constant 2
+ 32: 8(float) Constant 1065353216
+ 33: 9(fvec3) ConstantComposite 32 27 27
+ 35: TypePointer Function 8(float)
+ 37: 18(int) Constant 3
+ 38: 8(float) Constant 1176255488
+ 45: TypeRayQueryProvisionalKHR
+ 46: TypePointer Function 45
+ 48: TypeAccelerationStructureKHR
+ 49: TypePointer UniformConstant 48
+ 50(rtas): 49(ptr) Variable UniformConstant
+ 52: 14(int) Constant 255
+ 66: TypeBool
+ 68: TypePointer Function 14(int)
+ 70: 66(bool) ConstantFalse
+ 76: TypeMatrix 9(fvec3) 4
+ 77: TypePointer Function 76
+ 80: TypeVector 8(float) 4
+ 81: TypeMatrix 80(fvec4) 3
+ 82: TypePointer Function 81
+ 86: 66(bool) ConstantTrue
+ 91: TypeVector 8(float) 2
+ 144: 8(float) Constant 1056964608
+ 175: 14(int) Constant 1
+ 198: 14(int) Constant 2
+ 252(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float)
+ 253: TypeRuntimeArray 252(Ray)
+ 254(Rays): TypeStruct 253
+ 255: TypePointer Uniform 254(Rays)
+ 256: 255(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 43(ray): 25(ptr) Variable Function
+ 47(rayQuery): 46(ptr) Variable Function
+69(candidateType): 68(ptr) Variable Function
+ 78(_mat4x3): 77(ptr) Variable Function
+ 83(_mat3x4): 82(ptr) Variable Function
+ 143(t): 35(ptr) Variable Function
+156(committedStatus): 68(ptr) Variable Function
+ 240(o): 29(ptr) Variable Function
+ 242(d): 29(ptr) Variable Function
+ 44: 10(Ray) FunctionCall 12(makeRayDesc()
+ Store 43(ray) 44
+ 51: 48 Load 50(rtas)
+ 53: 29(ptr) AccessChain 43(ray) 19
+ 54: 9(fvec3) Load 53
+ 55: 35(ptr) AccessChain 43(ray) 23
+ 56: 8(float) Load 55
+ 57: 29(ptr) AccessChain 43(ray) 31
+ 58: 9(fvec3) Load 57
+ 59: 35(ptr) AccessChain 43(ray) 37
+ 60: 8(float) Load 59
+ RayQueryInitializeKHR 47(rayQuery) 51 20 52 54 56 58 60
+ Branch 61
+ 61: Label
+ LoopMerge 63 64 None
+ Branch 65
+ 65: Label
+ 67: 66(bool) RayQueryProceedKHR 47(rayQuery)
+ BranchConditional 67 62 63
+ 62: Label
+ 71: 14(int) RayQueryGetIntersectionTypeKHR 47(rayQuery) 19
+ Store 69(candidateType) 71
+ 72: 14(int) Load 69(candidateType)
+ SelectionMerge 75 None
+ Switch 72 75
+ case 0: 73
+ case 1: 74
+ 73: Label
+ RayQueryTerminateKHR 47(rayQuery)
+ 79: 76 RayQueryGetIntersectionObjectToWorldKHR 47(rayQuery) 19
+ Store 78(_mat4x3) 79
+ 84: 76 Load 78(_mat4x3)
+ 85: 81 Transpose 84
+ Store 83(_mat3x4) 85
+ RayQueryConfirmIntersectionKHR 47(rayQuery)
+ 87: 66(bool) RayQueryGetIntersectionFrontFaceKHR 47(rayQuery) 23
+ SelectionMerge 89 None
+ BranchConditional 87 88 89
+ 88: Label
+ 90: 2 FunctionCall 6(doSomething()
+ Branch 89
+ 89: Label
+ 92: 91(fvec2) RayQueryGetIntersectionBarycentricsKHR 47(rayQuery) 23
+ 93: 8(float) CompositeExtract 92 0
+ 94: 66(bool) FOrdEqual 93 27
+ SelectionMerge 96 None
+ BranchConditional 94 95 96
+ 95: Label
+ 97: 2 FunctionCall 6(doSomething()
+ Branch 96
+ 96: Label
+ 98: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23
+ 99: 66(bool) SGreaterThan 98 19
+ SelectionMerge 101 None
+ BranchConditional 99 100 101
+ 100: Label
+ 102: 2 FunctionCall 6(doSomething()
+ Branch 101
+ 101: Label
+ 103: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23
+ 104: 66(bool) SGreaterThan 103 19
+ SelectionMerge 106 None
+ BranchConditional 104 105 106
+ 105: Label
+ 107: 2 FunctionCall 6(doSomething()
+ Branch 106
+ 106: Label
+ 108: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23
+ 109: 8(float) CompositeExtract 108 0
+ 110: 66(bool) FOrdGreaterThan 109 27
+ SelectionMerge 112 None
+ BranchConditional 110 111 112
+ 111: Label
+ 113: 2 FunctionCall 6(doSomething()
+ Branch 112
+ 112: Label
+ 114: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23
+ 115: 8(float) CompositeExtract 114 0
+ 116: 66(bool) FOrdGreaterThan 115 27
+ SelectionMerge 118 None
+ BranchConditional 116 117 118
+ 117: Label
+ 119: 2 FunctionCall 6(doSomething()
+ Branch 118
+ 118: Label
+ 120: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23
+ 121: 66(bool) SGreaterThan 120 19
+ SelectionMerge 123 None
+ BranchConditional 121 122 123
+ 122: Label
+ 124: 2 FunctionCall 6(doSomething()
+ Branch 123
+ 123: Label
+ 125: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23
+ 126: 66(bool) FOrdGreaterThan 125 27
+ SelectionMerge 128 None
+ BranchConditional 126 127 128
+ 127: Label
+ 129: 2 FunctionCall 6(doSomething()
+ Branch 128
+ 128: Label
+ 130: 18(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23
+ 131: 66(bool) UGreaterThan 130 20
+ SelectionMerge 133 None
+ BranchConditional 131 132 133
+ 132: Label
+ 134: 2 FunctionCall 6(doSomething()
+ Branch 133
+ 133: Label
+ Branch 75
+ 74: Label
+ 136: 76 RayQueryGetIntersectionObjectToWorldKHR 47(rayQuery) 19
+ Store 78(_mat4x3) 136
+ 137: 76 Load 78(_mat4x3)
+ 138: 81 Transpose 137
+ Store 83(_mat3x4) 138
+ 139: 66(bool) RayQueryGetIntersectionCandidateAABBOpaqueKHR 47(rayQuery)
+ SelectionMerge 141 None
+ BranchConditional 139 140 141
+ 140: Label
+ 142: 2 FunctionCall 6(doSomething()
+ Branch 141
+ 141: Label
+ Store 143(t) 144
+ 145: 8(float) Load 143(t)
+ RayQueryGenerateIntersectionKHR 47(rayQuery) 145
+ RayQueryTerminateKHR 47(rayQuery)
+ Branch 75
+ 75: Label
+ Branch 64
+ 64: Label
+ Branch 61
+ 63: Label
+ 148: 35(ptr) AccessChain 83(_mat3x4) 19 20
+ 149: 8(float) Load 148
+ 150: 35(ptr) AccessChain 78(_mat4x3) 19 20
+ 151: 8(float) Load 150
+ 152: 66(bool) FOrdEqual 149 151
+ SelectionMerge 154 None
+ BranchConditional 152 153 154
+ 153: Label
+ 155: 2 FunctionCall 6(doSomething()
+ Branch 154
+ 154: Label
+ 157: 14(int) RayQueryGetIntersectionTypeKHR 47(rayQuery) 23
+ Store 156(committedStatus) 157
+ 158: 14(int) Load 156(committedStatus)
+ SelectionMerge 162 None
+ Switch 158 162
+ case 0: 159
+ case 1: 160
+ case 2: 161
+ 159: Label
+ 163: 76 RayQueryGetIntersectionWorldToObjectKHR 47(rayQuery) 19
+ Store 78(_mat4x3) 163
+ 164: 76 Load 78(_mat4x3)
+ 165: 81 Transpose 164
+ Store 83(_mat3x4) 165
+ Branch 162
+ 160: Label
+ 167: 76 RayQueryGetIntersectionWorldToObjectKHR 47(rayQuery) 23
+ Store 78(_mat4x3) 167
+ 168: 76 Load 78(_mat4x3)
+ 169: 81 Transpose 168
+ Store 83(_mat3x4) 169
+ 170: 66(bool) RayQueryGetIntersectionFrontFaceKHR 47(rayQuery) 23
+ SelectionMerge 172 None
+ BranchConditional 170 171 172
+ 171: Label
+ 173: 2 FunctionCall 6(doSomething()
+ Branch 172
+ 172: Label
+ 174: 91(fvec2) RayQueryGetIntersectionBarycentricsKHR 47(rayQuery) 23
+ 176: 8(float) CompositeExtract 174 1
+ 177: 66(bool) FOrdEqual 176 27
+ SelectionMerge 179 None
+ BranchConditional 177 178 179
+ 178: Label
+ 180: 2 FunctionCall 6(doSomething()
+ Branch 179
+ 179: Label
+ Branch 162
+ 161: Label
+ 182: 18(int) RayQueryGetIntersectionGeometryIndexKHR 47(rayQuery) 23
+ 183: 66(bool) SGreaterThan 182 19
+ SelectionMerge 185 None
+ BranchConditional 183 184 185
+ 184: Label
+ 186: 2 FunctionCall 6(doSomething()
+ Branch 185
+ 185: Label
+ 187: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23
+ 188: 66(bool) SGreaterThan 187 19
+ SelectionMerge 190 None
+ BranchConditional 188 189 190
+ 189: Label
+ 191: 2 FunctionCall 6(doSomething()
+ Branch 190
+ 190: Label
+ 192: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23
+ 193: 66(bool) SGreaterThan 192 19
+ SelectionMerge 195 None
+ BranchConditional 193 194 195
+ 194: Label
+ 196: 2 FunctionCall 6(doSomething()
+ Branch 195
+ 195: Label
+ 197: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23
+ 199: 8(float) CompositeExtract 197 2
+ 200: 66(bool) FOrdGreaterThan 199 27
+ SelectionMerge 202 None
+ BranchConditional 200 201 202
+ 201: Label
+ 203: 2 FunctionCall 6(doSomething()
+ Branch 202
+ 202: Label
+ 204: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23
+ 205: 8(float) CompositeExtract 204 0
+ 206: 66(bool) FOrdGreaterThan 205 27
+ SelectionMerge 208 None
+ BranchConditional 206 207 208
+ 207: Label
+ 209: 2 FunctionCall 6(doSomething()
+ Branch 208
+ 208: Label
+ 210: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23
+ 211: 66(bool) SGreaterThan 210 19
+ SelectionMerge 213 None
+ BranchConditional 211 212 213
+ 212: Label
+ 214: 2 FunctionCall 6(doSomething()
+ Branch 213
+ 213: Label
+ 215: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23
+ 216: 66(bool) FOrdGreaterThan 215 27
+ SelectionMerge 218 None
+ BranchConditional 216 217 218
+ 217: Label
+ 219: 2 FunctionCall 6(doSomething()
+ Branch 218
+ 218: Label
+ Branch 162
+ 162: Label
+ 222: 35(ptr) AccessChain 83(_mat3x4) 19 20
+ 223: 8(float) Load 222
+ 224: 35(ptr) AccessChain 78(_mat4x3) 19 20
+ 225: 8(float) Load 224
+ 226: 66(bool) FOrdEqual 223 225
+ SelectionMerge 228 None
+ BranchConditional 226 227 228
+ 227: Label
+ 229: 2 FunctionCall 6(doSomething()
+ Branch 228
+ 228: Label
+ 230: 14(int) RayQueryGetRayFlagsKHR 47(rayQuery)
+ 231: 66(bool) UGreaterThan 230 20
+ SelectionMerge 233 None
+ BranchConditional 231 232 233
+ 232: Label
+ 234: 2 FunctionCall 6(doSomething()
+ Branch 233
+ 233: Label
+ 235: 8(float) RayQueryGetRayTMinKHR 47(rayQuery)
+ 236: 66(bool) FOrdGreaterThan 235 27
+ SelectionMerge 238 None
+ BranchConditional 236 237 238
+ 237: Label
+ 239: 2 FunctionCall 6(doSomething()
+ Branch 238
+ 238: Label
+ 241: 9(fvec3) RayQueryGetWorldRayOriginKHR 47(rayQuery)
+ Store 240(o) 241
+ 243: 9(fvec3) RayQueryGetWorldRayDirectionKHR 47(rayQuery)
+ Store 242(d) 243
+ 244: 35(ptr) AccessChain 240(o) 20
+ 245: 8(float) Load 244
+ 246: 35(ptr) AccessChain 242(d) 198
+ 247: 8(float) Load 246
+ 248: 66(bool) FOrdEqual 245 247
+ SelectionMerge 250 None
+ BranchConditional 248 249 250
+ 249: Label
+ 251: 2 FunctionCall 6(doSomething()
+ Branch 250
+ 250: Label
+ Return
+ FunctionEnd
+ 6(doSomething(): 2 Function None 3
+ 7: Label
+ 22: 21(ptr) AccessChain 17 19
+ Store 22 20
+ 24: 21(ptr) AccessChain 17 23
+ Store 24 20
+ Return
+ FunctionEnd
+12(makeRayDesc(): 10(Ray) Function None 11
+ 13: Label
+ 26(ray): 25(ptr) Variable Function
+ 30: 29(ptr) AccessChain 26(ray) 19
+ Store 30 28
+ 34: 29(ptr) AccessChain 26(ray) 31
+ Store 34 33
+ 36: 35(ptr) AccessChain 26(ray) 23
+ Store 36 27
+ 39: 35(ptr) AccessChain 26(ray) 37
+ Store 39 38
+ 40: 10(Ray) Load 26(ray)
+ ReturnValue 40
+ FunctionEnd
diff --git a/Test/baseResults/rayQuery-allOps.rgen.out b/Test/baseResults/rayQuery-allOps.rgen.out
new file mode 100644
index 0000000..a61769e
--- /dev/null
+++ b/Test/baseResults/rayQuery-allOps.rgen.out
@@ -0,0 +1,431 @@
+rayQuery-allOps.rgen
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 257
+
+ Capability RayQueryProvisionalKHR
+ Capability RayTracingNV
+ Extension "SPV_KHR_ray_query"
+ Extension "SPV_NV_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint RayGenerationKHR 4 "main"
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_query"
+ SourceExtension "GL_NV_ray_tracing"
+ Name 4 "main"
+ Name 6 "doSomething("
+ Name 10 "Ray"
+ MemberName 10(Ray) 0 "pos"
+ MemberName 10(Ray) 1 "tmin"
+ MemberName 10(Ray) 2 "dir"
+ MemberName 10(Ray) 3 "tmax"
+ Name 12 "makeRayDesc("
+ Name 15 "Log"
+ MemberName 15(Log) 0 "x"
+ MemberName 15(Log) 1 "y"
+ Name 17 ""
+ Name 26 "ray"
+ Name 43 "ray"
+ Name 47 "rayQuery"
+ Name 50 "rtas"
+ Name 69 "candidateType"
+ Name 78 "_mat4x3"
+ Name 83 "_mat3x4"
+ Name 143 "t"
+ Name 156 "committedStatus"
+ Name 240 "o"
+ Name 242 "d"
+ Name 252 "Ray"
+ MemberName 252(Ray) 0 "pos"
+ MemberName 252(Ray) 1 "tmin"
+ MemberName 252(Ray) 2 "dir"
+ MemberName 252(Ray) 3 "tmax"
+ Name 254 "Rays"
+ MemberName 254(Rays) 0 "rays"
+ Name 256 ""
+ MemberDecorate 15(Log) 0 Offset 0
+ MemberDecorate 15(Log) 1 Offset 4
+ Decorate 15(Log) BufferBlock
+ Decorate 17 DescriptorSet 0
+ Decorate 17 Binding 0
+ Decorate 50(rtas) DescriptorSet 0
+ Decorate 50(rtas) Binding 1
+ MemberDecorate 252(Ray) 0 Offset 0
+ MemberDecorate 252(Ray) 1 Offset 12
+ MemberDecorate 252(Ray) 2 Offset 16
+ MemberDecorate 252(Ray) 3 Offset 28
+ Decorate 253 ArrayStride 32
+ MemberDecorate 254(Rays) 0 Offset 0
+ Decorate 254(Rays) BufferBlock
+ Decorate 256 DescriptorSet 0
+ Decorate 256 Binding 2
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 8: TypeFloat 32
+ 9: TypeVector 8(float) 3
+ 10(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float)
+ 11: TypeFunction 10(Ray)
+ 14: TypeInt 32 0
+ 15(Log): TypeStruct 14(int) 14(int)
+ 16: TypePointer Uniform 15(Log)
+ 17: 16(ptr) Variable Uniform
+ 18: TypeInt 32 1
+ 19: 18(int) Constant 0
+ 20: 14(int) Constant 0
+ 21: TypePointer Uniform 14(int)
+ 23: 18(int) Constant 1
+ 25: TypePointer Function 10(Ray)
+ 27: 8(float) Constant 0
+ 28: 9(fvec3) ConstantComposite 27 27 27
+ 29: TypePointer Function 9(fvec3)
+ 31: 18(int) Constant 2
+ 32: 8(float) Constant 1065353216
+ 33: 9(fvec3) ConstantComposite 32 27 27
+ 35: TypePointer Function 8(float)
+ 37: 18(int) Constant 3
+ 38: 8(float) Constant 1176255488
+ 45: TypeRayQueryProvisionalKHR
+ 46: TypePointer Function 45
+ 48: TypeAccelerationStructureKHR
+ 49: TypePointer UniformConstant 48
+ 50(rtas): 49(ptr) Variable UniformConstant
+ 52: 14(int) Constant 255
+ 66: TypeBool
+ 68: TypePointer Function 14(int)
+ 70: 66(bool) ConstantFalse
+ 76: TypeMatrix 9(fvec3) 4
+ 77: TypePointer Function 76
+ 80: TypeVector 8(float) 4
+ 81: TypeMatrix 80(fvec4) 3
+ 82: TypePointer Function 81
+ 86: 66(bool) ConstantTrue
+ 91: TypeVector 8(float) 2
+ 144: 8(float) Constant 1056964608
+ 175: 14(int) Constant 1
+ 198: 14(int) Constant 2
+ 252(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float)
+ 253: TypeRuntimeArray 252(Ray)
+ 254(Rays): TypeStruct 253
+ 255: TypePointer Uniform 254(Rays)
+ 256: 255(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 43(ray): 25(ptr) Variable Function
+ 47(rayQuery): 46(ptr) Variable Function
+69(candidateType): 68(ptr) Variable Function
+ 78(_mat4x3): 77(ptr) Variable Function
+ 83(_mat3x4): 82(ptr) Variable Function
+ 143(t): 35(ptr) Variable Function
+156(committedStatus): 68(ptr) Variable Function
+ 240(o): 29(ptr) Variable Function
+ 242(d): 29(ptr) Variable Function
+ 44: 10(Ray) FunctionCall 12(makeRayDesc()
+ Store 43(ray) 44
+ 51: 48 Load 50(rtas)
+ 53: 29(ptr) AccessChain 43(ray) 19
+ 54: 9(fvec3) Load 53
+ 55: 35(ptr) AccessChain 43(ray) 23
+ 56: 8(float) Load 55
+ 57: 29(ptr) AccessChain 43(ray) 31
+ 58: 9(fvec3) Load 57
+ 59: 35(ptr) AccessChain 43(ray) 37
+ 60: 8(float) Load 59
+ RayQueryInitializeKHR 47(rayQuery) 51 20 52 54 56 58 60
+ Branch 61
+ 61: Label
+ LoopMerge 63 64 None
+ Branch 65
+ 65: Label
+ 67: 66(bool) RayQueryProceedKHR 47(rayQuery)
+ BranchConditional 67 62 63
+ 62: Label
+ 71: 14(int) RayQueryGetIntersectionTypeKHR 47(rayQuery) 19
+ Store 69(candidateType) 71
+ 72: 14(int) Load 69(candidateType)
+ SelectionMerge 75 None
+ Switch 72 75
+ case 0: 73
+ case 1: 74
+ 73: Label
+ RayQueryTerminateKHR 47(rayQuery)
+ 79: 76 RayQueryGetIntersectionObjectToWorldKHR 47(rayQuery) 19
+ Store 78(_mat4x3) 79
+ 84: 76 Load 78(_mat4x3)
+ 85: 81 Transpose 84
+ Store 83(_mat3x4) 85
+ RayQueryConfirmIntersectionKHR 47(rayQuery)
+ 87: 66(bool) RayQueryGetIntersectionFrontFaceKHR 47(rayQuery) 23
+ SelectionMerge 89 None
+ BranchConditional 87 88 89
+ 88: Label
+ 90: 2 FunctionCall 6(doSomething()
+ Branch 89
+ 89: Label
+ 92: 91(fvec2) RayQueryGetIntersectionBarycentricsKHR 47(rayQuery) 23
+ 93: 8(float) CompositeExtract 92 0
+ 94: 66(bool) FOrdEqual 93 27
+ SelectionMerge 96 None
+ BranchConditional 94 95 96
+ 95: Label
+ 97: 2 FunctionCall 6(doSomething()
+ Branch 96
+ 96: Label
+ 98: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23
+ 99: 66(bool) SGreaterThan 98 19
+ SelectionMerge 101 None
+ BranchConditional 99 100 101
+ 100: Label
+ 102: 2 FunctionCall 6(doSomething()
+ Branch 101
+ 101: Label
+ 103: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23
+ 104: 66(bool) SGreaterThan 103 19
+ SelectionMerge 106 None
+ BranchConditional 104 105 106
+ 105: Label
+ 107: 2 FunctionCall 6(doSomething()
+ Branch 106
+ 106: Label
+ 108: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23
+ 109: 8(float) CompositeExtract 108 0
+ 110: 66(bool) FOrdGreaterThan 109 27
+ SelectionMerge 112 None
+ BranchConditional 110 111 112
+ 111: Label
+ 113: 2 FunctionCall 6(doSomething()
+ Branch 112
+ 112: Label
+ 114: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23
+ 115: 8(float) CompositeExtract 114 0
+ 116: 66(bool) FOrdGreaterThan 115 27
+ SelectionMerge 118 None
+ BranchConditional 116 117 118
+ 117: Label
+ 119: 2 FunctionCall 6(doSomething()
+ Branch 118
+ 118: Label
+ 120: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23
+ 121: 66(bool) SGreaterThan 120 19
+ SelectionMerge 123 None
+ BranchConditional 121 122 123
+ 122: Label
+ 124: 2 FunctionCall 6(doSomething()
+ Branch 123
+ 123: Label
+ 125: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23
+ 126: 66(bool) FOrdGreaterThan 125 27
+ SelectionMerge 128 None
+ BranchConditional 126 127 128
+ 127: Label
+ 129: 2 FunctionCall 6(doSomething()
+ Branch 128
+ 128: Label
+ 130: 18(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23
+ 131: 66(bool) UGreaterThan 130 20
+ SelectionMerge 133 None
+ BranchConditional 131 132 133
+ 132: Label
+ 134: 2 FunctionCall 6(doSomething()
+ Branch 133
+ 133: Label
+ Branch 75
+ 74: Label
+ 136: 76 RayQueryGetIntersectionObjectToWorldKHR 47(rayQuery) 19
+ Store 78(_mat4x3) 136
+ 137: 76 Load 78(_mat4x3)
+ 138: 81 Transpose 137
+ Store 83(_mat3x4) 138
+ 139: 66(bool) RayQueryGetIntersectionCandidateAABBOpaqueKHR 47(rayQuery)
+ SelectionMerge 141 None
+ BranchConditional 139 140 141
+ 140: Label
+ 142: 2 FunctionCall 6(doSomething()
+ Branch 141
+ 141: Label
+ Store 143(t) 144
+ 145: 8(float) Load 143(t)
+ RayQueryGenerateIntersectionKHR 47(rayQuery) 145
+ RayQueryTerminateKHR 47(rayQuery)
+ Branch 75
+ 75: Label
+ Branch 64
+ 64: Label
+ Branch 61
+ 63: Label
+ 148: 35(ptr) AccessChain 83(_mat3x4) 19 20
+ 149: 8(float) Load 148
+ 150: 35(ptr) AccessChain 78(_mat4x3) 19 20
+ 151: 8(float) Load 150
+ 152: 66(bool) FOrdEqual 149 151
+ SelectionMerge 154 None
+ BranchConditional 152 153 154
+ 153: Label
+ 155: 2 FunctionCall 6(doSomething()
+ Branch 154
+ 154: Label
+ 157: 14(int) RayQueryGetIntersectionTypeKHR 47(rayQuery) 23
+ Store 156(committedStatus) 157
+ 158: 14(int) Load 156(committedStatus)
+ SelectionMerge 162 None
+ Switch 158 162
+ case 0: 159
+ case 1: 160
+ case 2: 161
+ 159: Label
+ 163: 76 RayQueryGetIntersectionWorldToObjectKHR 47(rayQuery) 19
+ Store 78(_mat4x3) 163
+ 164: 76 Load 78(_mat4x3)
+ 165: 81 Transpose 164
+ Store 83(_mat3x4) 165
+ Branch 162
+ 160: Label
+ 167: 76 RayQueryGetIntersectionWorldToObjectKHR 47(rayQuery) 23
+ Store 78(_mat4x3) 167
+ 168: 76 Load 78(_mat4x3)
+ 169: 81 Transpose 168
+ Store 83(_mat3x4) 169
+ 170: 66(bool) RayQueryGetIntersectionFrontFaceKHR 47(rayQuery) 23
+ SelectionMerge 172 None
+ BranchConditional 170 171 172
+ 171: Label
+ 173: 2 FunctionCall 6(doSomething()
+ Branch 172
+ 172: Label
+ 174: 91(fvec2) RayQueryGetIntersectionBarycentricsKHR 47(rayQuery) 23
+ 176: 8(float) CompositeExtract 174 1
+ 177: 66(bool) FOrdEqual 176 27
+ SelectionMerge 179 None
+ BranchConditional 177 178 179
+ 178: Label
+ 180: 2 FunctionCall 6(doSomething()
+ Branch 179
+ 179: Label
+ Branch 162
+ 161: Label
+ 182: 18(int) RayQueryGetIntersectionGeometryIndexKHR 47(rayQuery) 23
+ 183: 66(bool) SGreaterThan 182 19
+ SelectionMerge 185 None
+ BranchConditional 183 184 185
+ 184: Label
+ 186: 2 FunctionCall 6(doSomething()
+ Branch 185
+ 185: Label
+ 187: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23
+ 188: 66(bool) SGreaterThan 187 19
+ SelectionMerge 190 None
+ BranchConditional 188 189 190
+ 189: Label
+ 191: 2 FunctionCall 6(doSomething()
+ Branch 190
+ 190: Label
+ 192: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23
+ 193: 66(bool) SGreaterThan 192 19
+ SelectionMerge 195 None
+ BranchConditional 193 194 195
+ 194: Label
+ 196: 2 FunctionCall 6(doSomething()
+ Branch 195
+ 195: Label
+ 197: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23
+ 199: 8(float) CompositeExtract 197 2
+ 200: 66(bool) FOrdGreaterThan 199 27
+ SelectionMerge 202 None
+ BranchConditional 200 201 202
+ 201: Label
+ 203: 2 FunctionCall 6(doSomething()
+ Branch 202
+ 202: Label
+ 204: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23
+ 205: 8(float) CompositeExtract 204 0
+ 206: 66(bool) FOrdGreaterThan 205 27
+ SelectionMerge 208 None
+ BranchConditional 206 207 208
+ 207: Label
+ 209: 2 FunctionCall 6(doSomething()
+ Branch 208
+ 208: Label
+ 210: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23
+ 211: 66(bool) SGreaterThan 210 19
+ SelectionMerge 213 None
+ BranchConditional 211 212 213
+ 212: Label
+ 214: 2 FunctionCall 6(doSomething()
+ Branch 213
+ 213: Label
+ 215: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23
+ 216: 66(bool) FOrdGreaterThan 215 27
+ SelectionMerge 218 None
+ BranchConditional 216 217 218
+ 217: Label
+ 219: 2 FunctionCall 6(doSomething()
+ Branch 218
+ 218: Label
+ Branch 162
+ 162: Label
+ 222: 35(ptr) AccessChain 83(_mat3x4) 19 20
+ 223: 8(float) Load 222
+ 224: 35(ptr) AccessChain 78(_mat4x3) 19 20
+ 225: 8(float) Load 224
+ 226: 66(bool) FOrdEqual 223 225
+ SelectionMerge 228 None
+ BranchConditional 226 227 228
+ 227: Label
+ 229: 2 FunctionCall 6(doSomething()
+ Branch 228
+ 228: Label
+ 230: 14(int) RayQueryGetRayFlagsKHR 47(rayQuery)
+ 231: 66(bool) UGreaterThan 230 20
+ SelectionMerge 233 None
+ BranchConditional 231 232 233
+ 232: Label
+ 234: 2 FunctionCall 6(doSomething()
+ Branch 233
+ 233: Label
+ 235: 8(float) RayQueryGetRayTMinKHR 47(rayQuery)
+ 236: 66(bool) FOrdGreaterThan 235 27
+ SelectionMerge 238 None
+ BranchConditional 236 237 238
+ 237: Label
+ 239: 2 FunctionCall 6(doSomething()
+ Branch 238
+ 238: Label
+ 241: 9(fvec3) RayQueryGetWorldRayOriginKHR 47(rayQuery)
+ Store 240(o) 241
+ 243: 9(fvec3) RayQueryGetWorldRayDirectionKHR 47(rayQuery)
+ Store 242(d) 243
+ 244: 35(ptr) AccessChain 240(o) 20
+ 245: 8(float) Load 244
+ 246: 35(ptr) AccessChain 242(d) 198
+ 247: 8(float) Load 246
+ 248: 66(bool) FOrdEqual 245 247
+ SelectionMerge 250 None
+ BranchConditional 248 249 250
+ 249: Label
+ 251: 2 FunctionCall 6(doSomething()
+ Branch 250
+ 250: Label
+ Return
+ FunctionEnd
+ 6(doSomething(): 2 Function None 3
+ 7: Label
+ 22: 21(ptr) AccessChain 17 19
+ Store 22 20
+ 24: 21(ptr) AccessChain 17 23
+ Store 24 20
+ Return
+ FunctionEnd
+12(makeRayDesc(): 10(Ray) Function None 11
+ 13: Label
+ 26(ray): 25(ptr) Variable Function
+ 30: 29(ptr) AccessChain 26(ray) 19
+ Store 30 28
+ 34: 29(ptr) AccessChain 26(ray) 31
+ Store 34 33
+ 36: 35(ptr) AccessChain 26(ray) 23
+ Store 36 27
+ 39: 35(ptr) AccessChain 26(ray) 37
+ Store 39 38
+ 40: 10(Ray) Load 26(ray)
+ ReturnValue 40
+ FunctionEnd
diff --git a/Test/baseResults/rayQuery-committed.Error.rgen.out b/Test/baseResults/rayQuery-committed.Error.rgen.out
new file mode 100644
index 0000000..037f692
--- /dev/null
+++ b/Test/baseResults/rayQuery-committed.Error.rgen.out
@@ -0,0 +1,19 @@
+rayQuery-committed.Error.rgen
+ERROR: 0:48: 'committed' : argument must be compile-time constant
+ERROR: 0:53: 'committed' : argument must be compile-time constant
+ERROR: 0:54: 'committed' : argument must be compile-time constant
+ERROR: 0:58: 'committed' : argument must be compile-time constant
+ERROR: 0:62: 'committed' : argument must be compile-time constant
+ERROR: 0:66: 'committed' : argument must be compile-time constant
+ERROR: 0:70: 'committed' : argument must be compile-time constant
+ERROR: 0:74: 'committed' : argument must be compile-time constant
+ERROR: 0:78: 'committed' : argument must be compile-time constant
+ERROR: 0:82: 'committed' : argument must be compile-time constant
+ERROR: 0:86: 'committed' : argument must be compile-time constant
+ERROR: 0:90: 'committed' : argument must be compile-time constant
+ERROR: 0:97: 'committed' : argument must be compile-time constant
+ERROR: 0:100: 'committed' : argument must be compile-time constant
+ERROR: 14 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/rayQuery-initialize.rgen.out b/Test/baseResults/rayQuery-initialize.rgen.out
new file mode 100644
index 0000000..7824930
--- /dev/null
+++ b/Test/baseResults/rayQuery-initialize.rgen.out
@@ -0,0 +1,166 @@
+rayQuery-initialize.rgen
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 103
+
+ Capability RayQueryProvisionalKHR
+ Capability RayTracingNV
+ Extension "SPV_KHR_ray_query"
+ Extension "SPV_NV_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint RayGenerationKHR 4 "main" 23 28
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_query"
+ SourceExtension "GL_NV_ray_tracing"
+ Name 4 "main"
+ Name 8 "launchIndex("
+ Name 14 "Ray"
+ MemberName 14(Ray) 0 "pos"
+ MemberName 14(Ray) 1 "tmin"
+ MemberName 14(Ray) 2 "dir"
+ MemberName 14(Ray) 3 "tmax"
+ Name 19 "doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;"
+ Name 17 "rayQuery"
+ Name 18 "ray"
+ Name 23 "gl_LaunchIDNV"
+ Name 28 "gl_LaunchSizeNV"
+ Name 50 "rtas"
+ Name 69 "index"
+ Name 71 "ray"
+ Name 72 "Ray"
+ MemberName 72(Ray) 0 "pos"
+ MemberName 72(Ray) 1 "tmin"
+ MemberName 72(Ray) 2 "dir"
+ MemberName 72(Ray) 3 "tmax"
+ Name 74 "Rays"
+ MemberName 74(Rays) 0 "rays"
+ Name 76 ""
+ Name 89 "rayQuery"
+ Name 90 "param"
+ Decorate 23(gl_LaunchIDNV) BuiltIn LaunchIdKHR
+ Decorate 28(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
+ Decorate 50(rtas) DescriptorSet 0
+ Decorate 50(rtas) Binding 0
+ MemberDecorate 72(Ray) 0 Offset 0
+ MemberDecorate 72(Ray) 1 Offset 12
+ MemberDecorate 72(Ray) 2 Offset 16
+ MemberDecorate 72(Ray) 3 Offset 28
+ Decorate 73 ArrayStride 32
+ MemberDecorate 74(Rays) 0 Offset 0
+ Decorate 74(Rays) BufferBlock
+ Decorate 76 DescriptorSet 0
+ Decorate 76 Binding 2
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeFunction 6(int)
+ 10: TypeRayQueryProvisionalKHR
+ 11: TypePointer Function 10
+ 12: TypeFloat 32
+ 13: TypeVector 12(float) 3
+ 14(Ray): TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float)
+ 15: TypePointer Function 14(Ray)
+ 16: TypeFunction 2 11(ptr) 15(ptr)
+ 21: TypeVector 6(int) 3
+ 22: TypePointer Input 21(ivec3)
+23(gl_LaunchIDNV): 22(ptr) Variable Input
+ 24: 6(int) Constant 2
+ 25: TypePointer Input 6(int)
+28(gl_LaunchSizeNV): 22(ptr) Variable Input
+ 29: 6(int) Constant 0
+ 33: 6(int) Constant 1
+ 48: TypeAccelerationStructureKHR
+ 49: TypePointer UniformConstant 48
+ 50(rtas): 49(ptr) Variable UniformConstant
+ 52: 6(int) Constant 16
+ 53: TypeInt 32 1
+ 54: 53(int) Constant 0
+ 55: TypePointer Function 13(fvec3)
+ 58: 53(int) Constant 1
+ 59: TypePointer Function 12(float)
+ 62: 53(int) Constant 2
+ 65: 53(int) Constant 3
+ 68: TypePointer Function 6(int)
+ 72(Ray): TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float)
+ 73: TypeRuntimeArray 72(Ray)
+ 74(Rays): TypeStruct 73
+ 75: TypePointer Uniform 74(Rays)
+ 76: 75(ptr) Variable Uniform
+ 78: TypePointer Uniform 72(Ray)
+ 94: 6(int) Constant 32
+ 4(main): 2 Function None 3
+ 5: Label
+ 69(index): 68(ptr) Variable Function
+ 71(ray): 15(ptr) Variable Function
+ 89(rayQuery): 11(ptr) Variable Function
+ 90(param): 15(ptr) Variable Function
+ 70: 6(int) FunctionCall 8(launchIndex()
+ Store 69(index) 70
+ 77: 6(int) Load 69(index)
+ 79: 78(ptr) AccessChain 76 54 77
+ 80: 72(Ray) Load 79
+ 81: 13(fvec3) CompositeExtract 80 0
+ 82: 55(ptr) AccessChain 71(ray) 54
+ Store 82 81
+ 83: 12(float) CompositeExtract 80 1
+ 84: 59(ptr) AccessChain 71(ray) 58
+ Store 84 83
+ 85: 13(fvec3) CompositeExtract 80 2
+ 86: 55(ptr) AccessChain 71(ray) 62
+ Store 86 85
+ 87: 12(float) CompositeExtract 80 3
+ 88: 59(ptr) AccessChain 71(ray) 65
+ Store 88 87
+ 91: 14(Ray) Load 71(ray)
+ Store 90(param) 91
+ 92: 2 FunctionCall 19(doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;) 89(rayQuery) 90(param)
+ 93: 48 Load 50(rtas)
+ 95: 55(ptr) AccessChain 71(ray) 54
+ 96: 13(fvec3) Load 95
+ 97: 59(ptr) AccessChain 71(ray) 58
+ 98: 12(float) Load 97
+ 99: 55(ptr) AccessChain 71(ray) 62
+ 100: 13(fvec3) Load 99
+ 101: 59(ptr) AccessChain 71(ray) 65
+ 102: 12(float) Load 101
+ RayQueryInitializeKHR 89(rayQuery) 93 33 94 96 98 100 102
+ Return
+ FunctionEnd
+ 8(launchIndex(): 6(int) Function None 7
+ 9: Label
+ 26: 25(ptr) AccessChain 23(gl_LaunchIDNV) 24
+ 27: 6(int) Load 26
+ 30: 25(ptr) AccessChain 28(gl_LaunchSizeNV) 29
+ 31: 6(int) Load 30
+ 32: 6(int) IMul 27 31
+ 34: 25(ptr) AccessChain 28(gl_LaunchSizeNV) 33
+ 35: 6(int) Load 34
+ 36: 6(int) IMul 32 35
+ 37: 25(ptr) AccessChain 23(gl_LaunchIDNV) 33
+ 38: 6(int) Load 37
+ 39: 25(ptr) AccessChain 28(gl_LaunchSizeNV) 29
+ 40: 6(int) Load 39
+ 41: 6(int) IMul 38 40
+ 42: 6(int) IAdd 36 41
+ 43: 25(ptr) AccessChain 23(gl_LaunchIDNV) 29
+ 44: 6(int) Load 43
+ 45: 6(int) IAdd 42 44
+ ReturnValue 45
+ FunctionEnd
+19(doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;): 2 Function None 16
+ 17(rayQuery): 11(ptr) FunctionParameter
+ 18(ray): 15(ptr) FunctionParameter
+ 20: Label
+ 51: 48 Load 50(rtas)
+ 56: 55(ptr) AccessChain 18(ray) 54
+ 57: 13(fvec3) Load 56
+ 60: 59(ptr) AccessChain 18(ray) 58
+ 61: 12(float) Load 60
+ 63: 55(ptr) AccessChain 18(ray) 62
+ 64: 13(fvec3) Load 63
+ 66: 59(ptr) AccessChain 18(ray) 65
+ 67: 12(float) Load 66
+ RayQueryInitializeKHR 17(rayQuery) 51 29 52 57 61 64 67
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/rayQuery-no-cse.rgen.out b/Test/baseResults/rayQuery-no-cse.rgen.out
new file mode 100644
index 0000000..c09e348
--- /dev/null
+++ b/Test/baseResults/rayQuery-no-cse.rgen.out
@@ -0,0 +1,173 @@
+rayQuery-no-cse.rgen
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 107
+
+ Capability RayQueryProvisionalKHR
+ Capability RayTracingNV
+ Extension "SPV_KHR_ray_query"
+ Extension "SPV_NV_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint RayGenerationKHR 4 "main" 23 28
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_query"
+ SourceExtension "GL_NV_ray_tracing"
+ Name 4 "main"
+ Name 8 "launchIndex("
+ Name 14 "Ray"
+ MemberName 14(Ray) 0 "pos"
+ MemberName 14(Ray) 1 "tmin"
+ MemberName 14(Ray) 2 "dir"
+ MemberName 14(Ray) 3 "tmax"
+ Name 19 "doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;"
+ Name 17 "rayQuery"
+ Name 18 "ray"
+ Name 23 "gl_LaunchIDNV"
+ Name 28 "gl_LaunchSizeNV"
+ Name 50 "rtas"
+ Name 69 "index"
+ Name 71 "ray"
+ Name 72 "Ray"
+ MemberName 72(Ray) 0 "pos"
+ MemberName 72(Ray) 1 "tmin"
+ MemberName 72(Ray) 2 "dir"
+ MemberName 72(Ray) 3 "tmax"
+ Name 74 "Rays"
+ MemberName 74(Rays) 0 "rays"
+ Name 76 ""
+ Name 89 "rayQuery1"
+ Name 90 "param"
+ Name 103 "rayQuery2"
+ Name 104 "param"
+ Decorate 23(gl_LaunchIDNV) BuiltIn LaunchIdKHR
+ Decorate 28(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
+ Decorate 50(rtas) DescriptorSet 0
+ Decorate 50(rtas) Binding 0
+ MemberDecorate 72(Ray) 0 Offset 0
+ MemberDecorate 72(Ray) 1 Offset 12
+ MemberDecorate 72(Ray) 2 Offset 16
+ MemberDecorate 72(Ray) 3 Offset 28
+ Decorate 73 ArrayStride 32
+ MemberDecorate 74(Rays) 0 Offset 0
+ Decorate 74(Rays) BufferBlock
+ Decorate 76 DescriptorSet 0
+ Decorate 76 Binding 2
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeFunction 6(int)
+ 10: TypeRayQueryProvisionalKHR
+ 11: TypePointer Function 10
+ 12: TypeFloat 32
+ 13: TypeVector 12(float) 3
+ 14(Ray): TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float)
+ 15: TypePointer Function 14(Ray)
+ 16: TypeFunction 2 11(ptr) 15(ptr)
+ 21: TypeVector 6(int) 3
+ 22: TypePointer Input 21(ivec3)
+23(gl_LaunchIDNV): 22(ptr) Variable Input
+ 24: 6(int) Constant 2
+ 25: TypePointer Input 6(int)
+28(gl_LaunchSizeNV): 22(ptr) Variable Input
+ 29: 6(int) Constant 0
+ 33: 6(int) Constant 1
+ 48: TypeAccelerationStructureKHR
+ 49: TypePointer UniformConstant 48
+ 50(rtas): 49(ptr) Variable UniformConstant
+ 52: 6(int) Constant 16
+ 53: TypeInt 32 1
+ 54: 53(int) Constant 0
+ 55: TypePointer Function 13(fvec3)
+ 58: 53(int) Constant 1
+ 59: TypePointer Function 12(float)
+ 62: 53(int) Constant 2
+ 65: 53(int) Constant 3
+ 68: TypePointer Function 6(int)
+ 72(Ray): TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float)
+ 73: TypeRuntimeArray 72(Ray)
+ 74(Rays): TypeStruct 73
+ 75: TypePointer Uniform 74(Rays)
+ 76: 75(ptr) Variable Uniform
+ 78: TypePointer Uniform 72(Ray)
+ 94: 6(int) Constant 32
+ 4(main): 2 Function None 3
+ 5: Label
+ 69(index): 68(ptr) Variable Function
+ 71(ray): 15(ptr) Variable Function
+ 89(rayQuery1): 11(ptr) Variable Function
+ 90(param): 15(ptr) Variable Function
+ 103(rayQuery2): 11(ptr) Variable Function
+ 104(param): 15(ptr) Variable Function
+ 70: 6(int) FunctionCall 8(launchIndex()
+ Store 69(index) 70
+ 77: 6(int) Load 69(index)
+ 79: 78(ptr) AccessChain 76 54 77
+ 80: 72(Ray) Load 79
+ 81: 13(fvec3) CompositeExtract 80 0
+ 82: 55(ptr) AccessChain 71(ray) 54
+ Store 82 81
+ 83: 12(float) CompositeExtract 80 1
+ 84: 59(ptr) AccessChain 71(ray) 58
+ Store 84 83
+ 85: 13(fvec3) CompositeExtract 80 2
+ 86: 55(ptr) AccessChain 71(ray) 62
+ Store 86 85
+ 87: 12(float) CompositeExtract 80 3
+ 88: 59(ptr) AccessChain 71(ray) 65
+ Store 88 87
+ 91: 14(Ray) Load 71(ray)
+ Store 90(param) 91
+ 92: 2 FunctionCall 19(doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;) 89(rayQuery1) 90(param)
+ 93: 48 Load 50(rtas)
+ 95: 55(ptr) AccessChain 71(ray) 54
+ 96: 13(fvec3) Load 95
+ 97: 59(ptr) AccessChain 71(ray) 58
+ 98: 12(float) Load 97
+ 99: 55(ptr) AccessChain 71(ray) 62
+ 100: 13(fvec3) Load 99
+ 101: 59(ptr) AccessChain 71(ray) 65
+ 102: 12(float) Load 101
+ RayQueryInitializeKHR 89(rayQuery1) 93 33 94 96 98 100 102
+ 105: 14(Ray) Load 71(ray)
+ Store 104(param) 105
+ 106: 2 FunctionCall 19(doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;) 103(rayQuery2) 104(param)
+ Return
+ FunctionEnd
+ 8(launchIndex(): 6(int) Function None 7
+ 9: Label
+ 26: 25(ptr) AccessChain 23(gl_LaunchIDNV) 24
+ 27: 6(int) Load 26
+ 30: 25(ptr) AccessChain 28(gl_LaunchSizeNV) 29
+ 31: 6(int) Load 30
+ 32: 6(int) IMul 27 31
+ 34: 25(ptr) AccessChain 28(gl_LaunchSizeNV) 33
+ 35: 6(int) Load 34
+ 36: 6(int) IMul 32 35
+ 37: 25(ptr) AccessChain 23(gl_LaunchIDNV) 33
+ 38: 6(int) Load 37
+ 39: 25(ptr) AccessChain 28(gl_LaunchSizeNV) 29
+ 40: 6(int) Load 39
+ 41: 6(int) IMul 38 40
+ 42: 6(int) IAdd 36 41
+ 43: 25(ptr) AccessChain 23(gl_LaunchIDNV) 29
+ 44: 6(int) Load 43
+ 45: 6(int) IAdd 42 44
+ ReturnValue 45
+ FunctionEnd
+19(doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;): 2 Function None 16
+ 17(rayQuery): 11(ptr) FunctionParameter
+ 18(ray): 15(ptr) FunctionParameter
+ 20: Label
+ 51: 48 Load 50(rtas)
+ 56: 55(ptr) AccessChain 18(ray) 54
+ 57: 13(fvec3) Load 56
+ 60: 59(ptr) AccessChain 18(ray) 58
+ 61: 12(float) Load 60
+ 63: 55(ptr) AccessChain 18(ray) 62
+ 64: 13(fvec3) Load 63
+ 66: 59(ptr) AccessChain 18(ray) 65
+ 67: 12(float) Load 66
+ RayQueryInitializeKHR 17(rayQuery) 51 29 52 57 61 64 67
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/rayQuery.rgen.out b/Test/baseResults/rayQuery.rgen.out
new file mode 100644
index 0000000..4658338
--- /dev/null
+++ b/Test/baseResults/rayQuery.rgen.out
@@ -0,0 +1,82 @@
+rayQuery.rgen
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 44
+
+ Capability RayQueryProvisionalKHR
+ Capability RayTracingNV
+ Extension "SPV_KHR_ray_query"
+ Extension "SPV_NV_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint RayGenerationKHR 4 "main"
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_query"
+ SourceExtension "GL_NV_ray_tracing"
+ Name 4 "main"
+ Name 8 "rayFlags"
+ Name 12 "tMin"
+ Name 14 "tMax"
+ Name 18 "localRayQuery"
+ Name 21 "acc0"
+ Name 26 "block"
+ MemberName 26(block) 0 "dir"
+ MemberName 26(block) 1 "origin"
+ Name 28 ""
+ Decorate 21(acc0) DescriptorSet 0
+ Decorate 21(acc0) Binding 0
+ MemberDecorate 26(block) 0 Offset 0
+ MemberDecorate 26(block) 1 Offset 16
+ Decorate 26(block) BufferBlock
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 9: 6(int) Constant 9
+ 10: TypeFloat 32
+ 11: TypePointer Function 10(float)
+ 13: 10(float) Constant 0
+ 15: 10(float) Constant 1148846080
+ 16: TypeRayQueryProvisionalKHR
+ 17: TypePointer Function 16
+ 19: TypeAccelerationStructureKHR
+ 20: TypePointer UniformConstant 19
+ 21(acc0): 20(ptr) Variable UniformConstant
+ 24: 6(int) Constant 255
+ 25: TypeVector 10(float) 3
+ 26(block): TypeStruct 25(fvec3) 25(fvec3)
+ 27: TypePointer ShaderRecordBufferKHR 26(block)
+ 28: 27(ptr) Variable ShaderRecordBufferKHR
+ 29: TypeInt 32 1
+ 30: 29(int) Constant 1
+ 31: TypePointer ShaderRecordBufferKHR 25(fvec3)
+ 35: 29(int) Constant 0
+ 39: TypeBool
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(rayFlags): 7(ptr) Variable Function
+ 12(tMin): 11(ptr) Variable Function
+ 14(tMax): 11(ptr) Variable Function
+18(localRayQuery): 17(ptr) Variable Function
+ Store 8(rayFlags) 9
+ Store 12(tMin) 13
+ Store 14(tMax) 15
+ 22: 19 Load 21(acc0)
+ 23: 6(int) Load 8(rayFlags)
+ 32: 31(ptr) AccessChain 28 30
+ 33: 25(fvec3) Load 32
+ 34: 10(float) Load 12(tMin)
+ 36: 31(ptr) AccessChain 28 35
+ 37: 25(fvec3) Load 36
+ 38: 10(float) Load 14(tMax)
+ RayQueryInitializeKHR 18(localRayQuery) 22 23 24 33 34 37 38
+ 40: 39(bool) RayQueryProceedKHR 18(localRayQuery)
+ 41: 39(bool) LogicalNot 40
+ SelectionMerge 43 None
+ BranchConditional 41 42 43
+ 42: Label
+ RayQueryTerminateKHR 18(localRayQuery)
+ Branch 43
+ 43: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/remap.basic.dcefunc.frag.out b/Test/baseResults/remap.basic.dcefunc.frag.out
index 33ec069..e985def 100644
--- a/Test/baseResults/remap.basic.dcefunc.frag.out
+++ b/Test/baseResults/remap.basic.dcefunc.frag.out
@@ -1,6 +1,6 @@
remap.basic.dcefunc.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 22
Capability Shader
diff --git a/Test/baseResults/remap.basic.everything.frag.out b/Test/baseResults/remap.basic.everything.frag.out
index 858d629..0f7034a 100644
--- a/Test/baseResults/remap.basic.everything.frag.out
+++ b/Test/baseResults/remap.basic.everything.frag.out
@@ -1,6 +1,6 @@
remap.basic.everything.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 24969
Capability Shader
diff --git a/Test/baseResults/remap.basic.none.frag.out b/Test/baseResults/remap.basic.none.frag.out
index 1ad1d74..44790dd 100644
--- a/Test/baseResults/remap.basic.none.frag.out
+++ b/Test/baseResults/remap.basic.none.frag.out
@@ -1,6 +1,6 @@
remap.basic.none.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 22
Capability Shader
diff --git a/Test/baseResults/remap.basic.strip.frag.out b/Test/baseResults/remap.basic.strip.frag.out
index 3d876d0..05f16ba 100644
--- a/Test/baseResults/remap.basic.strip.frag.out
+++ b/Test/baseResults/remap.basic.strip.frag.out
@@ -1,6 +1,6 @@
remap.basic.strip.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 22
Capability Shader
diff --git a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
index 7f180a9..b9ce55e 100644
--- a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
+++ b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
@@ -2,7 +2,7 @@
WARNING: 0:4: 'immediate sampler state' : unimplemented
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 24878
Capability Shader
diff --git a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
index 577a135..71b7de0 100644
--- a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
+++ b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
@@ -2,7 +2,7 @@
WARNING: 0:4: 'immediate sampler state' : unimplemented
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 198
Capability Shader
diff --git a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
index d7aea9f..c65d237 100644
--- a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
+++ b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
@@ -2,7 +2,7 @@
WARNING: 0:4: 'immediate sampler state' : unimplemented
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 198
Capability Shader
diff --git a/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out
index aff0998..ea390b5 100644
--- a/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out
+++ b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out
@@ -1,6 +1,6 @@
remap.hlsl.templatetypes.everything.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 24954
Capability Shader
diff --git a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
index 282fd2a..32b4e7b 100644
--- a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
+++ b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
@@ -1,6 +1,6 @@
remap.hlsl.templatetypes.none.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 160
Capability Shader
diff --git a/Test/baseResults/remap.if.everything.frag.out b/Test/baseResults/remap.if.everything.frag.out
index cdb007b..26cc3dc 100644
--- a/Test/baseResults/remap.if.everything.frag.out
+++ b/Test/baseResults/remap.if.everything.frag.out
@@ -1,6 +1,6 @@
remap.if.everything.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 22855
Capability Shader
diff --git a/Test/baseResults/remap.if.none.frag.out b/Test/baseResults/remap.if.none.frag.out
index 0c8d278..48e8587 100644
--- a/Test/baseResults/remap.if.none.frag.out
+++ b/Test/baseResults/remap.if.none.frag.out
@@ -1,6 +1,6 @@
remap.if.none.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 25
Capability Shader
diff --git a/Test/baseResults/remap.similar_1a.everything.frag.out b/Test/baseResults/remap.similar_1a.everything.frag.out
index 2f8f1c7..6d5ce1c 100644
--- a/Test/baseResults/remap.similar_1a.everything.frag.out
+++ b/Test/baseResults/remap.similar_1a.everything.frag.out
@@ -1,6 +1,6 @@
remap.similar_1a.everything.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 24916
Capability Shader
@@ -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 --git a/Test/baseResults/remap.similar_1a.none.frag.out b/Test/baseResults/remap.similar_1a.none.frag.out
index 80d35c3..457f1be 100644
--- a/Test/baseResults/remap.similar_1a.none.frag.out
+++ b/Test/baseResults/remap.similar_1a.none.frag.out
@@ -1,6 +1,6 @@
remap.similar_1a.none.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 86
Capability Shader
@@ -124,6 +124,5 @@
68: 8(float) ConvertSToF 67
ReturnValue 68
43: Label
- 70: 8(float) Undef
- ReturnValue 70
+ Unreachable
FunctionEnd
diff --git a/Test/baseResults/remap.similar_1b.everything.frag.out b/Test/baseResults/remap.similar_1b.everything.frag.out
index c76c4bf..67425c6 100644
--- a/Test/baseResults/remap.similar_1b.everything.frag.out
+++ b/Test/baseResults/remap.similar_1b.everything.frag.out
@@ -1,6 +1,6 @@
remap.similar_1b.everything.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 24916
Capability Shader
@@ -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 --git a/Test/baseResults/remap.similar_1b.none.frag.out b/Test/baseResults/remap.similar_1b.none.frag.out
index 0a854d6..fe021e0 100644
--- a/Test/baseResults/remap.similar_1b.none.frag.out
+++ b/Test/baseResults/remap.similar_1b.none.frag.out
@@ -1,6 +1,6 @@
remap.similar_1b.none.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 91
Capability Shader
@@ -130,6 +130,5 @@
73: 8(float) ConvertSToF 72
ReturnValue 73
46: Label
- 75: 8(float) Undef
- ReturnValue 75
+ Unreachable
FunctionEnd
diff --git a/Test/baseResults/remap.specconst.comp.out b/Test/baseResults/remap.specconst.comp.out
index ee049f4..80d13b2 100644
--- a/Test/baseResults/remap.specconst.comp.out
+++ b/Test/baseResults/remap.specconst.comp.out
@@ -1,6 +1,6 @@
remap.specconst.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 16104
Capability Shader
diff --git a/Test/baseResults/remap.switch.everything.frag.out b/Test/baseResults/remap.switch.everything.frag.out
index ffd64d4..2362f67 100644
--- a/Test/baseResults/remap.switch.everything.frag.out
+++ b/Test/baseResults/remap.switch.everything.frag.out
@@ -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 --git a/Test/baseResults/remap.switch.none.frag.out b/Test/baseResults/remap.switch.none.frag.out
index 4dd7897..f8737b9 100644
--- a/Test/baseResults/remap.switch.none.frag.out
+++ b/Test/baseResults/remap.switch.none.frag.out
@@ -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 --git a/Test/baseResults/remap.uniformarray.everything.frag.out b/Test/baseResults/remap.uniformarray.everything.frag.out
index c1f306e..40429f2 100644
--- a/Test/baseResults/remap.uniformarray.everything.frag.out
+++ b/Test/baseResults/remap.uniformarray.everything.frag.out
@@ -1,6 +1,6 @@
remap.uniformarray.everything.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 25030
Capability Shader
diff --git a/Test/baseResults/remap.uniformarray.none.frag.out b/Test/baseResults/remap.uniformarray.none.frag.out
index 1087e5e..42d55b9 100644
--- a/Test/baseResults/remap.uniformarray.none.frag.out
+++ b/Test/baseResults/remap.uniformarray.none.frag.out
@@ -1,6 +1,6 @@
remap.uniformarray.none.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 53
Capability Shader
diff --git a/Test/baseResults/size b/Test/baseResults/size
index 4848776..47364a5 100644
--- a/Test/baseResults/size
+++ b/Test/baseResults/size
@@ -1 +1 @@
-388096 ../build/install/bin/glslangValidator.exe
+396288 ../build/install/bin/glslangValidator.exe
diff --git a/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out b/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out
index cffc3a4..105bbdb 100644
--- a/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out
+++ b/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out
@@ -1,6 +1,6 @@
spv.1.3.8bitstorage-ssbo.vert
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 28
Capability Shader
diff --git a/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out b/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out
index 7bdda4a..77c1565 100644
--- a/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out
+++ b/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out
@@ -1,6 +1,6 @@
spv.1.3.8bitstorage-ubo.vert
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 29
Capability Shader
diff --git a/Test/baseResults/spv.1.3.coopmat.comp.out b/Test/baseResults/spv.1.3.coopmat.comp.out
index c183847..29d914f 100644
--- a/Test/baseResults/spv.1.3.coopmat.comp.out
+++ b/Test/baseResults/spv.1.3.coopmat.comp.out
@@ -1,6 +1,6 @@
spv.1.3.coopmat.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 52
Capability Shader
diff --git a/Test/baseResults/spv.1.4.LoopControl.frag.out b/Test/baseResults/spv.1.4.LoopControl.frag.out
index c9a605b..008ef47 100644
--- a/Test/baseResults/spv.1.4.LoopControl.frag.out
+++ b/Test/baseResults/spv.1.4.LoopControl.frag.out
@@ -3,7 +3,7 @@
WARNING: 0:15: 'max_iterations' : expected a single integer argument
// Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 54
Capability Shader
diff --git a/Test/baseResults/spv.1.4.NonWritable.frag.out b/Test/baseResults/spv.1.4.NonWritable.frag.out
index 3f54661..0207ed2 100755
--- a/Test/baseResults/spv.1.4.NonWritable.frag.out
+++ b/Test/baseResults/spv.1.4.NonWritable.frag.out
@@ -1,6 +1,6 @@
spv.1.4.NonWritable.frag
// Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 38
Capability Shader
diff --git a/Test/baseResults/spv.1.4.OpCopyLogical.comp.out b/Test/baseResults/spv.1.4.OpCopyLogical.comp.out
index d80bfee..53e672f 100644
--- a/Test/baseResults/spv.1.4.OpCopyLogical.comp.out
+++ b/Test/baseResults/spv.1.4.OpCopyLogical.comp.out
@@ -1,6 +1,6 @@
spv.1.4.OpCopyLogical.comp
// Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 65
Capability Shader
diff --git a/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out b/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out
index 85bfdb2..d7509b1 100644
--- a/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out
+++ b/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out
@@ -1,6 +1,6 @@
spv.1.4.OpCopyLogical.funcall.frag
// Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 60
Capability Shader
diff --git a/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out b/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out
index f2f85c1..2b60625 100644
--- a/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out
+++ b/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out
@@ -1,6 +1,6 @@
spv.1.4.OpCopyLogicalBool.comp
// Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 135
Capability Shader
diff --git a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out
index 694cff0..f06960c 100644
--- a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out
+++ b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out
@@ -1,6 +1,6 @@
spv.1.4.OpEntryPoint.frag
// Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 64
Capability Shader
diff --git a/Test/baseResults/spv.1.4.OpSelect.frag.out b/Test/baseResults/spv.1.4.OpSelect.frag.out
index 3179717..6ba00a4 100755
--- a/Test/baseResults/spv.1.4.OpSelect.frag.out
+++ b/Test/baseResults/spv.1.4.OpSelect.frag.out
@@ -1,6 +1,6 @@
spv.1.4.OpSelect.frag
// Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 98
Capability Shader
diff --git a/Test/baseResults/spv.1.4.constructComposite.comp.out b/Test/baseResults/spv.1.4.constructComposite.comp.out
index 5c0f5cf..e514286 100644
--- a/Test/baseResults/spv.1.4.constructComposite.comp.out
+++ b/Test/baseResults/spv.1.4.constructComposite.comp.out
@@ -1,6 +1,6 @@
spv.1.4.constructComposite.comp
// Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 27
Capability Shader
diff --git a/Test/baseResults/spv.1.4.image.frag.out b/Test/baseResults/spv.1.4.image.frag.out
index 4adfd4b..98ffdcb 100755
--- a/Test/baseResults/spv.1.4.image.frag.out
+++ b/Test/baseResults/spv.1.4.image.frag.out
@@ -1,6 +1,6 @@
spv.1.4.image.frag
// Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 104
Capability Shader
diff --git a/Test/baseResults/spv.1.4.sparseTexture.frag.out b/Test/baseResults/spv.1.4.sparseTexture.frag.out
index 292335e..3b566c7 100755
--- a/Test/baseResults/spv.1.4.sparseTexture.frag.out
+++ b/Test/baseResults/spv.1.4.sparseTexture.frag.out
@@ -1,6 +1,6 @@
spv.1.4.sparseTexture.frag
// Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 213
Capability Shader
diff --git a/Test/baseResults/spv.1.4.texture.frag.out b/Test/baseResults/spv.1.4.texture.frag.out
index 7c2de0b..da3a24f 100755
--- a/Test/baseResults/spv.1.4.texture.frag.out
+++ b/Test/baseResults/spv.1.4.texture.frag.out
@@ -1,6 +1,6 @@
spv.1.4.texture.frag
// Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 79
Capability Shader
diff --git a/Test/baseResults/spv.100ops.frag.out b/Test/baseResults/spv.100ops.frag.out
index 8f656eb..d2b8f3e 100644
--- a/Test/baseResults/spv.100ops.frag.out
+++ b/Test/baseResults/spv.100ops.frag.out
@@ -1,6 +1,6 @@
spv.100ops.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 49
Capability Shader
diff --git a/Test/baseResults/spv.130.frag.out b/Test/baseResults/spv.130.frag.out
index 67e2b82..ca1f9e3 100644
--- a/Test/baseResults/spv.130.frag.out
+++ b/Test/baseResults/spv.130.frag.out
@@ -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 --git a/Test/baseResults/spv.140.frag.out b/Test/baseResults/spv.140.frag.out
index abfd13a..45b7510 100644
--- a/Test/baseResults/spv.140.frag.out
+++ b/Test/baseResults/spv.140.frag.out
@@ -1,7 +1,7 @@
spv.140.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 96
Capability Shader
diff --git a/Test/baseResults/spv.150.geom.out b/Test/baseResults/spv.150.geom.out
index 19bd725..ab05846 100644
--- a/Test/baseResults/spv.150.geom.out
+++ b/Test/baseResults/spv.150.geom.out
@@ -1,6 +1,6 @@
spv.150.geom
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 71
Capability Geometry
diff --git a/Test/baseResults/spv.150.vert.out b/Test/baseResults/spv.150.vert.out
index db058fa..9e1c9f4 100644
--- a/Test/baseResults/spv.150.vert.out
+++ b/Test/baseResults/spv.150.vert.out
@@ -1,6 +1,6 @@
spv.150.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 63
Capability Shader
diff --git a/Test/baseResults/spv.16bitstorage-int.frag.out b/Test/baseResults/spv.16bitstorage-int.frag.out
index c1aacb8..80733ce 100644
--- a/Test/baseResults/spv.16bitstorage-int.frag.out
+++ b/Test/baseResults/spv.16bitstorage-int.frag.out
@@ -1,6 +1,6 @@
spv.16bitstorage-int.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 171
Capability Shader
diff --git a/Test/baseResults/spv.16bitstorage-uint.frag.out b/Test/baseResults/spv.16bitstorage-uint.frag.out
index ba2e0c6..d4b1b75 100644
--- a/Test/baseResults/spv.16bitstorage-uint.frag.out
+++ b/Test/baseResults/spv.16bitstorage-uint.frag.out
@@ -1,6 +1,6 @@
spv.16bitstorage-uint.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 173
Capability Shader
diff --git a/Test/baseResults/spv.16bitstorage.frag.out b/Test/baseResults/spv.16bitstorage.frag.out
index 5530cf4..c73eb59 100644
--- a/Test/baseResults/spv.16bitstorage.frag.out
+++ b/Test/baseResults/spv.16bitstorage.frag.out
@@ -1,6 +1,6 @@
spv.16bitstorage.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 173
Capability Shader
diff --git a/Test/baseResults/spv.16bitxfb.vert.out b/Test/baseResults/spv.16bitxfb.vert.out
index 7d989c5..96cff79 100644
--- a/Test/baseResults/spv.16bitxfb.vert.out
+++ b/Test/baseResults/spv.16bitxfb.vert.out
@@ -1,6 +1,6 @@
spv.16bitxfb.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 59
Capability Shader
diff --git a/Test/baseResults/spv.300BuiltIns.vert.out b/Test/baseResults/spv.300BuiltIns.vert.out
index ee2c236..2633645 100644
--- a/Test/baseResults/spv.300BuiltIns.vert.out
+++ b/Test/baseResults/spv.300BuiltIns.vert.out
@@ -1,6 +1,6 @@
spv.300BuiltIns.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 42
Capability Shader
diff --git a/Test/baseResults/spv.300layout.frag.out b/Test/baseResults/spv.300layout.frag.out
index 10a6d00..db06955 100644
--- a/Test/baseResults/spv.300layout.frag.out
+++ b/Test/baseResults/spv.300layout.frag.out
@@ -1,6 +1,6 @@
spv.300layout.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 37
Capability Shader
diff --git a/Test/baseResults/spv.300layout.vert.out b/Test/baseResults/spv.300layout.vert.out
index 4d4d7ea..c97d217 100644
--- a/Test/baseResults/spv.300layout.vert.out
+++ b/Test/baseResults/spv.300layout.vert.out
@@ -1,6 +1,6 @@
spv.300layout.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 163
Capability Shader
diff --git a/Test/baseResults/spv.300layoutp.vert.out b/Test/baseResults/spv.300layoutp.vert.out
index e12041f..2b1ef83 100644
--- a/Test/baseResults/spv.300layoutp.vert.out
+++ b/Test/baseResults/spv.300layoutp.vert.out
@@ -1,6 +1,6 @@
spv.300layoutp.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 115
Capability Shader
diff --git a/Test/baseResults/spv.310.bitcast.frag.out b/Test/baseResults/spv.310.bitcast.frag.out
index d7a244f..e4f62b4 100644
--- a/Test/baseResults/spv.310.bitcast.frag.out
+++ b/Test/baseResults/spv.310.bitcast.frag.out
@@ -1,6 +1,6 @@
spv.310.bitcast.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 153
Capability Shader
diff --git a/Test/baseResults/spv.310.comp.out b/Test/baseResults/spv.310.comp.out
index bb8e6a7..3b90d41 100644
--- a/Test/baseResults/spv.310.comp.out
+++ b/Test/baseResults/spv.310.comp.out
@@ -1,6 +1,6 @@
spv.310.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 72
Capability Shader
diff --git a/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out
index 20b6fa2..6881084 100644
--- a/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out
+++ b/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out
@@ -1,6 +1,6 @@
spv.320.meshShaderUserDefined.mesh
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 140
Capability MeshShadingNV
diff --git a/Test/baseResults/spv.330.geom.out b/Test/baseResults/spv.330.geom.out
index 1ccbfb6..79e03b6 100644
--- a/Test/baseResults/spv.330.geom.out
+++ b/Test/baseResults/spv.330.geom.out
@@ -1,6 +1,6 @@
spv.330.geom
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 32
Capability Geometry
diff --git a/Test/baseResults/spv.400.frag.nanclamp.out b/Test/baseResults/spv.400.frag.nanclamp.out
index 5305ee4..448aa5e 100644
--- a/Test/baseResults/spv.400.frag.nanclamp.out
+++ b/Test/baseResults/spv.400.frag.nanclamp.out
@@ -1,6 +1,6 @@
spv.400.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 1118
Capability Shader
diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out
index 5433e4d..b2f4a16 100644
--- a/Test/baseResults/spv.400.frag.out
+++ b/Test/baseResults/spv.400.frag.out
@@ -1,7 +1,7 @@
spv.400.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 1118
Capability Shader
diff --git a/Test/baseResults/spv.400.tesc.out b/Test/baseResults/spv.400.tesc.out
index ce7c3af..e84b420 100644
--- a/Test/baseResults/spv.400.tesc.out
+++ b/Test/baseResults/spv.400.tesc.out
@@ -1,6 +1,6 @@
spv.400.tesc
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 92
Capability Tessellation
diff --git a/Test/baseResults/spv.400.tese.out b/Test/baseResults/spv.400.tese.out
index 43b6a91..5705fbd 100644
--- a/Test/baseResults/spv.400.tese.out
+++ b/Test/baseResults/spv.400.tese.out
@@ -1,6 +1,6 @@
spv.400.tese
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 96
Capability Tessellation
diff --git a/Test/baseResults/spv.420.geom.out b/Test/baseResults/spv.420.geom.out
index fa91dd8..c75ae5d 100644
--- a/Test/baseResults/spv.420.geom.out
+++ b/Test/baseResults/spv.420.geom.out
@@ -1,6 +1,6 @@
spv.420.geom
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 72
Capability Geometry
diff --git a/Test/baseResults/spv.430.frag.out b/Test/baseResults/spv.430.frag.out
index 330489f..96ab1e9 100644
--- a/Test/baseResults/spv.430.frag.out
+++ b/Test/baseResults/spv.430.frag.out
@@ -1,6 +1,6 @@
spv.430.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 24
Capability Shader
diff --git a/Test/baseResults/spv.430.vert.out b/Test/baseResults/spv.430.vert.out
index 1cd9e61..89e5b16 100644
--- a/Test/baseResults/spv.430.vert.out
+++ b/Test/baseResults/spv.430.vert.out
@@ -1,6 +1,6 @@
spv.430.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 66
Capability Shader
diff --git a/Test/baseResults/spv.450.geom.out b/Test/baseResults/spv.450.geom.out
index 7713e54..1e7e8c5 100644
--- a/Test/baseResults/spv.450.geom.out
+++ b/Test/baseResults/spv.450.geom.out
@@ -1,6 +1,6 @@
spv.450.geom
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 31
Capability Geometry
diff --git a/Test/baseResults/spv.450.noRedecl.tesc.out b/Test/baseResults/spv.450.noRedecl.tesc.out
index b23061d..31c7b4d 100644
--- a/Test/baseResults/spv.450.noRedecl.tesc.out
+++ b/Test/baseResults/spv.450.noRedecl.tesc.out
@@ -1,6 +1,6 @@
spv.450.noRedecl.tesc
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 21
Capability Tessellation
diff --git a/Test/baseResults/spv.450.tesc.out b/Test/baseResults/spv.450.tesc.out
index 35653fd..0c22d9a 100644
--- a/Test/baseResults/spv.450.tesc.out
+++ b/Test/baseResults/spv.450.tesc.out
@@ -1,6 +1,6 @@
spv.450.tesc
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 45
Capability Tessellation
diff --git a/Test/baseResults/spv.460.comp.out b/Test/baseResults/spv.460.comp.out
index 6ebf49f..0925674 100644
--- a/Test/baseResults/spv.460.comp.out
+++ b/Test/baseResults/spv.460.comp.out
@@ -1,6 +1,6 @@
spv.460.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 15
Capability Shader
diff --git a/Test/baseResults/spv.460.frag.out b/Test/baseResults/spv.460.frag.out
index 04393fb..067bd43 100644
--- a/Test/baseResults/spv.460.frag.out
+++ b/Test/baseResults/spv.460.frag.out
@@ -1,6 +1,6 @@
spv.460.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 32
Capability Shader
diff --git a/Test/baseResults/spv.460.vert.out b/Test/baseResults/spv.460.vert.out
index c2ef302..a73b7e1 100644
--- a/Test/baseResults/spv.460.vert.out
+++ b/Test/baseResults/spv.460.vert.out
@@ -1,6 +1,6 @@
spv.460.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 20
Capability Shader
diff --git a/Test/baseResults/spv.8bit-16bit-construction.frag.out b/Test/baseResults/spv.8bit-16bit-construction.frag.out
new file mode 100644
index 0000000..6cb9dc1
--- /dev/null
+++ b/Test/baseResults/spv.8bit-16bit-construction.frag.out
@@ -0,0 +1,82 @@
+spv.8bit-16bit-construction.frag
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 43
+
+ Capability Shader
+ Capability StorageUniformBufferBlock16
+ Capability UniformAndStorageBuffer8BitAccess
+ Extension "SPV_KHR_16bit_storage"
+ Extension "SPV_KHR_8bit_storage"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_EXT_shader_16bit_storage"
+ SourceExtension "GL_EXT_shader_8bit_storage"
+ Name 4 "main"
+ Name 11 "B"
+ MemberName 11(B) 0 "i8_from_i16"
+ MemberName 11(B) 1 "i16_from_i8"
+ MemberName 11(B) 2 "u8_from_u16"
+ MemberName 11(B) 3 "u16_from_u8"
+ MemberName 11(B) 4 "f16_from_i8"
+ Name 13 ""
+ MemberDecorate 11(B) 0 Offset 0
+ MemberDecorate 11(B) 1 Offset 2
+ MemberDecorate 11(B) 2 Offset 4
+ MemberDecorate 11(B) 3 Offset 6
+ MemberDecorate 11(B) 4 Offset 8
+ Decorate 11(B) BufferBlock
+ Decorate 13 DescriptorSet 0
+ Decorate 13 Binding 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 8 1
+ 7: TypeInt 16 1
+ 8: TypeInt 8 0
+ 9: TypeInt 16 0
+ 10: TypeFloat 16
+ 11(B): TypeStruct 6(int8_t) 7(int16_t) 8(int8_t) 9(int16_t) 10(float16_t)
+ 12: TypePointer Uniform 11(B)
+ 13: 12(ptr) Variable Uniform
+ 14: TypeInt 32 1
+ 15: 14(int) Constant 0
+ 16: 14(int) Constant 1
+ 19: TypePointer Uniform 6(int8_t)
+ 23: TypePointer Uniform 7(int16_t)
+ 25: 14(int) Constant 2
+ 26: TypeInt 32 0
+ 27: 26(int) Constant 1
+ 30: TypePointer Uniform 8(int8_t)
+ 32: 14(int) Constant 3
+ 35: TypePointer Uniform 9(int16_t)
+ 37: 14(int) Constant 4
+ 39: TypeFloat 32
+ 41: TypePointer Uniform 10(float16_t)
+ 4(main): 2 Function None 3
+ 5: Label
+ 17: 7(int16_t) SConvert 16
+ 18: 6(int8_t) SConvert 17
+ 20: 19(ptr) AccessChain 13 15
+ Store 20 18
+ 21: 6(int8_t) SConvert 16
+ 22: 7(int16_t) SConvert 21
+ 24: 23(ptr) AccessChain 13 16
+ Store 24 22
+ 28: 9(int16_t) UConvert 27
+ 29: 8(int8_t) UConvert 28
+ 31: 30(ptr) AccessChain 13 25
+ Store 31 29
+ 33: 8(int8_t) UConvert 27
+ 34: 9(int16_t) UConvert 33
+ 36: 35(ptr) AccessChain 13 32
+ Store 36 34
+ 38: 6(int8_t) SConvert 16
+ 40:10(float16_t) FConvert 38
+ 42: 41(ptr) AccessChain 13 37
+ Store 42 40
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.8bitstorage-int.frag.out b/Test/baseResults/spv.8bitstorage-int.frag.out
index 47e854f..54a47af 100644
--- a/Test/baseResults/spv.8bitstorage-int.frag.out
+++ b/Test/baseResults/spv.8bitstorage-int.frag.out
@@ -1,6 +1,6 @@
spv.8bitstorage-int.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 171
Capability Shader
diff --git a/Test/baseResults/spv.8bitstorage-ssbo.vert.out b/Test/baseResults/spv.8bitstorage-ssbo.vert.out
index d0379fa..274639b 100644
--- a/Test/baseResults/spv.8bitstorage-ssbo.vert.out
+++ b/Test/baseResults/spv.8bitstorage-ssbo.vert.out
@@ -1,6 +1,6 @@
spv.8bitstorage-ssbo.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 28
Capability Shader
diff --git a/Test/baseResults/spv.8bitstorage-ubo.vert.out b/Test/baseResults/spv.8bitstorage-ubo.vert.out
index c5ec89d..af95a76 100644
--- a/Test/baseResults/spv.8bitstorage-ubo.vert.out
+++ b/Test/baseResults/spv.8bitstorage-ubo.vert.out
@@ -1,6 +1,6 @@
spv.8bitstorage-ubo.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 29
Capability Shader
diff --git a/Test/baseResults/spv.8bitstorage-uint.frag.out b/Test/baseResults/spv.8bitstorage-uint.frag.out
index a66c6a3..6565882 100644
--- a/Test/baseResults/spv.8bitstorage-uint.frag.out
+++ b/Test/baseResults/spv.8bitstorage-uint.frag.out
@@ -1,6 +1,6 @@
spv.8bitstorage-uint.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 173
Capability Shader
diff --git a/Test/baseResults/spv.AnyHitShader.rahit.out b/Test/baseResults/spv.AnyHitShader.rahit.out
index 92b31d0..6bef52d 100644
--- a/Test/baseResults/spv.AnyHitShader.rahit.out
+++ b/Test/baseResults/spv.AnyHitShader.rahit.out
@@ -1,13 +1,13 @@
spv.AnyHitShader.rahit
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 81
Capability RayTracingNV
Extension "SPV_NV_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint AnyHitNV 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67
+ EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67
Source GLSL 460
SourceExtension "GL_NV_ray_tracing"
Name 4 "main"
@@ -42,21 +42,21 @@
Name 66 "v14"
Name 67 "gl_WorldToObjectNV"
Name 71 "incomingPayload"
- Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
- Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
+ Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR
+ Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
Decorate 23(gl_InstanceID) BuiltIn InstanceId
- Decorate 26(gl_InstanceCustomIndexNV) BuiltIn InstanceCustomIndexNV
- Decorate 33(gl_WorldRayOriginNV) BuiltIn WorldRayOriginNV
- Decorate 36(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionNV
- Decorate 39(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginNV
- Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionNV
- Decorate 47(gl_RayTminNV) BuiltIn RayTminNV
- Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxNV
- Decorate 53(gl_HitTNV) BuiltIn HitTNV
- Decorate 58(gl_HitKindNV) BuiltIn HitKindNV
- Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldNV
- Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectNV
+ Decorate 26(gl_InstanceCustomIndexNV) BuiltIn InstanceCustomIndexKHR
+ Decorate 33(gl_WorldRayOriginNV) BuiltIn WorldRayOriginKHR
+ Decorate 36(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionKHR
+ Decorate 39(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginKHR
+ Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR
+ Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR
+ Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR
+ Decorate 53(gl_HitTNV) BuiltIn HitTKHR
+ Decorate 58(gl_HitKindNV) BuiltIn HitKindKHR
+ Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR
+ Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR
Decorate 71(incomingPayload) Location 1
2: TypeVoid
3: TypeFunction 2
@@ -94,8 +94,8 @@
64(gl_ObjectToWorldNV): 63(ptr) Variable Input
67(gl_WorldToObjectNV): 63(ptr) Variable Input
69: TypeVector 28(float) 4
- 70: TypePointer IncomingRayPayloadNV 69(fvec4)
-71(incomingPayload): 70(ptr) Variable IncomingRayPayloadNV
+ 70: TypePointer IncomingRayPayloadKHR 69(fvec4)
+71(incomingPayload): 70(ptr) Variable IncomingRayPayloadKHR
72: 28(float) Constant 1056964608
73: 69(fvec4) ConstantComposite 72 72 72 72
75: 16(int) Constant 1
@@ -153,10 +153,10 @@
SelectionMerge 79 None
BranchConditional 77 78 80
78: Label
- IgnoreIntersectionNV
+ IgnoreIntersectionKHR
Branch 79
80: Label
- TerminateRayNV
+ TerminateRayKHR
Branch 79
79: Label
Return
diff --git a/Test/baseResults/spv.AofA.frag.out b/Test/baseResults/spv.AofA.frag.out
index 7433f17..c9f8b46 100644
--- a/Test/baseResults/spv.AofA.frag.out
+++ b/Test/baseResults/spv.AofA.frag.out
@@ -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 --git a/Test/baseResults/spv.ClosestHitShader.rchit.out b/Test/baseResults/spv.ClosestHitShader.rchit.out
index b461462..cefdc50 100644
--- a/Test/baseResults/spv.ClosestHitShader.rchit.out
+++ b/Test/baseResults/spv.ClosestHitShader.rchit.out
@@ -1,13 +1,13 @@
spv.ClosestHitShader.rchit
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 88
Capability RayTracingNV
Extension "SPV_NV_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint ClosestHitNV 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67
+ EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67
Source GLSL 460
SourceExtension "GL_NV_ray_tracing"
Name 4 "main"
@@ -44,21 +44,21 @@
Name 71 "accNV"
Name 85 "localPayload"
Name 87 "incomingPayload"
- Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
- Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
+ Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR
+ Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
Decorate 23(gl_InstanceID) BuiltIn InstanceId
- Decorate 26(gl_InstanceCustomIndexNV) BuiltIn InstanceCustomIndexNV
- Decorate 33(gl_WorldRayOriginNV) BuiltIn WorldRayOriginNV
- Decorate 36(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionNV
- Decorate 39(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginNV
- Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionNV
- Decorate 47(gl_RayTminNV) BuiltIn RayTminNV
- Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxNV
- Decorate 53(gl_HitTNV) BuiltIn HitTNV
- Decorate 58(gl_HitKindNV) BuiltIn HitKindNV
- Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldNV
- Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectNV
+ Decorate 26(gl_InstanceCustomIndexNV) BuiltIn InstanceCustomIndexKHR
+ Decorate 33(gl_WorldRayOriginNV) BuiltIn WorldRayOriginKHR
+ Decorate 36(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionKHR
+ Decorate 39(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginKHR
+ Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR
+ Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR
+ Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR
+ Decorate 53(gl_HitTNV) BuiltIn HitTKHR
+ Decorate 58(gl_HitKindNV) BuiltIn HitKindKHR
+ Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR
+ Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR
Decorate 71(accNV) DescriptorSet 0
Decorate 71(accNV) Binding 0
Decorate 85(localPayload) Location 0
@@ -98,7 +98,7 @@
63: TypePointer Input 60
64(gl_ObjectToWorldNV): 63(ptr) Variable Input
67(gl_WorldToObjectNV): 63(ptr) Variable Input
- 69: TypeAccelerationStructureNV
+ 69: TypeAccelerationStructureKHR
70: TypePointer UniformConstant 69
71(accNV): 70(ptr) Variable UniformConstant
73: 6(int) Constant 0
@@ -112,10 +112,10 @@
81: 28(float) Constant 1061158912
82: 16(int) Constant 1
83: TypeVector 28(float) 4
- 84: TypePointer RayPayloadNV 83(fvec4)
-85(localPayload): 84(ptr) Variable RayPayloadNV
- 86: TypePointer IncomingRayPayloadNV 83(fvec4)
-87(incomingPayload): 86(ptr) Variable IncomingRayPayloadNV
+ 84: TypePointer RayPayloadKHR 83(fvec4)
+85(localPayload): 84(ptr) Variable RayPayloadKHR
+ 86: TypePointer IncomingRayPayloadKHR 83(fvec4)
+87(incomingPayload): 86(ptr) Variable IncomingRayPayloadKHR
4(main): 2 Function None 3
5: Label
9(v0): 8(ptr) Variable Function
@@ -164,6 +164,6 @@
68: 60 Load 67(gl_WorldToObjectNV)
Store 66(v14) 68
72: 69 Load 71(accNV)
- TraceNV 72 73 74 75 76 73 78 77 80 81 82
+ TraceRayKHR 72 73 74 75 76 73 78 77 80 81 82
Return
FunctionEnd
diff --git a/Test/baseResults/spv.GeometryShaderPassthrough.geom.out b/Test/baseResults/spv.GeometryShaderPassthrough.geom.out
index 5db845e..7e62c57 100644
--- a/Test/baseResults/spv.GeometryShaderPassthrough.geom.out
+++ b/Test/baseResults/spv.GeometryShaderPassthrough.geom.out
@@ -1,6 +1,6 @@
spv.GeometryShaderPassthrough.geom
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 15
Capability Geometry
diff --git a/Test/baseResults/spv.IntersectShader.rint.out b/Test/baseResults/spv.IntersectShader.rint.out
index cbb70cd..bf99241 100644
--- a/Test/baseResults/spv.IntersectShader.rint.out
+++ b/Test/baseResults/spv.IntersectShader.rint.out
@@ -1,13 +1,13 @@
spv.IntersectShader.rint
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 71
Capability RayTracingNV
Extension "SPV_NV_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint IntersectionNV 4 "main" 11 14 20 23 26 33 36 39 42 47 50 56 59
+ EntryPoint IntersectionKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 56 59
Source GLSL 460
SourceExtension "GL_NV_ray_tracing"
Name 4 "main"
@@ -38,19 +38,19 @@
Name 58 "v12"
Name 59 "gl_WorldToObjectNV"
Name 63 "iAttr"
- Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
- Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
+ Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR
+ Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
Decorate 23(gl_InstanceID) BuiltIn InstanceId
- Decorate 26(gl_InstanceCustomIndexNV) BuiltIn InstanceCustomIndexNV
- Decorate 33(gl_WorldRayOriginNV) BuiltIn WorldRayOriginNV
- Decorate 36(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionNV
- Decorate 39(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginNV
- Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionNV
- Decorate 47(gl_RayTminNV) BuiltIn RayTminNV
- Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxNV
- Decorate 56(gl_ObjectToWorldNV) BuiltIn ObjectToWorldNV
- Decorate 59(gl_WorldToObjectNV) BuiltIn WorldToObjectNV
+ Decorate 26(gl_InstanceCustomIndexNV) BuiltIn InstanceCustomIndexKHR
+ Decorate 33(gl_WorldRayOriginNV) BuiltIn WorldRayOriginKHR
+ Decorate 36(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionKHR
+ Decorate 39(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginKHR
+ Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR
+ Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR
+ Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR
+ Decorate 56(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR
+ Decorate 59(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -83,8 +83,8 @@
56(gl_ObjectToWorldNV): 55(ptr) Variable Input
59(gl_WorldToObjectNV): 55(ptr) Variable Input
61: TypeVector 28(float) 4
- 62: TypePointer HitAttributeNV 61(fvec4)
- 63(iAttr): 62(ptr) Variable HitAttributeNV
+ 62: TypePointer HitAttributeKHR 61(fvec4)
+ 63(iAttr): 62(ptr) Variable HitAttributeKHR
64: 28(float) Constant 1056964608
65: 28(float) Constant 0
66: 28(float) Constant 1065353216
@@ -133,6 +133,6 @@
60: 52 Load 59(gl_WorldToObjectNV)
Store 58(v12) 60
Store 63(iAttr) 67
- 70: 69(bool) ReportIntersectionNV 64 68
+ 70: 69(bool) ReportIntersectionKHR 64 68
Return
FunctionEnd
diff --git a/Test/baseResults/spv.MissShader.rmiss.out b/Test/baseResults/spv.MissShader.rmiss.out
index 0ad3341..b811044 100644
--- a/Test/baseResults/spv.MissShader.rmiss.out
+++ b/Test/baseResults/spv.MissShader.rmiss.out
@@ -1,13 +1,13 @@
spv.MissShader.rmiss
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 60
Capability RayTracingNV
Extension "SPV_NV_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint MissNV 4 "main" 11 14 21 24 27 30 35 38
+ EntryPoint MissKHR 4 "main" 11 14 21 24 27 30 35 38
Source GLSL 460
SourceExtension "GL_NV_ray_tracing"
Name 4 "main"
@@ -30,14 +30,14 @@
Name 42 "accNV"
Name 57 "localPayload"
Name 59 "incomingPayload"
- Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
- Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
- Decorate 21(gl_WorldRayOriginNV) BuiltIn WorldRayOriginNV
- Decorate 24(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionNV
- Decorate 27(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginNV
- Decorate 30(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionNV
- Decorate 35(gl_RayTminNV) BuiltIn RayTminNV
- Decorate 38(gl_RayTmaxNV) BuiltIn RayTmaxNV
+ Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR
+ Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
+ Decorate 21(gl_WorldRayOriginNV) BuiltIn WorldRayOriginKHR
+ Decorate 24(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionKHR
+ Decorate 27(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginKHR
+ Decorate 30(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR
+ Decorate 35(gl_RayTminNV) BuiltIn RayTminKHR
+ Decorate 38(gl_RayTmaxNV) BuiltIn RayTmaxKHR
Decorate 42(accNV) DescriptorSet 0
Decorate 42(accNV) Binding 0
Decorate 57(localPayload) Location 0
@@ -62,7 +62,7 @@
34: TypePointer Input 16(float)
35(gl_RayTminNV): 34(ptr) Variable Input
38(gl_RayTmaxNV): 34(ptr) Variable Input
- 40: TypeAccelerationStructureNV
+ 40: TypeAccelerationStructureKHR
41: TypePointer UniformConstant 40
42(accNV): 41(ptr) Variable UniformConstant
44: 6(int) Constant 0
@@ -77,10 +77,10 @@
53: TypeInt 32 1
54: 53(int) Constant 1
55: TypeVector 16(float) 4
- 56: TypePointer RayPayloadNV 55(fvec4)
-57(localPayload): 56(ptr) Variable RayPayloadNV
- 58: TypePointer IncomingRayPayloadNV 55(fvec4)
-59(incomingPayload): 58(ptr) Variable IncomingRayPayloadNV
+ 56: TypePointer RayPayloadKHR 55(fvec4)
+57(localPayload): 56(ptr) Variable RayPayloadKHR
+ 58: TypePointer IncomingRayPayloadKHR 55(fvec4)
+59(incomingPayload): 58(ptr) Variable IncomingRayPayloadKHR
4(main): 2 Function None 3
5: Label
9(v0): 8(ptr) Variable Function
@@ -108,6 +108,6 @@
39: 16(float) Load 38(gl_RayTmaxNV)
Store 37(v7) 39
43: 40 Load 42(accNV)
- TraceNV 43 44 45 46 47 44 49 48 51 52 54
+ TraceRayKHR 43 44 45 46 47 44 49 48 51 52 54
Return
FunctionEnd
diff --git a/Test/baseResults/spv.OVR_multiview.vert.out b/Test/baseResults/spv.OVR_multiview.vert.out
index 7013ced..66168dc 100644
--- a/Test/baseResults/spv.OVR_multiview.vert.out
+++ b/Test/baseResults/spv.OVR_multiview.vert.out
@@ -1,6 +1,6 @@
spv.OVR_multiview.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 27
Capability Shader
diff --git a/Test/baseResults/spv.Operations.frag.out b/Test/baseResults/spv.Operations.frag.out
index 4113ddf..ad54f6c 100644
--- a/Test/baseResults/spv.Operations.frag.out
+++ b/Test/baseResults/spv.Operations.frag.out
@@ -1,12 +1,12 @@
spv.Operations.frag
// Module Version 10000
-// Generated by (magic number): 80007
-// Id's are bound by 532
+// Generated by (magic number): 80008
+// Id's are bound by 583
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 11 22 212 288 485 526 531
+ EntryPoint Fragment 4 "main" 11 22 220 296 314 539 580
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
@@ -14,23 +14,29 @@
Name 11 "uv4"
Name 20 "i"
Name 22 "ui"
- Name 181 "ub41"
- Name 188 "f"
- Name 212 "uf"
- Name 285 "u"
- Name 288 "uui"
- Name 305 "b"
- Name 342 "ub42"
- Name 485 "FragColor"
- Name 503 "m1"
- Name 510 "m2"
- Name 526 "uiv4"
- Name 528 "ub"
- Name 531 "uuv4"
+ Name 155 "swizzleTemp"
+ Name 189 "ub41"
+ Name 196 "f"
+ Name 220 "uf"
+ Name 293 "u"
+ Name 296 "uui"
+ Name 314 "uuv4"
+ Name 321 "msb"
+ Name 323 "swizzleTemp"
+ Name 324 "lsb"
+ Name 325 "swizzleTemp"
+ Name 326 "ResType"
+ Name 359 "b"
+ Name 396 "ub42"
+ Name 539 "FragColor"
+ Name 557 "m1"
+ Name 564 "m2"
+ Name 580 "uiv4"
+ Name 582 "ub"
Decorate 22(ui) Flat
- Decorate 288(uui) Flat
- Decorate 526(uiv4) Flat
- Decorate 531(uuv4) Flat
+ Decorate 296(uui) Flat
+ Decorate 314(uuv4) Flat
+ Decorate 580(uiv4) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -45,55 +51,66 @@
141: TypeInt 32 0
142: 141(int) Constant 0
143: TypePointer Function 6(float)
- 178: TypeBool
- 179: TypeVector 178(bool) 4
- 180: TypePointer Private 179(bvec4)
- 181(ub41): 180(ptr) Variable Private
- 211: TypePointer Input 6(float)
- 212(uf): 211(ptr) Variable Input
- 284: TypePointer Function 141(int)
- 287: TypePointer Input 141(int)
- 288(uui): 287(ptr) Variable Input
- 304: TypePointer Function 178(bool)
- 342(ub42): 180(ptr) Variable Private
- 398: 18(int) Constant 2
- 405: 18(int) Constant 1
- 435: TypeVector 6(float) 3
- 454: 6(float) Constant 1073741824
- 461: 6(float) Constant 1065353216
- 466: 18(int) Constant 66
- 472: 18(int) Constant 17
- 484: TypePointer Output 7(fvec4)
- 485(FragColor): 484(ptr) Variable Output
- 501: TypeMatrix 7(fvec4) 4
- 502: TypePointer Function 501
- 504: 6(float) Constant 0
- 505: 7(fvec4) ConstantComposite 461 504 504 504
- 506: 7(fvec4) ConstantComposite 504 461 504 504
- 507: 7(fvec4) ConstantComposite 504 504 461 504
- 508: 7(fvec4) ConstantComposite 504 504 504 461
- 509: 501 ConstantComposite 505 506 507 508
- 511: 7(fvec4) ConstantComposite 504 504 504 504
- 512: 501 ConstantComposite 511 511 511 511
- 524: TypeVector 18(int) 4
- 525: TypePointer Input 524(ivec4)
- 526(uiv4): 525(ptr) Variable Input
- 527: TypePointer Private 178(bool)
- 528(ub): 527(ptr) Variable Private
- 529: TypeVector 141(int) 4
- 530: TypePointer Input 529(ivec4)
- 531(uuv4): 530(ptr) Variable Input
+ 186: TypeBool
+ 187: TypeVector 186(bool) 4
+ 188: TypePointer Private 187(bvec4)
+ 189(ub41): 188(ptr) Variable Private
+ 219: TypePointer Input 6(float)
+ 220(uf): 219(ptr) Variable Input
+ 292: TypePointer Function 141(int)
+ 295: TypePointer Input 141(int)
+ 296(uui): 295(ptr) Variable Input
+ 312: TypeVector 141(int) 4
+ 313: TypePointer Input 312(ivec4)
+ 314(uuv4): 313(ptr) Variable Input
+ 315: TypeVector 141(int) 3
+ 320: TypePointer Function 312(ivec4)
+ 322: TypePointer Function 315(ivec3)
+ 326(ResType): TypeStruct 315(ivec3) 315(ivec3)
+ 338: 141(int) Constant 1
+ 342: 141(int) Constant 2
+ 358: TypePointer Function 186(bool)
+ 396(ub42): 188(ptr) Variable Private
+ 452: 18(int) Constant 2
+ 459: 18(int) Constant 1
+ 489: TypeVector 6(float) 3
+ 508: 6(float) Constant 1073741824
+ 515: 6(float) Constant 1065353216
+ 520: 18(int) Constant 66
+ 526: 18(int) Constant 17
+ 538: TypePointer Output 7(fvec4)
+ 539(FragColor): 538(ptr) Variable Output
+ 555: TypeMatrix 7(fvec4) 4
+ 556: TypePointer Function 555
+ 558: 6(float) Constant 0
+ 559: 7(fvec4) ConstantComposite 515 558 558 558
+ 560: 7(fvec4) ConstantComposite 558 515 558 558
+ 561: 7(fvec4) ConstantComposite 558 558 515 558
+ 562: 7(fvec4) ConstantComposite 558 558 558 515
+ 563: 555 ConstantComposite 559 560 561 562
+ 565: 7(fvec4) ConstantComposite 558 558 558 558
+ 566: 555 ConstantComposite 565 565 565 565
+ 578: TypeVector 18(int) 4
+ 579: TypePointer Input 578(ivec4)
+ 580(uiv4): 579(ptr) Variable Input
+ 581: TypePointer Private 186(bool)
+ 582(ub): 581(ptr) Variable Private
4(main): 2 Function None 3
5: Label
9(v): 8(ptr) Variable Function
20(i): 19(ptr) Variable Function
- 188(f): 143(ptr) Variable Function
- 285(u): 284(ptr) Variable Function
- 305(b): 304(ptr) Variable Function
- 487: 8(ptr) Variable Function
- 503(m1): 502(ptr) Variable Function
- 510(m2): 502(ptr) Variable Function
- 514: 502(ptr) Variable Function
+155(swizzleTemp): 8(ptr) Variable Function
+ 196(f): 143(ptr) Variable Function
+ 293(u): 292(ptr) Variable Function
+ 321(msb): 320(ptr) Variable Function
+323(swizzleTemp): 322(ptr) Variable Function
+ 324(lsb): 320(ptr) Variable Function
+325(swizzleTemp): 322(ptr) Variable Function
+ 359(b): 358(ptr) Variable Function
+ 541: 8(ptr) Variable Function
+ 557(m1): 556(ptr) Variable Function
+ 564(m2): 556(ptr) Variable Function
+ 568: 556(ptr) Variable Function
12: 7(fvec4) Load 11(uv4)
13: 7(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 12
Store 9(v) 13
@@ -262,441 +279,489 @@
153: 7(fvec4) FAdd 152 151
Store 9(v) 153
154: 7(fvec4) Load 9(v)
- 155: 7(fvec4) Load 11(uv4)
- 156: 7(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 154 155
- 157: 7(fvec4) Load 9(v)
- 158: 7(fvec4) FAdd 157 156
- Store 9(v) 158
- 159: 7(fvec4) Load 9(v)
- 160: 7(fvec4) Load 11(uv4)
- 161: 7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 159 160
+ 156: 7(fvec4) ExtInst 1(GLSL.std.450) 35(Modf) 154 155(swizzleTemp)
+ 157: 7(fvec4) Load 155(swizzleTemp)
+ 158: 7(fvec4) Load 9(v)
+ 159: 7(fvec4) VectorShuffle 158 157 6 4 5 7
+ Store 9(v) 159
+ 160: 7(fvec4) Load 9(v)
+ 161: 7(fvec4) FAdd 160 156
+ Store 9(v) 161
162: 7(fvec4) Load 9(v)
- 163: 7(fvec4) FAdd 162 161
- Store 9(v) 163
- 164: 7(fvec4) Load 9(v)
- 165: 7(fvec4) Load 11(uv4)
- 166: 7(fvec4) Load 11(uv4)
- 167: 7(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 164 165 166
- 168: 7(fvec4) Load 9(v)
- 169: 7(fvec4) FAdd 168 167
- Store 9(v) 169
+ 163: 7(fvec4) Load 11(uv4)
+ 164: 7(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 162 163
+ 165: 7(fvec4) Load 9(v)
+ 166: 7(fvec4) FAdd 165 164
+ Store 9(v) 166
+ 167: 7(fvec4) Load 9(v)
+ 168: 7(fvec4) Load 11(uv4)
+ 169: 7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 167 168
170: 7(fvec4) Load 9(v)
- 171: 7(fvec4) Load 9(v)
+ 171: 7(fvec4) FAdd 170 169
+ Store 9(v) 171
172: 7(fvec4) Load 9(v)
- 173: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 170 171 172
- 174: 7(fvec4) Load 9(v)
- 175: 7(fvec4) FAdd 174 173
- Store 9(v) 175
+ 173: 7(fvec4) Load 11(uv4)
+ 174: 7(fvec4) Load 11(uv4)
+ 175: 7(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 172 173 174
176: 7(fvec4) Load 9(v)
- 177: 7(fvec4) Load 9(v)
- 182: 179(bvec4) Load 181(ub41)
- 183: 7(fvec4) Select 182 177 176
+ 177: 7(fvec4) FAdd 176 175
+ Store 9(v) 177
+ 178: 7(fvec4) Load 9(v)
+ 179: 7(fvec4) Load 9(v)
+ 180: 7(fvec4) Load 9(v)
+ 181: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 178 179 180
+ 182: 7(fvec4) Load 9(v)
+ 183: 7(fvec4) FAdd 182 181
+ Store 9(v) 183
184: 7(fvec4) Load 9(v)
- 185: 7(fvec4) FAdd 184 183
- Store 9(v) 185
- 186: 7(fvec4) Load 9(v)
- 187: 7(fvec4) Load 9(v)
- 189: 6(float) Load 188(f)
- 190: 7(fvec4) CompositeConstruct 189 189 189 189
- 191: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 186 187 190
+ 185: 7(fvec4) Load 9(v)
+ 190: 187(bvec4) Load 189(ub41)
+ 191: 7(fvec4) Select 190 185 184
192: 7(fvec4) Load 9(v)
193: 7(fvec4) FAdd 192 191
Store 9(v) 193
194: 7(fvec4) Load 9(v)
- 195: 7(fvec4) Load 11(uv4)
- 196: 7(fvec4) Load 9(v)
- 197: 7(fvec4) ExtInst 1(GLSL.std.450) 50(Fma) 194 195 196
- 198: 7(fvec4) Load 9(v)
- 199: 7(fvec4) FAdd 198 197
- Store 9(v) 199
+ 195: 7(fvec4) Load 9(v)
+ 197: 6(float) Load 196(f)
+ 198: 7(fvec4) CompositeConstruct 197 197 197 197
+ 199: 7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 194 195 198
200: 7(fvec4) Load 9(v)
- 201: 7(fvec4) Load 9(v)
- 202: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 200 201
- 203: 7(fvec4) Load 9(v)
- 204: 7(fvec4) FAdd 203 202
- Store 9(v) 204
- 205: 7(fvec4) Load 9(v)
+ 201: 7(fvec4) FAdd 200 199
+ Store 9(v) 201
+ 202: 7(fvec4) Load 9(v)
+ 203: 7(fvec4) Load 11(uv4)
+ 204: 7(fvec4) Load 9(v)
+ 205: 7(fvec4) ExtInst 1(GLSL.std.450) 50(Fma) 202 203 204
206: 7(fvec4) Load 9(v)
- 207: 7(fvec4) Load 9(v)
- 208: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 205 206 207
+ 207: 7(fvec4) FAdd 206 205
+ Store 9(v) 207
+ 208: 7(fvec4) Load 9(v)
209: 7(fvec4) Load 9(v)
- 210: 7(fvec4) FAdd 209 208
- Store 9(v) 210
- 213: 6(float) Load 212(uf)
+ 210: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 208 209
+ 211: 7(fvec4) Load 9(v)
+ 212: 7(fvec4) FAdd 211 210
+ Store 9(v) 212
+ 213: 7(fvec4) Load 9(v)
214: 7(fvec4) Load 9(v)
- 215: 7(fvec4) CompositeConstruct 213 213 213 213
- 216: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 215 214
+ 215: 7(fvec4) Load 9(v)
+ 216: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 213 214 215
217: 7(fvec4) Load 9(v)
218: 7(fvec4) FAdd 217 216
Store 9(v) 218
- 219: 6(float) Load 212(uf)
- 220: 6(float) Load 212(uf)
- 221: 7(fvec4) Load 9(v)
- 222: 7(fvec4) CompositeConstruct 219 219 219 219
- 223: 7(fvec4) CompositeConstruct 220 220 220 220
- 224: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 222 223 221
+ 221: 6(float) Load 220(uf)
+ 222: 7(fvec4) Load 9(v)
+ 223: 7(fvec4) CompositeConstruct 221 221 221 221
+ 224: 7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 223 222
225: 7(fvec4) Load 9(v)
226: 7(fvec4) FAdd 225 224
Store 9(v) 226
- 227: 7(fvec4) Load 9(v)
- 228: 7(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 227
+ 227: 6(float) Load 220(uf)
+ 228: 6(float) Load 220(uf)
229: 7(fvec4) Load 9(v)
- 230: 7(fvec4) FAdd 229 228
- Store 9(v) 230
- 231: 7(fvec4) Load 9(v)
- 232: 7(fvec4) Load 9(v)
+ 230: 7(fvec4) CompositeConstruct 227 227 227 227
+ 231: 7(fvec4) CompositeConstruct 228 228 228 228
+ 232: 7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 230 231 229
233: 7(fvec4) Load 9(v)
- 234: 7(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 231 232 233
+ 234: 7(fvec4) FAdd 233 232
+ Store 9(v) 234
235: 7(fvec4) Load 9(v)
- 236: 7(fvec4) FAdd 235 234
- Store 9(v) 236
+ 236: 7(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 235
237: 7(fvec4) Load 9(v)
- 238: 7(fvec4) Load 9(v)
- 239: 7(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 237 238
+ 238: 7(fvec4) FAdd 237 236
+ Store 9(v) 238
+ 239: 7(fvec4) Load 9(v)
240: 7(fvec4) Load 9(v)
- 241: 7(fvec4) FAdd 240 239
- Store 9(v) 241
- 242: 7(fvec4) Load 9(v)
+ 241: 7(fvec4) Load 9(v)
+ 242: 7(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 239 240 241
243: 7(fvec4) Load 9(v)
- 244: 6(float) Load 212(uf)
- 245: 7(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 242 243 244
+ 244: 7(fvec4) FAdd 243 242
+ Store 9(v) 244
+ 245: 7(fvec4) Load 9(v)
246: 7(fvec4) Load 9(v)
- 247: 7(fvec4) FAdd 246 245
- Store 9(v) 247
+ 247: 7(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 245 246
248: 7(fvec4) Load 9(v)
- 249: 7(fvec4) DPdx 248
+ 249: 7(fvec4) FAdd 248 247
+ Store 9(v) 249
250: 7(fvec4) Load 9(v)
- 251: 7(fvec4) FAdd 250 249
- Store 9(v) 251
- 252: 7(fvec4) Load 9(v)
- 253: 7(fvec4) DPdy 252
+ 251: 7(fvec4) Load 9(v)
+ 252: 6(float) Load 220(uf)
+ 253: 7(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 250 251 252
254: 7(fvec4) Load 9(v)
255: 7(fvec4) FAdd 254 253
Store 9(v) 255
256: 7(fvec4) Load 9(v)
- 257: 7(fvec4) Fwidth 256
+ 257: 7(fvec4) DPdx 256
258: 7(fvec4) Load 9(v)
259: 7(fvec4) FAdd 258 257
Store 9(v) 259
- 260: 18(int) Load 22(ui)
- 261: 18(int) ExtInst 1(GLSL.std.450) 5(SAbs) 260
- 262: 18(int) Load 20(i)
- 263: 18(int) IAdd 262 261
- Store 20(i) 263
- 264: 18(int) Load 20(i)
- 265: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 264
- 266: 18(int) Load 20(i)
- 267: 18(int) IAdd 266 265
- Store 20(i) 267
- 268: 18(int) Load 20(i)
- 269: 18(int) Load 22(ui)
- 270: 18(int) ExtInst 1(GLSL.std.450) 39(SMin) 268 269
- 271: 18(int) Load 20(i)
- 272: 18(int) IAdd 271 270
- Store 20(i) 272
- 273: 18(int) Load 20(i)
- 274: 18(int) Load 22(ui)
- 275: 18(int) ExtInst 1(GLSL.std.450) 42(SMax) 273 274
+ 260: 7(fvec4) Load 9(v)
+ 261: 7(fvec4) DPdy 260
+ 262: 7(fvec4) Load 9(v)
+ 263: 7(fvec4) FAdd 262 261
+ Store 9(v) 263
+ 264: 7(fvec4) Load 9(v)
+ 265: 7(fvec4) Fwidth 264
+ 266: 7(fvec4) Load 9(v)
+ 267: 7(fvec4) FAdd 266 265
+ Store 9(v) 267
+ 268: 18(int) Load 22(ui)
+ 269: 18(int) ExtInst 1(GLSL.std.450) 5(SAbs) 268
+ 270: 18(int) Load 20(i)
+ 271: 18(int) IAdd 270 269
+ Store 20(i) 271
+ 272: 18(int) Load 20(i)
+ 273: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 272
+ 274: 18(int) Load 20(i)
+ 275: 18(int) IAdd 274 273
+ Store 20(i) 275
276: 18(int) Load 20(i)
- 277: 18(int) IAdd 276 275
- Store 20(i) 277
- 278: 18(int) Load 20(i)
- 279: 18(int) Load 22(ui)
- 280: 18(int) Load 22(ui)
- 281: 18(int) ExtInst 1(GLSL.std.450) 45(SClamp) 278 279 280
- 282: 18(int) Load 20(i)
- 283: 18(int) IAdd 282 281
- Store 20(i) 283
- 286: 141(int) Load 285(u)
- 289: 141(int) Load 288(uui)
- 290: 141(int) ExtInst 1(GLSL.std.450) 38(UMin) 286 289
- 291: 141(int) Load 285(u)
- 292: 141(int) IAdd 291 290
- Store 285(u) 292
- 293: 141(int) Load 285(u)
- 294: 141(int) Load 288(uui)
- 295: 141(int) ExtInst 1(GLSL.std.450) 41(UMax) 293 294
- 296: 141(int) Load 285(u)
- 297: 141(int) IAdd 296 295
- Store 285(u) 297
- 298: 141(int) Load 285(u)
- 299: 141(int) Load 288(uui)
- 300: 141(int) Load 288(uui)
- 301: 141(int) ExtInst 1(GLSL.std.450) 44(UClamp) 298 299 300
- 302: 141(int) Load 285(u)
- 303: 141(int) IAdd 302 301
- Store 285(u) 303
- 306: 6(float) Load 212(uf)
- 307: 178(bool) IsNan 306
- Store 305(b) 307
- 308: 6(float) Load 188(f)
- 309: 178(bool) IsInf 308
- Store 305(b) 309
- 310: 7(fvec4) Load 9(v)
- 311: 7(fvec4) Load 11(uv4)
- 312: 179(bvec4) FOrdLessThan 310 311
- 313: 178(bool) Any 312
- Store 305(b) 313
- 314: 178(bool) Load 305(b)
- SelectionMerge 316 None
- BranchConditional 314 315 316
- 315: Label
- 317: 7(fvec4) Load 9(v)
- 318: 7(fvec4) Load 11(uv4)
- 319: 179(bvec4) FOrdLessThanEqual 317 318
- 320: 178(bool) Any 319
- Branch 316
- 316: Label
- 321: 178(bool) Phi 314 5 320 315
- Store 305(b) 321
- 322: 178(bool) Load 305(b)
- SelectionMerge 324 None
- BranchConditional 322 323 324
- 323: Label
- 325: 7(fvec4) Load 9(v)
- 326: 7(fvec4) Load 11(uv4)
- 327: 179(bvec4) FOrdGreaterThan 325 326
- 328: 178(bool) Any 327
- Branch 324
- 324: Label
- 329: 178(bool) Phi 322 316 328 323
- Store 305(b) 329
- 330: 178(bool) Load 305(b)
- SelectionMerge 332 None
- BranchConditional 330 331 332
- 331: Label
- 333: 7(fvec4) Load 9(v)
- 334: 7(fvec4) Load 11(uv4)
- 335: 179(bvec4) FOrdGreaterThanEqual 333 334
- 336: 178(bool) Any 335
- Branch 332
- 332: Label
- 337: 178(bool) Phi 330 324 336 331
- Store 305(b) 337
- 338: 178(bool) Load 305(b)
- SelectionMerge 340 None
- BranchConditional 338 339 340
- 339: Label
- 341: 179(bvec4) Load 181(ub41)
- 343: 179(bvec4) Load 342(ub42)
- 344: 179(bvec4) LogicalEqual 341 343
- 345: 178(bool) Any 344
- Branch 340
- 340: Label
- 346: 178(bool) Phi 338 332 345 339
- Store 305(b) 346
- 347: 178(bool) Load 305(b)
- SelectionMerge 349 None
- BranchConditional 347 348 349
- 348: Label
- 350: 179(bvec4) Load 181(ub41)
- 351: 179(bvec4) Load 342(ub42)
- 352: 179(bvec4) LogicalNotEqual 350 351
- 353: 178(bool) Any 352
- Branch 349
- 349: Label
- 354: 178(bool) Phi 347 340 353 348
- Store 305(b) 354
- 355: 178(bool) Load 305(b)
- 356: 179(bvec4) Load 181(ub41)
- 357: 178(bool) Any 356
- 358: 178(bool) LogicalAnd 355 357
- Store 305(b) 358
- 359: 178(bool) Load 305(b)
- 360: 179(bvec4) Load 181(ub41)
- 361: 178(bool) All 360
- 362: 178(bool) LogicalAnd 359 361
- Store 305(b) 362
- 363: 178(bool) Load 305(b)
- SelectionMerge 365 None
- BranchConditional 363 364 365
- 364: Label
- 366: 179(bvec4) Load 181(ub41)
- 367: 179(bvec4) LogicalNot 366
- 368: 178(bool) Any 367
- Branch 365
- 365: Label
- 369: 178(bool) Phi 363 349 368 364
- Store 305(b) 369
- 370: 18(int) Load 20(i)
- 371: 18(int) Load 22(ui)
- 372: 18(int) IAdd 370 371
- 373: 18(int) Load 20(i)
- 374: 18(int) IMul 372 373
- 375: 18(int) Load 22(ui)
- 376: 18(int) ISub 374 375
- 377: 18(int) Load 20(i)
- 378: 18(int) SDiv 376 377
- Store 20(i) 378
- 379: 18(int) Load 20(i)
- 380: 18(int) Load 22(ui)
- 381: 18(int) SMod 379 380
- Store 20(i) 381
- 382: 18(int) Load 20(i)
- 383: 18(int) Load 22(ui)
- 384: 178(bool) IEqual 382 383
- 385: 178(bool) LogicalNot 384
- SelectionMerge 387 None
- BranchConditional 385 386 387
- 386: Label
- 388: 18(int) Load 20(i)
- 389: 18(int) Load 22(ui)
- 390: 178(bool) INotEqual 388 389
- SelectionMerge 392 None
- BranchConditional 390 391 392
- 391: Label
- 393: 18(int) Load 20(i)
- 394: 18(int) Load 22(ui)
- 395: 178(bool) IEqual 393 394
- Branch 392
- 392: Label
- 396: 178(bool) Phi 390 386 395 391
- 397: 18(int) Load 20(i)
- 399: 178(bool) INotEqual 397 398
- 400: 178(bool) LogicalNotEqual 396 399
- Branch 387
- 387: Label
- 401: 178(bool) Phi 384 365 400 392
+ 277: 18(int) Load 22(ui)
+ 278: 18(int) ExtInst 1(GLSL.std.450) 39(SMin) 276 277
+ 279: 18(int) Load 20(i)
+ 280: 18(int) IAdd 279 278
+ Store 20(i) 280
+ 281: 18(int) Load 20(i)
+ 282: 18(int) Load 22(ui)
+ 283: 18(int) ExtInst 1(GLSL.std.450) 42(SMax) 281 282
+ 284: 18(int) Load 20(i)
+ 285: 18(int) IAdd 284 283
+ Store 20(i) 285
+ 286: 18(int) Load 20(i)
+ 287: 18(int) Load 22(ui)
+ 288: 18(int) Load 22(ui)
+ 289: 18(int) ExtInst 1(GLSL.std.450) 45(SClamp) 286 287 288
+ 290: 18(int) Load 20(i)
+ 291: 18(int) IAdd 290 289
+ Store 20(i) 291
+ 294: 141(int) Load 293(u)
+ 297: 141(int) Load 296(uui)
+ 298: 141(int) ExtInst 1(GLSL.std.450) 38(UMin) 294 297
+ 299: 141(int) Load 293(u)
+ 300: 141(int) IAdd 299 298
+ Store 293(u) 300
+ 301: 141(int) Load 293(u)
+ 302: 141(int) Load 296(uui)
+ 303: 141(int) ExtInst 1(GLSL.std.450) 41(UMax) 301 302
+ 304: 141(int) Load 293(u)
+ 305: 141(int) IAdd 304 303
+ Store 293(u) 305
+ 306: 141(int) Load 293(u)
+ 307: 141(int) Load 296(uui)
+ 308: 141(int) Load 296(uui)
+ 309: 141(int) ExtInst 1(GLSL.std.450) 44(UClamp) 306 307 308
+ 310: 141(int) Load 293(u)
+ 311: 141(int) IAdd 310 309
+ Store 293(u) 311
+ 316: 312(ivec4) Load 314(uuv4)
+ 317: 315(ivec3) VectorShuffle 316 316 0 1 2
+ 318: 312(ivec4) Load 314(uuv4)
+ 319: 315(ivec3) VectorShuffle 318 318 0 1 2
+ 327:326(ResType) UMulExtended 317 319
+ 328: 315(ivec3) CompositeExtract 327 0
+ Store 325(swizzleTemp) 328
+ 329: 315(ivec3) CompositeExtract 327 1
+ Store 323(swizzleTemp) 329
+ 330: 315(ivec3) Load 323(swizzleTemp)
+ 331: 312(ivec4) Load 321(msb)
+ 332: 312(ivec4) VectorShuffle 331 330 4 5 6 3
+ Store 321(msb) 332
+ 333: 315(ivec3) Load 325(swizzleTemp)
+ 334: 312(ivec4) Load 324(lsb)
+ 335: 312(ivec4) VectorShuffle 334 333 4 5 6 3
+ Store 324(lsb) 335
+ 336: 292(ptr) AccessChain 321(msb) 142
+ 337: 141(int) Load 336
+ 339: 292(ptr) AccessChain 321(msb) 338
+ 340: 141(int) Load 339
+ 341: 141(int) IAdd 337 340
+ 343: 292(ptr) AccessChain 321(msb) 342
+ 344: 141(int) Load 343
+ 345: 141(int) IAdd 341 344
+ 346: 141(int) Load 293(u)
+ 347: 141(int) IAdd 346 345
+ Store 293(u) 347
+ 348: 292(ptr) AccessChain 324(lsb) 142
+ 349: 141(int) Load 348
+ 350: 292(ptr) AccessChain 324(lsb) 338
+ 351: 141(int) Load 350
+ 352: 141(int) IAdd 349 351
+ 353: 292(ptr) AccessChain 324(lsb) 342
+ 354: 141(int) Load 353
+ 355: 141(int) IAdd 352 354
+ 356: 141(int) Load 293(u)
+ 357: 141(int) IAdd 356 355
+ Store 293(u) 357
+ 360: 6(float) Load 220(uf)
+ 361: 186(bool) IsNan 360
+ Store 359(b) 361
+ 362: 6(float) Load 196(f)
+ 363: 186(bool) IsInf 362
+ Store 359(b) 363
+ 364: 7(fvec4) Load 9(v)
+ 365: 7(fvec4) Load 11(uv4)
+ 366: 187(bvec4) FOrdLessThan 364 365
+ 367: 186(bool) Any 366
+ Store 359(b) 367
+ 368: 186(bool) Load 359(b)
+ SelectionMerge 370 None
+ BranchConditional 368 369 370
+ 369: Label
+ 371: 7(fvec4) Load 9(v)
+ 372: 7(fvec4) Load 11(uv4)
+ 373: 187(bvec4) FOrdLessThanEqual 371 372
+ 374: 186(bool) Any 373
+ Branch 370
+ 370: Label
+ 375: 186(bool) Phi 368 5 374 369
+ Store 359(b) 375
+ 376: 186(bool) Load 359(b)
+ SelectionMerge 378 None
+ BranchConditional 376 377 378
+ 377: Label
+ 379: 7(fvec4) Load 9(v)
+ 380: 7(fvec4) Load 11(uv4)
+ 381: 187(bvec4) FOrdGreaterThan 379 380
+ 382: 186(bool) Any 381
+ Branch 378
+ 378: Label
+ 383: 186(bool) Phi 376 370 382 377
+ Store 359(b) 383
+ 384: 186(bool) Load 359(b)
+ SelectionMerge 386 None
+ BranchConditional 384 385 386
+ 385: Label
+ 387: 7(fvec4) Load 9(v)
+ 388: 7(fvec4) Load 11(uv4)
+ 389: 187(bvec4) FOrdGreaterThanEqual 387 388
+ 390: 186(bool) Any 389
+ Branch 386
+ 386: Label
+ 391: 186(bool) Phi 384 378 390 385
+ Store 359(b) 391
+ 392: 186(bool) Load 359(b)
+ SelectionMerge 394 None
+ BranchConditional 392 393 394
+ 393: Label
+ 395: 187(bvec4) Load 189(ub41)
+ 397: 187(bvec4) Load 396(ub42)
+ 398: 187(bvec4) LogicalEqual 395 397
+ 399: 186(bool) Any 398
+ Branch 394
+ 394: Label
+ 400: 186(bool) Phi 392 386 399 393
+ Store 359(b) 400
+ 401: 186(bool) Load 359(b)
SelectionMerge 403 None
BranchConditional 401 402 403
402: Label
- 404: 18(int) Load 20(i)
- 406: 18(int) IAdd 404 405
- Store 20(i) 406
+ 404: 187(bvec4) Load 189(ub41)
+ 405: 187(bvec4) Load 396(ub42)
+ 406: 187(bvec4) LogicalNotEqual 404 405
+ 407: 186(bool) Any 406
Branch 403
403: Label
- 407: 6(float) Load 212(uf)
- 408: 6(float) Load 212(uf)
- 409: 6(float) FAdd 407 408
- 410: 6(float) Load 212(uf)
- 411: 6(float) FMul 409 410
- 412: 6(float) Load 212(uf)
- 413: 6(float) FSub 411 412
- 414: 6(float) Load 212(uf)
- 415: 6(float) FDiv 413 414
- Store 188(f) 415
- 416: 7(fvec4) Load 9(v)
- 417: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 416
- 418: 6(float) Load 188(f)
- 419: 6(float) FAdd 418 417
- Store 188(f) 419
- 420: 7(fvec4) Load 9(v)
- 421: 7(fvec4) Load 9(v)
- 422: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 420 421
- 423: 6(float) Load 188(f)
- 424: 6(float) FAdd 423 422
- Store 188(f) 424
- 425: 7(fvec4) Load 9(v)
- 426: 7(fvec4) Load 9(v)
- 427: 6(float) Dot 425 426
- 428: 6(float) Load 188(f)
- 429: 6(float) FAdd 428 427
- Store 188(f) 429
- 430: 6(float) Load 188(f)
- 431: 6(float) Load 212(uf)
- 432: 6(float) FMul 430 431
- 433: 6(float) Load 188(f)
- 434: 6(float) FAdd 433 432
- Store 188(f) 434
- 436: 7(fvec4) Load 9(v)
- 437: 435(fvec3) VectorShuffle 436 436 0 1 2
- 438: 7(fvec4) Load 9(v)
- 439: 435(fvec3) VectorShuffle 438 438 0 1 2
- 440: 435(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 437 439
- 441: 6(float) CompositeExtract 440 0
- 442: 6(float) Load 188(f)
- 443: 6(float) FAdd 442 441
- Store 188(f) 443
- 444: 6(float) Load 188(f)
- 445: 6(float) Load 212(uf)
- 446: 178(bool) FOrdEqual 444 445
- 447: 178(bool) LogicalNot 446
- SelectionMerge 449 None
- BranchConditional 447 448 449
- 448: Label
- 450: 6(float) Load 188(f)
- 451: 6(float) Load 212(uf)
- 452: 178(bool) FOrdNotEqual 450 451
- 453: 6(float) Load 188(f)
- 455: 178(bool) FOrdNotEqual 453 454
- 456: 178(bool) LogicalAnd 452 455
- Branch 449
- 449: Label
- 457: 178(bool) Phi 446 403 456 448
- SelectionMerge 459 None
- BranchConditional 457 458 459
- 458: Label
- 460: 6(float) Load 188(f)
- 462: 6(float) FAdd 460 461
- Store 188(f) 462
- Branch 459
- 459: Label
- 463: 18(int) Load 22(ui)
- 464: 18(int) Load 20(i)
- 465: 18(int) BitwiseAnd 464 463
- Store 20(i) 465
- 467: 18(int) Load 20(i)
- 468: 18(int) BitwiseOr 467 466
- Store 20(i) 468
- 469: 18(int) Load 22(ui)
- 470: 18(int) Load 20(i)
- 471: 18(int) BitwiseXor 470 469
- Store 20(i) 471
- 473: 18(int) Load 20(i)
- 474: 18(int) SMod 473 472
- Store 20(i) 474
- 475: 18(int) Load 20(i)
- 476: 18(int) ShiftRightArithmetic 475 398
- Store 20(i) 476
- 477: 18(int) Load 22(ui)
- 478: 18(int) Load 20(i)
- 479: 18(int) ShiftLeftLogical 478 477
- Store 20(i) 479
- 480: 18(int) Load 20(i)
- 481: 18(int) Not 480
- Store 20(i) 481
- 482: 178(bool) Load 305(b)
- 483: 178(bool) LogicalNot 482
- Store 305(b) 483
- 486: 178(bool) Load 305(b)
- SelectionMerge 489 None
- BranchConditional 486 488 498
- 488: Label
- 490: 18(int) Load 20(i)
- 491: 6(float) ConvertSToF 490
- 492: 7(fvec4) CompositeConstruct 491 491 491 491
- 493: 6(float) Load 188(f)
- 494: 7(fvec4) CompositeConstruct 493 493 493 493
- 495: 7(fvec4) FAdd 492 494
- 496: 7(fvec4) Load 9(v)
- 497: 7(fvec4) FAdd 495 496
- Store 487 497
- Branch 489
- 498: Label
- 499: 7(fvec4) Load 9(v)
- Store 487 499
- Branch 489
- 489: Label
- 500: 7(fvec4) Load 487
- Store 485(FragColor) 500
- Store 503(m1) 509
- Store 510(m2) 512
- 513: 178(bool) Load 305(b)
- SelectionMerge 516 None
- BranchConditional 513 515 518
- 515: Label
- 517: 501 Load 503(m1)
- Store 514 517
- Branch 516
- 518: Label
- 519: 501 Load 510(m2)
- Store 514 519
- Branch 516
- 516: Label
- 520: 8(ptr) AccessChain 514 405
- 521: 7(fvec4) Load 520
- 522: 7(fvec4) Load 485(FragColor)
- 523: 7(fvec4) FAdd 522 521
- Store 485(FragColor) 523
+ 408: 186(bool) Phi 401 394 407 402
+ Store 359(b) 408
+ 409: 186(bool) Load 359(b)
+ 410: 187(bvec4) Load 189(ub41)
+ 411: 186(bool) Any 410
+ 412: 186(bool) LogicalAnd 409 411
+ Store 359(b) 412
+ 413: 186(bool) Load 359(b)
+ 414: 187(bvec4) Load 189(ub41)
+ 415: 186(bool) All 414
+ 416: 186(bool) LogicalAnd 413 415
+ Store 359(b) 416
+ 417: 186(bool) Load 359(b)
+ SelectionMerge 419 None
+ BranchConditional 417 418 419
+ 418: Label
+ 420: 187(bvec4) Load 189(ub41)
+ 421: 187(bvec4) LogicalNot 420
+ 422: 186(bool) Any 421
+ Branch 419
+ 419: Label
+ 423: 186(bool) Phi 417 403 422 418
+ Store 359(b) 423
+ 424: 18(int) Load 20(i)
+ 425: 18(int) Load 22(ui)
+ 426: 18(int) IAdd 424 425
+ 427: 18(int) Load 20(i)
+ 428: 18(int) IMul 426 427
+ 429: 18(int) Load 22(ui)
+ 430: 18(int) ISub 428 429
+ 431: 18(int) Load 20(i)
+ 432: 18(int) SDiv 430 431
+ Store 20(i) 432
+ 433: 18(int) Load 20(i)
+ 434: 18(int) Load 22(ui)
+ 435: 18(int) SMod 433 434
+ Store 20(i) 435
+ 436: 18(int) Load 20(i)
+ 437: 18(int) Load 22(ui)
+ 438: 186(bool) IEqual 436 437
+ 439: 186(bool) LogicalNot 438
+ SelectionMerge 441 None
+ BranchConditional 439 440 441
+ 440: Label
+ 442: 18(int) Load 20(i)
+ 443: 18(int) Load 22(ui)
+ 444: 186(bool) INotEqual 442 443
+ SelectionMerge 446 None
+ BranchConditional 444 445 446
+ 445: Label
+ 447: 18(int) Load 20(i)
+ 448: 18(int) Load 22(ui)
+ 449: 186(bool) IEqual 447 448
+ Branch 446
+ 446: Label
+ 450: 186(bool) Phi 444 440 449 445
+ 451: 18(int) Load 20(i)
+ 453: 186(bool) INotEqual 451 452
+ 454: 186(bool) LogicalNotEqual 450 453
+ Branch 441
+ 441: Label
+ 455: 186(bool) Phi 438 419 454 446
+ SelectionMerge 457 None
+ BranchConditional 455 456 457
+ 456: Label
+ 458: 18(int) Load 20(i)
+ 460: 18(int) IAdd 458 459
+ Store 20(i) 460
+ Branch 457
+ 457: Label
+ 461: 6(float) Load 220(uf)
+ 462: 6(float) Load 220(uf)
+ 463: 6(float) FAdd 461 462
+ 464: 6(float) Load 220(uf)
+ 465: 6(float) FMul 463 464
+ 466: 6(float) Load 220(uf)
+ 467: 6(float) FSub 465 466
+ 468: 6(float) Load 220(uf)
+ 469: 6(float) FDiv 467 468
+ Store 196(f) 469
+ 470: 7(fvec4) Load 9(v)
+ 471: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 470
+ 472: 6(float) Load 196(f)
+ 473: 6(float) FAdd 472 471
+ Store 196(f) 473
+ 474: 7(fvec4) Load 9(v)
+ 475: 7(fvec4) Load 9(v)
+ 476: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 474 475
+ 477: 6(float) Load 196(f)
+ 478: 6(float) FAdd 477 476
+ Store 196(f) 478
+ 479: 7(fvec4) Load 9(v)
+ 480: 7(fvec4) Load 9(v)
+ 481: 6(float) Dot 479 480
+ 482: 6(float) Load 196(f)
+ 483: 6(float) FAdd 482 481
+ Store 196(f) 483
+ 484: 6(float) Load 196(f)
+ 485: 6(float) Load 220(uf)
+ 486: 6(float) FMul 484 485
+ 487: 6(float) Load 196(f)
+ 488: 6(float) FAdd 487 486
+ Store 196(f) 488
+ 490: 7(fvec4) Load 9(v)
+ 491: 489(fvec3) VectorShuffle 490 490 0 1 2
+ 492: 7(fvec4) Load 9(v)
+ 493: 489(fvec3) VectorShuffle 492 492 0 1 2
+ 494: 489(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 491 493
+ 495: 6(float) CompositeExtract 494 0
+ 496: 6(float) Load 196(f)
+ 497: 6(float) FAdd 496 495
+ Store 196(f) 497
+ 498: 6(float) Load 196(f)
+ 499: 6(float) Load 220(uf)
+ 500: 186(bool) FOrdEqual 498 499
+ 501: 186(bool) LogicalNot 500
+ SelectionMerge 503 None
+ BranchConditional 501 502 503
+ 502: Label
+ 504: 6(float) Load 196(f)
+ 505: 6(float) Load 220(uf)
+ 506: 186(bool) FOrdNotEqual 504 505
+ 507: 6(float) Load 196(f)
+ 509: 186(bool) FOrdNotEqual 507 508
+ 510: 186(bool) LogicalAnd 506 509
+ Branch 503
+ 503: Label
+ 511: 186(bool) Phi 500 457 510 502
+ SelectionMerge 513 None
+ BranchConditional 511 512 513
+ 512: Label
+ 514: 6(float) Load 196(f)
+ 516: 6(float) FAdd 514 515
+ Store 196(f) 516
+ Branch 513
+ 513: Label
+ 517: 18(int) Load 22(ui)
+ 518: 18(int) Load 20(i)
+ 519: 18(int) BitwiseAnd 518 517
+ Store 20(i) 519
+ 521: 18(int) Load 20(i)
+ 522: 18(int) BitwiseOr 521 520
+ Store 20(i) 522
+ 523: 18(int) Load 22(ui)
+ 524: 18(int) Load 20(i)
+ 525: 18(int) BitwiseXor 524 523
+ Store 20(i) 525
+ 527: 18(int) Load 20(i)
+ 528: 18(int) SMod 527 526
+ Store 20(i) 528
+ 529: 18(int) Load 20(i)
+ 530: 18(int) ShiftRightArithmetic 529 452
+ Store 20(i) 530
+ 531: 18(int) Load 22(ui)
+ 532: 18(int) Load 20(i)
+ 533: 18(int) ShiftLeftLogical 532 531
+ Store 20(i) 533
+ 534: 18(int) Load 20(i)
+ 535: 18(int) Not 534
+ Store 20(i) 535
+ 536: 186(bool) Load 359(b)
+ 537: 186(bool) LogicalNot 536
+ Store 359(b) 537
+ 540: 186(bool) Load 359(b)
+ SelectionMerge 543 None
+ BranchConditional 540 542 552
+ 542: Label
+ 544: 18(int) Load 20(i)
+ 545: 6(float) ConvertSToF 544
+ 546: 7(fvec4) CompositeConstruct 545 545 545 545
+ 547: 6(float) Load 196(f)
+ 548: 7(fvec4) CompositeConstruct 547 547 547 547
+ 549: 7(fvec4) FAdd 546 548
+ 550: 7(fvec4) Load 9(v)
+ 551: 7(fvec4) FAdd 549 550
+ Store 541 551
+ Branch 543
+ 552: Label
+ 553: 7(fvec4) Load 9(v)
+ Store 541 553
+ Branch 543
+ 543: Label
+ 554: 7(fvec4) Load 541
+ Store 539(FragColor) 554
+ Store 557(m1) 563
+ Store 564(m2) 566
+ 567: 186(bool) Load 359(b)
+ SelectionMerge 570 None
+ BranchConditional 567 569 572
+ 569: Label
+ 571: 555 Load 557(m1)
+ Store 568 571
+ Branch 570
+ 572: Label
+ 573: 555 Load 564(m2)
+ Store 568 573
+ Branch 570
+ 570: Label
+ 574: 8(ptr) AccessChain 568 459
+ 575: 7(fvec4) Load 574
+ 576: 7(fvec4) Load 539(FragColor)
+ 577: 7(fvec4) FAdd 576 575
+ Store 539(FragColor) 577
Return
FunctionEnd
diff --git a/Test/baseResults/spv.RayCallable.rcall.out b/Test/baseResults/spv.RayCallable.rcall.out
index e399e63..b5e25be 100644
--- a/Test/baseResults/spv.RayCallable.rcall.out
+++ b/Test/baseResults/spv.RayCallable.rcall.out
@@ -1,13 +1,13 @@
spv.RayCallable.rcall
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 30
Capability RayTracingNV
Extension "SPV_NV_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint CallableNV 4 "main" 11 14
+ EntryPoint CallableKHR 4 "main" 11 14
Source GLSL 460
SourceExtension "GL_NV_ray_tracing"
Name 4 "main"
@@ -19,8 +19,8 @@
MemberName 16(dataBlock) 0 "data1"
Name 18 ""
Name 29 "data0"
- Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
- Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
+ Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR
+ Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
Decorate 16(dataBlock) Block
Decorate 18 Location 1
Decorate 29(data0) Location 0
@@ -33,18 +33,18 @@
11(gl_LaunchIDNV): 10(ptr) Variable Input
14(gl_LaunchSizeNV): 10(ptr) Variable Input
16(dataBlock): TypeStruct 6(int)
- 17: TypePointer IncomingCallableDataNV 16(dataBlock)
- 18: 17(ptr) Variable IncomingCallableDataNV
+ 17: TypePointer IncomingCallableDataKHR 16(dataBlock)
+ 18: 17(ptr) Variable IncomingCallableDataKHR
19: TypeInt 32 1
20: 19(int) Constant 0
21: 6(int) Constant 256
- 22: TypePointer IncomingCallableDataNV 6(int)
+ 22: TypePointer IncomingCallableDataKHR 6(int)
24: 6(int) Constant 2
25: 19(int) Constant 1
26: TypeFloat 32
27: TypeVector 26(float) 4
- 28: TypePointer CallableDataNV 27(fvec4)
- 29(data0): 28(ptr) Variable CallableDataNV
+ 28: TypePointer CallableDataKHR 27(fvec4)
+ 29(data0): 28(ptr) Variable CallableDataKHR
4(main): 2 Function None 3
5: Label
9(id): 8(ptr) Variable Function
@@ -55,6 +55,6 @@
Store 13(size) 15
23: 22(ptr) AccessChain 18 20
Store 23 21
- ExecuteCallableNV 24 25
+ ExecuteCallableKHR 24 25
Return
FunctionEnd
diff --git a/Test/baseResults/spv.RayConstants.rgen.out b/Test/baseResults/spv.RayConstants.rgen.out
index d939acf..97b47b7 100644
--- a/Test/baseResults/spv.RayConstants.rgen.out
+++ b/Test/baseResults/spv.RayConstants.rgen.out
@@ -1,13 +1,13 @@
spv.RayConstants.rgen
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 27
Capability RayTracingNV
Extension "SPV_NV_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint RayGenerationNV 4 "main"
+ EntryPoint RayGenerationKHR 4 "main"
Source GLSL 460
SourceExtension "GL_NV_ray_tracing"
Name 4 "main"
@@ -18,7 +18,7 @@
Decorate 26(payload) Location 0
2: TypeVoid
3: TypeFunction 2
- 6: TypeAccelerationStructureNV
+ 6: TypeAccelerationStructureKHR
7: TypePointer UniformConstant 6
8(accNV): 7(ptr) Variable UniformConstant
10: TypeInt 32 0
@@ -36,11 +36,11 @@
22: TypeInt 32 1
23: 22(int) Constant 1
24: TypeVector 14(float) 4
- 25: TypePointer RayPayloadNV 24(fvec4)
- 26(payload): 25(ptr) Variable RayPayloadNV
+ 25: TypePointer RayPayloadKHR 24(fvec4)
+ 26(payload): 25(ptr) Variable RayPayloadKHR
4(main): 2 Function None 3
5: Label
9: 6 Load 8(accNV)
- TraceNV 9 11 12 13 13 12 17 18 20 21 23
+ TraceRayKHR 9 11 12 13 13 12 17 18 20 21 23
Return
FunctionEnd
diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out
index 91f37e5..47b7c92 100644
--- a/Test/baseResults/spv.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.RayGenShader.rgen.out
@@ -1,13 +1,13 @@
spv.RayGenShader.rgen
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 54
Capability RayTracingNV
Extension "SPV_NV_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint RayGenerationNV 4 "main" 11 21
+ EntryPoint RayGenerationKHR 4 "main" 11 21
Source GLSL 460
SourceExtension "GL_NV_ray_tracing"
Name 4 "main"
@@ -24,8 +24,8 @@
Name 39 ""
Name 50 "accNV1"
Name 53 "payload"
- Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
- Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
+ Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR
+ Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
Decorate 29(accNV0) DescriptorSet 0
Decorate 29(accNV0) Binding 0
MemberDecorate 37(block) 0 Offset 0
@@ -45,24 +45,24 @@
13: TypePointer Input 6(int)
17: 6(int) Constant 1
21(gl_LaunchSizeNV): 10(ptr) Variable Input
- 27: TypeAccelerationStructureNV
+ 27: TypeAccelerationStructureKHR
28: TypePointer UniformConstant 27
29(accNV0): 28(ptr) Variable UniformConstant
35: TypeFloat 32
36: TypeVector 35(float) 3
37(block): TypeStruct 36(fvec3) 36(fvec3)
- 38: TypePointer ShaderRecordBufferNV 37(block)
- 39: 38(ptr) Variable ShaderRecordBufferNV
+ 38: TypePointer ShaderRecordBufferKHR 37(block)
+ 39: 38(ptr) Variable ShaderRecordBufferKHR
40: TypeInt 32 1
41: 40(int) Constant 1
- 42: TypePointer ShaderRecordBufferNV 36(fvec3)
+ 42: TypePointer ShaderRecordBufferKHR 36(fvec3)
45: 35(float) Constant 1056964608
46: 40(int) Constant 0
49: 35(float) Constant 1061158912
50(accNV1): 28(ptr) Variable UniformConstant
51: TypeVector 35(float) 4
- 52: TypePointer RayPayloadNV 51(fvec4)
- 53(payload): 52(ptr) Variable RayPayloadNV
+ 52: TypePointer RayPayloadKHR 51(fvec4)
+ 53(payload): 52(ptr) Variable RayPayloadKHR
4(main): 2 Function None 3
5: Label
8(lx): 7(ptr) Variable Function
@@ -90,6 +90,6 @@
44: 36(fvec3) Load 43
47: 42(ptr) AccessChain 39 46
48: 36(fvec3) Load 47
- TraceNV 30 31 32 33 34 12 44 45 48 49 41
+ TraceRayKHR 30 31 32 33 34 12 44 45 48 49 41
Return
FunctionEnd
diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out
index 8f2c52b..0bbcab9 100755
--- a/Test/baseResults/spv.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.RayGenShader11.rgen.out
@@ -1,13 +1,13 @@
spv.RayGenShader11.rgen
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 53
Capability RayTracingNV
Extension "SPV_NV_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint RayGenerationNV 4 "main" 11 21
+ EntryPoint RayGenerationKHR 4 "main" 11 21
Source GLSL 460
SourceExtension "GL_NV_ray_tracing"
Name 4 "main"
@@ -23,8 +23,8 @@
MemberName 37(block) 1 "origin"
Name 39 ""
Name 52 "payload"
- Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
- Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
+ Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR
+ Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
Decorate 29(accNV) DescriptorSet 0
Decorate 29(accNV) Binding 0
MemberDecorate 37(block) 0 Offset 0
@@ -42,23 +42,23 @@
13: TypePointer Input 6(int)
17: 6(int) Constant 1
21(gl_LaunchSizeNV): 10(ptr) Variable Input
- 27: TypeAccelerationStructureNV
+ 27: TypeAccelerationStructureKHR
28: TypePointer UniformConstant 27
29(accNV): 28(ptr) Variable UniformConstant
35: TypeFloat 32
36: TypeVector 35(float) 3
37(block): TypeStruct 36(fvec3) 36(fvec3)
- 38: TypePointer ShaderRecordBufferNV 37(block)
- 39: 38(ptr) Variable ShaderRecordBufferNV
+ 38: TypePointer ShaderRecordBufferKHR 37(block)
+ 39: 38(ptr) Variable ShaderRecordBufferKHR
40: TypeInt 32 1
41: 40(int) Constant 1
- 42: TypePointer ShaderRecordBufferNV 36(fvec3)
+ 42: TypePointer ShaderRecordBufferKHR 36(fvec3)
45: 35(float) Constant 1056964608
46: 40(int) Constant 0
49: 35(float) Constant 1061158912
50: TypeVector 35(float) 4
- 51: TypePointer RayPayloadNV 50(fvec4)
- 52(payload): 51(ptr) Variable RayPayloadNV
+ 51: TypePointer RayPayloadKHR 50(fvec4)
+ 52(payload): 51(ptr) Variable RayPayloadKHR
4(main): 2 Function None 3
5: Label
8(lx): 7(ptr) Variable Function
@@ -86,6 +86,6 @@
44: 36(fvec3) Load 43
47: 42(ptr) AccessChain 39 46
48: 36(fvec3) Load 47
- TraceNV 30 31 32 33 34 12 44 45 48 49 41
+ TraceRayKHR 30 31 32 33 34 12 44 45 48 49 41
Return
FunctionEnd
diff --git a/Test/baseResults/spv.RayGenShaderArray.rgen.out b/Test/baseResults/spv.RayGenShaderArray.rgen.out
index 7430756..ce5f016 100644
--- a/Test/baseResults/spv.RayGenShaderArray.rgen.out
+++ b/Test/baseResults/spv.RayGenShaderArray.rgen.out
@@ -1,6 +1,6 @@
spv.RayGenShaderArray.rgen
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 89
Capability ShaderNonUniformEXT
@@ -10,7 +10,7 @@
Extension "SPV_NV_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint RayGenerationNV 4 "main" 11 21
+ EntryPoint RayGenerationKHR 4 "main" 11 21
Source GLSL 460
SourceExtension "GL_EXT_nonuniform_qualifier"
SourceExtension "GL_NV_ray_tracing"
@@ -29,8 +29,8 @@
Name 36 ""
Name 60 "accNV1"
Name 88 "payload"
- Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
- Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
+ Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR
+ Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
Decorate 30(accNV0) DescriptorSet 0
Decorate 30(accNV0) Binding 0
MemberDecorate 34(block) 0 Offset 0
@@ -40,6 +40,7 @@
Decorate 60(accNV1) DescriptorSet 0
Decorate 60(accNV1) Binding 1
Decorate 75 DecorationNonUniformEXT
+ Decorate 76 DecorationNonUniformEXT
Decorate 77 DecorationNonUniformEXT
Decorate 88(payload) Location 0
2: TypeVoid
@@ -53,7 +54,7 @@
13: TypePointer Input 6(int)
17: 6(int) Constant 1
21(gl_LaunchSizeNV): 10(ptr) Variable Input
- 27: TypeAccelerationStructureNV
+ 27: TypeAccelerationStructureKHR
28: TypeRuntimeArray 27
29: TypePointer UniformConstant 28
30(accNV0): 29(ptr) Variable UniformConstant
@@ -61,13 +62,13 @@
32: TypeVector 31(float) 3
33: TypeInt 32 1
34(block): TypeStruct 32(fvec3) 32(fvec3) 33(int)
- 35: TypePointer ShaderRecordBufferNV 34(block)
- 36: 35(ptr) Variable ShaderRecordBufferNV
+ 35: TypePointer ShaderRecordBufferKHR 34(block)
+ 36: 35(ptr) Variable ShaderRecordBufferKHR
37: 33(int) Constant 2
- 38: TypePointer ShaderRecordBufferNV 33(int)
+ 38: TypePointer ShaderRecordBufferKHR 33(int)
41: TypePointer UniformConstant 27
48: 33(int) Constant 1
- 49: TypePointer ShaderRecordBufferNV 32(fvec3)
+ 49: TypePointer ShaderRecordBufferKHR 32(fvec3)
52: 31(float) Constant 1056964608
53: 33(int) Constant 0
56: 31(float) Constant 1061158912
@@ -76,8 +77,8 @@
59: TypePointer UniformConstant 58
60(accNV1): 59(ptr) Variable UniformConstant
86: TypeVector 31(float) 4
- 87: TypePointer RayPayloadNV 86(fvec4)
- 88(payload): 87(ptr) Variable RayPayloadNV
+ 87: TypePointer RayPayloadKHR 86(fvec4)
+ 88(payload): 87(ptr) Variable RayPayloadKHR
4(main): 2 Function None 3
5: Label
8(lx): 7(ptr) Variable Function
@@ -108,7 +109,7 @@
51: 32(fvec3) Load 50
54: 49(ptr) AccessChain 36 53
55: 32(fvec3) Load 54
- TraceNV 43 44 45 46 47 12 51 52 55 56 48
+ TraceRayKHR 43 44 45 46 47 12 51 52 55 56 48
61: 38(ptr) AccessChain 36 37
62: 33(int) Load 61
63: 41(ptr) AccessChain 60(accNV1) 62
@@ -121,7 +122,7 @@
70: 32(fvec3) Load 69
71: 49(ptr) AccessChain 36 53
72: 32(fvec3) Load 71
- TraceNV 64 65 66 67 68 12 70 52 72 56 48
+ TraceRayKHR 64 65 66 67 68 12 70 52 72 56 48
73: 38(ptr) AccessChain 36 37
74: 33(int) Load 73
75: 33(int) CopyObject 74
@@ -135,6 +136,6 @@
83: 32(fvec3) Load 82
84: 49(ptr) AccessChain 36 53
85: 32(fvec3) Load 84
- TraceNV 77 78 79 80 81 12 83 52 85 56 48
+ TraceRayKHR 77 78 79 80 81 12 83 52 85 56 48
Return
FunctionEnd
diff --git a/Test/baseResults/spv.accessChain.frag.out b/Test/baseResults/spv.accessChain.frag.out
index bf87829..c5c71a5 100644
--- a/Test/baseResults/spv.accessChain.frag.out
+++ b/Test/baseResults/spv.accessChain.frag.out
@@ -1,6 +1,6 @@
spv.accessChain.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 222
Capability Shader
diff --git a/Test/baseResults/spv.aggOps.frag.out b/Test/baseResults/spv.aggOps.frag.out
index f388e8e..976c747 100644
--- a/Test/baseResults/spv.aggOps.frag.out
+++ b/Test/baseResults/spv.aggOps.frag.out
@@ -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 --git a/Test/baseResults/spv.always-discard.frag.out b/Test/baseResults/spv.always-discard.frag.out
index 8074cf8..fb4529e 100644
--- a/Test/baseResults/spv.always-discard.frag.out
+++ b/Test/baseResults/spv.always-discard.frag.out
@@ -1,6 +1,6 @@
spv.always-discard.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 84
Capability Shader
diff --git a/Test/baseResults/spv.always-discard2.frag.out b/Test/baseResults/spv.always-discard2.frag.out
index e3fa43a..2d8f66e 100644
--- a/Test/baseResults/spv.always-discard2.frag.out
+++ b/Test/baseResults/spv.always-discard2.frag.out
@@ -1,6 +1,6 @@
spv.always-discard2.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 40
Capability Shader
diff --git a/Test/baseResults/spv.arbPostDepthCoverage.frag.out b/Test/baseResults/spv.arbPostDepthCoverage.frag.out
index f41c012..d62c677 100644
--- a/Test/baseResults/spv.arbPostDepthCoverage.frag.out
+++ b/Test/baseResults/spv.arbPostDepthCoverage.frag.out
@@ -1,6 +1,6 @@
spv.arbPostDepthCoverage.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 18
Capability Shader
diff --git a/Test/baseResults/spv.atomic.comp.out b/Test/baseResults/spv.atomic.comp.out
index 3dd88f3..08bd830 100644
--- a/Test/baseResults/spv.atomic.comp.out
+++ b/Test/baseResults/spv.atomic.comp.out
@@ -1,6 +1,6 @@
spv.atomic.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 74
Capability Shader
diff --git a/Test/baseResults/spv.atomicCounter.comp.out b/Test/baseResults/spv.atomicCounter.comp.out
new file mode 100644
index 0000000..46cccc0
--- /dev/null
+++ b/Test/baseResults/spv.atomicCounter.comp.out
@@ -0,0 +1,15 @@
+spv.atomicCounter.comp
+ERROR: 0:5: 'atomic counter types' : not allowed when using GLSL for Vulkan
+ERROR: 0:7: 'atomic counter types' : not allowed when using GLSL for Vulkan
+ERROR: 0:14: 'atomic counter types' : not allowed when using GLSL for Vulkan
+ERROR: 0:16: 'atomicCounterIncrement' : no matching overloaded function found
+ERROR: 0:16: 'return' : type does not match, or is not convertible to, the function's return type
+ERROR: 0:21: 'memoryBarrierAtomicCounter' : no matching overloaded function found
+ERROR: 0:23: 'atomicCounter' : no matching overloaded function found
+ERROR: 0:23: '=' : cannot convert from ' const float' to ' temp highp uint'
+ERROR: 0:24: 'atomicCounterDecrement' : no matching overloaded function found
+ERROR: 0:25: 'atomicCounterIncrement' : no matching overloaded function found
+ERROR: 10 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.atomicInt64.comp.out b/Test/baseResults/spv.atomicInt64.comp.out
index 9c66aec..5ac910e 100644
--- a/Test/baseResults/spv.atomicInt64.comp.out
+++ b/Test/baseResults/spv.atomicInt64.comp.out
@@ -1,6 +1,6 @@
spv.atomicInt64.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 149
Capability Shader
diff --git a/Test/baseResults/spv.barrier.vert.out b/Test/baseResults/spv.barrier.vert.out
index b9369f2..ffc2eaa 100644
--- a/Test/baseResults/spv.barrier.vert.out
+++ b/Test/baseResults/spv.barrier.vert.out
@@ -1,6 +1,6 @@
spv.barrier.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 24
Capability Shader
diff --git a/Test/baseResults/spv.bitCast.frag.out b/Test/baseResults/spv.bitCast.frag.out
index a687b8d..f590ec7 100644
--- a/Test/baseResults/spv.bitCast.frag.out
+++ b/Test/baseResults/spv.bitCast.frag.out
@@ -1,6 +1,6 @@
spv.bitCast.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 172
Capability Shader
diff --git a/Test/baseResults/spv.bool.vert.out b/Test/baseResults/spv.bool.vert.out
index 31eb54c..3e5a190 100644
--- a/Test/baseResults/spv.bool.vert.out
+++ b/Test/baseResults/spv.bool.vert.out
@@ -1,6 +1,6 @@
spv.bool.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 46
Capability Shader
diff --git a/Test/baseResults/spv.boolInBlock.frag.out b/Test/baseResults/spv.boolInBlock.frag.out
index e86ca6b..b0a4023 100644
--- a/Test/baseResults/spv.boolInBlock.frag.out
+++ b/Test/baseResults/spv.boolInBlock.frag.out
@@ -1,6 +1,6 @@
spv.boolInBlock.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 102
Capability Shader
diff --git a/Test/baseResults/spv.branch-return.vert.out b/Test/baseResults/spv.branch-return.vert.out
index ca44724..3aacca7 100644
--- a/Test/baseResults/spv.branch-return.vert.out
+++ b/Test/baseResults/spv.branch-return.vert.out
@@ -1,6 +1,6 @@
spv.branch-return.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 38
Capability Shader
diff --git a/Test/baseResults/spv.buffer.autoassign.frag.out b/Test/baseResults/spv.buffer.autoassign.frag.out
index 507318f..e526ada 100644
--- a/Test/baseResults/spv.buffer.autoassign.frag.out
+++ b/Test/baseResults/spv.buffer.autoassign.frag.out
@@ -1,6 +1,6 @@
spv.buffer.autoassign.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 50
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle1.frag.out b/Test/baseResults/spv.bufferhandle1.frag.out
index 6e50c70..9d18188 100644
--- a/Test/baseResults/spv.bufferhandle1.frag.out
+++ b/Test/baseResults/spv.bufferhandle1.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle1.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 52
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle10.frag.out b/Test/baseResults/spv.bufferhandle10.frag.out
index a95dc71..5064c7e 100644
--- a/Test/baseResults/spv.bufferhandle10.frag.out
+++ b/Test/baseResults/spv.bufferhandle10.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle10.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 40
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle11.frag.out b/Test/baseResults/spv.bufferhandle11.frag.out
index 3469715..783577c 100644
--- a/Test/baseResults/spv.bufferhandle11.frag.out
+++ b/Test/baseResults/spv.bufferhandle11.frag.out
@@ -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 --git a/Test/baseResults/spv.bufferhandle12.frag.out b/Test/baseResults/spv.bufferhandle12.frag.out
index 6c20f02..9f0f4fb 100644
--- a/Test/baseResults/spv.bufferhandle12.frag.out
+++ b/Test/baseResults/spv.bufferhandle12.frag.out
@@ -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 --git a/Test/baseResults/spv.bufferhandle13.frag.out b/Test/baseResults/spv.bufferhandle13.frag.out
index 1231cf6..516b9fc 100644
--- a/Test/baseResults/spv.bufferhandle13.frag.out
+++ b/Test/baseResults/spv.bufferhandle13.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle13.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 58
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle14.frag.out b/Test/baseResults/spv.bufferhandle14.frag.out
index 940793d..440a032 100644
--- a/Test/baseResults/spv.bufferhandle14.frag.out
+++ b/Test/baseResults/spv.bufferhandle14.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle14.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 46
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle15.frag.out b/Test/baseResults/spv.bufferhandle15.frag.out
index ec7064d..f018e21 100644
--- a/Test/baseResults/spv.bufferhandle15.frag.out
+++ b/Test/baseResults/spv.bufferhandle15.frag.out
@@ -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 --git a/Test/baseResults/spv.bufferhandle16.frag.out b/Test/baseResults/spv.bufferhandle16.frag.out
index 16e69d1..cfc6f05 100644
--- a/Test/baseResults/spv.bufferhandle16.frag.out
+++ b/Test/baseResults/spv.bufferhandle16.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle16.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 48
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle18.frag.out b/Test/baseResults/spv.bufferhandle18.frag.out
index 567295d..0a5f6fb 100644
--- a/Test/baseResults/spv.bufferhandle18.frag.out
+++ b/Test/baseResults/spv.bufferhandle18.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle18.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 196
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle2.frag.out b/Test/baseResults/spv.bufferhandle2.frag.out
index 8fee6db..6c43fbe 100644
--- a/Test/baseResults/spv.bufferhandle2.frag.out
+++ b/Test/baseResults/spv.bufferhandle2.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle2.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 45
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle3.frag.out b/Test/baseResults/spv.bufferhandle3.frag.out
index c02c34c..ba50eb1 100644
--- a/Test/baseResults/spv.bufferhandle3.frag.out
+++ b/Test/baseResults/spv.bufferhandle3.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle3.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 50
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle4.frag.out b/Test/baseResults/spv.bufferhandle4.frag.out
index 3f568b0..7dff09c 100644
--- a/Test/baseResults/spv.bufferhandle4.frag.out
+++ b/Test/baseResults/spv.bufferhandle4.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle4.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 61
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle5.frag.out b/Test/baseResults/spv.bufferhandle5.frag.out
index 3f1d214..209459b 100644
--- a/Test/baseResults/spv.bufferhandle5.frag.out
+++ b/Test/baseResults/spv.bufferhandle5.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle5.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 22
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle6.frag.out b/Test/baseResults/spv.bufferhandle6.frag.out
index 866741f..b373a2f 100644
--- a/Test/baseResults/spv.bufferhandle6.frag.out
+++ b/Test/baseResults/spv.bufferhandle6.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle6.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 165
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle7.frag.out b/Test/baseResults/spv.bufferhandle7.frag.out
index d09eded..9beaee1 100644
--- a/Test/baseResults/spv.bufferhandle7.frag.out
+++ b/Test/baseResults/spv.bufferhandle7.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle7.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 24
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle8.frag.out b/Test/baseResults/spv.bufferhandle8.frag.out
index c37fa3f..95abfd9 100644
--- a/Test/baseResults/spv.bufferhandle8.frag.out
+++ b/Test/baseResults/spv.bufferhandle8.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle8.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 27
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle9.frag.out b/Test/baseResults/spv.bufferhandle9.frag.out
index 5b91eda..b452acc 100644
--- a/Test/baseResults/spv.bufferhandle9.frag.out
+++ b/Test/baseResults/spv.bufferhandle9.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandle9.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 56
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandleUvec2.frag.out b/Test/baseResults/spv.bufferhandleUvec2.frag.out
index 1e0cbcd..b1944cf 100755
--- a/Test/baseResults/spv.bufferhandleUvec2.frag.out
+++ b/Test/baseResults/spv.bufferhandleUvec2.frag.out
@@ -1,6 +1,6 @@
spv.bufferhandleUvec2.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 71
Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle_Error.frag.out b/Test/baseResults/spv.bufferhandle_Error.frag.out
index a1ee9a4..345bfa5 100644
--- a/Test/baseResults/spv.bufferhandle_Error.frag.out
+++ b/Test/baseResults/spv.bufferhandle_Error.frag.out
@@ -14,12 +14,15 @@
ERROR: 0:14: 'buffer_reference' : can only be used with buffer
ERROR: 0:30: 'length' : array must be declared with a size before using this method
ERROR: 0:31: 'length' : array must be declared with a size before using this method
-ERROR: 0:35: '=' : cannot convert from 'layout( column_major std430) buffer reference' to ' temp reference'
-ERROR: 0:40: 'assign' : cannot convert from 'layout( column_major std430) buffer reference' to 'layout( column_major std430) buffer reference'
+ERROR: 0:32: 'buffer reference indexing' : required extension not requested: GL_EXT_buffer_reference2
+ERROR: 0:32: '' : cannot index reference to buffer containing an unsized array
+ERROR: 0:32: '' : cannot index buffer reference
+ERROR: 0:36: '=' : cannot convert from 'layout( column_major std430) buffer reference' to ' temp reference'
ERROR: 0:41: 'assign' : cannot convert from 'layout( column_major std430) buffer reference' to 'layout( column_major std430) buffer reference'
ERROR: 0:42: 'assign' : cannot convert from 'layout( column_major std430) buffer reference' to 'layout( column_major std430) buffer reference'
-ERROR: 0:45: '' : syntax error, unexpected LEFT_BRACE, expecting COMMA or SEMICOLON
-ERROR: 20 compilation errors. No code generated.
+ERROR: 0:43: 'assign' : cannot convert from 'layout( column_major std430) buffer reference' to 'layout( column_major std430) buffer reference'
+ERROR: 0:46: '' : syntax error, unexpected LEFT_BRACE, expecting COMMA or SEMICOLON
+ERROR: 23 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.builtInXFB.vert.out b/Test/baseResults/spv.builtInXFB.vert.out
index 556a698..7a8b17a 100644
--- a/Test/baseResults/spv.builtInXFB.vert.out
+++ b/Test/baseResults/spv.builtInXFB.vert.out
@@ -1,6 +1,6 @@
spv.builtInXFB.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 21
Capability Shader
diff --git a/Test/baseResults/spv.computeShaderDerivatives.comp.out b/Test/baseResults/spv.computeShaderDerivatives.comp.out
index d332f35..052ac06 100644
--- a/Test/baseResults/spv.computeShaderDerivatives.comp.out
+++ b/Test/baseResults/spv.computeShaderDerivatives.comp.out
@@ -1,6 +1,6 @@
spv.computeShaderDerivatives.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 212
Capability Shader
diff --git a/Test/baseResults/spv.computeShaderDerivatives2.comp.out b/Test/baseResults/spv.computeShaderDerivatives2.comp.out
index be1919b..3ef5ee4 100644
--- a/Test/baseResults/spv.computeShaderDerivatives2.comp.out
+++ b/Test/baseResults/spv.computeShaderDerivatives2.comp.out
@@ -1,6 +1,6 @@
spv.computeShaderDerivatives2.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 212
Capability Shader
diff --git a/Test/baseResults/spv.conditionalDemote.frag.out b/Test/baseResults/spv.conditionalDemote.frag.out
index 10f2c23..f255176 100644
--- a/Test/baseResults/spv.conditionalDemote.frag.out
+++ b/Test/baseResults/spv.conditionalDemote.frag.out
@@ -1,6 +1,6 @@
spv.conditionalDemote.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 38
Capability Shader
diff --git a/Test/baseResults/spv.conditionalDiscard.frag.out b/Test/baseResults/spv.conditionalDiscard.frag.out
index 2f2dcf2..a05afb9 100644
--- a/Test/baseResults/spv.conditionalDiscard.frag.out
+++ b/Test/baseResults/spv.conditionalDiscard.frag.out
@@ -1,6 +1,6 @@
spv.conditionalDiscard.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 36
Capability Shader
diff --git a/Test/baseResults/spv.constConstruct.vert.out b/Test/baseResults/spv.constConstruct.vert.out
index 5922b34..d3250a1 100644
--- a/Test/baseResults/spv.constConstruct.vert.out
+++ b/Test/baseResults/spv.constConstruct.vert.out
@@ -1,7 +1,7 @@
spv.constConstruct.vert
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 150
Capability Shader
diff --git a/Test/baseResults/spv.constStruct.vert.out b/Test/baseResults/spv.constStruct.vert.out
index d04f33d..1fce728 100644
--- a/Test/baseResults/spv.constStruct.vert.out
+++ b/Test/baseResults/spv.constStruct.vert.out
@@ -1,6 +1,6 @@
spv.constStruct.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 23
Capability Shader
diff --git a/Test/baseResults/spv.constructComposite.comp.out b/Test/baseResults/spv.constructComposite.comp.out
index 6a23ecb..f1179d4 100644
--- a/Test/baseResults/spv.constructComposite.comp.out
+++ b/Test/baseResults/spv.constructComposite.comp.out
@@ -1,6 +1,6 @@
spv.constructComposite.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 29
Capability Shader
diff --git a/Test/baseResults/spv.controlFlowAttributes.frag.out b/Test/baseResults/spv.controlFlowAttributes.frag.out
index c708232..c222f25 100644
--- a/Test/baseResults/spv.controlFlowAttributes.frag.out
+++ b/Test/baseResults/spv.controlFlowAttributes.frag.out
@@ -1,16 +1,16 @@
spv.controlFlowAttributes.frag
-WARNING: 0:20: 'unroll' : expected no arguments
-WARNING: 0:21: 'dont_unroll' : expected no arguments
-WARNING: 0:22: 'dependency_infinite' : expected no arguments
-WARNING: 0:23: 'dependency_length' : expected a single integer argument
-WARNING: 0:24: '' : attribute with arguments not recognized, skipping
-WARNING: 0:25: '' : attribute with arguments not recognized, skipping
-WARNING: 0:26: '' : attribute with arguments not recognized, skipping
+WARNING: 0:27: 'unroll' : expected no arguments
+WARNING: 0:28: 'dont_unroll' : expected no arguments
+WARNING: 0:29: 'dependency_infinite' : expected no arguments
+WARNING: 0:30: 'dependency_length' : expected a single integer argument
+WARNING: 0:31: '' : attribute with arguments not recognized, skipping
+WARNING: 0:32: '' : attribute with arguments not recognized, skipping
+WARNING: 0:33: '' : attribute with arguments not recognized, skipping
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
-// Id's are bound by 118
+// 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
- 99: Label
- LoopMerge 101 102 Unroll DontUnroll DependencyLength 2
- Branch 103
- 103: Label
- 104: 17(bool) Load 47(cond)
- BranchConditional 104 100 101
- 100: Label
- Branch 102
- 102: Label
+ 97: 19(bool) Load 52(cond)
+ SelectionMerge 99 None
+ BranchConditional 97 98 99
+ 98: Label
+ Store 52(cond) 59
Branch 99
+ 99: Label
+ SelectionMerge 101 None
+ Switch 60 101
+ case 3: 100
+ 100: Label
+ Branch 101
101: Label
- SelectionMerge 106 DontFlatten
- Switch 55 106
- case 3: 105
+ Branch 104
+ 104: Label
+ LoopMerge 106 107 Unroll DontUnroll DependencyLength 2
+ Branch 108
+ 108: Label
+ 109: 19(bool) Load 52(cond)
+ BranchConditional 109 105 106
105: Label
- Branch 106
+ Branch 107
+ 107: Label
+ Branch 104
106: Label
- 109: 17(bool) Load 47(cond)
- SelectionMerge 111 Flatten
- BranchConditional 109 110 111
+ SelectionMerge 111 DontFlatten
+ Switch 60 111
+ case 3: 110
110: Label
Branch 111
111: Label
- Branch 112
- 112: Label
- LoopMerge 114 115 DependencyInfinite
- Branch 116
- 116: Label
- 117: 17(bool) Load 47(cond)
- BranchConditional 117 113 114
- 113: Label
- Branch 115
+ 114: 19(bool) Load 52(cond)
+ SelectionMerge 116 Flatten
+ BranchConditional 114 115 116
115: Label
- Branch 112
- 114: Label
+ Branch 116
+ 116: Label
+ Branch 117
+ 117: Label
+ LoopMerge 119 120 DependencyInfinite
+ Branch 121
+ 121: Label
+ 122: 19(bool) Load 52(cond)
+ BranchConditional 122 118 119
+ 118: Label
+ Branch 120
+ 120: Label
+ Branch 117
+ 119: Label
+ Return
+ FunctionEnd
+ 6(f0(): 2 Function None 3
+ 7: Label
+ Branch 10
+ 10: Label
+ LoopMerge 12 13 DontUnroll
+ Branch 11
+ 11: Label
+ Branch 13
+ 13: Label
+ Branch 10
+ 12: Label
+ Unreachable
+ FunctionEnd
+ 8(f1(): 2 Function None 3
+ 9: Label
+ Branch 14
+ 14: Label
+ LoopMerge 16 17 DontUnroll
+ Branch 18
+ 18: Label
+ BranchConditional 20 15 16
+ 15: Label
+ Branch 17
+ 17: Label
+ Branch 14
+ 16: Label
Return
FunctionEnd
diff --git a/Test/baseResults/spv.conversion.frag.out b/Test/baseResults/spv.conversion.frag.out
index a321532..60129dd 100644
--- a/Test/baseResults/spv.conversion.frag.out
+++ b/Test/baseResults/spv.conversion.frag.out
@@ -1,6 +1,6 @@
spv.conversion.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 455
Capability Shader
diff --git a/Test/baseResults/spv.coopmat.comp.out b/Test/baseResults/spv.coopmat.comp.out
index acdcbc4..4ef7028 100644
--- a/Test/baseResults/spv.coopmat.comp.out
+++ b/Test/baseResults/spv.coopmat.comp.out
@@ -1,6 +1,6 @@
spv.coopmat.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 228
Capability Shader
diff --git a/Test/baseResults/spv.dataOut.frag.out b/Test/baseResults/spv.dataOut.frag.out
index f384721..5dc14ce 100644
--- a/Test/baseResults/spv.dataOut.frag.out
+++ b/Test/baseResults/spv.dataOut.frag.out
@@ -1,6 +1,6 @@
spv.dataOut.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 20
Capability Shader
diff --git a/Test/baseResults/spv.dataOutIndirect.frag.out b/Test/baseResults/spv.dataOutIndirect.frag.out
index f371601..fa6a0da 100644
--- a/Test/baseResults/spv.dataOutIndirect.frag.out
+++ b/Test/baseResults/spv.dataOutIndirect.frag.out
@@ -1,6 +1,6 @@
spv.dataOutIndirect.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 26
Capability Shader
diff --git a/Test/baseResults/spv.dataOutIndirect.vert.out b/Test/baseResults/spv.dataOutIndirect.vert.out
index 9ba988c..fab5e58 100644
--- a/Test/baseResults/spv.dataOutIndirect.vert.out
+++ b/Test/baseResults/spv.dataOutIndirect.vert.out
@@ -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 --git a/Test/baseResults/spv.dead-after-continue.vert.out b/Test/baseResults/spv.dead-after-continue.vert.out
new file mode 100644
index 0000000..f3b8792
--- /dev/null
+++ b/Test/baseResults/spv.dead-after-continue.vert.out
@@ -0,0 +1,54 @@
+spv.dead-after-continue.vert
+// Module Version 10000
+// Generated by (magic number): 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 --git a/Test/baseResults/spv.dead-after-discard.frag.out b/Test/baseResults/spv.dead-after-discard.frag.out
new file mode 100644
index 0000000..f378d04
--- /dev/null
+++ b/Test/baseResults/spv.dead-after-discard.frag.out
@@ -0,0 +1,31 @@
+spv.dead-after-discard.frag
+// Module Version 10000
+// Generated by (magic number): 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 --git a/Test/baseResults/spv.dead-after-loop-break.vert.out b/Test/baseResults/spv.dead-after-loop-break.vert.out
new file mode 100644
index 0000000..b653e39
--- /dev/null
+++ b/Test/baseResults/spv.dead-after-loop-break.vert.out
@@ -0,0 +1,67 @@
+spv.dead-after-loop-break.vert
+// Module Version 10000
+// Generated by (magic number): 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 --git a/Test/baseResults/spv.dead-after-return.vert.out b/Test/baseResults/spv.dead-after-return.vert.out
new file mode 100644
index 0000000..d963f9f
--- /dev/null
+++ b/Test/baseResults/spv.dead-after-return.vert.out
@@ -0,0 +1,29 @@
+spv.dead-after-return.vert
+// Module Version 10000
+// Generated by (magic number): 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 --git a/Test/baseResults/spv.dead-after-switch-break.vert.out b/Test/baseResults/spv.dead-after-switch-break.vert.out
new file mode 100644
index 0000000..a506012
--- /dev/null
+++ b/Test/baseResults/spv.dead-after-switch-break.vert.out
@@ -0,0 +1,40 @@
+spv.dead-after-switch-break.vert
+// Module Version 10000
+// Generated by (magic number): 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 --git a/Test/baseResults/spv.dead-complex-continue-after-return.vert.out b/Test/baseResults/spv.dead-complex-continue-after-return.vert.out
new file mode 100644
index 0000000..60e81bd
--- /dev/null
+++ b/Test/baseResults/spv.dead-complex-continue-after-return.vert.out
@@ -0,0 +1,55 @@
+spv.dead-complex-continue-after-return.vert
+// Module Version 10000
+// Generated by (magic number): 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 --git a/Test/baseResults/spv.dead-complex-merge-after-return.vert.out b/Test/baseResults/spv.dead-complex-merge-after-return.vert.out
new file mode 100644
index 0000000..609a3ce
--- /dev/null
+++ b/Test/baseResults/spv.dead-complex-merge-after-return.vert.out
@@ -0,0 +1,51 @@
+spv.dead-complex-merge-after-return.vert
+// Module Version 10000
+// Generated by (magic number): 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 --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out
index e212089..b68de49 100644
--- a/Test/baseResults/spv.debugInfo.1.1.frag.out
+++ b/Test/baseResults/spv.debugInfo.1.1.frag.out
@@ -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
diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out
index aaa988d..f27aac0 100644
--- a/Test/baseResults/spv.debugInfo.frag.out
+++ b/Test/baseResults/spv.debugInfo.frag.out
@@ -1,6 +1,6 @@
spv.debugInfo.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 124
Capability Shader
diff --git a/Test/baseResults/spv.debugPrintf.frag.out b/Test/baseResults/spv.debugPrintf.frag.out
new file mode 100644
index 0000000..dbd0b4e
--- /dev/null
+++ b/Test/baseResults/spv.debugPrintf.frag.out
@@ -0,0 +1,31 @@
+spv.debugPrintf.frag
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 17
+
+ Capability Shader
+ Extension "SPV_KHR_non_semantic_info"
+ 1: ExtInstImport "GLSL.std.450"
+ 11: ExtInstImport "NonSemantic.DebugPrintf"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ 6: String "ASDF \ ? \ %d %d %d"
+ 13: String "ABAZ"
+ 15: String "B#$B1Z"
+ Source GLSL 450
+ SourceExtension "GL_EXT_debug_printf"
+ Name 4 "main"
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 7: TypeInt 32 1
+ 8: 7(int) Constant 1
+ 9: 7(int) Constant 2
+ 10: 7(int) Constant 3
+ 4(main): 2 Function None 3
+ 5: Label
+ 12: 2 ExtInst 11(NonSemantic.DebugPrintf) 1(DebugPrintf) 6 8 9 10
+ 14: 2 ExtInst 11(NonSemantic.DebugPrintf) 1(DebugPrintf) 13
+ 16: 2 ExtInst 11(NonSemantic.DebugPrintf) 1(DebugPrintf) 15
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.debugPrintf_Error.frag.out b/Test/baseResults/spv.debugPrintf_Error.frag.out
new file mode 100644
index 0000000..31ddd9d
--- /dev/null
+++ b/Test/baseResults/spv.debugPrintf_Error.frag.out
@@ -0,0 +1,7 @@
+spv.debugPrintf_Error.frag
+ERROR: 0:7: 'string' : Expected hex value in escape sequence
+ERROR: 0:10: 'string' : Invalid escape sequence
+ERROR: 2 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.deepRvalue.frag.out b/Test/baseResults/spv.deepRvalue.frag.out
index 1869d76..776fdf8 100644
--- a/Test/baseResults/spv.deepRvalue.frag.out
+++ b/Test/baseResults/spv.deepRvalue.frag.out
@@ -1,6 +1,6 @@
spv.deepRvalue.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 152
Capability Shader
diff --git a/Test/baseResults/spv.depthOut.frag.out b/Test/baseResults/spv.depthOut.frag.out
index 59afd3e..d212c89 100644
--- a/Test/baseResults/spv.depthOut.frag.out
+++ b/Test/baseResults/spv.depthOut.frag.out
@@ -1,6 +1,6 @@
spv.depthOut.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 15
Capability Shader
diff --git a/Test/baseResults/spv.deviceGroup.frag.out b/Test/baseResults/spv.deviceGroup.frag.out
index 6710b77..2d16272 100644
--- a/Test/baseResults/spv.deviceGroup.frag.out
+++ b/Test/baseResults/spv.deviceGroup.frag.out
@@ -1,6 +1,6 @@
spv.deviceGroup.frag
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 17
Capability Shader
diff --git a/Test/baseResults/spv.discard-dce.frag.out b/Test/baseResults/spv.discard-dce.frag.out
index 9d138f2..c4a5cb2 100644
--- a/Test/baseResults/spv.discard-dce.frag.out
+++ b/Test/baseResults/spv.discard-dce.frag.out
@@ -1,6 +1,6 @@
spv.discard-dce.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 84
Capability Shader
diff --git a/Test/baseResults/spv.do-simple.vert.out b/Test/baseResults/spv.do-simple.vert.out
index 6014dfe..826cc1c 100644
--- a/Test/baseResults/spv.do-simple.vert.out
+++ b/Test/baseResults/spv.do-simple.vert.out
@@ -1,6 +1,6 @@
spv.do-simple.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 21
Capability Shader
diff --git a/Test/baseResults/spv.do-while-continue-break.vert.out b/Test/baseResults/spv.do-while-continue-break.vert.out
index 2838880..36315a2 100644
--- a/Test/baseResults/spv.do-while-continue-break.vert.out
+++ b/Test/baseResults/spv.do-while-continue-break.vert.out
@@ -1,6 +1,6 @@
spv.do-while-continue-break.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 43
Capability Shader
diff --git a/Test/baseResults/spv.doWhileLoop.frag.out b/Test/baseResults/spv.doWhileLoop.frag.out
index 808466e..945f0d7 100644
--- a/Test/baseResults/spv.doWhileLoop.frag.out
+++ b/Test/baseResults/spv.doWhileLoop.frag.out
@@ -1,6 +1,6 @@
spv.doWhileLoop.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 34
Capability Shader
diff --git a/Test/baseResults/spv.double.comp.out b/Test/baseResults/spv.double.comp.out
index e9470ac..7961fc6 100644
--- a/Test/baseResults/spv.double.comp.out
+++ b/Test/baseResults/spv.double.comp.out
@@ -1,6 +1,6 @@
spv.double.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 60
Capability Shader
diff --git a/Test/baseResults/spv.drawParams.vert.out b/Test/baseResults/spv.drawParams.vert.out
index 8f3e2c0..e9d4970 100644
--- a/Test/baseResults/spv.drawParams.vert.out
+++ b/Test/baseResults/spv.drawParams.vert.out
@@ -1,6 +1,6 @@
spv.drawParams.vert
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 29
Capability Shader
diff --git a/Test/baseResults/spv.earlyReturnDiscard.frag.out b/Test/baseResults/spv.earlyReturnDiscard.frag.out
index c44b722..a4eb8ca 100644
--- a/Test/baseResults/spv.earlyReturnDiscard.frag.out
+++ b/Test/baseResults/spv.earlyReturnDiscard.frag.out
@@ -1,6 +1,6 @@
spv.earlyReturnDiscard.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 110
Capability Shader
@@ -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 --git a/Test/baseResults/spv.explicittypes.frag.out b/Test/baseResults/spv.explicittypes.frag.out
index c07f66d..9318913 100644
--- a/Test/baseResults/spv.explicittypes.frag.out
+++ b/Test/baseResults/spv.explicittypes.frag.out
@@ -1,6 +1,6 @@
spv.explicittypes.frag
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 576
Capability Shader
diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out
new file mode 100644
index 0000000..3cd60c7
--- /dev/null
+++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out
@@ -0,0 +1,188 @@
+spv.ext.AnyHitShader.rahit
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 94
+
+ Capability RayTracingProvisionalKHR
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_tracing"
+ Name 4 "main"
+ Name 9 "v0"
+ Name 11 "gl_LaunchIDEXT"
+ Name 13 "v1"
+ Name 14 "gl_LaunchSizeEXT"
+ Name 18 "v2"
+ Name 20 "gl_PrimitiveID"
+ Name 22 "v3"
+ Name 23 "gl_InstanceID"
+ Name 25 "v4"
+ Name 26 "gl_InstanceCustomIndexEXT"
+ Name 31 "v5"
+ Name 33 "gl_WorldRayOriginEXT"
+ Name 35 "v6"
+ Name 36 "gl_WorldRayDirectionEXT"
+ Name 38 "v7"
+ Name 39 "gl_ObjectRayOriginEXT"
+ Name 41 "v8"
+ Name 42 "gl_ObjectRayDirectionEXT"
+ Name 45 "v9"
+ Name 47 "gl_RayTminEXT"
+ Name 49 "v10"
+ Name 50 "gl_RayTmaxEXT"
+ Name 52 "v11"
+ Name 53 "gl_HitTEXT"
+ Name 56 "v12"
+ Name 58 "gl_HitKindEXT"
+ Name 62 "v13"
+ Name 64 "gl_ObjectToWorldEXT"
+ Name 66 "v14"
+ Name 67 "gl_WorldToObjectEXT"
+ Name 69 "v15"
+ Name 70 "gl_GeometryIndexEXT"
+ Name 75 "v16"
+ Name 76 "gl_ObjectToWorld3x4EXT"
+ Name 79 "v17"
+ Name 80 "gl_WorldToObject3x4EXT"
+ Name 84 "incomingPayload"
+ Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+ Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+ Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
+ Decorate 23(gl_InstanceID) BuiltIn InstanceId
+ Decorate 26(gl_InstanceCustomIndexEXT) BuiltIn InstanceCustomIndexKHR
+ Decorate 33(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR
+ Decorate 36(gl_WorldRayDirectionEXT) BuiltIn WorldRayDirectionKHR
+ Decorate 39(gl_ObjectRayOriginEXT) BuiltIn ObjectRayOriginKHR
+ Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR
+ Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR
+ Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR
+ Decorate 53(gl_HitTEXT) BuiltIn HitTKHR
+ Decorate 58(gl_HitKindEXT) BuiltIn HitKindKHR
+ Decorate 64(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR
+ Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR
+ Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR
+ Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
+ Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
+ Decorate 84(incomingPayload) Location 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 3
+ 8: TypePointer Function 7(ivec3)
+ 10: TypePointer Input 7(ivec3)
+11(gl_LaunchIDEXT): 10(ptr) Variable Input
+14(gl_LaunchSizeEXT): 10(ptr) Variable Input
+ 16: TypeInt 32 1
+ 17: TypePointer Function 16(int)
+ 19: TypePointer Input 16(int)
+20(gl_PrimitiveID): 19(ptr) Variable Input
+23(gl_InstanceID): 19(ptr) Variable Input
+26(gl_InstanceCustomIndexEXT): 19(ptr) Variable Input
+ 28: TypeFloat 32
+ 29: TypeVector 28(float) 3
+ 30: TypePointer Function 29(fvec3)
+ 32: TypePointer Input 29(fvec3)
+33(gl_WorldRayOriginEXT): 32(ptr) Variable Input
+36(gl_WorldRayDirectionEXT): 32(ptr) Variable Input
+39(gl_ObjectRayOriginEXT): 32(ptr) Variable Input
+42(gl_ObjectRayDirectionEXT): 32(ptr) Variable Input
+ 44: TypePointer Function 28(float)
+ 46: TypePointer Input 28(float)
+47(gl_RayTminEXT): 46(ptr) Variable Input
+50(gl_RayTmaxEXT): 46(ptr) Variable Input
+ 53(gl_HitTEXT): 46(ptr) Variable Input
+ 55: TypePointer Function 6(int)
+ 57: TypePointer Input 6(int)
+58(gl_HitKindEXT): 57(ptr) Variable Input
+ 60: TypeMatrix 29(fvec3) 4
+ 61: TypePointer Function 60
+ 63: TypePointer Input 60
+64(gl_ObjectToWorldEXT): 63(ptr) Variable Input
+67(gl_WorldToObjectEXT): 63(ptr) Variable Input
+70(gl_GeometryIndexEXT): 19(ptr) Variable Input
+ 72: TypeVector 28(float) 4
+ 73: TypeMatrix 72(fvec4) 3
+ 74: TypePointer Function 73
+76(gl_ObjectToWorld3x4EXT): 63(ptr) Variable Input
+80(gl_WorldToObject3x4EXT): 63(ptr) Variable Input
+ 83: TypePointer IncomingRayPayloadKHR 72(fvec4)
+84(incomingPayload): 83(ptr) Variable IncomingRayPayloadKHR
+ 85: 28(float) Constant 1056964608
+ 86: 72(fvec4) ConstantComposite 85 85 85 85
+ 88: 16(int) Constant 1
+ 89: TypeBool
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(v0): 8(ptr) Variable Function
+ 13(v1): 8(ptr) Variable Function
+ 18(v2): 17(ptr) Variable Function
+ 22(v3): 17(ptr) Variable Function
+ 25(v4): 17(ptr) Variable Function
+ 31(v5): 30(ptr) Variable Function
+ 35(v6): 30(ptr) Variable Function
+ 38(v7): 30(ptr) Variable Function
+ 41(v8): 30(ptr) Variable Function
+ 45(v9): 44(ptr) Variable Function
+ 49(v10): 44(ptr) Variable Function
+ 52(v11): 44(ptr) Variable Function
+ 56(v12): 55(ptr) Variable Function
+ 62(v13): 61(ptr) Variable Function
+ 66(v14): 61(ptr) Variable Function
+ 69(v15): 17(ptr) Variable Function
+ 75(v16): 74(ptr) Variable Function
+ 79(v17): 74(ptr) Variable Function
+ 12: 7(ivec3) Load 11(gl_LaunchIDEXT)
+ Store 9(v0) 12
+ 15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
+ Store 13(v1) 15
+ 21: 16(int) Load 20(gl_PrimitiveID)
+ Store 18(v2) 21
+ 24: 16(int) Load 23(gl_InstanceID)
+ Store 22(v3) 24
+ 27: 16(int) Load 26(gl_InstanceCustomIndexEXT)
+ Store 25(v4) 27
+ 34: 29(fvec3) Load 33(gl_WorldRayOriginEXT)
+ Store 31(v5) 34
+ 37: 29(fvec3) Load 36(gl_WorldRayDirectionEXT)
+ Store 35(v6) 37
+ 40: 29(fvec3) Load 39(gl_ObjectRayOriginEXT)
+ Store 38(v7) 40
+ 43: 29(fvec3) Load 42(gl_ObjectRayDirectionEXT)
+ Store 41(v8) 43
+ 48: 28(float) Load 47(gl_RayTminEXT)
+ Store 45(v9) 48
+ 51: 28(float) Load 50(gl_RayTmaxEXT)
+ Store 49(v10) 51
+ 54: 28(float) Load 53(gl_HitTEXT)
+ Store 52(v11) 54
+ 59: 6(int) Load 58(gl_HitKindEXT)
+ Store 56(v12) 59
+ 65: 60 Load 64(gl_ObjectToWorldEXT)
+ Store 62(v13) 65
+ 68: 60 Load 67(gl_WorldToObjectEXT)
+ Store 66(v14) 68
+ 71: 16(int) Load 70(gl_GeometryIndexEXT)
+ Store 69(v15) 71
+ 77: 60 Load 76(gl_ObjectToWorld3x4EXT)
+ 78: 73 Transpose 77
+ Store 75(v16) 78
+ 81: 60 Load 80(gl_WorldToObject3x4EXT)
+ 82: 73 Transpose 81
+ Store 79(v17) 82
+ Store 84(incomingPayload) 86
+ 87: 16(int) Load 18(v2)
+ 90: 89(bool) IEqual 87 88
+ SelectionMerge 92 None
+ BranchConditional 90 91 93
+ 91: Label
+ IgnoreIntersectionKHR
+ Branch 92
+ 93: Label
+ TerminateRayKHR
+ Branch 92
+ 92: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.AnyHitShader_Errors.rahit.out b/Test/baseResults/spv.ext.AnyHitShader_Errors.rahit.out
new file mode 100644
index 0000000..8c47429
--- /dev/null
+++ b/Test/baseResults/spv.ext.AnyHitShader_Errors.rahit.out
@@ -0,0 +1,8 @@
+spv.ext.AnyHitShader_Errors.rahit
+ERROR: 0:8: 'assign' : l-value required "payload" (cannot modify hitAttributeNV in this stage)
+ERROR: 0:9: 'reportIntersectionEXT' : no matching overloaded function found
+ERROR: 0:10: 'traceRayEXT' : no matching overloaded function found
+ERROR: 3 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out
new file mode 100644
index 0000000..278b5c1
--- /dev/null
+++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out
@@ -0,0 +1,194 @@
+spv.ext.ClosestHitShader.rchit
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 101
+
+ Capability RayTracingProvisionalKHR
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_tracing"
+ Name 4 "main"
+ Name 9 "v0"
+ Name 11 "gl_LaunchIDEXT"
+ Name 13 "v1"
+ Name 14 "gl_LaunchSizeEXT"
+ Name 18 "v2"
+ Name 20 "gl_PrimitiveID"
+ Name 22 "v3"
+ Name 23 "gl_InstanceID"
+ Name 25 "v4"
+ Name 26 "gl_InstanceCustomIndexEXT"
+ Name 31 "v5"
+ Name 33 "gl_WorldRayOriginEXT"
+ Name 35 "v6"
+ Name 36 "gl_WorldRayDirectionEXT"
+ Name 38 "v7"
+ Name 39 "gl_ObjectRayOriginEXT"
+ Name 41 "v8"
+ Name 42 "gl_ObjectRayDirectionEXT"
+ Name 45 "v9"
+ Name 47 "gl_RayTminEXT"
+ Name 49 "v10"
+ Name 50 "gl_RayTmaxEXT"
+ Name 52 "v11"
+ Name 53 "gl_HitTEXT"
+ Name 56 "v12"
+ Name 58 "gl_HitKindEXT"
+ Name 62 "v13"
+ Name 64 "gl_ObjectToWorldEXT"
+ Name 66 "v14"
+ Name 67 "gl_WorldToObjectEXT"
+ Name 69 "v15"
+ Name 70 "gl_GeometryIndexEXT"
+ Name 75 "v16"
+ Name 76 "gl_ObjectToWorld3x4EXT"
+ Name 79 "v17"
+ Name 80 "gl_WorldToObject3x4EXT"
+ Name 85 "accEXT"
+ Name 98 "localPayload"
+ Name 100 "incomingPayload"
+ Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+ Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+ Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
+ Decorate 23(gl_InstanceID) BuiltIn InstanceId
+ Decorate 26(gl_InstanceCustomIndexEXT) BuiltIn InstanceCustomIndexKHR
+ Decorate 33(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR
+ Decorate 36(gl_WorldRayDirectionEXT) BuiltIn WorldRayDirectionKHR
+ Decorate 39(gl_ObjectRayOriginEXT) BuiltIn ObjectRayOriginKHR
+ Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR
+ Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR
+ Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR
+ Decorate 53(gl_HitTEXT) BuiltIn HitTKHR
+ Decorate 58(gl_HitKindEXT) BuiltIn HitKindKHR
+ Decorate 64(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR
+ Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR
+ Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR
+ Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
+ Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
+ Decorate 85(accEXT) DescriptorSet 0
+ Decorate 85(accEXT) Binding 0
+ Decorate 98(localPayload) Location 0
+ Decorate 100(incomingPayload) Location 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 3
+ 8: TypePointer Function 7(ivec3)
+ 10: TypePointer Input 7(ivec3)
+11(gl_LaunchIDEXT): 10(ptr) Variable Input
+14(gl_LaunchSizeEXT): 10(ptr) Variable Input
+ 16: TypeInt 32 1
+ 17: TypePointer Function 16(int)
+ 19: TypePointer Input 16(int)
+20(gl_PrimitiveID): 19(ptr) Variable Input
+23(gl_InstanceID): 19(ptr) Variable Input
+26(gl_InstanceCustomIndexEXT): 19(ptr) Variable Input
+ 28: TypeFloat 32
+ 29: TypeVector 28(float) 3
+ 30: TypePointer Function 29(fvec3)
+ 32: TypePointer Input 29(fvec3)
+33(gl_WorldRayOriginEXT): 32(ptr) Variable Input
+36(gl_WorldRayDirectionEXT): 32(ptr) Variable Input
+39(gl_ObjectRayOriginEXT): 32(ptr) Variable Input
+42(gl_ObjectRayDirectionEXT): 32(ptr) Variable Input
+ 44: TypePointer Function 28(float)
+ 46: TypePointer Input 28(float)
+47(gl_RayTminEXT): 46(ptr) Variable Input
+50(gl_RayTmaxEXT): 46(ptr) Variable Input
+ 53(gl_HitTEXT): 46(ptr) Variable Input
+ 55: TypePointer Function 6(int)
+ 57: TypePointer Input 6(int)
+58(gl_HitKindEXT): 57(ptr) Variable Input
+ 60: TypeMatrix 29(fvec3) 4
+ 61: TypePointer Function 60
+ 63: TypePointer Input 60
+64(gl_ObjectToWorldEXT): 63(ptr) Variable Input
+67(gl_WorldToObjectEXT): 63(ptr) Variable Input
+70(gl_GeometryIndexEXT): 19(ptr) Variable Input
+ 72: TypeVector 28(float) 4
+ 73: TypeMatrix 72(fvec4) 3
+ 74: TypePointer Function 73
+76(gl_ObjectToWorld3x4EXT): 63(ptr) Variable Input
+80(gl_WorldToObject3x4EXT): 63(ptr) Variable Input
+ 83: TypeAccelerationStructureKHR
+ 84: TypePointer UniformConstant 83
+ 85(accEXT): 84(ptr) Variable UniformConstant
+ 87: 6(int) Constant 0
+ 88: 6(int) Constant 1
+ 89: 6(int) Constant 2
+ 90: 6(int) Constant 3
+ 91: 28(float) Constant 1056964608
+ 92: 29(fvec3) ConstantComposite 91 91 91
+ 93: 28(float) Constant 1065353216
+ 94: 29(fvec3) ConstantComposite 93 93 93
+ 95: 28(float) Constant 1061158912
+ 96: 16(int) Constant 1
+ 97: TypePointer RayPayloadKHR 72(fvec4)
+98(localPayload): 97(ptr) Variable RayPayloadKHR
+ 99: TypePointer IncomingRayPayloadKHR 72(fvec4)
+100(incomingPayload): 99(ptr) Variable IncomingRayPayloadKHR
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(v0): 8(ptr) Variable Function
+ 13(v1): 8(ptr) Variable Function
+ 18(v2): 17(ptr) Variable Function
+ 22(v3): 17(ptr) Variable Function
+ 25(v4): 17(ptr) Variable Function
+ 31(v5): 30(ptr) Variable Function
+ 35(v6): 30(ptr) Variable Function
+ 38(v7): 30(ptr) Variable Function
+ 41(v8): 30(ptr) Variable Function
+ 45(v9): 44(ptr) Variable Function
+ 49(v10): 44(ptr) Variable Function
+ 52(v11): 44(ptr) Variable Function
+ 56(v12): 55(ptr) Variable Function
+ 62(v13): 61(ptr) Variable Function
+ 66(v14): 61(ptr) Variable Function
+ 69(v15): 17(ptr) Variable Function
+ 75(v16): 74(ptr) Variable Function
+ 79(v17): 74(ptr) Variable Function
+ 12: 7(ivec3) Load 11(gl_LaunchIDEXT)
+ Store 9(v0) 12
+ 15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
+ Store 13(v1) 15
+ 21: 16(int) Load 20(gl_PrimitiveID)
+ Store 18(v2) 21
+ 24: 16(int) Load 23(gl_InstanceID)
+ Store 22(v3) 24
+ 27: 16(int) Load 26(gl_InstanceCustomIndexEXT)
+ Store 25(v4) 27
+ 34: 29(fvec3) Load 33(gl_WorldRayOriginEXT)
+ Store 31(v5) 34
+ 37: 29(fvec3) Load 36(gl_WorldRayDirectionEXT)
+ Store 35(v6) 37
+ 40: 29(fvec3) Load 39(gl_ObjectRayOriginEXT)
+ Store 38(v7) 40
+ 43: 29(fvec3) Load 42(gl_ObjectRayDirectionEXT)
+ Store 41(v8) 43
+ 48: 28(float) Load 47(gl_RayTminEXT)
+ Store 45(v9) 48
+ 51: 28(float) Load 50(gl_RayTmaxEXT)
+ Store 49(v10) 51
+ 54: 28(float) Load 53(gl_HitTEXT)
+ Store 52(v11) 54
+ 59: 6(int) Load 58(gl_HitKindEXT)
+ Store 56(v12) 59
+ 65: 60 Load 64(gl_ObjectToWorldEXT)
+ Store 62(v13) 65
+ 68: 60 Load 67(gl_WorldToObjectEXT)
+ Store 66(v14) 68
+ 71: 16(int) Load 70(gl_GeometryIndexEXT)
+ Store 69(v15) 71
+ 77: 60 Load 76(gl_ObjectToWorld3x4EXT)
+ 78: 73 Transpose 77
+ Store 75(v16) 78
+ 81: 60 Load 80(gl_WorldToObject3x4EXT)
+ 82: 73 Transpose 81
+ Store 79(v17) 82
+ 86: 83 Load 85(accEXT)
+ TraceRayKHR 86 87 88 89 90 87 92 91 94 95 96
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out
new file mode 100644
index 0000000..6c87d1c
--- /dev/null
+++ b/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out
@@ -0,0 +1,10 @@
+spv.ext.ClosestHitShader_Errors.rchit
+ERROR: 0:8: 'assign' : l-value required "payload" (cannot modify hitAttributeNV in this stage)
+ERROR: 0:9: 'reportIntersectionEXT' : no matching overloaded function found
+ERROR: 0:10: 'terminateRayEXT' : no matching overloaded function found
+ERROR: 0:11: 'ignoreIntersectionEXT' : no matching overloaded function found
+ERROR: 0:12: 'gl_RayFlagsSkipAABBEXT' : required extension not requested: GL_EXT_ray_flags_primitive_culling
+ERROR: 5 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.ext.IntersectShader.rint.out b/Test/baseResults/spv.ext.IntersectShader.rint.out
new file mode 100644
index 0000000..b8b8de2
--- /dev/null
+++ b/Test/baseResults/spv.ext.IntersectShader.rint.out
@@ -0,0 +1,156 @@
+spv.ext.IntersectShader.rint
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 81
+
+ Capability RayTracingProvisionalKHR
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint IntersectionKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 56 59 65 69
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_tracing"
+ Name 4 "main"
+ Name 9 "v0"
+ Name 11 "gl_LaunchIDEXT"
+ Name 13 "v1"
+ Name 14 "gl_LaunchSizeEXT"
+ Name 18 "v2"
+ Name 20 "gl_PrimitiveID"
+ Name 22 "v3"
+ Name 23 "gl_InstanceID"
+ Name 25 "v4"
+ Name 26 "gl_InstanceCustomIndexEXT"
+ Name 31 "v5"
+ Name 33 "gl_WorldRayOriginEXT"
+ Name 35 "v6"
+ Name 36 "gl_WorldRayDirectionEXT"
+ Name 38 "v7"
+ Name 39 "gl_ObjectRayOriginEXT"
+ Name 41 "v8"
+ Name 42 "gl_ObjectRayDirectionEXT"
+ Name 45 "v9"
+ Name 47 "gl_RayTminEXT"
+ Name 49 "v10"
+ Name 50 "gl_RayTmaxEXT"
+ Name 54 "v11"
+ Name 56 "gl_ObjectToWorldEXT"
+ Name 58 "v12"
+ Name 59 "gl_WorldToObjectEXT"
+ Name 64 "v13"
+ Name 65 "gl_ObjectToWorld3x4EXT"
+ Name 68 "v14"
+ Name 69 "gl_WorldToObject3x4EXT"
+ Name 73 "iAttr"
+ Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+ Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+ Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
+ Decorate 23(gl_InstanceID) BuiltIn InstanceId
+ Decorate 26(gl_InstanceCustomIndexEXT) BuiltIn InstanceCustomIndexKHR
+ Decorate 33(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR
+ Decorate 36(gl_WorldRayDirectionEXT) BuiltIn WorldRayDirectionKHR
+ Decorate 39(gl_ObjectRayOriginEXT) BuiltIn ObjectRayOriginKHR
+ Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR
+ Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR
+ Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR
+ Decorate 56(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR
+ Decorate 59(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR
+ Decorate 65(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
+ Decorate 69(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 3
+ 8: TypePointer Function 7(ivec3)
+ 10: TypePointer Input 7(ivec3)
+11(gl_LaunchIDEXT): 10(ptr) Variable Input
+14(gl_LaunchSizeEXT): 10(ptr) Variable Input
+ 16: TypeInt 32 1
+ 17: TypePointer Function 16(int)
+ 19: TypePointer Input 16(int)
+20(gl_PrimitiveID): 19(ptr) Variable Input
+23(gl_InstanceID): 19(ptr) Variable Input
+26(gl_InstanceCustomIndexEXT): 19(ptr) Variable Input
+ 28: TypeFloat 32
+ 29: TypeVector 28(float) 3
+ 30: TypePointer Function 29(fvec3)
+ 32: TypePointer Input 29(fvec3)
+33(gl_WorldRayOriginEXT): 32(ptr) Variable Input
+36(gl_WorldRayDirectionEXT): 32(ptr) Variable Input
+39(gl_ObjectRayOriginEXT): 32(ptr) Variable Input
+42(gl_ObjectRayDirectionEXT): 32(ptr) Variable Input
+ 44: TypePointer Function 28(float)
+ 46: TypePointer Input 28(float)
+47(gl_RayTminEXT): 46(ptr) Variable Input
+50(gl_RayTmaxEXT): 46(ptr) Variable Input
+ 52: TypeMatrix 29(fvec3) 4
+ 53: TypePointer Function 52
+ 55: TypePointer Input 52
+56(gl_ObjectToWorldEXT): 55(ptr) Variable Input
+59(gl_WorldToObjectEXT): 55(ptr) Variable Input
+ 61: TypeVector 28(float) 4
+ 62: TypeMatrix 61(fvec4) 3
+ 63: TypePointer Function 62
+65(gl_ObjectToWorld3x4EXT): 55(ptr) Variable Input
+69(gl_WorldToObject3x4EXT): 55(ptr) Variable Input
+ 72: TypePointer HitAttributeKHR 61(fvec4)
+ 73(iAttr): 72(ptr) Variable HitAttributeKHR
+ 74: 28(float) Constant 1056964608
+ 75: 28(float) Constant 0
+ 76: 28(float) Constant 1065353216
+ 77: 61(fvec4) ConstantComposite 74 74 75 76
+ 78: 6(int) Constant 1
+ 79: TypeBool
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(v0): 8(ptr) Variable Function
+ 13(v1): 8(ptr) Variable Function
+ 18(v2): 17(ptr) Variable Function
+ 22(v3): 17(ptr) Variable Function
+ 25(v4): 17(ptr) Variable Function
+ 31(v5): 30(ptr) Variable Function
+ 35(v6): 30(ptr) Variable Function
+ 38(v7): 30(ptr) Variable Function
+ 41(v8): 30(ptr) Variable Function
+ 45(v9): 44(ptr) Variable Function
+ 49(v10): 44(ptr) Variable Function
+ 54(v11): 53(ptr) Variable Function
+ 58(v12): 53(ptr) Variable Function
+ 64(v13): 63(ptr) Variable Function
+ 68(v14): 63(ptr) Variable Function
+ 12: 7(ivec3) Load 11(gl_LaunchIDEXT)
+ Store 9(v0) 12
+ 15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
+ Store 13(v1) 15
+ 21: 16(int) Load 20(gl_PrimitiveID)
+ Store 18(v2) 21
+ 24: 16(int) Load 23(gl_InstanceID)
+ Store 22(v3) 24
+ 27: 16(int) Load 26(gl_InstanceCustomIndexEXT)
+ Store 25(v4) 27
+ 34: 29(fvec3) Load 33(gl_WorldRayOriginEXT)
+ Store 31(v5) 34
+ 37: 29(fvec3) Load 36(gl_WorldRayDirectionEXT)
+ Store 35(v6) 37
+ 40: 29(fvec3) Load 39(gl_ObjectRayOriginEXT)
+ Store 38(v7) 40
+ 43: 29(fvec3) Load 42(gl_ObjectRayDirectionEXT)
+ Store 41(v8) 43
+ 48: 28(float) Load 47(gl_RayTminEXT)
+ Store 45(v9) 48
+ 51: 28(float) Load 50(gl_RayTmaxEXT)
+ Store 49(v10) 51
+ 57: 52 Load 56(gl_ObjectToWorldEXT)
+ Store 54(v11) 57
+ 60: 52 Load 59(gl_WorldToObjectEXT)
+ Store 58(v12) 60
+ 66: 52 Load 65(gl_ObjectToWorld3x4EXT)
+ 67: 62 Transpose 66
+ Store 64(v13) 67
+ 70: 52 Load 69(gl_WorldToObject3x4EXT)
+ 71: 62 Transpose 70
+ Store 68(v14) 71
+ Store 73(iAttr) 77
+ 80: 79(bool) ReportIntersectionKHR 74 78
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.IntersectShader_Errors.rint.out b/Test/baseResults/spv.ext.IntersectShader_Errors.rint.out
new file mode 100644
index 0000000..03f9b27
--- /dev/null
+++ b/Test/baseResults/spv.ext.IntersectShader_Errors.rint.out
@@ -0,0 +1,10 @@
+spv.ext.IntersectShader_Errors.rint
+ERROR: 0:3: 'rayPayloadInEXT' : not supported in this stage: intersection
+ERROR: 0:4: 'rayPayloadEXT' : not supported in this stage: intersection
+ERROR: 0:8: 'gl_HitTEXT' : undeclared identifier
+ERROR: 0:9: 'gl_HitKindEXT' : undeclared identifier
+ERROR: 0:10: 'traceRayEXT' : no matching overloaded function found
+ERROR: 5 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.ext.MissShader.rmiss.out b/Test/baseResults/spv.ext.MissShader.rmiss.out
new file mode 100644
index 0000000..dd3f15f
--- /dev/null
+++ b/Test/baseResults/spv.ext.MissShader.rmiss.out
@@ -0,0 +1,99 @@
+spv.ext.MissShader.rmiss
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 54
+
+ Capability RayTracingProvisionalKHR
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint MissKHR 4 "main" 11 14 21 24 29 32
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_tracing"
+ Name 4 "main"
+ Name 9 "v0"
+ Name 11 "gl_LaunchIDEXT"
+ Name 13 "v1"
+ Name 14 "gl_LaunchSizeEXT"
+ Name 19 "v2"
+ Name 21 "gl_WorldRayOriginEXT"
+ Name 23 "v3"
+ Name 24 "gl_WorldRayDirectionEXT"
+ Name 27 "v4"
+ Name 29 "gl_RayTminEXT"
+ Name 31 "v5"
+ Name 32 "gl_RayTmaxEXT"
+ Name 36 "accEXT"
+ Name 51 "localPayload"
+ Name 53 "incomingPayload"
+ Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+ Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+ Decorate 21(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR
+ Decorate 24(gl_WorldRayDirectionEXT) BuiltIn WorldRayDirectionKHR
+ Decorate 29(gl_RayTminEXT) BuiltIn RayTminKHR
+ Decorate 32(gl_RayTmaxEXT) BuiltIn RayTmaxKHR
+ Decorate 36(accEXT) DescriptorSet 0
+ Decorate 36(accEXT) Binding 0
+ Decorate 51(localPayload) Location 0
+ Decorate 53(incomingPayload) Location 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 3
+ 8: TypePointer Function 7(ivec3)
+ 10: TypePointer Input 7(ivec3)
+11(gl_LaunchIDEXT): 10(ptr) Variable Input
+14(gl_LaunchSizeEXT): 10(ptr) Variable Input
+ 16: TypeFloat 32
+ 17: TypeVector 16(float) 3
+ 18: TypePointer Function 17(fvec3)
+ 20: TypePointer Input 17(fvec3)
+21(gl_WorldRayOriginEXT): 20(ptr) Variable Input
+24(gl_WorldRayDirectionEXT): 20(ptr) Variable Input
+ 26: TypePointer Function 16(float)
+ 28: TypePointer Input 16(float)
+29(gl_RayTminEXT): 28(ptr) Variable Input
+32(gl_RayTmaxEXT): 28(ptr) Variable Input
+ 34: TypeAccelerationStructureKHR
+ 35: TypePointer UniformConstant 34
+ 36(accEXT): 35(ptr) Variable UniformConstant
+ 38: 6(int) Constant 0
+ 39: 6(int) Constant 1
+ 40: 6(int) Constant 2
+ 41: 6(int) Constant 3
+ 42: 16(float) Constant 1056964608
+ 43: 17(fvec3) ConstantComposite 42 42 42
+ 44: 16(float) Constant 1065353216
+ 45: 17(fvec3) ConstantComposite 44 44 44
+ 46: 16(float) Constant 1061158912
+ 47: TypeInt 32 1
+ 48: 47(int) Constant 1
+ 49: TypeVector 16(float) 4
+ 50: TypePointer RayPayloadKHR 49(fvec4)
+51(localPayload): 50(ptr) Variable RayPayloadKHR
+ 52: TypePointer IncomingRayPayloadKHR 49(fvec4)
+53(incomingPayload): 52(ptr) Variable IncomingRayPayloadKHR
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(v0): 8(ptr) Variable Function
+ 13(v1): 8(ptr) Variable Function
+ 19(v2): 18(ptr) Variable Function
+ 23(v3): 18(ptr) Variable Function
+ 27(v4): 26(ptr) Variable Function
+ 31(v5): 26(ptr) Variable Function
+ 12: 7(ivec3) Load 11(gl_LaunchIDEXT)
+ Store 9(v0) 12
+ 15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
+ Store 13(v1) 15
+ 22: 17(fvec3) Load 21(gl_WorldRayOriginEXT)
+ Store 19(v2) 22
+ 25: 17(fvec3) Load 24(gl_WorldRayDirectionEXT)
+ Store 23(v3) 25
+ 30: 16(float) Load 29(gl_RayTminEXT)
+ Store 27(v4) 30
+ 33: 16(float) Load 32(gl_RayTmaxEXT)
+ Store 31(v5) 33
+ 37: 34 Load 36(accEXT)
+ TraceRayKHR 37 38 39 40 41 38 43 42 45 46 48
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out b/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out
new file mode 100644
index 0000000..929a2a7
--- /dev/null
+++ b/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out
@@ -0,0 +1,21 @@
+spv.ext.MissShader_Errors.rmiss
+ERROR: 0:3: 'hitAttributeEXT' : not supported in this stage: miss
+ERROR: 0:6: 'gl_PrimitiveID' : undeclared identifier
+ERROR: 0:6: '=' : cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:7: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?)
+ERROR: 0:7: '=' : cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:8: 'gl_InstanceCustomIndexEXT' : undeclared identifier
+ERROR: 0:8: '=' : cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:9: 'gl_ObjectToWorldEXT' : undeclared identifier
+ERROR: 0:9: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
+ERROR: 0:10: 'gl_WorldToObjectEXT' : undeclared identifier
+ERROR: 0:10: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
+ERROR: 0:11: 'gl_HitTEXT' : undeclared identifier
+ERROR: 0:12: 'gl_HitKindEXT' : undeclared identifier
+ERROR: 0:13: 'reportIntersectionEXT' : no matching overloaded function found
+ERROR: 0:14: 'ignoreIntersectionEXT' : no matching overloaded function found
+ERROR: 0:15: 'terminateRayEXT' : no matching overloaded function found
+ERROR: 16 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.ext.RayCallable.rcall.out b/Test/baseResults/spv.ext.RayCallable.rcall.out
new file mode 100644
index 0000000..ac3b2b5
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayCallable.rcall.out
@@ -0,0 +1,60 @@
+spv.ext.RayCallable.rcall
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 30
+
+ Capability RayTracingProvisionalKHR
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint CallableKHR 4 "main" 11 14
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_tracing"
+ Name 4 "main"
+ Name 9 "id"
+ Name 11 "gl_LaunchIDEXT"
+ Name 13 "size"
+ Name 14 "gl_LaunchSizeEXT"
+ Name 16 "dataBlock"
+ MemberName 16(dataBlock) 0 "data1"
+ Name 18 ""
+ Name 29 "data0"
+ Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+ Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+ Decorate 16(dataBlock) Block
+ Decorate 18 Location 1
+ Decorate 29(data0) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 3
+ 8: TypePointer Function 7(ivec3)
+ 10: TypePointer Input 7(ivec3)
+11(gl_LaunchIDEXT): 10(ptr) Variable Input
+14(gl_LaunchSizeEXT): 10(ptr) Variable Input
+ 16(dataBlock): TypeStruct 6(int)
+ 17: TypePointer IncomingCallableDataKHR 16(dataBlock)
+ 18: 17(ptr) Variable IncomingCallableDataKHR
+ 19: TypeInt 32 1
+ 20: 19(int) Constant 0
+ 21: 6(int) Constant 256
+ 22: TypePointer IncomingCallableDataKHR 6(int)
+ 24: 6(int) Constant 2
+ 25: 19(int) Constant 1
+ 26: TypeFloat 32
+ 27: TypeVector 26(float) 4
+ 28: TypePointer CallableDataKHR 27(fvec4)
+ 29(data0): 28(ptr) Variable CallableDataKHR
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(id): 8(ptr) Variable Function
+ 13(size): 8(ptr) Variable Function
+ 12: 7(ivec3) Load 11(gl_LaunchIDEXT)
+ Store 9(id) 12
+ 15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
+ Store 13(size) 15
+ 23: 22(ptr) AccessChain 18 20
+ Store 23 21
+ ExecuteCallableKHR 24 25
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out b/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out
new file mode 100644
index 0000000..4699342
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out
@@ -0,0 +1,35 @@
+spv.ext.RayCallable_Errors.rcall
+ERROR: 0:3: 'hitAttributeEXT' : not supported in this stage: callable
+ERROR: 0:4: 'rayPayloadEXT' : not supported in this stage: callable
+ERROR: 0:5: 'rayPayloadInEXT' : not supported in this stage: callable
+ERROR: 0:9: 'gl_PrimitiveID' : undeclared identifier
+ERROR: 0:9: '=' : cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:10: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?)
+ERROR: 0:10: '=' : cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:11: 'gl_InstanceCustomIndexEXT' : undeclared identifier
+ERROR: 0:11: '=' : cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:12: 'gl_WorldRayOriginEXT' : undeclared identifier
+ERROR: 0:12: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:13: 'gl_WorldRayDirectionEXT' : undeclared identifier
+ERROR: 0:13: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:14: 'gl_ObjectRayOriginEXT' : undeclared identifier
+ERROR: 0:14: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:15: 'gl_ObjectRayDirectionEXT' : undeclared identifier
+ERROR: 0:15: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:16: 'gl_RayTminEXT' : undeclared identifier
+ERROR: 0:17: 'gl_RayTmaxEXT' : undeclared identifier
+ERROR: 0:18: 'gl_ObjectToWorldEXT' : undeclared identifier
+ERROR: 0:18: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
+ERROR: 0:19: 'gl_WorldToObjectEXT' : undeclared identifier
+ERROR: 0:19: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
+ERROR: 0:20: 'gl_HitTEXT' : undeclared identifier
+ERROR: 0:21: 'gl_HitKindEXT' : undeclared identifier
+ERROR: 0:22: 'gl_IncomingRayFlagsEXT' : undeclared identifier
+ERROR: 0:22: '=' : cannot convert from ' temp float' to ' temp highp uint'
+ERROR: 0:23: 'reportIntersectionEXT' : no matching overloaded function found
+ERROR: 0:24: 'ignoreIntersectionEXT' : no matching overloaded function found
+ERROR: 0:25: 'terminateRayEXT' : no matching overloaded function found
+ERROR: 30 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.ext.RayConstants.rgen.out b/Test/baseResults/spv.ext.RayConstants.rgen.out
new file mode 100644
index 0000000..5903ec9
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayConstants.rgen.out
@@ -0,0 +1,46 @@
+spv.ext.RayConstants.rgen
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 27
+
+ Capability RayTracingProvisionalKHR
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint RayGenerationKHR 4 "main"
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_tracing"
+ Name 4 "main"
+ Name 8 "accEXT"
+ Name 26 "payload"
+ Decorate 8(accEXT) DescriptorSet 0
+ Decorate 8(accEXT) Binding 0
+ Decorate 26(payload) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeAccelerationStructureKHR
+ 7: TypePointer UniformConstant 6
+ 8(accEXT): 7(ptr) Variable UniformConstant
+ 10: TypeInt 32 0
+ 11: 10(int) Constant 255
+ 12: 10(int) Constant 0
+ 13: 10(int) Constant 1
+ 14: TypeFloat 32
+ 15: TypeVector 14(float) 3
+ 16: 14(float) Constant 0
+ 17: 15(fvec3) ConstantComposite 16 16 16
+ 18: 14(float) Constant 1056964608
+ 19: 14(float) Constant 1065353216
+ 20: 15(fvec3) ConstantComposite 19 19 19
+ 21: 14(float) Constant 1061158912
+ 22: TypeInt 32 1
+ 23: 22(int) Constant 1
+ 24: TypeVector 14(float) 4
+ 25: TypePointer RayPayloadKHR 24(fvec4)
+ 26(payload): 25(ptr) Variable RayPayloadKHR
+ 4(main): 2 Function None 3
+ 5: Label
+ 9: 6 Load 8(accEXT)
+ TraceRayKHR 9 11 12 13 13 12 17 18 20 21 23
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenShader.rgen.out b/Test/baseResults/spv.ext.RayGenShader.rgen.out
new file mode 100644
index 0000000..da16fa4
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayGenShader.rgen.out
@@ -0,0 +1,104 @@
+spv.ext.RayGenShader.rgen
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 58
+
+ Capability RayTraversalPrimitiveCullingProvisionalKHR
+ Capability RayTracingProvisionalKHR
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint RayGenerationKHR 4 "main" 11 21
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_flags_primitive_culling"
+ SourceExtension "GL_EXT_ray_tracing"
+ Name 4 "main"
+ Name 8 "lx"
+ Name 11 "gl_LaunchIDEXT"
+ Name 16 "ly"
+ Name 20 "sx"
+ Name 21 "gl_LaunchSizeEXT"
+ Name 24 "sy"
+ Name 29 "accEXT0"
+ Name 38 "block"
+ MemberName 38(block) 0 "dir"
+ MemberName 38(block) 1 "origin"
+ Name 40 ""
+ Name 51 "accEXT1"
+ Name 54 "imageu"
+ Name 57 "payload"
+ Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+ Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+ Decorate 29(accEXT0) DescriptorSet 0
+ Decorate 29(accEXT0) Binding 0
+ MemberDecorate 38(block) 0 Offset 0
+ MemberDecorate 38(block) 1 Offset 16
+ Decorate 38(block) BufferBlock
+ Decorate 51(accEXT1) DescriptorSet 0
+ Decorate 51(accEXT1) Binding 1
+ Decorate 54(imageu) DescriptorSet 0
+ Decorate 54(imageu) Binding 2
+ Decorate 57(payload) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 9: TypeVector 6(int) 3
+ 10: TypePointer Input 9(ivec3)
+11(gl_LaunchIDEXT): 10(ptr) Variable Input
+ 12: 6(int) Constant 0
+ 13: TypePointer Input 6(int)
+ 17: 6(int) Constant 1
+21(gl_LaunchSizeEXT): 10(ptr) Variable Input
+ 27: TypeAccelerationStructureKHR
+ 28: TypePointer UniformConstant 27
+ 29(accEXT0): 28(ptr) Variable UniformConstant
+ 35: 6(int) Constant 768
+ 36: TypeFloat 32
+ 37: TypeVector 36(float) 3
+ 38(block): TypeStruct 37(fvec3) 37(fvec3)
+ 39: TypePointer ShaderRecordBufferKHR 38(block)
+ 40: 39(ptr) Variable ShaderRecordBufferKHR
+ 41: TypeInt 32 1
+ 42: 41(int) Constant 1
+ 43: TypePointer ShaderRecordBufferKHR 37(fvec3)
+ 46: 36(float) Constant 1056964608
+ 47: 41(int) Constant 0
+ 50: 36(float) Constant 1061158912
+ 51(accEXT1): 28(ptr) Variable UniformConstant
+ 52: TypeImage 6(int) 2D nonsampled format:R32ui
+ 53: TypePointer UniformConstant 52
+ 54(imageu): 53(ptr) Variable UniformConstant
+ 55: TypeVector 36(float) 4
+ 56: TypePointer RayPayloadKHR 55(fvec4)
+ 57(payload): 56(ptr) Variable RayPayloadKHR
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(lx): 7(ptr) Variable Function
+ 16(ly): 7(ptr) Variable Function
+ 20(sx): 7(ptr) Variable Function
+ 24(sy): 7(ptr) Variable Function
+ 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12
+ 15: 6(int) Load 14
+ Store 8(lx) 15
+ 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17
+ 19: 6(int) Load 18
+ Store 16(ly) 19
+ 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12
+ 23: 6(int) Load 22
+ Store 20(sx) 23
+ 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
+ 26: 6(int) Load 25
+ Store 24(sy) 26
+ 30: 27 Load 29(accEXT0)
+ 31: 6(int) Load 8(lx)
+ 32: 6(int) Load 16(ly)
+ 33: 6(int) Load 20(sx)
+ 34: 6(int) Load 24(sy)
+ 44: 43(ptr) AccessChain 40 42
+ 45: 37(fvec3) Load 44
+ 48: 43(ptr) AccessChain 40 47
+ 49: 37(fvec3) Load 48
+ TraceRayKHR 30 31 32 33 34 35 45 46 49 50 42
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenShader11.rgen.out b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
new file mode 100644
index 0000000..30ed902
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
@@ -0,0 +1,91 @@
+spv.ext.RayGenShader11.rgen
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 53
+
+ Capability RayTracingProvisionalKHR
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint RayGenerationKHR 4 "main" 11 21
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_tracing"
+ Name 4 "main"
+ Name 8 "lx"
+ Name 11 "gl_LaunchIDEXT"
+ Name 16 "ly"
+ Name 20 "sx"
+ Name 21 "gl_LaunchSizeEXT"
+ Name 24 "sy"
+ Name 29 "accEXT"
+ Name 37 "block"
+ MemberName 37(block) 0 "dir"
+ MemberName 37(block) 1 "origin"
+ Name 39 ""
+ Name 52 "payload"
+ Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+ Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+ Decorate 29(accEXT) DescriptorSet 0
+ Decorate 29(accEXT) Binding 0
+ MemberDecorate 37(block) 0 Offset 0
+ MemberDecorate 37(block) 1 Offset 16
+ Decorate 37(block) BufferBlock
+ Decorate 52(payload) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 9: TypeVector 6(int) 3
+ 10: TypePointer Input 9(ivec3)
+11(gl_LaunchIDEXT): 10(ptr) Variable Input
+ 12: 6(int) Constant 0
+ 13: TypePointer Input 6(int)
+ 17: 6(int) Constant 1
+21(gl_LaunchSizeEXT): 10(ptr) Variable Input
+ 27: TypeAccelerationStructureKHR
+ 28: TypePointer UniformConstant 27
+ 29(accEXT): 28(ptr) Variable UniformConstant
+ 35: TypeFloat 32
+ 36: TypeVector 35(float) 3
+ 37(block): TypeStruct 36(fvec3) 36(fvec3)
+ 38: TypePointer ShaderRecordBufferKHR 37(block)
+ 39: 38(ptr) Variable ShaderRecordBufferKHR
+ 40: TypeInt 32 1
+ 41: 40(int) Constant 1
+ 42: TypePointer ShaderRecordBufferKHR 36(fvec3)
+ 45: 35(float) Constant 1056964608
+ 46: 40(int) Constant 0
+ 49: 35(float) Constant 1061158912
+ 50: TypeVector 35(float) 4
+ 51: TypePointer RayPayloadKHR 50(fvec4)
+ 52(payload): 51(ptr) Variable RayPayloadKHR
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(lx): 7(ptr) Variable Function
+ 16(ly): 7(ptr) Variable Function
+ 20(sx): 7(ptr) Variable Function
+ 24(sy): 7(ptr) Variable Function
+ 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12
+ 15: 6(int) Load 14
+ Store 8(lx) 15
+ 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17
+ 19: 6(int) Load 18
+ Store 16(ly) 19
+ 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12
+ 23: 6(int) Load 22
+ Store 20(sx) 23
+ 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
+ 26: 6(int) Load 25
+ Store 24(sy) 26
+ 30: 27 Load 29(accEXT)
+ 31: 6(int) Load 8(lx)
+ 32: 6(int) Load 16(ly)
+ 33: 6(int) Load 20(sx)
+ 34: 6(int) Load 24(sy)
+ 43: 42(ptr) AccessChain 39 41
+ 44: 36(fvec3) Load 43
+ 47: 42(ptr) AccessChain 39 46
+ 48: 36(fvec3) Load 47
+ TraceRayKHR 30 31 32 33 34 12 44 45 48 49 41
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
new file mode 100644
index 0000000..3962bcb
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
@@ -0,0 +1,141 @@
+spv.ext.RayGenShaderArray.rgen
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 89
+
+ Capability ShaderNonUniformEXT
+ Capability RuntimeDescriptorArrayEXT
+ Capability RayTracingProvisionalKHR
+ Extension "SPV_EXT_descriptor_indexing"
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint RayGenerationKHR 4 "main" 11 21
+ Source GLSL 460
+ SourceExtension "GL_EXT_nonuniform_qualifier"
+ SourceExtension "GL_EXT_ray_tracing"
+ Name 4 "main"
+ Name 8 "lx"
+ Name 11 "gl_LaunchIDEXT"
+ Name 16 "ly"
+ Name 20 "sx"
+ Name 21 "gl_LaunchSizeEXT"
+ Name 24 "sy"
+ Name 30 "accEXT0"
+ Name 34 "block"
+ MemberName 34(block) 0 "dir"
+ MemberName 34(block) 1 "origin"
+ MemberName 34(block) 2 "i"
+ Name 36 ""
+ Name 60 "accEXT1"
+ Name 88 "payload"
+ Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+ Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+ Decorate 30(accEXT0) DescriptorSet 0
+ Decorate 30(accEXT0) Binding 0
+ MemberDecorate 34(block) 0 Offset 0
+ MemberDecorate 34(block) 1 Offset 16
+ MemberDecorate 34(block) 2 Offset 28
+ Decorate 34(block) BufferBlock
+ Decorate 60(accEXT1) DescriptorSet 0
+ Decorate 60(accEXT1) Binding 1
+ Decorate 75 DecorationNonUniformEXT
+ Decorate 76 DecorationNonUniformEXT
+ Decorate 77 DecorationNonUniformEXT
+ Decorate 88(payload) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 9: TypeVector 6(int) 3
+ 10: TypePointer Input 9(ivec3)
+11(gl_LaunchIDEXT): 10(ptr) Variable Input
+ 12: 6(int) Constant 0
+ 13: TypePointer Input 6(int)
+ 17: 6(int) Constant 1
+21(gl_LaunchSizeEXT): 10(ptr) Variable Input
+ 27: TypeAccelerationStructureKHR
+ 28: TypeRuntimeArray 27
+ 29: TypePointer UniformConstant 28
+ 30(accEXT0): 29(ptr) Variable UniformConstant
+ 31: TypeFloat 32
+ 32: TypeVector 31(float) 3
+ 33: TypeInt 32 1
+ 34(block): TypeStruct 32(fvec3) 32(fvec3) 33(int)
+ 35: TypePointer ShaderRecordBufferKHR 34(block)
+ 36: 35(ptr) Variable ShaderRecordBufferKHR
+ 37: 33(int) Constant 2
+ 38: TypePointer ShaderRecordBufferKHR 33(int)
+ 41: TypePointer UniformConstant 27
+ 48: 33(int) Constant 1
+ 49: TypePointer ShaderRecordBufferKHR 32(fvec3)
+ 52: 31(float) Constant 1056964608
+ 53: 33(int) Constant 0
+ 56: 31(float) Constant 1061158912
+ 57: 6(int) Constant 2
+ 58: TypeArray 27 57
+ 59: TypePointer UniformConstant 58
+ 60(accEXT1): 59(ptr) Variable UniformConstant
+ 86: TypeVector 31(float) 4
+ 87: TypePointer RayPayloadKHR 86(fvec4)
+ 88(payload): 87(ptr) Variable RayPayloadKHR
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(lx): 7(ptr) Variable Function
+ 16(ly): 7(ptr) Variable Function
+ 20(sx): 7(ptr) Variable Function
+ 24(sy): 7(ptr) Variable Function
+ 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12
+ 15: 6(int) Load 14
+ Store 8(lx) 15
+ 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17
+ 19: 6(int) Load 18
+ Store 16(ly) 19
+ 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12
+ 23: 6(int) Load 22
+ Store 20(sx) 23
+ 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
+ 26: 6(int) Load 25
+ Store 24(sy) 26
+ 39: 38(ptr) AccessChain 36 37
+ 40: 33(int) Load 39
+ 42: 41(ptr) AccessChain 30(accEXT0) 40
+ 43: 27 Load 42
+ 44: 6(int) Load 8(lx)
+ 45: 6(int) Load 16(ly)
+ 46: 6(int) Load 20(sx)
+ 47: 6(int) Load 24(sy)
+ 50: 49(ptr) AccessChain 36 48
+ 51: 32(fvec3) Load 50
+ 54: 49(ptr) AccessChain 36 53
+ 55: 32(fvec3) Load 54
+ TraceRayKHR 43 44 45 46 47 12 51 52 55 56 48
+ 61: 38(ptr) AccessChain 36 37
+ 62: 33(int) Load 61
+ 63: 41(ptr) AccessChain 60(accEXT1) 62
+ 64: 27 Load 63
+ 65: 6(int) Load 8(lx)
+ 66: 6(int) Load 16(ly)
+ 67: 6(int) Load 20(sx)
+ 68: 6(int) Load 24(sy)
+ 69: 49(ptr) AccessChain 36 48
+ 70: 32(fvec3) Load 69
+ 71: 49(ptr) AccessChain 36 53
+ 72: 32(fvec3) Load 71
+ TraceRayKHR 64 65 66 67 68 12 70 52 72 56 48
+ 73: 38(ptr) AccessChain 36 37
+ 74: 33(int) Load 73
+ 75: 33(int) CopyObject 74
+ 76: 41(ptr) AccessChain 30(accEXT0) 75
+ 77: 27 Load 76
+ 78: 6(int) Load 8(lx)
+ 79: 6(int) Load 16(ly)
+ 80: 6(int) Load 20(sx)
+ 81: 6(int) Load 24(sy)
+ 82: 49(ptr) AccessChain 36 48
+ 83: 32(fvec3) Load 82
+ 84: 49(ptr) AccessChain 36 53
+ 85: 32(fvec3) Load 84
+ TraceRayKHR 77 78 79 80 81 12 83 52 85 56 48
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out b/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out
new file mode 100644
index 0000000..6dc7480
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out
@@ -0,0 +1,40 @@
+spv.ext.RayGenShader_Errors.rgen
+ERROR: 0:3: 'hitAttributeEXT' : not supported in this stage: ray-generation
+ERROR: 0:4: 'rayPayloadInEXT' : not supported in this stage: ray-generation
+ERROR: 0:5: 'shaderRecordNV' : can only be used with a buffer
+ERROR: 0:9: 'binding' : cannot be used with shaderRecordNV
+ERROR: 0:12: 'set' : cannot be used with shaderRecordNV
+ERROR: 0:23: 'accelerationStructureNV' : accelerationStructureNV can only be used in uniform variables or function parameters: a
+ERROR: 0:23: '=' : cannot convert from ' const int' to ' temp accelerationStructureNV'
+ERROR: 0:24: 'gl_PrimitiveID' : undeclared identifier
+ERROR: 0:24: '=' : cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:25: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?)
+ERROR: 0:25: '=' : cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:26: 'gl_InstanceCustomIndexEXT' : undeclared identifier
+ERROR: 0:26: '=' : cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:27: 'gl_WorldRayOriginEXT' : undeclared identifier
+ERROR: 0:27: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:28: 'gl_WorldRayDirectionEXT' : undeclared identifier
+ERROR: 0:28: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:29: 'gl_ObjectRayOriginEXT' : undeclared identifier
+ERROR: 0:29: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:30: 'gl_ObjectRayDirectionEXT' : undeclared identifier
+ERROR: 0:30: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:31: 'gl_RayTminEXT' : undeclared identifier
+ERROR: 0:32: 'gl_RayTmaxEXT' : undeclared identifier
+ERROR: 0:33: 'gl_ObjectToWorldEXT' : undeclared identifier
+ERROR: 0:33: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
+ERROR: 0:34: 'gl_WorldToObjectEXT' : undeclared identifier
+ERROR: 0:34: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
+ERROR: 0:35: 'gl_HitTEXT' : undeclared identifier
+ERROR: 0:36: 'gl_HitKindEXT' : undeclared identifier
+ERROR: 0:37: 'reportIntersectionEXT' : no matching overloaded function found
+ERROR: 0:38: 'ignoreIntersectionEXT' : no matching overloaded function found
+ERROR: 0:39: 'terminateRayEXT' : no matching overloaded function found
+ERROR: 0:40: 'assign' : l-value required "anon@3" (can't modify a shaderrecordnv qualified buffer)
+ERROR: 33 compilation errors. No code generated.
+
+
+ERROR: Linking ray-generation stage: Only one shaderRecordNV buffer block is allowed per stage
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.extPostDepthCoverage.frag.out b/Test/baseResults/spv.extPostDepthCoverage.frag.out
index 85a2359..28d207b 100644
--- a/Test/baseResults/spv.extPostDepthCoverage.frag.out
+++ b/Test/baseResults/spv.extPostDepthCoverage.frag.out
@@ -1,6 +1,6 @@
spv.extPostDepthCoverage.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 6
Capability Shader
diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out
index 1f955c2..ca1bca1 100644
--- a/Test/baseResults/spv.float16.frag.out
+++ b/Test/baseResults/spv.float16.frag.out
@@ -1,7 +1,7 @@
spv.float16.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 534
Capability Shader
diff --git a/Test/baseResults/spv.float16Fetch.frag.out b/Test/baseResults/spv.float16Fetch.frag.out
index 45c80fe..92ff631 100644
--- a/Test/baseResults/spv.float16Fetch.frag.out
+++ b/Test/baseResults/spv.float16Fetch.frag.out
@@ -1,7 +1,7 @@
spv.float16Fetch.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 5923
Capability Shader
diff --git a/Test/baseResults/spv.float16convertonlyarith.comp.out b/Test/baseResults/spv.float16convertonlyarith.comp.out
index 6abf0d4..5c8c292 100644
--- a/Test/baseResults/spv.float16convertonlyarith.comp.out
+++ b/Test/baseResults/spv.float16convertonlyarith.comp.out
@@ -1,6 +1,6 @@
spv.float16convertonlyarith.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 22
Capability Shader
diff --git a/Test/baseResults/spv.float16convertonlystorage.comp.out b/Test/baseResults/spv.float16convertonlystorage.comp.out
index a2ff1d0..b37bb6b 100644
--- a/Test/baseResults/spv.float16convertonlystorage.comp.out
+++ b/Test/baseResults/spv.float16convertonlystorage.comp.out
@@ -1,6 +1,6 @@
spv.float16convertonlystorage.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 22
Capability Shader
diff --git a/Test/baseResults/spv.float32.frag.out b/Test/baseResults/spv.float32.frag.out
index f1b0d02..db413c4 100644
--- a/Test/baseResults/spv.float32.frag.out
+++ b/Test/baseResults/spv.float32.frag.out
@@ -1,6 +1,6 @@
spv.float32.frag
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 533
Capability Shader
diff --git a/Test/baseResults/spv.float64.frag.out b/Test/baseResults/spv.float64.frag.out
index 231f070..b98c870 100644
--- a/Test/baseResults/spv.float64.frag.out
+++ b/Test/baseResults/spv.float64.frag.out
@@ -1,7 +1,7 @@
spv.float64.frag
Validation failed
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 524
Capability Shader
diff --git a/Test/baseResults/spv.flowControl.frag.out b/Test/baseResults/spv.flowControl.frag.out
index 30c2a4b..fc68306 100644
--- a/Test/baseResults/spv.flowControl.frag.out
+++ b/Test/baseResults/spv.flowControl.frag.out
@@ -1,6 +1,6 @@
spv.flowControl.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 39
Capability Shader
diff --git a/Test/baseResults/spv.for-complex-condition.vert.out b/Test/baseResults/spv.for-complex-condition.vert.out
index 41275a4..78252ee 100644
--- a/Test/baseResults/spv.for-complex-condition.vert.out
+++ b/Test/baseResults/spv.for-complex-condition.vert.out
@@ -1,6 +1,6 @@
spv.for-complex-condition.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 31
Capability Shader
diff --git a/Test/baseResults/spv.for-continue-break.vert.out b/Test/baseResults/spv.for-continue-break.vert.out
index ff94a93..50c034e 100644
--- a/Test/baseResults/spv.for-continue-break.vert.out
+++ b/Test/baseResults/spv.for-continue-break.vert.out
@@ -1,6 +1,6 @@
spv.for-continue-break.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 45
Capability Shader
diff --git a/Test/baseResults/spv.for-nobody.vert.out b/Test/baseResults/spv.for-nobody.vert.out
index 2a3bcf4..26844c2 100644
--- a/Test/baseResults/spv.for-nobody.vert.out
+++ b/Test/baseResults/spv.for-nobody.vert.out
@@ -1,6 +1,6 @@
spv.for-nobody.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 25
Capability Shader
diff --git a/Test/baseResults/spv.for-notest.vert.out b/Test/baseResults/spv.for-notest.vert.out
index 36c4a96..ff85cb4 100644
--- a/Test/baseResults/spv.for-notest.vert.out
+++ b/Test/baseResults/spv.for-notest.vert.out
@@ -1,6 +1,6 @@
spv.for-notest.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 20
Capability Shader
@@ -38,5 +38,5 @@
Store 8(i) 19
Branch 10
12: Label
- Return
+ Unreachable
FunctionEnd
diff --git a/Test/baseResults/spv.for-simple.vert.out b/Test/baseResults/spv.for-simple.vert.out
index ecb539f..a3e5d86 100644
--- a/Test/baseResults/spv.for-simple.vert.out
+++ b/Test/baseResults/spv.for-simple.vert.out
@@ -1,6 +1,6 @@
spv.for-simple.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 24
Capability Shader
diff --git a/Test/baseResults/spv.forLoop.frag.out b/Test/baseResults/spv.forLoop.frag.out
index a07921c..b4b0f5d 100644
--- a/Test/baseResults/spv.forLoop.frag.out
+++ b/Test/baseResults/spv.forLoop.frag.out
@@ -1,6 +1,6 @@
spv.forLoop.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 131
Capability Shader
diff --git a/Test/baseResults/spv.forwardFun.frag.out b/Test/baseResults/spv.forwardFun.frag.out
index 32875b2..26140af 100644
--- a/Test/baseResults/spv.forwardFun.frag.out
+++ b/Test/baseResults/spv.forwardFun.frag.out
@@ -1,6 +1,6 @@
spv.forwardFun.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 60
Capability Shader
@@ -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 --git a/Test/baseResults/spv.fragmentDensity-es.frag.out b/Test/baseResults/spv.fragmentDensity-es.frag.out
index 01ac383..69f92c8 100644
--- a/Test/baseResults/spv.fragmentDensity-es.frag.out
+++ b/Test/baseResults/spv.fragmentDensity-es.frag.out
@@ -1,6 +1,6 @@
spv.fragmentDensity-es.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 18
Capability Shader
diff --git a/Test/baseResults/spv.fragmentDensity.frag.out b/Test/baseResults/spv.fragmentDensity.frag.out
index 8bbc37c..5bdb43a 100644
--- a/Test/baseResults/spv.fragmentDensity.frag.out
+++ b/Test/baseResults/spv.fragmentDensity.frag.out
@@ -1,6 +1,6 @@
spv.fragmentDensity.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 21
Capability Shader
diff --git a/Test/baseResults/spv.fragmentShaderBarycentric.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out
index ffb3527..fbded6e 100644
--- a/Test/baseResults/spv.fragmentShaderBarycentric.frag.out
+++ b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out
@@ -1,6 +1,6 @@
spv.fragmentShaderBarycentric.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 43
Capability Shader
diff --git a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out
index 05dce7a..22b84ba 100644
--- a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out
+++ b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out
@@ -1,6 +1,6 @@
spv.fragmentShaderBarycentric2.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 42
Capability Shader
diff --git a/Test/baseResults/spv.fsi.frag.out b/Test/baseResults/spv.fsi.frag.out
index 51fb068..b0c9713 100644
--- a/Test/baseResults/spv.fsi.frag.out
+++ b/Test/baseResults/spv.fsi.frag.out
@@ -1,6 +1,6 @@
spv.fsi.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 24
Capability Shader
diff --git a/Test/baseResults/spv.fullyCovered.frag.out b/Test/baseResults/spv.fullyCovered.frag.out
index 76c8e44..4dbea15 100644
--- a/Test/baseResults/spv.fullyCovered.frag.out
+++ b/Test/baseResults/spv.fullyCovered.frag.out
@@ -1,6 +1,6 @@
spv.fullyCovered.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 18
Capability Shader
diff --git a/Test/baseResults/spv.functionCall.frag.out b/Test/baseResults/spv.functionCall.frag.out
index 269b74e..4fa7863 100644
--- a/Test/baseResults/spv.functionCall.frag.out
+++ b/Test/baseResults/spv.functionCall.frag.out
@@ -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 --git a/Test/baseResults/spv.functionNestedOpaque.vert.out b/Test/baseResults/spv.functionNestedOpaque.vert.out
index df590c1..4543895 100644
--- a/Test/baseResults/spv.functionNestedOpaque.vert.out
+++ b/Test/baseResults/spv.functionNestedOpaque.vert.out
@@ -1,7 +1,7 @@
spv.functionNestedOpaque.vert
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 39
Capability Shader
diff --git a/Test/baseResults/spv.functionParameterTypes.frag.out b/Test/baseResults/spv.functionParameterTypes.frag.out
index 24e780e..decc190 100644
--- a/Test/baseResults/spv.functionParameterTypes.frag.out
+++ b/Test/baseResults/spv.functionParameterTypes.frag.out
@@ -1,6 +1,6 @@
spv.functionParameterTypes.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 34
Capability Shader
diff --git a/Test/baseResults/spv.functionSemantics.frag.out b/Test/baseResults/spv.functionSemantics.frag.out
index 49bdf7c..000a7bc 100644
--- a/Test/baseResults/spv.functionSemantics.frag.out
+++ b/Test/baseResults/spv.functionSemantics.frag.out
@@ -1,6 +1,6 @@
spv.functionSemantics.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 156
Capability Shader
diff --git a/Test/baseResults/spv.glFragColor.frag.out b/Test/baseResults/spv.glFragColor.frag.out
index 55fb24f..af25280 100644
--- a/Test/baseResults/spv.glFragColor.frag.out
+++ b/Test/baseResults/spv.glFragColor.frag.out
@@ -1,6 +1,6 @@
spv.glFragColor.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 12
Capability Shader
diff --git a/Test/baseResults/spv.glsl.register.autoassign.frag.out b/Test/baseResults/spv.glsl.register.autoassign.frag.out
index 9c8ccb5..9872f4a 100644
--- a/Test/baseResults/spv.glsl.register.autoassign.frag.out
+++ b/Test/baseResults/spv.glsl.register.autoassign.frag.out
@@ -1,6 +1,6 @@
spv.glsl.register.autoassign.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 142
Capability Shader
diff --git a/Test/baseResults/spv.glsl.register.noautoassign.frag.out b/Test/baseResults/spv.glsl.register.noautoassign.frag.out
index 44d63ed..b52e220 100644
--- a/Test/baseResults/spv.glsl.register.noautoassign.frag.out
+++ b/Test/baseResults/spv.glsl.register.noautoassign.frag.out
@@ -1,6 +1,6 @@
spv.glsl.register.noautoassign.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 142
Capability Shader
diff --git a/Test/baseResults/spv.hlslDebugInfo.frag.out b/Test/baseResults/spv.hlslDebugInfo.frag.out
index 35a6a4d..1d2e6b4 100644
--- a/Test/baseResults/spv.hlslDebugInfo.frag.out
+++ b/Test/baseResults/spv.hlslDebugInfo.frag.out
@@ -1,6 +1,6 @@
spv.hlslDebugInfo.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 19
Capability Shader
diff --git a/Test/baseResults/spv.hlslOffsets.vert.out b/Test/baseResults/spv.hlslOffsets.vert.out
index 7236754..b1cdb6b 100644
--- a/Test/baseResults/spv.hlslOffsets.vert.out
+++ b/Test/baseResults/spv.hlslOffsets.vert.out
@@ -18,7 +18,7 @@
0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430) buffer highp float m0, layout( column_major std430) buffer highp 3-component vector of float m4, layout( column_major std430) buffer highp float m16, layout( column_major std430 offset=20) buffer highp 3-component vector of float m20, layout( column_major std430) buffer highp 3-component vector of float m32, layout( column_major std430) buffer highp 2-component vector of float m48, layout( column_major std430) buffer highp 2-component vector of float m56, layout( column_major std430) buffer highp float m64, layout( column_major std430) buffer highp 2-component vector of float m68, layout( column_major std430) buffer highp float m76, layout( column_major std430) buffer highp float m80, layout( column_major std430 offset=88) buffer highp 2-component vector of float m88, layout( column_major std430) buffer highp 2-component vector of float m96, layout( column_major std430) buffer 2-component vector of double m112})
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 14
Capability Shader
diff --git a/Test/baseResults/spv.image.frag.out b/Test/baseResults/spv.image.frag.out
index 0fefd01..63d26d8 100644
--- a/Test/baseResults/spv.image.frag.out
+++ b/Test/baseResults/spv.image.frag.out
@@ -1,7 +1,7 @@
spv.image.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 395
Capability Shader
diff --git a/Test/baseResults/spv.imageLoadStoreLod.frag.out b/Test/baseResults/spv.imageLoadStoreLod.frag.out
index 28cd4f9..ec16d90 100644
--- a/Test/baseResults/spv.imageLoadStoreLod.frag.out
+++ b/Test/baseResults/spv.imageLoadStoreLod.frag.out
@@ -1,7 +1,6 @@
spv.imageLoadStoreLod.frag
-Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 82
Capability Shader
diff --git a/Test/baseResults/spv.int16.amd.frag.out b/Test/baseResults/spv.int16.amd.frag.out
index 26c701d..3f6179b 100644
--- a/Test/baseResults/spv.int16.amd.frag.out
+++ b/Test/baseResults/spv.int16.amd.frag.out
@@ -1,6 +1,6 @@
spv.int16.amd.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 560
Capability Shader
diff --git a/Test/baseResults/spv.int16.frag.out b/Test/baseResults/spv.int16.frag.out
index a7b9bfe..ff8a446 100644
--- a/Test/baseResults/spv.int16.frag.out
+++ b/Test/baseResults/spv.int16.frag.out
@@ -1,6 +1,6 @@
spv.int16.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 523
Capability Shader
diff --git a/Test/baseResults/spv.int32.frag.out b/Test/baseResults/spv.int32.frag.out
index e5c7889..1e8cd70 100644
--- a/Test/baseResults/spv.int32.frag.out
+++ b/Test/baseResults/spv.int32.frag.out
@@ -1,6 +1,6 @@
spv.int32.frag
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 493
Capability Shader
diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out
index b1375a6..4510134 100644
--- a/Test/baseResults/spv.int64.frag.out
+++ b/Test/baseResults/spv.int64.frag.out
@@ -1,7 +1,7 @@
spv.int64.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 489
Capability Shader
diff --git a/Test/baseResults/spv.int8.frag.out b/Test/baseResults/spv.int8.frag.out
index 0a4740d..c84ca7e 100644
--- a/Test/baseResults/spv.int8.frag.out
+++ b/Test/baseResults/spv.int8.frag.out
@@ -1,6 +1,6 @@
spv.int8.frag
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 518
Capability Shader
diff --git a/Test/baseResults/spv.intOps.vert.out b/Test/baseResults/spv.intOps.vert.out
index 2a63783..272233e 100644
--- a/Test/baseResults/spv.intOps.vert.out
+++ b/Test/baseResults/spv.intOps.vert.out
@@ -1,6 +1,6 @@
spv.intOps.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 268
Capability Shader
diff --git a/Test/baseResults/spv.intcoopmat.comp.out b/Test/baseResults/spv.intcoopmat.comp.out
index 06f5623..940ba33 100644
--- a/Test/baseResults/spv.intcoopmat.comp.out
+++ b/Test/baseResults/spv.intcoopmat.comp.out
@@ -1,6 +1,6 @@
spv.intcoopmat.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 262
Capability Shader
diff --git a/Test/baseResults/spv.interpOps.frag.out b/Test/baseResults/spv.interpOps.frag.out
index 699524d..7ec4f9f 100644
--- a/Test/baseResults/spv.interpOps.frag.out
+++ b/Test/baseResults/spv.interpOps.frag.out
@@ -1,6 +1,6 @@
spv.interpOps.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 100
Capability Shader
diff --git a/Test/baseResults/spv.layoutNested.vert.out b/Test/baseResults/spv.layoutNested.vert.out
index b5ef883..44d58ab 100644
--- a/Test/baseResults/spv.layoutNested.vert.out
+++ b/Test/baseResults/spv.layoutNested.vert.out
@@ -1,6 +1,6 @@
spv.layoutNested.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 66
Capability Shader
diff --git a/Test/baseResults/spv.length.frag.out b/Test/baseResults/spv.length.frag.out
index 8e799fb..de391bc 100644
--- a/Test/baseResults/spv.length.frag.out
+++ b/Test/baseResults/spv.length.frag.out
@@ -1,6 +1,6 @@
spv.length.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 33
Capability Shader
diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out
index f5fad54..adfa0fd 100644
--- a/Test/baseResults/spv.localAggregates.frag.out
+++ b/Test/baseResults/spv.localAggregates.frag.out
@@ -1,6 +1,6 @@
spv.localAggregates.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 136
Capability Shader
diff --git a/Test/baseResults/spv.loops.frag.out b/Test/baseResults/spv.loops.frag.out
index 046360f..a3a3423 100644
--- a/Test/baseResults/spv.loops.frag.out
+++ b/Test/baseResults/spv.loops.frag.out
@@ -1,6 +1,6 @@
spv.loops.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 725
Capability Shader
diff --git a/Test/baseResults/spv.loopsArtificial.frag.out b/Test/baseResults/spv.loopsArtificial.frag.out
index d0d6054..65329d4 100644
--- a/Test/baseResults/spv.loopsArtificial.frag.out
+++ b/Test/baseResults/spv.loopsArtificial.frag.out
@@ -1,6 +1,6 @@
spv.loopsArtificial.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 158
Capability Shader
diff --git a/Test/baseResults/spv.matFun.vert.out b/Test/baseResults/spv.matFun.vert.out
index 8ed378f..d39160d 100644
--- a/Test/baseResults/spv.matFun.vert.out
+++ b/Test/baseResults/spv.matFun.vert.out
@@ -1,6 +1,6 @@
spv.matFun.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 103
Capability Shader
diff --git a/Test/baseResults/spv.matrix.frag.out b/Test/baseResults/spv.matrix.frag.out
index c2b4a1f..f7b6ce3 100644
--- a/Test/baseResults/spv.matrix.frag.out
+++ b/Test/baseResults/spv.matrix.frag.out
@@ -1,6 +1,6 @@
spv.matrix.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 286
Capability Shader
diff --git a/Test/baseResults/spv.matrix2.frag.out b/Test/baseResults/spv.matrix2.frag.out
index dc574a4..77a098a 100644
--- a/Test/baseResults/spv.matrix2.frag.out
+++ b/Test/baseResults/spv.matrix2.frag.out
@@ -1,6 +1,6 @@
spv.matrix2.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 221
Capability Shader
diff --git a/Test/baseResults/spv.memoryQualifier.frag.out b/Test/baseResults/spv.memoryQualifier.frag.out
index 93c6b2d..737e862 100644
--- a/Test/baseResults/spv.memoryQualifier.frag.out
+++ b/Test/baseResults/spv.memoryQualifier.frag.out
@@ -1,7 +1,7 @@
spv.memoryQualifier.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 97
Capability Shader
diff --git a/Test/baseResults/spv.memoryScopeSemantics.comp.out b/Test/baseResults/spv.memoryScopeSemantics.comp.out
index 8c4e576..b8721f2 100644
--- a/Test/baseResults/spv.memoryScopeSemantics.comp.out
+++ b/Test/baseResults/spv.memoryScopeSemantics.comp.out
@@ -1,11 +1,12 @@
spv.memoryScopeSemantics.comp
// Module Version 10300
-// Generated by (magic number): 80007
-// Id's are bound by 163
+// Generated by (magic number): 80008
+// Id's are bound by 169
Capability Shader
Capability Int64
Capability Int64Atomics
+ Capability StorageImageMultisample
Capability VulkanMemoryModelKHR
Capability VulkanMemoryModelDeviceScopeKHR
Extension "SPV_KHR_vulkan_memory_model"
@@ -49,6 +50,7 @@
Name 151 "BufferM"
MemberName 151(BufferM) 0 "x"
Name 153 "bufferm"
+ Name 165 "imageMS"
Decorate 36(imagei) DescriptorSet 0
Decorate 36(imagei) Binding 1
Decorate 46(imageu) DescriptorSet 0
@@ -83,6 +85,8 @@
Decorate 151(BufferM) Block
Decorate 153(bufferm) DescriptorSet 0
Decorate 153(bufferm) Binding 9
+ Decorate 165(imageMS) DescriptorSet 0
+ Decorate 165(imageMS) Binding 10
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -174,6 +178,10 @@
152: TypePointer StorageBuffer 151(BufferM)
153(bufferm): 152(ptr) Variable StorageBuffer
161: 6(int) Constant 32768
+ 163: TypeImage 6(int) 2D multi-sampled nonsampled format:R32i
+ 164: TypePointer UniformConstant 163
+ 165(imageMS): 164(ptr) Variable UniformConstant
+ 167: 6(int) Constant 4294967289
4(main): 2 Function None 3
5: Label
8(origi): 7(ptr) Variable Function
@@ -271,5 +279,9 @@
159: 15(int) AtomicIAdd 158 12 17 51
160: 69(ptr) AccessChain 68(bufferu) 38
162: 15(int) AtomicIAdd 160 12 42 16
+ 166: 40(ptr) ImageTexelPointer 165(imageMS) 39 12
+ AtomicStore 166 12 33 14
+ 168: 40(ptr) ImageTexelPointer 36(imagei) 39 17
+ AtomicStore 168 12 33 167
Return
FunctionEnd
diff --git a/Test/baseResults/spv.merge-unreachable.frag.out b/Test/baseResults/spv.merge-unreachable.frag.out
index 7ec0f33..3eab4ec 100644
--- a/Test/baseResults/spv.merge-unreachable.frag.out
+++ b/Test/baseResults/spv.merge-unreachable.frag.out
@@ -1,6 +1,6 @@
spv.merge-unreachable.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 25
Capability Shader
@@ -37,5 +37,5 @@
23: Label
Return
21: Label
- Return
+ Unreachable
FunctionEnd
diff --git a/Test/baseResults/spv.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.meshShaderBuiltins.mesh.out
index 38d363b..cea7e4d 100644
--- a/Test/baseResults/spv.meshShaderBuiltins.mesh.out
+++ b/Test/baseResults/spv.meshShaderBuiltins.mesh.out
@@ -1,6 +1,6 @@
spv.meshShaderBuiltins.mesh
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 148
Capability ClipDistance
diff --git a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
index b912aca..75f8c63 100644
--- a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
+++ b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
@@ -1,6 +1,6 @@
spv.meshShaderPerViewBuiltins.mesh
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 126
Capability MultiViewport
diff --git a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out
index 266f662..de019a2 100644
--- a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out
+++ b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out
@@ -1,6 +1,6 @@
spv.meshShaderPerViewUserDefined.mesh
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 108
Capability MeshShadingNV
diff --git a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out
index 4afbef9..e9ebd44 100644
--- a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out
+++ b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out
@@ -1,6 +1,6 @@
spv.meshShaderRedeclBuiltins.mesh
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 129
Capability ClipDistance
diff --git a/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out
index 6672dc2..38542d5 100644
--- a/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out
+++ b/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out
@@ -1,6 +1,6 @@
spv.meshShaderRedeclPerViewBuiltins.mesh
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 120
Capability PerViewAttributesNV
diff --git a/Test/baseResults/spv.meshShaderSharedMem.mesh.out b/Test/baseResults/spv.meshShaderSharedMem.mesh.out
index dd0003d..adac07f 100644
--- a/Test/baseResults/spv.meshShaderSharedMem.mesh.out
+++ b/Test/baseResults/spv.meshShaderSharedMem.mesh.out
@@ -1,6 +1,6 @@
spv.meshShaderSharedMem.mesh
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 77
Capability StorageImageWriteWithoutFormat
diff --git a/Test/baseResults/spv.meshShaderTaskMem.mesh.out b/Test/baseResults/spv.meshShaderTaskMem.mesh.out
index e14f7a8..057e0fd 100644
--- a/Test/baseResults/spv.meshShaderTaskMem.mesh.out
+++ b/Test/baseResults/spv.meshShaderTaskMem.mesh.out
@@ -1,6 +1,6 @@
spv.meshShaderTaskMem.mesh
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 58
Capability MeshShadingNV
diff --git a/Test/baseResults/spv.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.meshShaderUserDefined.mesh.out
index c3ec915..43579bb 100644
--- a/Test/baseResults/spv.meshShaderUserDefined.mesh.out
+++ b/Test/baseResults/spv.meshShaderUserDefined.mesh.out
@@ -1,6 +1,6 @@
spv.meshShaderUserDefined.mesh
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 138
Capability MeshShadingNV
diff --git a/Test/baseResults/spv.meshTaskShader.task.out b/Test/baseResults/spv.meshTaskShader.task.out
index a835d7f..96d37c4 100644
--- a/Test/baseResults/spv.meshTaskShader.task.out
+++ b/Test/baseResults/spv.meshTaskShader.task.out
@@ -1,6 +1,6 @@
spv.meshTaskShader.task
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 116
Capability StorageImageWriteWithoutFormat
diff --git a/Test/baseResults/spv.multiStruct.comp.out b/Test/baseResults/spv.multiStruct.comp.out
index 7e88a59..679a4bd 100644
--- a/Test/baseResults/spv.multiStruct.comp.out
+++ b/Test/baseResults/spv.multiStruct.comp.out
@@ -1,6 +1,6 @@
spv.multiStruct.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 161
Capability Shader
diff --git a/Test/baseResults/spv.multiStructFuncall.frag.out b/Test/baseResults/spv.multiStructFuncall.frag.out
index a3a4480..9312fe9 100644
--- a/Test/baseResults/spv.multiStructFuncall.frag.out
+++ b/Test/baseResults/spv.multiStructFuncall.frag.out
@@ -1,6 +1,6 @@
spv.multiStructFuncall.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 66
Capability Shader
diff --git a/Test/baseResults/spv.multiView.frag.out b/Test/baseResults/spv.multiView.frag.out
index 9dbd36b..5363352 100644
--- a/Test/baseResults/spv.multiView.frag.out
+++ b/Test/baseResults/spv.multiView.frag.out
@@ -1,6 +1,6 @@
spv.multiView.frag
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 17
Capability Shader
diff --git a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out b/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out
index c06a890..16e81a1 100644
--- a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out
+++ b/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out
@@ -1,6 +1,6 @@
spv.multiviewPerViewAttributes.tesc
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 41
Capability Tessellation
diff --git a/Test/baseResults/spv.multiviewPerViewAttributes.vert.out b/Test/baseResults/spv.multiviewPerViewAttributes.vert.out
index c8377cf..acca44e 100644
--- a/Test/baseResults/spv.multiviewPerViewAttributes.vert.out
+++ b/Test/baseResults/spv.multiviewPerViewAttributes.vert.out
@@ -1,6 +1,6 @@
spv.multiviewPerViewAttributes.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 29
Capability Shader
diff --git a/Test/baseResults/spv.newTexture.frag.out b/Test/baseResults/spv.newTexture.frag.out
index 1bad3fa..6bbb032 100644
--- a/Test/baseResults/spv.newTexture.frag.out
+++ b/Test/baseResults/spv.newTexture.frag.out
@@ -1,7 +1,7 @@
spv.newTexture.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 284
Capability Shader
diff --git a/Test/baseResults/spv.noBuiltInLoc.vert.out b/Test/baseResults/spv.noBuiltInLoc.vert.out
index 066f81f..7a45e72 100644
--- a/Test/baseResults/spv.noBuiltInLoc.vert.out
+++ b/Test/baseResults/spv.noBuiltInLoc.vert.out
@@ -1,6 +1,6 @@
spv.noBuiltInLoc.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 35
Capability Shader
diff --git a/Test/baseResults/spv.noDeadDecorations.vert.out b/Test/baseResults/spv.noDeadDecorations.vert.out
index d7e3702..a555ba2 100644
--- a/Test/baseResults/spv.noDeadDecorations.vert.out
+++ b/Test/baseResults/spv.noDeadDecorations.vert.out
@@ -1,6 +1,6 @@
spv.noDeadDecorations.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 32
Capability Shader
diff --git a/Test/baseResults/spv.noWorkgroup.comp.out b/Test/baseResults/spv.noWorkgroup.comp.out
index 2624fdc..92ae670 100644
--- a/Test/baseResults/spv.noWorkgroup.comp.out
+++ b/Test/baseResults/spv.noWorkgroup.comp.out
@@ -1,6 +1,6 @@
spv.noWorkgroup.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 12
Capability Shader
diff --git a/Test/baseResults/spv.nonSquare.vert.out b/Test/baseResults/spv.nonSquare.vert.out
index 679a5f0..9746fe0 100644
--- a/Test/baseResults/spv.nonSquare.vert.out
+++ b/Test/baseResults/spv.nonSquare.vert.out
@@ -1,6 +1,6 @@
spv.nonSquare.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 90
Capability Shader
diff --git a/Test/baseResults/spv.nonuniform.frag.out b/Test/baseResults/spv.nonuniform.frag.out
index 3aaa873..6b7d407 100644
--- a/Test/baseResults/spv.nonuniform.frag.out
+++ b/Test/baseResults/spv.nonuniform.frag.out
@@ -1,6 +1,6 @@
spv.nonuniform.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 212
Capability Shader
@@ -59,16 +59,20 @@
Name 203 "S"
MemberName 203(S) 0 "a"
Name 205 "s"
+ Decorate 9(nupi) DecorationNonUniformEXT
Decorate 13 DecorationNonUniformEXT
Decorate 17(nu_li) DecorationNonUniformEXT
+ Decorate 17(nu_li) DecorationNonUniformEXT
Decorate 19 DecorationNonUniformEXT
Decorate 24 DecorationNonUniformEXT
Decorate 28 DecorationNonUniformEXT
Decorate 29 DecorationNonUniformEXT
Decorate 35(nu_inv4) Location 0
Decorate 35(nu_inv4) DecorationNonUniformEXT
+ Decorate 39 DecorationNonUniformEXT
Decorate 40 DecorationNonUniformEXT
Decorate 41(nu_gf) DecorationNonUniformEXT
+ Decorate 41(nu_gf) DecorationNonUniformEXT
Decorate 42 DecorationNonUniformEXT
Decorate 43 DecorationNonUniformEXT
Decorate 47(inputAttachmentDyn) DescriptorSet 0
@@ -85,47 +89,71 @@
Decorate 92(nu_ii) Flat
Decorate 92(nu_ii) Location 1
Decorate 92(nu_ii) DecorationNonUniformEXT
+ Decorate 92(nu_ii) DecorationNonUniformEXT
Decorate 93 DecorationNonUniformEXT
+ Decorate 95 DecorationNonUniformEXT
Decorate 96 DecorationNonUniformEXT
MemberDecorate 99(bname) 0 Offset 0
Decorate 99(bname) BufferBlock
Decorate 102(storageBuffer) DescriptorSet 0
Decorate 102(storageBuffer) Binding 4
+ Decorate 92(nu_ii) DecorationNonUniformEXT
Decorate 103 DecorationNonUniformEXT
+ Decorate 104 DecorationNonUniformEXT
Decorate 105 DecorationNonUniformEXT
Decorate 112(sampledImage) DescriptorSet 0
Decorate 112(sampledImage) Binding 5
+ Decorate 92(nu_ii) DecorationNonUniformEXT
Decorate 113 DecorationNonUniformEXT
+ Decorate 115 DecorationNonUniformEXT
Decorate 116 DecorationNonUniformEXT
Decorate 127(storageImage) DescriptorSet 0
Decorate 127(storageImage) Binding 6
+ Decorate 92(nu_ii) DecorationNonUniformEXT
Decorate 128 DecorationNonUniformEXT
+ Decorate 130 DecorationNonUniformEXT
Decorate 131 DecorationNonUniformEXT
Decorate 139(inputAttachment) DescriptorSet 0
Decorate 139(inputAttachment) Binding 7
Decorate 139(inputAttachment) InputAttachmentIndex 1
+ Decorate 92(nu_ii) DecorationNonUniformEXT
Decorate 140 DecorationNonUniformEXT
+ Decorate 141 DecorationNonUniformEXT
Decorate 142 DecorationNonUniformEXT
Decorate 149(uniformTexelBuffer) DescriptorSet 0
Decorate 149(uniformTexelBuffer) Binding 8
+ Decorate 92(nu_ii) DecorationNonUniformEXT
Decorate 150 DecorationNonUniformEXT
+ Decorate 151 DecorationNonUniformEXT
Decorate 152 DecorationNonUniformEXT
Decorate 160(storageTexelBuffer) DescriptorSet 0
Decorate 160(storageTexelBuffer) Binding 9
+ Decorate 92(nu_ii) DecorationNonUniformEXT
Decorate 161 DecorationNonUniformEXT
+ Decorate 162 DecorationNonUniformEXT
Decorate 163 DecorationNonUniformEXT
Decorate 170(v) DecorationNonUniformEXT
+ Decorate 172 DecorationNonUniformEXT
Decorate 173 DecorationNonUniformEXT
+ Decorate 174 DecorationNonUniformEXT
Decorate 175 DecorationNonUniformEXT
+ Decorate 179 DecorationNonUniformEXT
Decorate 180 DecorationNonUniformEXT
+ Decorate 181 DecorationNonUniformEXT
Decorate 182 DecorationNonUniformEXT
+ Decorate 92(nu_ii) DecorationNonUniformEXT
Decorate 186 DecorationNonUniformEXT
+ Decorate 187 DecorationNonUniformEXT
Decorate 188 DecorationNonUniformEXT
+ Decorate 189 DecorationNonUniformEXT
Decorate 190 DecorationNonUniformEXT
Decorate 195(m) DecorationNonUniformEXT
+ Decorate 196 DecorationNonUniformEXT
Decorate 197 DecorationNonUniformEXT
Decorate 205(s) DecorationNonUniformEXT
+ Decorate 206 DecorationNonUniformEXT
Decorate 207 DecorationNonUniformEXT
+ Decorate 208 DecorationNonUniformEXT
Decorate 209 DecorationNonUniformEXT
2: TypeVoid
3: TypeFunction 2
diff --git a/Test/baseResults/spv.nonuniform2.frag.out b/Test/baseResults/spv.nonuniform2.frag.out
index 3f101fe..759f4c4 100644
--- a/Test/baseResults/spv.nonuniform2.frag.out
+++ b/Test/baseResults/spv.nonuniform2.frag.out
@@ -1,6 +1,6 @@
spv.nonuniform2.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 24
Capability Shader
@@ -25,6 +25,7 @@
Decorate 16(rIndex) Flat
Decorate 16(rIndex) Location 3
Decorate 18 DecorationNonUniformEXT
+ Decorate 20 DecorationNonUniformEXT
Decorate 21 DecorationNonUniformEXT
2: TypeVoid
3: TypeFunction 2
diff --git a/Test/baseResults/spv.nonuniform3.frag.out b/Test/baseResults/spv.nonuniform3.frag.out
new file mode 100644
index 0000000..9314261
--- /dev/null
+++ b/Test/baseResults/spv.nonuniform3.frag.out
@@ -0,0 +1,61 @@
+spv.nonuniform3.frag
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 32
+
+ Capability Shader
+ Capability ShaderNonUniformEXT
+ Capability RuntimeDescriptorArrayEXT
+ Extension "SPV_EXT_descriptor_indexing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 9 16
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_EXT_nonuniform_qualifier"
+ Name 4 "main"
+ Name 9 "FragColor"
+ Name 13 "uTex"
+ Name 16 "Index"
+ Name 23 "uSamp"
+ Decorate 9(FragColor) Location 0
+ Decorate 13(uTex) DescriptorSet 0
+ Decorate 13(uTex) Binding 0
+ Decorate 16(Index) Flat
+ Decorate 16(Index) Location 0
+ Decorate 23(uSamp) DescriptorSet 1
+ Decorate 23(uSamp) Binding 0
+ Decorate 27 DecorationNonUniformEXT
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(FragColor): 8(ptr) Variable Output
+ 10: TypeImage 6(float) 2D sampled format:Unknown
+ 11: TypeRuntimeArray 10
+ 12: TypePointer UniformConstant 11
+ 13(uTex): 12(ptr) Variable UniformConstant
+ 14: TypeInt 32 1
+ 15: TypePointer Input 14(int)
+ 16(Index): 15(ptr) Variable Input
+ 18: TypePointer UniformConstant 10
+ 21: TypeSampler
+ 22: TypePointer UniformConstant 21
+ 23(uSamp): 22(ptr) Variable UniformConstant
+ 25: TypeSampledImage 10
+ 28: TypeVector 6(float) 2
+ 29: 6(float) Constant 1056964608
+ 30: 28(fvec2) ConstantComposite 29 29
+ 4(main): 2 Function None 3
+ 5: Label
+ 17: 14(int) Load 16(Index)
+ 19: 18(ptr) AccessChain 13(uTex) 17
+ 20: 10 Load 19
+ 24: 21 Load 23(uSamp)
+ 26: 25 SampledImage 20 24
+ 27: 25 CopyObject 26
+ 31: 7(fvec4) ImageSampleImplicitLod 27 30
+ Store 9(FragColor) 31
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.nonuniform4.frag.out b/Test/baseResults/spv.nonuniform4.frag.out
new file mode 100644
index 0000000..a9dd520
--- /dev/null
+++ b/Test/baseResults/spv.nonuniform4.frag.out
@@ -0,0 +1,50 @@
+spv.nonuniform4.frag
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 24
+
+ Capability Shader
+ Capability ImageBuffer
+ Capability ShaderNonUniformEXT
+ Capability RuntimeDescriptorArrayEXT
+ Capability StorageTexelBufferArrayNonUniformIndexingEXT
+ Extension "SPV_EXT_descriptor_indexing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 13
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_EXT_nonuniform_qualifier"
+ Name 4 "main"
+ Name 10 "data"
+ Name 13 "rIndex"
+ Decorate 10(data) DescriptorSet 0
+ Decorate 10(data) Binding 4
+ Decorate 13(rIndex) Flat
+ Decorate 13(rIndex) Location 3
+ Decorate 15 DecorationNonUniformEXT
+ Decorate 21 DecorationNonUniformEXT
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeImage 6(int) Buffer nonsampled format:R32ui
+ 8: TypeRuntimeArray 7
+ 9: TypePointer UniformConstant 8
+ 10(data): 9(ptr) Variable UniformConstant
+ 11: TypeInt 32 1
+ 12: TypePointer Input 11(int)
+ 13(rIndex): 12(ptr) Variable Input
+ 16: TypePointer UniformConstant 7
+ 18: 11(int) Constant 0
+ 19: 6(int) Constant 0
+ 20: TypePointer Image 6(int)
+ 22: 6(int) Constant 1
+ 4(main): 2 Function None 3
+ 5: Label
+ 14: 11(int) Load 13(rIndex)
+ 15: 11(int) CopyObject 14
+ 17: 16(ptr) AccessChain 10(data) 15
+ 21: 20(ptr) ImageTexelPointer 17 18 19
+ 23: 6(int) AtomicIAdd 21 22 19 19
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.nonuniform5.frag.out b/Test/baseResults/spv.nonuniform5.frag.out
new file mode 100644
index 0000000..8ce131a
--- /dev/null
+++ b/Test/baseResults/spv.nonuniform5.frag.out
@@ -0,0 +1,56 @@
+spv.nonuniform5.frag
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 23
+
+ Capability Shader
+ Capability ShaderNonUniformEXT
+ Capability RuntimeDescriptorArrayEXT
+ Capability UniformBufferArrayNonUniformIndexingEXT
+ Extension "SPV_EXT_descriptor_indexing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 9 16
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_EXT_nonuniform_qualifier"
+ Name 4 "main"
+ Name 9 "FragColor"
+ Name 10 "UBO"
+ MemberName 10(UBO) 0 "v"
+ Name 13 "ubos"
+ Name 16 "Index"
+ Decorate 9(FragColor) Location 0
+ MemberDecorate 10(UBO) 0 Offset 0
+ Decorate 10(UBO) Block
+ Decorate 13(ubos) DescriptorSet 0
+ Decorate 13(ubos) Binding 0
+ Decorate 16(Index) Flat
+ Decorate 16(Index) Location 0
+ Decorate 18 DecorationNonUniformEXT
+ Decorate 21 DecorationNonUniformEXT
+ Decorate 22 DecorationNonUniformEXT
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(FragColor): 8(ptr) Variable Output
+ 10(UBO): TypeStruct 7(fvec4)
+ 11: TypeRuntimeArray 10(UBO)
+ 12: TypePointer Uniform 11
+ 13(ubos): 12(ptr) Variable Uniform
+ 14: TypeInt 32 1
+ 15: TypePointer Input 14(int)
+ 16(Index): 15(ptr) Variable Input
+ 19: 14(int) Constant 0
+ 20: TypePointer Uniform 7(fvec4)
+ 4(main): 2 Function None 3
+ 5: Label
+ 17: 14(int) Load 16(Index)
+ 18: 14(int) CopyObject 17
+ 21: 20(ptr) AccessChain 13(ubos) 18 19
+ 22: 7(fvec4) Load 21
+ Store 9(FragColor) 22
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.offsets.frag.out b/Test/baseResults/spv.offsets.frag.out
index 17d7b86..08a75e9 100644
--- a/Test/baseResults/spv.offsets.frag.out
+++ b/Test/baseResults/spv.offsets.frag.out
@@ -1,6 +1,6 @@
spv.offsets.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 15
Capability Shader
diff --git a/Test/baseResults/spv.paramMemory.frag.out b/Test/baseResults/spv.paramMemory.frag.out
index cba2fbd..df13c65 100644
--- a/Test/baseResults/spv.paramMemory.frag.out
+++ b/Test/baseResults/spv.paramMemory.frag.out
@@ -1,7 +1,7 @@
spv.paramMemory.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 64
Capability Shader
diff --git a/Test/baseResults/spv.perprimitiveNV.frag.out b/Test/baseResults/spv.perprimitiveNV.frag.out
index eaff400..9943ee9 100644
--- a/Test/baseResults/spv.perprimitiveNV.frag.out
+++ b/Test/baseResults/spv.perprimitiveNV.frag.out
@@ -1,6 +1,6 @@
spv.perprimitiveNV.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 23
Capability Shader
diff --git a/Test/baseResults/spv.pp.line.frag.out b/Test/baseResults/spv.pp.line.frag.out
index 5794177..12c5fa5 100644
--- a/Test/baseResults/spv.pp.line.frag.out
+++ b/Test/baseResults/spv.pp.line.frag.out
@@ -3,7 +3,7 @@
WARNING: spv.pp.line.frag:7: varying deprecated in version 130; may be removed in future release
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 65
Capability Shader
diff --git a/Test/baseResults/spv.precise.tesc.out b/Test/baseResults/spv.precise.tesc.out
index 95a048f..840e7b3 100644
--- a/Test/baseResults/spv.precise.tesc.out
+++ b/Test/baseResults/spv.precise.tesc.out
@@ -1,6 +1,6 @@
spv.precise.tesc
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 72
Capability Tessellation
diff --git a/Test/baseResults/spv.precise.tese.out b/Test/baseResults/spv.precise.tese.out
index a73cbd8..b59ac0e 100644
--- a/Test/baseResults/spv.precise.tese.out
+++ b/Test/baseResults/spv.precise.tese.out
@@ -1,6 +1,6 @@
spv.precise.tese
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 119
Capability Tessellation
diff --git a/Test/baseResults/spv.precision.frag.out b/Test/baseResults/spv.precision.frag.out
index 5ddb492..ac4c0aa 100644
--- a/Test/baseResults/spv.precision.frag.out
+++ b/Test/baseResults/spv.precision.frag.out
@@ -1,6 +1,6 @@
spv.precision.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 127
Capability Shader
diff --git a/Test/baseResults/spv.precisionNonESSamp.frag.out b/Test/baseResults/spv.precisionNonESSamp.frag.out
index 0620c41..97681f3 100644
--- a/Test/baseResults/spv.precisionNonESSamp.frag.out
+++ b/Test/baseResults/spv.precisionNonESSamp.frag.out
@@ -1,6 +1,6 @@
spv.precisionNonESSamp.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 47
Capability Shader
diff --git a/Test/baseResults/spv.prepost.frag.out b/Test/baseResults/spv.prepost.frag.out
index 3b4bfd8..a0dbbd4 100644
--- a/Test/baseResults/spv.prepost.frag.out
+++ b/Test/baseResults/spv.prepost.frag.out
@@ -1,6 +1,6 @@
spv.prepost.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 94
Capability Shader
diff --git a/Test/baseResults/spv.privateVariableTypes.frag.out b/Test/baseResults/spv.privateVariableTypes.frag.out
index 9b4063e..1b8e1a5 100644
--- a/Test/baseResults/spv.privateVariableTypes.frag.out
+++ b/Test/baseResults/spv.privateVariableTypes.frag.out
@@ -1,6 +1,6 @@
spv.privateVariableTypes.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 27
Capability Shader
diff --git a/Test/baseResults/spv.pushConstant.vert.out b/Test/baseResults/spv.pushConstant.vert.out
index 40ee328..5348edb 100644
--- a/Test/baseResults/spv.pushConstant.vert.out
+++ b/Test/baseResults/spv.pushConstant.vert.out
@@ -1,6 +1,6 @@
spv.pushConstant.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 35
Capability Shader
diff --git a/Test/baseResults/spv.pushConstantAnon.vert.out b/Test/baseResults/spv.pushConstantAnon.vert.out
index b03855d..3932b42 100644
--- a/Test/baseResults/spv.pushConstantAnon.vert.out
+++ b/Test/baseResults/spv.pushConstantAnon.vert.out
@@ -1,6 +1,6 @@
spv.pushConstantAnon.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 38
Capability Shader
diff --git a/Test/baseResults/spv.qualifiers.vert.out b/Test/baseResults/spv.qualifiers.vert.out
index ffdc6f8..47f73a0 100644
--- a/Test/baseResults/spv.qualifiers.vert.out
+++ b/Test/baseResults/spv.qualifiers.vert.out
@@ -1,6 +1,6 @@
spv.qualifiers.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 21
Capability Shader
diff --git a/Test/baseResults/spv.queryL.frag.out b/Test/baseResults/spv.queryL.frag.out
index 87dbb8c..97d845a 100644
--- a/Test/baseResults/spv.queryL.frag.out
+++ b/Test/baseResults/spv.queryL.frag.out
@@ -1,7 +1,7 @@
spv.queryL.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 224
Capability Shader
diff --git a/Test/baseResults/spv.rankShift.comp.out b/Test/baseResults/spv.rankShift.comp.out
index 3ca7514..e0fba77 100644
--- a/Test/baseResults/spv.rankShift.comp.out
+++ b/Test/baseResults/spv.rankShift.comp.out
@@ -1,6 +1,6 @@
spv.rankShift.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 33
Capability Shader
diff --git a/Test/baseResults/spv.register.autoassign-2.frag.out b/Test/baseResults/spv.register.autoassign-2.frag.out
index 533e388..9fd317e 100644
--- a/Test/baseResults/spv.register.autoassign-2.frag.out
+++ b/Test/baseResults/spv.register.autoassign-2.frag.out
@@ -1,6 +1,6 @@
spv.register.autoassign-2.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 47
Capability Shader
diff --git a/Test/baseResults/spv.register.autoassign.frag.out b/Test/baseResults/spv.register.autoassign.frag.out
index 123ea35..74118ef 100644
--- a/Test/baseResults/spv.register.autoassign.frag.out
+++ b/Test/baseResults/spv.register.autoassign.frag.out
@@ -1,6 +1,6 @@
spv.register.autoassign.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 155
Capability Shader
diff --git a/Test/baseResults/spv.register.noautoassign.frag.out b/Test/baseResults/spv.register.noautoassign.frag.out
index 3259f41..1292b0b 100644
--- a/Test/baseResults/spv.register.noautoassign.frag.out
+++ b/Test/baseResults/spv.register.noautoassign.frag.out
@@ -1,6 +1,6 @@
spv.register.noautoassign.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 155
Capability Shader
diff --git a/Test/baseResults/spv.register.subpass.frag.out b/Test/baseResults/spv.register.subpass.frag.out
index c42832a..21f7955 100644
--- a/Test/baseResults/spv.register.subpass.frag.out
+++ b/Test/baseResults/spv.register.subpass.frag.out
@@ -1,6 +1,6 @@
spv.register.subpass.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 40
Capability Shader
diff --git a/Test/baseResults/spv.rw.autoassign.frag.out b/Test/baseResults/spv.rw.autoassign.frag.out
index 2ee30bc..a575e78 100644
--- a/Test/baseResults/spv.rw.autoassign.frag.out
+++ b/Test/baseResults/spv.rw.autoassign.frag.out
@@ -1,6 +1,6 @@
spv.rw.autoassign.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 42
Capability Shader
diff --git a/Test/baseResults/spv.sample.frag.out b/Test/baseResults/spv.sample.frag.out
index e4d38f3..57fbf31 100644
--- a/Test/baseResults/spv.sample.frag.out
+++ b/Test/baseResults/spv.sample.frag.out
@@ -1,6 +1,6 @@
spv.sample.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 13
Capability Shader
diff --git a/Test/baseResults/spv.sampleId.frag.out b/Test/baseResults/spv.sampleId.frag.out
index 894d8db..1412da2 100644
--- a/Test/baseResults/spv.sampleId.frag.out
+++ b/Test/baseResults/spv.sampleId.frag.out
@@ -1,6 +1,6 @@
spv.sampleId.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 26
Capability Shader
diff --git a/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out b/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out
index 3a9872e..2892325 100644
--- a/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out
+++ b/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out
@@ -1,6 +1,6 @@
spv.sampleMaskOverrideCoverage.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 20
Capability Shader
diff --git a/Test/baseResults/spv.samplePosition.frag.out b/Test/baseResults/spv.samplePosition.frag.out
index 882423e..b06c768 100644
--- a/Test/baseResults/spv.samplePosition.frag.out
+++ b/Test/baseResults/spv.samplePosition.frag.out
@@ -1,6 +1,6 @@
spv.samplePosition.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 30
Capability Shader
diff --git a/Test/baseResults/spv.samplerlessTextureFunctions.frag.out b/Test/baseResults/spv.samplerlessTextureFunctions.frag.out
index 0f09b43..c12201e 100644
--- a/Test/baseResults/spv.samplerlessTextureFunctions.frag.out
+++ b/Test/baseResults/spv.samplerlessTextureFunctions.frag.out
@@ -1,6 +1,6 @@
spv.samplerlessTextureFunctions.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 51
Capability Shader
diff --git a/Test/baseResults/spv.scalarlayout.frag.out b/Test/baseResults/spv.scalarlayout.frag.out
index 0168bc3..1b26242 100644
--- a/Test/baseResults/spv.scalarlayout.frag.out
+++ b/Test/baseResults/spv.scalarlayout.frag.out
@@ -1,7 +1,7 @@
spv.scalarlayout.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 20
Capability Shader
diff --git a/Test/baseResults/spv.scalarlayoutfloat16.frag.out b/Test/baseResults/spv.scalarlayoutfloat16.frag.out
index dac7e3a..c88fa7f 100644
--- a/Test/baseResults/spv.scalarlayoutfloat16.frag.out
+++ b/Test/baseResults/spv.scalarlayoutfloat16.frag.out
@@ -1,7 +1,7 @@
spv.scalarlayoutfloat16.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 18
Capability Shader
diff --git a/Test/baseResults/spv.separate.frag.out b/Test/baseResults/spv.separate.frag.out
index 27cd3be..690ab2f 100644
--- a/Test/baseResults/spv.separate.frag.out
+++ b/Test/baseResults/spv.separate.frag.out
@@ -1,7 +1,7 @@
spv.separate.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 319
Capability Shader
diff --git a/Test/baseResults/spv.set.vert.out b/Test/baseResults/spv.set.vert.out
index 16d771f..fe4326f 100644
--- a/Test/baseResults/spv.set.vert.out
+++ b/Test/baseResults/spv.set.vert.out
@@ -1,6 +1,6 @@
spv.set.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 22
Capability Shader
diff --git a/Test/baseResults/spv.shaderBallot.comp.out b/Test/baseResults/spv.shaderBallot.comp.out
index 1c616ee..3ddee0f 100644
--- a/Test/baseResults/spv.shaderBallot.comp.out
+++ b/Test/baseResults/spv.shaderBallot.comp.out
@@ -1,6 +1,6 @@
spv.shaderBallot.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 318
Capability Shader
diff --git a/Test/baseResults/spv.shaderBallotAMD.comp.out b/Test/baseResults/spv.shaderBallotAMD.comp.out
index 62ce6f2..eb8f404 100644
--- a/Test/baseResults/spv.shaderBallotAMD.comp.out
+++ b/Test/baseResults/spv.shaderBallotAMD.comp.out
@@ -1,6 +1,6 @@
spv.shaderBallotAMD.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 1343
Capability Shader
diff --git a/Test/baseResults/spv.shaderDrawParams.vert.out b/Test/baseResults/spv.shaderDrawParams.vert.out
index d6b43e8..ad51de1 100644
--- a/Test/baseResults/spv.shaderDrawParams.vert.out
+++ b/Test/baseResults/spv.shaderDrawParams.vert.out
@@ -1,6 +1,6 @@
spv.shaderDrawParams.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 53
Capability Shader
diff --git a/Test/baseResults/spv.shaderFragMaskAMD.frag.out b/Test/baseResults/spv.shaderFragMaskAMD.frag.out
index 788d3ee..b1e5c0d 100644
--- a/Test/baseResults/spv.shaderFragMaskAMD.frag.out
+++ b/Test/baseResults/spv.shaderFragMaskAMD.frag.out
@@ -1,6 +1,6 @@
spv.shaderFragMaskAMD.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 80
Capability Shader
diff --git a/Test/baseResults/spv.shaderGroupVote.comp.out b/Test/baseResults/spv.shaderGroupVote.comp.out
index e45f585..a09e798 100644
--- a/Test/baseResults/spv.shaderGroupVote.comp.out
+++ b/Test/baseResults/spv.shaderGroupVote.comp.out
@@ -1,6 +1,6 @@
spv.shaderGroupVote.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 33
Capability Shader
diff --git a/Test/baseResults/spv.shaderImageFootprint.frag.out b/Test/baseResults/spv.shaderImageFootprint.frag.out
index 8218ee4..7559564 100644
--- a/Test/baseResults/spv.shaderImageFootprint.frag.out
+++ b/Test/baseResults/spv.shaderImageFootprint.frag.out
@@ -1,6 +1,6 @@
spv.shaderImageFootprint.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 622
Capability Shader
diff --git a/Test/baseResults/spv.shaderStencilExport.frag.out b/Test/baseResults/spv.shaderStencilExport.frag.out
index 8fc691e..37fce5f 100644
--- a/Test/baseResults/spv.shaderStencilExport.frag.out
+++ b/Test/baseResults/spv.shaderStencilExport.frag.out
@@ -1,6 +1,6 @@
spv.shaderStencilExport.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 10
Capability Shader
diff --git a/Test/baseResults/spv.shadingRate.frag.out b/Test/baseResults/spv.shadingRate.frag.out
index 1147776..ce56113 100644
--- a/Test/baseResults/spv.shadingRate.frag.out
+++ b/Test/baseResults/spv.shadingRate.frag.out
@@ -1,6 +1,6 @@
spv.shadingRate.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 21
Capability Shader
diff --git a/Test/baseResults/spv.shiftOps.frag.out b/Test/baseResults/spv.shiftOps.frag.out
index 3085a55..15df236 100644
--- a/Test/baseResults/spv.shiftOps.frag.out
+++ b/Test/baseResults/spv.shiftOps.frag.out
@@ -1,6 +1,6 @@
spv.shiftOps.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 38
Capability Shader
diff --git a/Test/baseResults/spv.shortCircuit.frag.out b/Test/baseResults/spv.shortCircuit.frag.out
index d651824..6104b04 100644
--- a/Test/baseResults/spv.shortCircuit.frag.out
+++ b/Test/baseResults/spv.shortCircuit.frag.out
@@ -1,6 +1,6 @@
spv.shortCircuit.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 147
Capability Shader
diff --git a/Test/baseResults/spv.simpleFunctionCall.frag.out b/Test/baseResults/spv.simpleFunctionCall.frag.out
index 627b31c..8e666a6 100644
--- a/Test/baseResults/spv.simpleFunctionCall.frag.out
+++ b/Test/baseResults/spv.simpleFunctionCall.frag.out
@@ -1,6 +1,6 @@
spv.simpleFunctionCall.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 19
Capability Shader
diff --git a/Test/baseResults/spv.simpleMat.vert.out b/Test/baseResults/spv.simpleMat.vert.out
index 8557458..ff51dc0 100644
--- a/Test/baseResults/spv.simpleMat.vert.out
+++ b/Test/baseResults/spv.simpleMat.vert.out
@@ -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 --git a/Test/baseResults/spv.smBuiltins.frag.out b/Test/baseResults/spv.smBuiltins.frag.out
index fda06eb..9f4cc60 100644
--- a/Test/baseResults/spv.smBuiltins.frag.out
+++ b/Test/baseResults/spv.smBuiltins.frag.out
@@ -1,6 +1,6 @@
spv.smBuiltins.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 20
Capability Shader
diff --git a/Test/baseResults/spv.smBuiltins.vert.out b/Test/baseResults/spv.smBuiltins.vert.out
index 8423e5b..0453b0c 100644
--- a/Test/baseResults/spv.smBuiltins.vert.out
+++ b/Test/baseResults/spv.smBuiltins.vert.out
@@ -1,6 +1,6 @@
spv.smBuiltins.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 29
Capability Shader
diff --git a/Test/baseResults/spv.sparseTexture.frag.out b/Test/baseResults/spv.sparseTexture.frag.out
index 7fdea0c..3414200 100644
--- a/Test/baseResults/spv.sparseTexture.frag.out
+++ b/Test/baseResults/spv.sparseTexture.frag.out
@@ -1,7 +1,7 @@
spv.sparseTexture.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 438
Capability Shader
diff --git a/Test/baseResults/spv.sparseTextureClamp.frag.out b/Test/baseResults/spv.sparseTextureClamp.frag.out
index ff7dce5..fedd64a 100644
--- a/Test/baseResults/spv.sparseTextureClamp.frag.out
+++ b/Test/baseResults/spv.sparseTextureClamp.frag.out
@@ -1,7 +1,7 @@
spv.sparseTextureClamp.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 360
Capability Shader
diff --git a/Test/baseResults/spv.specConst.vert.out b/Test/baseResults/spv.specConst.vert.out
index 70fbd09..116c136 100644
--- a/Test/baseResults/spv.specConst.vert.out
+++ b/Test/baseResults/spv.specConst.vert.out
@@ -1,6 +1,6 @@
spv.specConst.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 27
Capability Shader
diff --git a/Test/baseResults/spv.specConstant.comp.out b/Test/baseResults/spv.specConstant.comp.out
index 2f64150..e0ad699 100644
--- a/Test/baseResults/spv.specConstant.comp.out
+++ b/Test/baseResults/spv.specConstant.comp.out
@@ -1,6 +1,6 @@
spv.specConstant.comp
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 27
Capability Shader
diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out
index 49bcca6..206e30a 100644
--- a/Test/baseResults/spv.specConstant.vert.out
+++ b/Test/baseResults/spv.specConstant.vert.out
@@ -1,6 +1,6 @@
spv.specConstant.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 81
Capability Shader
@@ -11,7 +11,7 @@
Source GLSL 400
Name 4 "main"
Name 9 "arraySize"
- Name 14 "foo(vf4[s4393];"
+ Name 14 "foo(vf4[s4546];"
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[s4393];) 47(param)
+ 49: 2 FunctionCall 14(foo(vf4[s4546];) 47(param)
Return
FunctionEnd
-14(foo(vf4[s4393];): 2 Function None 12
+14(foo(vf4[s4546];): 2 Function None 12
13(p): 11(ptr) FunctionParameter
15: Label
54: 24(ptr) AccessChain 53(dupUcol) 23
diff --git a/Test/baseResults/spv.specConstantComposite.vert.out b/Test/baseResults/spv.specConstantComposite.vert.out
index 58d4b6a..20a071b 100644
--- a/Test/baseResults/spv.specConstantComposite.vert.out
+++ b/Test/baseResults/spv.specConstantComposite.vert.out
@@ -1,6 +1,6 @@
spv.specConstantComposite.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 43
Capability Shader
diff --git a/Test/baseResults/spv.specConstantOperations.vert.out b/Test/baseResults/spv.specConstantOperations.vert.out
index 0f141e3..747d50b 100644
--- a/Test/baseResults/spv.specConstantOperations.vert.out
+++ b/Test/baseResults/spv.specConstantOperations.vert.out
@@ -1,6 +1,6 @@
spv.specConstantOperations.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 162
Capability Shader
diff --git a/Test/baseResults/spv.specTexture.frag.out b/Test/baseResults/spv.specTexture.frag.out
new file mode 100755
index 0000000..a4cf47d
--- /dev/null
+++ b/Test/baseResults/spv.specTexture.frag.out
@@ -0,0 +1,43 @@
+spv.specTexture.frag
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 23
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 9
+ ExecutionMode 4 OriginLowerLeft
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "color_out"
+ Name 13 "tex"
+ Name 19 "offs"
+ Decorate 9(color_out) Location 0
+ Decorate 13(tex) DescriptorSet 0
+ Decorate 13(tex) Binding 0
+ Decorate 19(offs) SpecId 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(color_out): 8(ptr) Variable Output
+ 10: TypeImage 6(float) 2D sampled format:Unknown
+ 11: TypeSampledImage 10
+ 12: TypePointer UniformConstant 11
+ 13(tex): 12(ptr) Variable UniformConstant
+ 15: TypeVector 6(float) 2
+ 16: 6(float) Constant 0
+ 17: 15(fvec2) ConstantComposite 16 16
+ 18: TypeInt 32 1
+ 19(offs): 18(int) SpecConstant 0
+ 20: TypeVector 18(int) 2
+ 21: 20(ivec2) SpecConstantComposite 19(offs) 19(offs)
+ 4(main): 2 Function None 3
+ 5: Label
+ 14: 11 Load 13(tex)
+ 22: 7(fvec4) ImageSampleExplicitLod 14 17 Lod ConstOffset 16 21
+ Store 9(color_out) 22
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ssbo.autoassign.frag.out b/Test/baseResults/spv.ssbo.autoassign.frag.out
index 40afa15..7d64847 100644
--- a/Test/baseResults/spv.ssbo.autoassign.frag.out
+++ b/Test/baseResults/spv.ssbo.autoassign.frag.out
@@ -1,6 +1,6 @@
spv.ssbo.autoassign.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 99
Capability Shader
diff --git a/Test/baseResults/spv.ssboAlias.frag.out b/Test/baseResults/spv.ssboAlias.frag.out
index f03d2ca..1711d9d 100644
--- a/Test/baseResults/spv.ssboAlias.frag.out
+++ b/Test/baseResults/spv.ssboAlias.frag.out
@@ -1,6 +1,6 @@
spv.ssboAlias.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 44
Capability Shader
diff --git a/Test/baseResults/spv.stereoViewRendering.tesc.out b/Test/baseResults/spv.stereoViewRendering.tesc.out
index 43afff9..2cab064 100644
--- a/Test/baseResults/spv.stereoViewRendering.tesc.out
+++ b/Test/baseResults/spv.stereoViewRendering.tesc.out
@@ -1,6 +1,6 @@
spv.stereoViewRendering.tesc
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 42
Capability Geometry
diff --git a/Test/baseResults/spv.stereoViewRendering.vert.out b/Test/baseResults/spv.stereoViewRendering.vert.out
index afd8c75..acb8338 100644
--- a/Test/baseResults/spv.stereoViewRendering.vert.out
+++ b/Test/baseResults/spv.stereoViewRendering.vert.out
@@ -1,6 +1,6 @@
spv.stereoViewRendering.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 27
Capability Shader
diff --git a/Test/baseResults/spv.storageBuffer.vert.out b/Test/baseResults/spv.storageBuffer.vert.out
index 5006e4c..79cf9f1 100644
--- a/Test/baseResults/spv.storageBuffer.vert.out
+++ b/Test/baseResults/spv.storageBuffer.vert.out
@@ -1,6 +1,6 @@
spv.storageBuffer.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 31
Capability Shader
diff --git a/Test/baseResults/spv.structAssignment.frag.out b/Test/baseResults/spv.structAssignment.frag.out
index 4b357da..d61c0e4 100644
--- a/Test/baseResults/spv.structAssignment.frag.out
+++ b/Test/baseResults/spv.structAssignment.frag.out
@@ -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 --git a/Test/baseResults/spv.structDeref.frag.out b/Test/baseResults/spv.structDeref.frag.out
index 6888a85..2a114d7 100644
--- a/Test/baseResults/spv.structDeref.frag.out
+++ b/Test/baseResults/spv.structDeref.frag.out
@@ -1,6 +1,6 @@
spv.structDeref.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 123
Capability Shader
diff --git a/Test/baseResults/spv.structure.frag.out b/Test/baseResults/spv.structure.frag.out
index f1da59f..e8f8b39 100644
--- a/Test/baseResults/spv.structure.frag.out
+++ b/Test/baseResults/spv.structure.frag.out
@@ -1,6 +1,6 @@
spv.structure.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 60
Capability Shader
diff --git a/Test/baseResults/spv.subgroup.frag.out b/Test/baseResults/spv.subgroup.frag.out
index 4dd636e..ee932bf 100644
--- a/Test/baseResults/spv.subgroup.frag.out
+++ b/Test/baseResults/spv.subgroup.frag.out
@@ -1,6 +1,6 @@
spv.subgroup.frag
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 17
Capability Shader
diff --git a/Test/baseResults/spv.subgroup.geom.out b/Test/baseResults/spv.subgroup.geom.out
index a68343a..279e646 100644
--- a/Test/baseResults/spv.subgroup.geom.out
+++ b/Test/baseResults/spv.subgroup.geom.out
@@ -1,6 +1,6 @@
spv.subgroup.geom
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 26
Capability Geometry
diff --git a/Test/baseResults/spv.subgroup.tesc.out b/Test/baseResults/spv.subgroup.tesc.out
index 4e362e2..bc55b4e 100644
--- a/Test/baseResults/spv.subgroup.tesc.out
+++ b/Test/baseResults/spv.subgroup.tesc.out
@@ -1,6 +1,6 @@
spv.subgroup.tesc
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 26
Capability Tessellation
diff --git a/Test/baseResults/spv.subgroup.tese.out b/Test/baseResults/spv.subgroup.tese.out
index e09f558..6b0a5ce 100644
--- a/Test/baseResults/spv.subgroup.tese.out
+++ b/Test/baseResults/spv.subgroup.tese.out
@@ -1,6 +1,6 @@
spv.subgroup.tese
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 26
Capability Tessellation
diff --git a/Test/baseResults/spv.subgroup.vert.out b/Test/baseResults/spv.subgroup.vert.out
index 2fbc92b..6deaf55 100644
--- a/Test/baseResults/spv.subgroup.vert.out
+++ b/Test/baseResults/spv.subgroup.vert.out
@@ -1,6 +1,6 @@
spv.subgroup.vert
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 26
Capability Shader
diff --git a/Test/baseResults/spv.subgroupArithmetic.comp.out b/Test/baseResults/spv.subgroupArithmetic.comp.out
index f4e251a..29ea9ec 100644
--- a/Test/baseResults/spv.subgroupArithmetic.comp.out
+++ b/Test/baseResults/spv.subgroupArithmetic.comp.out
@@ -1,6 +1,6 @@
spv.subgroupArithmetic.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 2085
Capability Shader
diff --git a/Test/baseResults/spv.subgroupBallot.comp.out b/Test/baseResults/spv.subgroupBallot.comp.out
index ea152d9..9fe1964 100644
--- a/Test/baseResults/spv.subgroupBallot.comp.out
+++ b/Test/baseResults/spv.subgroupBallot.comp.out
@@ -1,6 +1,6 @@
spv.subgroupBallot.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 397
Capability Shader
diff --git a/Test/baseResults/spv.subgroupBasic.comp.out b/Test/baseResults/spv.subgroupBasic.comp.out
index 641534d..2f6571b 100644
--- a/Test/baseResults/spv.subgroupBasic.comp.out
+++ b/Test/baseResults/spv.subgroupBasic.comp.out
@@ -1,6 +1,6 @@
spv.subgroupBasic.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 40
Capability Shader
diff --git a/Test/baseResults/spv.subgroupClustered.comp.out b/Test/baseResults/spv.subgroupClustered.comp.out
index 150eb8a..3971281 100644
--- a/Test/baseResults/spv.subgroupClustered.comp.out
+++ b/Test/baseResults/spv.subgroupClustered.comp.out
@@ -1,6 +1,6 @@
spv.subgroupClustered.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 737
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out
index 453d6fc..263f48d 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out
@@ -1,6 +1,6 @@
spv.subgroupExtendedTypesArithmetic.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 3665
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out
index 4e1b2dc..9f6a8c0 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out
@@ -1,6 +1,6 @@
spv.subgroupExtendedTypesBallot.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 441
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out
index b0b94b5..af3385e 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out
@@ -1,6 +1,6 @@
spv.subgroupExtendedTypesClustered.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 1273
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out
index 2f5a570..9de4b98 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out
@@ -1,6 +1,6 @@
spv.subgroupExtendedTypesPartitioned.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 1558
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out
index 7d37a41..ebd6132 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out
@@ -1,6 +1,6 @@
spv.subgroupExtendedTypesQuad.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 806
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out
index d647ded..f241389 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out
@@ -1,6 +1,6 @@
spv.subgroupExtendedTypesShuffle.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 497
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out
index ef5def5..06150b0 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out
@@ -1,6 +1,6 @@
spv.subgroupExtendedTypesShuffleRelative.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 497
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out
index a32c25d..63cc844 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out
@@ -1,6 +1,6 @@
spv.subgroupExtendedTypesVote.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 277
Capability Shader
diff --git a/Test/baseResults/spv.subgroupPartitioned.comp.out b/Test/baseResults/spv.subgroupPartitioned.comp.out
index 742e5bc..e16e309 100644
--- a/Test/baseResults/spv.subgroupPartitioned.comp.out
+++ b/Test/baseResults/spv.subgroupPartitioned.comp.out
@@ -1,6 +1,6 @@
spv.subgroupPartitioned.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 2506
Capability Shader
diff --git a/Test/baseResults/spv.subgroupQuad.comp.out b/Test/baseResults/spv.subgroupQuad.comp.out
index 435c490..1c5e963 100644
--- a/Test/baseResults/spv.subgroupQuad.comp.out
+++ b/Test/baseResults/spv.subgroupQuad.comp.out
@@ -1,6 +1,6 @@
spv.subgroupQuad.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 616
Capability Shader
diff --git a/Test/baseResults/spv.subgroupShuffle.comp.out b/Test/baseResults/spv.subgroupShuffle.comp.out
index 991c6fa..532b0d2 100644
--- a/Test/baseResults/spv.subgroupShuffle.comp.out
+++ b/Test/baseResults/spv.subgroupShuffle.comp.out
@@ -1,6 +1,6 @@
spv.subgroupShuffle.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 379
Capability Shader
diff --git a/Test/baseResults/spv.subgroupShuffleRelative.comp.out b/Test/baseResults/spv.subgroupShuffleRelative.comp.out
index 3aad760..ae5589a 100644
--- a/Test/baseResults/spv.subgroupShuffleRelative.comp.out
+++ b/Test/baseResults/spv.subgroupShuffleRelative.comp.out
@@ -1,6 +1,6 @@
spv.subgroupShuffleRelative.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 379
Capability Shader
diff --git a/Test/baseResults/spv.subgroupVote.comp.out b/Test/baseResults/spv.subgroupVote.comp.out
index 4fdbb0b..6f6f8cf 100644
--- a/Test/baseResults/spv.subgroupVote.comp.out
+++ b/Test/baseResults/spv.subgroupVote.comp.out
@@ -1,6 +1,6 @@
spv.subgroupVote.comp
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 216
Capability Shader
diff --git a/Test/baseResults/spv.subpass.frag.out b/Test/baseResults/spv.subpass.frag.out
index 706624d..4bc556a 100644
--- a/Test/baseResults/spv.subpass.frag.out
+++ b/Test/baseResults/spv.subpass.frag.out
@@ -1,6 +1,6 @@
spv.subpass.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 67
Capability Shader
diff --git a/Test/baseResults/spv.switch.frag.out b/Test/baseResults/spv.switch.frag.out
index 47cc5d4..729257c 100644
--- a/Test/baseResults/spv.switch.frag.out
+++ b/Test/baseResults/spv.switch.frag.out
@@ -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 --git a/Test/baseResults/spv.swizzle.frag.out b/Test/baseResults/spv.swizzle.frag.out
index 2a132d5..9b31a26 100644
--- a/Test/baseResults/spv.swizzle.frag.out
+++ b/Test/baseResults/spv.swizzle.frag.out
@@ -1,6 +1,6 @@
spv.swizzle.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 108
Capability Shader
diff --git a/Test/baseResults/spv.swizzleInversion.frag.out b/Test/baseResults/spv.swizzleInversion.frag.out
index 0aee7ae..7964360 100644
--- a/Test/baseResults/spv.swizzleInversion.frag.out
+++ b/Test/baseResults/spv.swizzleInversion.frag.out
@@ -1,6 +1,6 @@
spv.swizzleInversion.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 46
Capability Shader
diff --git a/Test/baseResults/spv.test.frag.out b/Test/baseResults/spv.test.frag.out
index 02e4f66..db77cbb 100644
--- a/Test/baseResults/spv.test.frag.out
+++ b/Test/baseResults/spv.test.frag.out
@@ -1,6 +1,6 @@
spv.test.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 55
Capability Shader
diff --git a/Test/baseResults/spv.test.vert.out b/Test/baseResults/spv.test.vert.out
index 3303c88..3b06c66 100644
--- a/Test/baseResults/spv.test.vert.out
+++ b/Test/baseResults/spv.test.vert.out
@@ -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 --git a/Test/baseResults/spv.texture.frag.out b/Test/baseResults/spv.texture.frag.out
index d518ad7..3ea7338 100644
--- a/Test/baseResults/spv.texture.frag.out
+++ b/Test/baseResults/spv.texture.frag.out
@@ -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 --git a/Test/baseResults/spv.texture.sampler.transform.frag.out b/Test/baseResults/spv.texture.sampler.transform.frag.out
index 612f2a9..f2306e7 100644
--- a/Test/baseResults/spv.texture.sampler.transform.frag.out
+++ b/Test/baseResults/spv.texture.sampler.transform.frag.out
@@ -1,6 +1,6 @@
spv.texture.sampler.transform.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 20
Capability Shader
diff --git a/Test/baseResults/spv.texture.vert.out b/Test/baseResults/spv.texture.vert.out
index f3f979c..3f9336b 100644
--- a/Test/baseResults/spv.texture.vert.out
+++ b/Test/baseResults/spv.texture.vert.out
@@ -1,6 +1,6 @@
spv.texture.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 150
Capability Shader
diff --git a/Test/baseResults/spv.textureBuffer.vert.out b/Test/baseResults/spv.textureBuffer.vert.out
index 252a9c8..4631290 100644
--- a/Test/baseResults/spv.textureBuffer.vert.out
+++ b/Test/baseResults/spv.textureBuffer.vert.out
@@ -1,6 +1,6 @@
spv.textureBuffer.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 42
Capability Shader
diff --git a/Test/baseResults/spv.textureGatherBiasLod.frag.out b/Test/baseResults/spv.textureGatherBiasLod.frag.out
index cd18688..aada70d 100644
--- a/Test/baseResults/spv.textureGatherBiasLod.frag.out
+++ b/Test/baseResults/spv.textureGatherBiasLod.frag.out
@@ -1,7 +1,7 @@
spv.textureGatherBiasLod.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 298
Capability Shader
diff --git a/Test/baseResults/spv.types.frag.out b/Test/baseResults/spv.types.frag.out
index e6fd3e0..3f7fd12 100644
--- a/Test/baseResults/spv.types.frag.out
+++ b/Test/baseResults/spv.types.frag.out
@@ -1,6 +1,6 @@
spv.types.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 260
Capability Shader
diff --git a/Test/baseResults/spv.uint.frag.out b/Test/baseResults/spv.uint.frag.out
index e6fe5e4..612b323 100644
--- a/Test/baseResults/spv.uint.frag.out
+++ b/Test/baseResults/spv.uint.frag.out
@@ -1,6 +1,6 @@
spv.uint.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 213
Capability Shader
diff --git a/Test/baseResults/spv.uniformArray.frag.out b/Test/baseResults/spv.uniformArray.frag.out
index 0f9883e..339d1de 100644
--- a/Test/baseResults/spv.uniformArray.frag.out
+++ b/Test/baseResults/spv.uniformArray.frag.out
@@ -1,6 +1,6 @@
spv.uniformArray.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 53
Capability Shader
diff --git a/Test/baseResults/spv.unit1.frag.out b/Test/baseResults/spv.unit1.frag.out
index d64d437..b2ec724 100644
--- a/Test/baseResults/spv.unit1.frag.out
+++ b/Test/baseResults/spv.unit1.frag.out
@@ -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 --git a/Test/baseResults/spv.variableArrayIndex.frag.out b/Test/baseResults/spv.variableArrayIndex.frag.out
index 87d934e..cc6d96b 100644
--- a/Test/baseResults/spv.variableArrayIndex.frag.out
+++ b/Test/baseResults/spv.variableArrayIndex.frag.out
@@ -1,6 +1,6 @@
spv.variableArrayIndex.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 93
Capability Shader
diff --git a/Test/baseResults/spv.varyingArray.frag.out b/Test/baseResults/spv.varyingArray.frag.out
index 2628f82..d5a59ae 100644
--- a/Test/baseResults/spv.varyingArray.frag.out
+++ b/Test/baseResults/spv.varyingArray.frag.out
@@ -1,6 +1,6 @@
spv.varyingArray.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 61
Capability Shader
diff --git a/Test/baseResults/spv.varyingArrayIndirect.frag.out b/Test/baseResults/spv.varyingArrayIndirect.frag.out
index 60e9857..799def9 100644
--- a/Test/baseResults/spv.varyingArrayIndirect.frag.out
+++ b/Test/baseResults/spv.varyingArrayIndirect.frag.out
@@ -1,6 +1,6 @@
spv.varyingArrayIndirect.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 70
Capability Shader
diff --git a/Test/baseResults/spv.vecMatConstruct.frag.out b/Test/baseResults/spv.vecMatConstruct.frag.out
index 57ecd67..004b2bc 100644
--- a/Test/baseResults/spv.vecMatConstruct.frag.out
+++ b/Test/baseResults/spv.vecMatConstruct.frag.out
@@ -1,6 +1,6 @@
spv.vecMatConstruct.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 62
Capability Shader
diff --git a/Test/baseResults/spv.viewportArray2.tesc.out b/Test/baseResults/spv.viewportArray2.tesc.out
index a4016d4..78ee00d 100644
--- a/Test/baseResults/spv.viewportArray2.tesc.out
+++ b/Test/baseResults/spv.viewportArray2.tesc.out
@@ -1,7 +1,7 @@
spv.viewportArray2.tesc
Validation failed
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 25
Capability Geometry
diff --git a/Test/baseResults/spv.viewportArray2.vert.out b/Test/baseResults/spv.viewportArray2.vert.out
index df116cf..6d419a6 100644
--- a/Test/baseResults/spv.viewportArray2.vert.out
+++ b/Test/baseResults/spv.viewportArray2.vert.out
@@ -1,6 +1,6 @@
spv.viewportArray2.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 19
Capability Shader
diff --git a/Test/baseResults/spv.voidFunction.frag.out b/Test/baseResults/spv.voidFunction.frag.out
index fbaee87..804b32c 100644
--- a/Test/baseResults/spv.voidFunction.frag.out
+++ b/Test/baseResults/spv.voidFunction.frag.out
@@ -1,6 +1,6 @@
spv.voidFunction.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 43
Capability Shader
diff --git a/Test/baseResults/spv.volatileAtomic.comp.out b/Test/baseResults/spv.volatileAtomic.comp.out
new file mode 100644
index 0000000..8326374
--- /dev/null
+++ b/Test/baseResults/spv.volatileAtomic.comp.out
@@ -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 --git a/Test/baseResults/spv.vulkan110.int16.frag.out b/Test/baseResults/spv.vulkan110.int16.frag.out
index 11f1cd3..b94593c 100644
--- a/Test/baseResults/spv.vulkan110.int16.frag.out
+++ b/Test/baseResults/spv.vulkan110.int16.frag.out
@@ -1,6 +1,6 @@
spv.vulkan110.int16.frag
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 523
Capability Shader
diff --git a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out
index a019471..7592cf7 100644
--- a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out
+++ b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out
@@ -1,6 +1,6 @@
spv.vulkan110.storageBuffer.vert
// Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 31
Capability Shader
diff --git a/Test/baseResults/spv.while-continue-break.vert.out b/Test/baseResults/spv.while-continue-break.vert.out
index d49bca0..132f503 100644
--- a/Test/baseResults/spv.while-continue-break.vert.out
+++ b/Test/baseResults/spv.while-continue-break.vert.out
@@ -1,6 +1,6 @@
spv.while-continue-break.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 41
Capability Shader
diff --git a/Test/baseResults/spv.while-simple.vert.out b/Test/baseResults/spv.while-simple.vert.out
index b507da3..ea9a980 100644
--- a/Test/baseResults/spv.while-simple.vert.out
+++ b/Test/baseResults/spv.while-simple.vert.out
@@ -1,6 +1,6 @@
spv.while-simple.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 22
Capability Shader
diff --git a/Test/baseResults/spv.whileLoop.frag.out b/Test/baseResults/spv.whileLoop.frag.out
index e294972..67d44f4 100644
--- a/Test/baseResults/spv.whileLoop.frag.out
+++ b/Test/baseResults/spv.whileLoop.frag.out
@@ -1,6 +1,6 @@
spv.whileLoop.frag
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 35
Capability Shader
diff --git a/Test/baseResults/spv.xfb.vert.out b/Test/baseResults/spv.xfb.vert.out
index 3cd93d5..7eb38b3 100644
--- a/Test/baseResults/spv.xfb.vert.out
+++ b/Test/baseResults/spv.xfb.vert.out
@@ -1,6 +1,6 @@
spv.xfb.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 16
Capability Shader
diff --git a/Test/baseResults/spv.xfb2.vert.out b/Test/baseResults/spv.xfb2.vert.out
index a8551a1..0f593da 100644
--- a/Test/baseResults/spv.xfb2.vert.out
+++ b/Test/baseResults/spv.xfb2.vert.out
@@ -1,6 +1,6 @@
spv.xfb2.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 35
Capability Shader
diff --git a/Test/baseResults/spv.xfb3.vert.out b/Test/baseResults/spv.xfb3.vert.out
index 0218847..77894b4 100644
--- a/Test/baseResults/spv.xfb3.vert.out
+++ b/Test/baseResults/spv.xfb3.vert.out
@@ -1,6 +1,6 @@
spv.xfb3.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 35
Capability Shader
diff --git a/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out b/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out
index 066aa3a..52ce965 100644
--- a/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out
+++ b/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out
@@ -1,6 +1,6 @@
spv.xfbOffsetOnBlockMembersAssignment.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 33
Capability Shader
diff --git a/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out b/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out
index 668d24a..13be843 100644
--- a/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out
+++ b/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out
@@ -1,6 +1,6 @@
spv.xfbOffsetOnStructMembersAssignment.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 40
Capability Shader
diff --git a/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out b/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out
index ebc4962..7159f4a 100644
--- a/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out
+++ b/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out
@@ -1,6 +1,6 @@
spv.xfbOverlapOffsetCheckWithBlockAndMember.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 39
Capability Shader
diff --git a/Test/baseResults/spv.xfbStrideJustOnce.vert.out b/Test/baseResults/spv.xfbStrideJustOnce.vert.out
index 9b459b5..270d17a 100644
--- a/Test/baseResults/spv.xfbStrideJustOnce.vert.out
+++ b/Test/baseResults/spv.xfbStrideJustOnce.vert.out
@@ -1,6 +1,6 @@
spv.xfbStrideJustOnce.vert
// Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
// Id's are bound by 33
Capability Shader
diff --git a/Test/baseResults/test.conf b/Test/baseResults/test.conf
index cff7716..98b2a84 100644
--- a/Test/baseResults/test.conf
+++ b/Test/baseResults/test.conf
@@ -90,6 +90,7 @@
MaxTaskWorkGroupSizeY_NV 1
MaxTaskWorkGroupSizeZ_NV 1
MaxMeshViewCountNV 4
+MaxDualSourceDrawBuffersEXT 1
nonInductiveForLoops 1
whileLoops 1
doWhileLoops 1
diff --git a/Test/baseResults/versionsErrors.frag.out b/Test/baseResults/versionsErrors.frag.out
index dbeb941..b072669 100644
--- a/Test/baseResults/versionsErrors.frag.out
+++ b/Test/baseResults/versionsErrors.frag.out
@@ -7,6 +7,7 @@
Shader version: 110
+Requested GL_ARB_texture_rectangle
ERROR: node is still EOpNull!
0:42 Function Definition: main( ( global void)
0:42 Function Parameters:
@@ -27,6 +28,7 @@
Shader version: 110
+Requested GL_ARB_texture_rectangle
ERROR: node is still EOpNull!
0:42 Function Definition: main( ( global void)
0:42 Function Parameters:
diff --git a/Test/baseResults/vulkan.ast.vert.out b/Test/baseResults/vulkan.ast.vert.out
index 72a4570..2bf2065 100644
--- a/Test/baseResults/vulkan.ast.vert.out
+++ b/Test/baseResults/vulkan.ast.vert.out
@@ -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 --git a/Test/baseResults/vulkan.frag.out b/Test/baseResults/vulkan.frag.out
index c81ed25..e620898 100644
--- a/Test/baseResults/vulkan.frag.out
+++ b/Test/baseResults/vulkan.frag.out
@@ -7,14 +7,14 @@
ERROR: 0:9: 'binding' : sampler/texture/image requires layout(binding=X)
ERROR: 0:10: 'binding' : sampler/texture/image requires layout(binding=X)
ERROR: 0:14: 'sampler2D' : sampler-constructor requires two arguments
-ERROR: 0:15: 'sampler2D' : sampler-constructor first argument must be a scalar textureXXX type
-ERROR: 0:16: 'sampler2D' : sampler-constructor first argument must be a scalar textureXXX type
-ERROR: 0:17: 'sampler2D' : sampler-constructor second argument must be a scalar type 'sampler'
-ERROR: 0:18: 'sampler2D' : sampler-constructor second argument must be a scalar type 'sampler'
-ERROR: 0:19: 'sampler2D' : sampler-constructor second argument must be a scalar type 'sampler'
+ERROR: 0:15: 'sampler2D' : sampler-constructor first argument must be a scalar *texture* type
+ERROR: 0:16: 'sampler2D' : sampler-constructor first argument must be a scalar *texture* type
+ERROR: 0:17: 'sampler2D' : sampler-constructor second argument must be a scalar sampler or samplerShadow
+ERROR: 0:18: 'sampler2D' : sampler-constructor second argument must be a scalar sampler or samplerShadow
+ERROR: 0:19: 'sampler2D' : sampler-constructor second argument must be a scalar sampler or samplerShadow
ERROR: 0:21: 'sampler3D' : sampler-constructor cannot make an array of samplers
-ERROR: 0:22: 'sampler2D' : sampler-constructor first argument must be a scalar textureXXX type
-ERROR: 0:23: 'sampler2D' : sampler-constructor first argument must match type and dimensionality of constructor type
+ERROR: 0:22: 'sampler2D' : sampler-constructor first argument must be a scalar *texture* type
+ERROR: 0:23: 'sampler2D' : sampler-constructor first argument must be a *texture* type matching the dimensionality and sampled type of the constructor
ERROR: 0:28: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: s2D
ERROR: 0:29: 'sampler3D' : sampler-constructor cannot make an array of samplers
ERROR: 0:29: 'sampler3D' : sampler/image types can only be used in uniform variables or function parameters: s3d
diff --git a/Test/baseResults/web.array.frag.out b/Test/baseResults/web.array.frag.out
index df70be1..61c9db9 100644
--- a/Test/baseResults/web.array.frag.out
+++ b/Test/baseResults/web.array.frag.out
@@ -1,6 +1,6 @@
; SPIR-V
; Version: 1.0
-; Generator: Khronos Glslang Reference Front End; 7
+; Generator: Khronos Glslang Reference Front End; 8
; Bound: 74
; Schema: 0
OpCapability Shader
diff --git a/Test/baseResults/web.basic.vert.out b/Test/baseResults/web.basic.vert.out
index cd9805b..46c147f 100644
--- a/Test/baseResults/web.basic.vert.out
+++ b/Test/baseResults/web.basic.vert.out
@@ -1,6 +1,6 @@
; SPIR-V
; Version: 1.0
-; Generator: Khronos Glslang Reference Front End; 7
+; Generator: Khronos Glslang Reference Front End; 8
; Bound: 38
; Schema: 0
OpCapability Shader
diff --git a/Test/baseResults/web.builtins.frag.out b/Test/baseResults/web.builtins.frag.out
index 2862dc1..ecf0304 100644
--- a/Test/baseResults/web.builtins.frag.out
+++ b/Test/baseResults/web.builtins.frag.out
@@ -1,6 +1,6 @@
; SPIR-V
; Version: 1.0
-; Generator: Khronos Glslang Reference Front End; 7
+; Generator: Khronos Glslang Reference Front End; 8
; Bound: 69
; Schema: 0
OpCapability Shader
diff --git a/Test/baseResults/web.builtins.vert.out b/Test/baseResults/web.builtins.vert.out
index 9ea6672..597e731 100644
--- a/Test/baseResults/web.builtins.vert.out
+++ b/Test/baseResults/web.builtins.vert.out
@@ -1,6 +1,6 @@
; SPIR-V
; Version: 1.0
-; Generator: Khronos Glslang Reference Front End; 7
+; Generator: Khronos Glslang Reference Front End; 8
; Bound: 33
; Schema: 0
OpCapability Shader
diff --git a/Test/baseResults/web.comp.out b/Test/baseResults/web.comp.out
new file mode 100644
index 0000000..d0a911e
--- /dev/null
+++ b/Test/baseResults/web.comp.out
@@ -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 --git a/Test/baseResults/web.controlFlow.frag.out b/Test/baseResults/web.controlFlow.frag.out
index ebfa5be..5719989 100644
--- a/Test/baseResults/web.controlFlow.frag.out
+++ b/Test/baseResults/web.controlFlow.frag.out
@@ -1,6 +1,6 @@
; SPIR-V
; Version: 1.0
-; Generator: Khronos Glslang Reference Front End; 7
+; Generator: Khronos Glslang Reference Front End; 8
; Bound: 193
; Schema: 0
OpCapability Shader
diff --git a/Test/baseResults/web.operations.frag.out b/Test/baseResults/web.operations.frag.out
index eb01624..d7e4d6e 100644
--- a/Test/baseResults/web.operations.frag.out
+++ b/Test/baseResults/web.operations.frag.out
@@ -1,6 +1,6 @@
; SPIR-V
; Version: 1.0
-; Generator: Khronos Glslang Reference Front End; 7
+; Generator: Khronos Glslang Reference Front End; 8
; Bound: 207
; Schema: 0
OpCapability Shader
diff --git a/Test/baseResults/web.separate.frag.out b/Test/baseResults/web.separate.frag.out
new file mode 100644
index 0000000..5a99298
--- /dev/null
+++ b/Test/baseResults/web.separate.frag.out
@@ -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 --git a/Test/baseResults/web.texture.frag.out b/Test/baseResults/web.texture.frag.out
index 6fbebb4..baad564 100644
--- a/Test/baseResults/web.texture.frag.out
+++ b/Test/baseResults/web.texture.frag.out
@@ -1,6 +1,6 @@
; SPIR-V
; Version: 1.0
-; Generator: Khronos Glslang Reference Front End; 7
+; Generator: Khronos Glslang Reference Front End; 8
; Bound: 189
; Schema: 0
OpCapability Shader
diff --git a/Test/constFold.frag b/Test/constFold.frag
index daecaa2..49373e6 100644
--- a/Test/constFold.frag
+++ b/Test/constFold.frag
@@ -122,6 +122,9 @@
const mat2 mm2 = mat2(1.0, 2.0, 3.0, 4.0);
const mat3x2 mm32 = mat3x2(10.0, 11.0, 12.0, 13.0, 14.0, 15.0);
+const mat2 m22 = mat2(vec4(1.0, 2.0, 3.0, 4.0));
+const mat3x4 mm34 = mat3x4(7.0);
+const vec4 mv4 = vec4(m22);
void foo3()
{
diff --git a/Test/foo.h b/Test/foo.h
index 7f79340..236277c 100644
--- a/Test/foo.h
+++ b/Test/foo.h
@@ -1 +1 @@
-#error should not be included
\ No newline at end of file
+#error should not be included
diff --git a/Test/glsl.450.subgroup.frag b/Test/glsl.450.subgroup.frag
index 61cfc8f..d0b9573 100644
--- a/Test/glsl.450.subgroup.frag
+++ b/Test/glsl.450.subgroup.frag
@@ -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 --git a/Test/hlsl.doLoop.frag b/Test/hlsl.doLoop.frag
index 0318dc8..8f4bfdc 100644
--- a/Test/hlsl.doLoop.frag
+++ b/Test/hlsl.doLoop.frag
@@ -1,9 +1,29 @@
+void f0() {
+ [unroll] do {} while (false);
+}
+
+void f1() {
+ [unroll] do {;} while (false);
+}
+
+float f2(float input) {
+ do { return (float4)input; } while (input > 2.0);
+}
+
+void f3(float input) {
+ do ++input; while (input < 10.0);
+}
+
+void f4(float input) {
+ do while (++input < 10.0); while (++input < 10.0); // nest while inside do-while
+}
+
float4 PixelShaderFunction(float input) : COLOR0
{
- [unroll] do {} while (false);
- [unroll] do {;} while (false);
- do { return (float4)input; } while (input > 2.0);
- do ++input; while (input < 10.0);
- do while (++input < 10.0); while (++input < 10.0); // nest while inside do-while
+ f0();
+ f1();
+ f2(input);
+ f3(input);
+ f4(input);
return (float4)input;
}
diff --git a/Test/hlsl.forLoop.frag b/Test/hlsl.forLoop.frag
index 9cf60ee..c0783db 100644
--- a/Test/hlsl.forLoop.frag
+++ b/Test/hlsl.forLoop.frag
@@ -1,17 +1,59 @@
+void f0() {
+ for (;;) ;
+}
+
+void f1(float4 input) {
+ for (++input; ; ) ;
+}
+
+void f2(float4 input) {
+ [unroll] for (; any(input != input); ) {}
+}
+
+float f3(float4 input) {
+ for (; any(input != input); ) { return -input; }
+}
+
+float f4(float4 input) {
+ for (--input; any(input != input); input += 2) { return -input; }
+}
+
+void f5(float4 input) {
+ for (;;) if (input.x > 2.0) break;
+}
+
+void f6(float4 input) {
+ for (;;) if (input.x > 2.0) continue;
+}
+
+void f99() {
+ for (int first = 0, second = 1; ;) first + second;
+}
+
+void f100(float ii) {
+ for (--ii, --ii, --ii;;) ii;
+}
+
float4 PixelShaderFunction(float4 input) : COLOR0
{
- for (;;) ;
- for (++input; ; ) ;
- [unroll] for (; any(input != input); ) {}
- for (; any(input != input); ) { return -input; }
- for (--input; any(input != input); input += 2) { return -input; }
- for (;;) if (input.x > 2.0) break;
- for (;;) if (input.x > 2.0) continue;
+ f0();
+ f1(input);
+ f2(input);
+ f3(input);
+ f4(input);
+ f5(input);
+ f6(input);
+
float ii;
for (int ii = -1; ii < 3; ++ii) if (ii == 2) continue;
--ii;
- for (int first = 0, second = 1; ;) first + second;
+
+ f99();
+
for ( int i = 0, count = int(ii); i < count; i++ );
for (float first = 0, second[2], third; first < second[0]; ++second[1]) first + second[1] + third;
- for (--ii, --ii, --ii;;) ii;
+
+ f100(ii);
+
+ return input;
}
diff --git a/Test/hlsl.if.frag b/Test/hlsl.if.frag
index b62eda1..a2e47f6 100644
--- a/Test/hlsl.if.frag
+++ b/Test/hlsl.if.frag
@@ -1,12 +1,24 @@
+float4 f0(float4 input) {
+ if (all(input == input))
+ return input;
+ else
+ return -input;
+}
+
+float4 f1(float4 input) {
+ if (all(input == input)) {
+ return input;
+ } else {
+ return -input;
+ }
+}
+
float4 PixelShaderFunction(float4 input) : COLOR0
{
if (all(input == input))
return input;
- if (all(input == input))
- return input;
- else
- return -input;
+ f0(input);
if (all(input == input))
;
@@ -20,11 +32,7 @@
return input;
}
- if (all(input == input)) {
- return input;
- } else {
- return -input;
- }
+ f1(input);
int ii;
if (float ii = input.z)
diff --git a/Test/hlsl.intrinsics.frag b/Test/hlsl.intrinsics.frag
old mode 100644
new mode 100755
index ffa3c25..280e231
--- a/Test/hlsl.intrinsics.frag
+++ b/Test/hlsl.intrinsics.frag
@@ -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 --git a/Test/hlsl.semantic.geom b/Test/hlsl.semantic.geom
index fc6a53a..9e0ed4c 100644
--- a/Test/hlsl.semantic.geom
+++ b/Test/hlsl.semantic.geom
@@ -14,3 +14,11 @@
S s;
OutputStream.Append(s);
}
+
+[maxvertexcount(4)]
+void notmain(line in uint VertexID[2] : VertexID,
+ inout LineStream<S> OutputStream)
+{
+ S s;
+ OutputStream.Append(s);
+}
diff --git a/Test/hlsl.singleArgIntPromo.vert b/Test/hlsl.singleArgIntPromo.vert
new file mode 100755
index 0000000..5c99a38
--- /dev/null
+++ b/Test/hlsl.singleArgIntPromo.vert
@@ -0,0 +1,16 @@
+float main(): SV_Target0
+{
+ int d = 4;
+ int2 d2 = int2(5,d);
+ float f1 = log2(5);
+ float2 f2 = log(d2);
+ float3 f3 = log(int3(7,2,3));
+ float2 f22 = log(int2(5,d)); // This case does not work yet, due to a different bug that turns this into 2 args.
+
+ int a = 5;
+ min16float b = min16float(f16tof32(a));
+ b *= b;
+ uint c = f32tof16(b);
+
+ return f1 + f2.x + f3.z + f22.y + c;
+}
\ No newline at end of file
diff --git a/Test/inc2/foo.h b/Test/inc2/foo.h
index fd09e80..ea1e5ba 100644
--- a/Test/inc2/foo.h
+++ b/Test/inc2/foo.h
@@ -1 +1 @@
-float4 i6;
\ No newline at end of file
+float4 i6;
diff --git a/Test/link.multiAnonBlocksInvalid.0.0.vert b/Test/link.multiAnonBlocksInvalid.0.0.vert
new file mode 100755
index 0000000..106dd25
--- /dev/null
+++ b/Test/link.multiAnonBlocksInvalid.0.0.vert
@@ -0,0 +1,52 @@
+#version 430
+
+// Error: Block has different members
+layout (std140) uniform Block
+{
+ mat4 uProj;
+};
+
+// Error: BufferBlock has different members
+buffer BufferBlock
+{
+ vec4 b;
+};
+
+// Error: Vertex has different members
+out Vertex
+{
+ vec4 v1;
+};
+
+// Error: ColorBlock has different members
+layout (std140) uniform ColorBlock
+{
+ vec4 color1;
+ vec4 color2;
+ // Error, redeclare varaible in another anonymous block
+ vec4 v1;
+};
+
+// Error: NamedBlock is anonymous in other compilation unit
+layout (std140) uniform NamedBlock
+{
+ mat4 m;
+} myName;
+
+vec4 getWorld();
+vec4 getColor2();
+
+out vec4 oColor;
+
+// Error: redeclare varaibles that are in anonymous blocks
+out vec4 v1;
+uniform mat4 uProj;
+
+void
+main()
+{
+ oColor = color1 * getColor2();
+ v1 = color1;
+
+ gl_Position = uProj * getWorld();
+}
diff --git a/Test/link.multiAnonBlocksInvalid.0.1.vert b/Test/link.multiAnonBlocksInvalid.0.1.vert
new file mode 100755
index 0000000..8b4c7f8
--- /dev/null
+++ b/Test/link.multiAnonBlocksInvalid.0.1.vert
@@ -0,0 +1,48 @@
+#version 430
+
+// Error: ColorBlock has different members
+layout (std140) uniform ColorBlock
+{
+ vec4 color2;
+};
+
+// Error: Block has different members
+layout (std140) uniform Block
+{
+ mat4 uProj;
+ mat4 uWorld;
+};
+
+// Error: Vertex has different members
+out Vertex
+{
+ vec4 v1;
+ vec4 v2;
+};
+
+// Error BufferBlock has different members
+buffer BufferBlock
+{
+ vec4 a;
+};
+
+// Error: NamedBlock is anonymous in other compilation unit
+layout (std140) uniform NamedBlock
+{
+ mat4 m;
+};
+
+
+in vec4 P;
+
+vec4 getColor2()
+{
+ return color2;
+}
+
+vec4 getWorld()
+{
+ return uWorld * P;
+ v2 = vec4(1);
+}
+
diff --git a/Test/link.multiAnonBlocksValid.0.0.vert b/Test/link.multiAnonBlocksValid.0.0.vert
new file mode 100755
index 0000000..470d815
--- /dev/null
+++ b/Test/link.multiAnonBlocksValid.0.0.vert
@@ -0,0 +1,38 @@
+#version 430
+
+// Verify that matching by block name is working, not
+// instance name, which was at one point failing on this
+// test due to E.g anon@1 being different blocks for
+// different compilation units
+
+layout (std140) uniform Block
+{
+ mat4 uProj;
+ mat4 uWorld;
+};
+
+out Vertex
+{
+ vec4 v1;
+ vec4 v2;
+};
+
+layout (std140) uniform ColorBlock
+{
+ vec4 color1;
+ vec4 color2;
+};
+
+vec4 getWorld();
+vec4 getColor2();
+
+out vec4 oColor;
+
+void
+main()
+{
+ oColor = color1 * getColor2();
+ v1 = color1;
+
+ gl_Position = uProj * getWorld();
+}
diff --git a/Test/link.multiAnonBlocksValid.0.1.vert b/Test/link.multiAnonBlocksValid.0.1.vert
new file mode 100755
index 0000000..e7dccbe
--- /dev/null
+++ b/Test/link.multiAnonBlocksValid.0.1.vert
@@ -0,0 +1,34 @@
+#version 430
+
+layout (std140) uniform ColorBlock
+{
+ vec4 color1;
+ vec4 color2;
+};
+
+layout (std140) uniform Block
+{
+ mat4 uProj;
+ mat4 uWorld;
+};
+
+out Vertex
+{
+ vec4 v1;
+ vec4 v2;
+};
+
+
+in vec4 P;
+
+vec4 getColor2()
+{
+ return color2;
+}
+
+vec4 getWorld()
+{
+ return uWorld * P;
+ v2 = vec4(1);
+}
+
diff --git a/Test/link.multiBlocksInvalid.0.0.vert b/Test/link.multiBlocksInvalid.0.0.vert
new file mode 100755
index 0000000..19bc049
--- /dev/null
+++ b/Test/link.multiBlocksInvalid.0.0.vert
@@ -0,0 +1,40 @@
+#version 430
+
+// Verify that blocks with different instance names
+// are correctly detected as invalid non-matching blocks
+// when they are matched up by block name
+layout (std140) uniform Block
+{
+ mat4 uProj;
+} uD;
+
+out Vertex
+{
+ vec4 v1;
+} oV;
+
+layout (std140) uniform ColorBlock
+{
+ vec4 color1;
+} uC;
+
+// Error, buffer blocks and uniform blocks share the
+// same namespace for their block name
+layout (std430) buffer ColorBlock
+{
+ vec4 color1;
+} uBufC;
+
+vec4 getWorld();
+vec4 getColor2();
+
+out vec4 oColor;
+
+void
+main()
+{
+ oColor = uC.color1 * getColor2();
+ oV.v1 = uC.color1 + uBufC.color1;
+
+ gl_Position = uD.uProj * getWorld();
+}
diff --git a/Test/link.multiBlocksInvalid.0.1.vert b/Test/link.multiBlocksInvalid.0.1.vert
new file mode 100755
index 0000000..8b9ccd1
--- /dev/null
+++ b/Test/link.multiBlocksInvalid.0.1.vert
@@ -0,0 +1,31 @@
+#version 430
+
+layout (std140) uniform ColorBlock
+{
+ vec4 color2;
+} uColorB;
+
+layout (std140) uniform Block
+{
+ mat4 uWorld;
+} uDefaultB;
+
+out Vertex
+{
+ vec4 v2;
+} oVert;
+
+
+in vec4 P;
+
+vec4 getColor2()
+{
+ return uColorB.color2;
+}
+
+vec4 getWorld()
+{
+ return uDefaultB.uWorld * P;
+ oVert.v2 = vec4(1);
+}
+
diff --git a/Test/link.multiBlocksValid.1.0.vert b/Test/link.multiBlocksValid.1.0.vert
new file mode 100755
index 0000000..b21683b
--- /dev/null
+++ b/Test/link.multiBlocksValid.1.0.vert
@@ -0,0 +1,32 @@
+#version 430
+layout (std140) uniform Block
+{
+ mat4 uProj;
+ mat4 uWorld;
+} a;
+
+out Vertex
+{
+ vec4 v1;
+ vec4 v2;
+} b;
+
+layout (std140) uniform ColorBlock
+{
+ vec4 color1;
+ vec4 color2;
+} c;
+
+vec4 getWorld();
+vec4 getColor2();
+
+out vec4 oColor;
+
+void
+main()
+{
+ oColor = c.color1 * getColor2();
+ b.v1 = c.color1;
+
+ gl_Position = a.uProj * getWorld();
+}
diff --git a/Test/link.multiBlocksValid.1.1.vert b/Test/link.multiBlocksValid.1.1.vert
new file mode 100755
index 0000000..d86a0d1
--- /dev/null
+++ b/Test/link.multiBlocksValid.1.1.vert
@@ -0,0 +1,34 @@
+#version 430
+
+layout (std140) uniform ColorBlock
+{
+ vec4 color1;
+ vec4 color2;
+} a;
+
+layout (std140) uniform Block
+{
+ mat4 uProj;
+ mat4 uWorld;
+} b;
+
+out Vertex
+{
+ vec4 v1;
+ vec4 v2;
+} c;
+
+
+in vec4 P;
+
+vec4 getColor2()
+{
+ return a.color2;
+}
+
+vec4 getWorld()
+{
+ return b.uWorld * P;
+ c.v2 = vec4(1);
+}
+
diff --git a/Test/link.vk.differentPC.0.0.frag b/Test/link.vk.differentPC.0.0.frag
new file mode 100755
index 0000000..f5ad4ce
--- /dev/null
+++ b/Test/link.vk.differentPC.0.0.frag
@@ -0,0 +1,18 @@
+#version 450
+
+layout(location=0) out vec4 color;
+
+layout (push_constant) uniform PushConstantBlock
+{
+ vec4 color;
+ vec4 color2;
+ float scale;
+} uPC;
+
+vec4 getColor2();
+float getScale();
+
+void main()
+{
+ color = uPC.color + getColor2() * getScale();
+}
diff --git a/Test/link.vk.differentPC.0.1.frag b/Test/link.vk.differentPC.0.1.frag
new file mode 100755
index 0000000..972fc65
--- /dev/null
+++ b/Test/link.vk.differentPC.0.1.frag
@@ -0,0 +1,14 @@
+#version 450
+
+layout (push_constant) uniform PushConstantBlock
+{
+ vec4 color;
+ vec4 color2;
+ float scale;
+} uPC;
+
+vec4
+getColor2()
+{
+ return uPC.color2;
+}
diff --git a/Test/link.vk.differentPC.0.2.frag b/Test/link.vk.differentPC.0.2.frag
new file mode 100755
index 0000000..287e425
--- /dev/null
+++ b/Test/link.vk.differentPC.0.2.frag
@@ -0,0 +1,15 @@
+#version 450
+
+layout (push_constant) uniform PushConstantBlock
+{
+ vec4 color;
+ vec4 color2;
+ float scale2;
+} uPC;
+
+float
+getScale()
+{
+ return uPC.scale2;
+}
+
diff --git a/Test/link.vk.differentPC.1.0.frag b/Test/link.vk.differentPC.1.0.frag
new file mode 100755
index 0000000..e395bb8
--- /dev/null
+++ b/Test/link.vk.differentPC.1.0.frag
@@ -0,0 +1,16 @@
+#version 450
+
+layout (push_constant) uniform PushConstantBlock
+{
+ vec4 color;
+ vec4 color2;
+ float scale;
+ float scale2;
+} uPC;
+
+float
+getScale()
+{
+ return uPC.scale;
+}
+
diff --git a/Test/link.vk.differentPC.1.1.frag b/Test/link.vk.differentPC.1.1.frag
new file mode 100755
index 0000000..972fc65
--- /dev/null
+++ b/Test/link.vk.differentPC.1.1.frag
@@ -0,0 +1,14 @@
+#version 450
+
+layout (push_constant) uniform PushConstantBlock
+{
+ vec4 color;
+ vec4 color2;
+ float scale;
+} uPC;
+
+vec4
+getColor2()
+{
+ return uPC.color2;
+}
diff --git a/Test/link.vk.differentPC.1.2.frag b/Test/link.vk.differentPC.1.2.frag
new file mode 100755
index 0000000..f5ad4ce
--- /dev/null
+++ b/Test/link.vk.differentPC.1.2.frag
@@ -0,0 +1,18 @@
+#version 450
+
+layout(location=0) out vec4 color;
+
+layout (push_constant) uniform PushConstantBlock
+{
+ vec4 color;
+ vec4 color2;
+ float scale;
+} uPC;
+
+vec4 getColor2();
+float getScale();
+
+void main()
+{
+ color = uPC.color + getColor2() * getScale();
+}
diff --git a/Test/link.vk.matchingPC.0.0.frag b/Test/link.vk.matchingPC.0.0.frag
new file mode 100755
index 0000000..f5ad4ce
--- /dev/null
+++ b/Test/link.vk.matchingPC.0.0.frag
@@ -0,0 +1,18 @@
+#version 450
+
+layout(location=0) out vec4 color;
+
+layout (push_constant) uniform PushConstantBlock
+{
+ vec4 color;
+ vec4 color2;
+ float scale;
+} uPC;
+
+vec4 getColor2();
+float getScale();
+
+void main()
+{
+ color = uPC.color + getColor2() * getScale();
+}
diff --git a/Test/link.vk.matchingPC.0.1.frag b/Test/link.vk.matchingPC.0.1.frag
new file mode 100755
index 0000000..972fc65
--- /dev/null
+++ b/Test/link.vk.matchingPC.0.1.frag
@@ -0,0 +1,14 @@
+#version 450
+
+layout (push_constant) uniform PushConstantBlock
+{
+ vec4 color;
+ vec4 color2;
+ float scale;
+} uPC;
+
+vec4
+getColor2()
+{
+ return uPC.color2;
+}
diff --git a/Test/link.vk.matchingPC.0.2.frag b/Test/link.vk.matchingPC.0.2.frag
new file mode 100755
index 0000000..734358c
--- /dev/null
+++ b/Test/link.vk.matchingPC.0.2.frag
@@ -0,0 +1,14 @@
+#version 450
+
+layout (push_constant) uniform PushConstantBlock
+{
+ vec4 color;
+ vec4 color2;
+ float scale;
+} uPC;
+
+float
+getScale()
+{
+ return uPC.scale;
+}
diff --git a/Test/link.vk.multiBlocksValid.0.0.vert b/Test/link.vk.multiBlocksValid.0.0.vert
new file mode 100755
index 0000000..81747ec
--- /dev/null
+++ b/Test/link.vk.multiBlocksValid.0.0.vert
@@ -0,0 +1,49 @@
+#version 430
+
+// OK: different instance names is allowed in other unit
+layout (std140, binding = 0) uniform MatrixBlock
+{
+ mat4 uProj;
+ mat4 uWorld;
+} uM;
+
+// OK: other unit has it as anonymous, but that is allowed
+out Vertex
+{
+ vec4 v1;
+ vec4 v2;
+} oV;
+
+// OK: different instance names is allowed in other unit
+layout (std140, binding = 1) uniform ColorBlock
+{
+ vec4 color1;
+ bool b;
+ vec4 color2;
+ vec4 color3;
+} uC;
+
+// OK: different instance names is allowed in other unit
+layout (std430, binding = 1) buffer BufferBlock
+{
+ mat4 p;
+} uBuf;
+
+layout (std430, binding = 0) buffer SecondaryColorBlock
+{
+ vec4 c;
+} uColorBuf;
+
+vec4 getWorld();
+vec4 getColor2();
+
+out vec4 oColor;
+
+void
+main()
+{
+ oColor = uC.color1 * getColor2() * uColorBuf.c;
+ oV.v1 = uC.color1;
+
+ gl_Position = uM.uProj * getWorld();
+}
diff --git a/Test/link.vk.multiBlocksValid.0.1.vert b/Test/link.vk.multiBlocksValid.0.1.vert
new file mode 100755
index 0000000..5267778
--- /dev/null
+++ b/Test/link.vk.multiBlocksValid.0.1.vert
@@ -0,0 +1,46 @@
+#version 430
+
+// OK: different instance names is allowed in other unit
+layout (std140, binding = 1) uniform ColorBlock
+{
+ vec4 color1;
+ bool b;
+ vec4 color2;
+ vec4 color3;
+} uColor;
+
+// OK: different instance names is allowed in other unit
+layout (std430, binding = 1) buffer BufferBlock
+{
+ mat4 p;
+} uBuffer;
+
+// OK: different instance names is allowed in other unit
+layout (std140, binding = 0) uniform MatrixBlock
+{
+ mat4 uProj;
+ mat4 uWorld;
+} uMatrix;
+
+// OK, it's allowed for input/output interfaces to
+// be anonymous is one unit and not in another
+out Vertex
+{
+ vec4 v1;
+ vec4 v2;
+};
+
+
+in vec4 P;
+
+vec4 getColor2()
+{
+ return uColor.color2;
+}
+
+vec4 getWorld()
+{
+ v1 = vec4(1);
+ return uMatrix.uWorld * P;
+}
+
diff --git a/Test/link.vk.multiBlocksValid.1.0.geom b/Test/link.vk.multiBlocksValid.1.0.geom
new file mode 100755
index 0000000..9811b08
--- /dev/null
+++ b/Test/link.vk.multiBlocksValid.1.0.geom
@@ -0,0 +1,62 @@
+#version 430
+
+layout (triangles) in;
+layout (triangle_strip, max_vertices = 3) out;
+
+// OK: different instance names is allowed
+layout (std140, binding = 0) uniform MatrixBlock
+{
+ mat4 uProj;
+ mat4 uWorld;
+} uM;
+
+// Verify that in/out blocks with same block name work
+in Vertex
+{
+ vec4 v1;
+ vec4 v2;
+} iV[3];
+
+out Vertex
+{
+ vec4 val1;
+} oV;
+
+// OK: different instance names is allowed
+layout (std140, binding = 1) uniform ColorBlock
+{
+ vec4 color1;
+ bool b;
+ vec4 color2;
+ vec4 color3;
+} uC;
+
+// OK: different instance names is allowed
+layout (std430, binding = 1) buffer BufferBlock
+{
+ mat4 p;
+} uBuf;
+
+vec4 getWorld(int i);
+vec4 getColor2();
+
+out vec4 oColor;
+
+float globalF;
+
+void
+main()
+{
+ oColor = uC.color1 * getColor2();
+
+ globalF = 1.0;
+
+ for (int i = 0; i < 3; i++)
+ {
+ gl_Position = uM.uProj * getWorld(i);
+ oV.val1 = uC.color1 + iV[i].v2 * globalF;
+ EmitVertex();
+ }
+
+ EndPrimitive();
+}
diff --git a/Test/link.vk.multiBlocksValid.1.1.geom b/Test/link.vk.multiBlocksValid.1.1.geom
new file mode 100755
index 0000000..f372343
--- /dev/null
+++ b/Test/link.vk.multiBlocksValid.1.1.geom
@@ -0,0 +1,54 @@
+#version 430
+
+layout (triangles) in;
+layout (triangle_strip, max_vertices = 3) out;
+
+// OK: different instance names is allowed
+layout (std140, binding = 1) uniform ColorBlock
+{
+ vec4 color1;
+ bool b;
+ vec4 color2;
+ vec4 color3;
+} uColor;
+
+// OK: different instance names is allowed
+layout (std430, binding = 1) buffer BufferBlock
+{
+ mat4 p;
+} uBuffer;
+
+// OK: different instance names is allowed
+layout (std140, binding = 0) uniform MatrixBlock
+{
+ mat4 uProj;
+ mat4 uWorld;
+} uMatrix;
+
+// OK, it's allowed for input/output interfaces to
+// be anonymous is one unit and not in another
+out Vertex
+{
+ vec4 val1;
+};
+
+in Vertex
+{
+ vec4 v1;
+ vec4 v2;
+} iVV[];
+
+
+in vec4 P[3];
+
+vec4 getColor2()
+{
+ return uColor.color2;
+}
+
+vec4 getWorld(int i)
+{
+ val1 = vec4(1);
+ return uMatrix.uWorld * iVV[i].v1;
+}
+
diff --git a/Test/link.vk.pcNamingInvalid.0.0.vert b/Test/link.vk.pcNamingInvalid.0.0.vert
new file mode 100755
index 0000000..26a7586
--- /dev/null
+++ b/Test/link.vk.pcNamingInvalid.0.0.vert
@@ -0,0 +1,21 @@
+#version 450
+layout (push_constant) uniform Block
+{
+ mat4 uWorld;
+ mat4 uProj;
+ vec4 color1;
+ vec4 color2;
+} a;
+
+vec4 getWorld();
+vec4 getColor2();
+
+out vec4 oColor;
+
+void
+main()
+{
+ oColor = a.color1 * getColor2();
+
+ gl_Position = a.uProj * getWorld();
+}
diff --git a/Test/link.vk.pcNamingInvalid.0.1.vert b/Test/link.vk.pcNamingInvalid.0.1.vert
new file mode 100755
index 0000000..47d2314
--- /dev/null
+++ b/Test/link.vk.pcNamingInvalid.0.1.vert
@@ -0,0 +1,22 @@
+#version 450
+
+layout (push_constant) uniform Block2
+{
+ mat4 uWorld;
+ mat4 uProj;
+ vec4 color1;
+ vec4 color2;
+} a;
+
+in vec4 P;
+
+vec4 getColor2()
+{
+ return a.color2;
+}
+
+vec4 getWorld()
+{
+ return a.uWorld * P;
+}
+
diff --git a/Test/link.vk.pcNamingValid.0.0.vert b/Test/link.vk.pcNamingValid.0.0.vert
new file mode 100755
index 0000000..7df2190
--- /dev/null
+++ b/Test/link.vk.pcNamingValid.0.0.vert
@@ -0,0 +1,21 @@
+#version 450
+layout (push_constant) uniform PCBlock
+{
+ mat4 uWorld;
+ mat4 uProj;
+ vec4 color1;
+ vec4 color2;
+} a;
+
+vec4 getWorld();
+vec4 getColor2();
+
+layout(location = 0) out vec4 oColor;
+
+void
+main()
+{
+ oColor = a.color1 * getColor2();
+
+ gl_Position = a.uProj * getWorld();
+}
diff --git a/Test/link.vk.pcNamingValid.0.1.vert b/Test/link.vk.pcNamingValid.0.1.vert
new file mode 100755
index 0000000..9a4b41b
--- /dev/null
+++ b/Test/link.vk.pcNamingValid.0.1.vert
@@ -0,0 +1,22 @@
+#version 450
+
+layout (push_constant) uniform PCBlock
+{
+ mat4 uWorld;
+ mat4 uProj;
+ vec4 color1;
+ vec4 color2;
+} b;
+
+layout(location = 0) in vec4 P;
+
+vec4 getColor2()
+{
+ return b.color2;
+}
+
+vec4 getWorld()
+{
+ return b.uWorld * P;
+}
+
diff --git a/Test/rayQuery-allOps.Error.rgen b/Test/rayQuery-allOps.Error.rgen
new file mode 100644
index 0000000..d25a183
--- /dev/null
+++ b/Test/rayQuery-allOps.Error.rgen
@@ -0,0 +1,212 @@
+#version 460
+#extension GL_NV_ray_tracing : enable
+#extension GL_EXT_ray_query : enable
+
+struct Ray
+{
+ vec3 pos;
+ float tmin;
+ vec3 dir;
+ float tmax;
+};
+
+layout(std430, set = 0, binding = 0) buffer Log
+{
+ uint x;
+ uint y;
+};
+
+layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas;
+layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; };
+
+void doSomething()
+{
+ x = 0;
+ y = 0;
+}
+
+Ray makeRayDesc()
+{
+ Ray ray;
+ ray.pos= vec3(0,0,0);
+ ray.dir = vec3(1,0,0);
+ ray.tmin = 0.0f;
+ ray.tmax = 9999.0;
+ return ray;
+}
+
+void main()
+{
+ Ray ray = makeRayDesc();
+ rayQueryEXT rayQuery;
+ rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsNoneEXT, 0xFF, ray.pos, ray.tmin, ray.dir, ray.tmax);
+
+ mat4x3 _mat4x3;
+ mat3x4 _mat3x4;
+
+ while (rayQueryProceedEXT(rayQuery) == 1)
+ {
+ int candidateType = rayQueryGetIntersectionTypeEXT(rayQuery, false);
+ switch(candidateType)
+ {
+ case gl_RayQueryCandidateIntersectionTriangleEXT:
+
+ rayQueryTerminateEXT(rayQuery);
+ _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false);
+ _mat3x4 = transpose(_mat4x3);
+ rayQueryConfirmIntersectionEXT(rayQuery);
+
+ if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true) == 1)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true) == 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionInstanceIdEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionTEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+ break;
+
+ case gl_RayQueryCandidateIntersectionAABBEXT:
+ {
+ _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false);
+ _mat3x4 = transpose(_mat4x3);
+ if (rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQuery))
+ {
+ doSomething();
+ }
+
+ int t = 1;
+ rayQueryGenerateIntersectionEXT(rayQuery, t);
+ rayQueryTerminateEXT(rayQuery);
+ break;
+ }
+ }
+ }
+
+ if(_mat3x4[0][0] == _mat4x3[0][0])
+ {
+ doSomething();
+ }
+
+ int committedStatus = rayQueryGetIntersectionTypeEXT(rayQuery, true);
+
+ switch(committedStatus)
+ {
+ case gl_RayQueryCommittedIntersectionNoneEXT :
+ _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, false);
+ _mat3x4 = transpose(_mat4x3);
+ break;
+
+ case gl_RayQueryCommittedIntersectionTriangleEXT :
+ _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, true);
+ _mat3x4 = transpose(_mat4x3);
+
+ if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true) == 0)
+ {
+ doSomething();
+ }
+ break;
+
+ case gl_RayQueryCommittedIntersectionGeneratedEXT :
+
+ if(rayQueryGetIntersectionGeometryIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionInstanceIdEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionTEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+ break;
+ }
+
+ if (_mat3x4[0][0] == _mat4x3[0][0])
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetRayFlagsEXT(rayQuery))
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetRayTMinEXT(rayQuery))
+ {
+ doSomething();
+ }
+
+ vec3 o = rayQueryGetWorldRayOriginEXT(rayQuery);
+ vec3 d = rayQueryGetWorldRayDirectionEXT(rayQuery);
+
+ if (o.x == d.z)
+ {
+ doSomething();
+ }
+}
diff --git a/Test/rayQuery-allOps.comp b/Test/rayQuery-allOps.comp
new file mode 100644
index 0000000..80f2593
--- /dev/null
+++ b/Test/rayQuery-allOps.comp
@@ -0,0 +1,212 @@
+#version 460
+#extension GL_EXT_ray_query : enable
+#extension GL_EXT_ray_flags_primitive_culling : enable
+
+struct Ray
+{
+ vec3 pos;
+ float tmin;
+ vec3 dir;
+ float tmax;
+};
+
+layout(std430, set = 0, binding = 0) buffer Log
+{
+ uint x;
+ uint y;
+};
+
+layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas;
+layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; };
+
+void doSomething()
+{
+ x = 0;
+ y = 0;
+}
+
+Ray makeRayDesc()
+{
+ Ray ray;
+ ray.pos= vec3(0,0,0);
+ ray.dir = vec3(1,0,0);
+ ray.tmin = 0.0f;
+ ray.tmax = 9999.0;
+ return ray;
+}
+
+void main()
+{
+ Ray ray = makeRayDesc();
+ rayQueryEXT rayQuery;
+ rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsNoneEXT, 0xFF, ray.pos, ray.tmin, ray.dir, ray.tmax);
+
+ mat4x3 _mat4x3;
+ mat3x4 _mat3x4;
+
+ while (rayQueryProceedEXT(rayQuery))
+ {
+ uint candidateType = rayQueryGetIntersectionTypeEXT(rayQuery, false);
+ switch(candidateType)
+ {
+ case gl_RayQueryCandidateIntersectionTriangleEXT:
+
+ rayQueryTerminateEXT(rayQuery);
+ _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false);
+ _mat3x4 = transpose(_mat4x3);
+ rayQueryConfirmIntersectionEXT(rayQuery);
+
+ if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true).x == 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionInstanceIdEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true).x > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true).x > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionTEXT(rayQuery, true) > 0.f)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+ break;
+
+ case gl_RayQueryCandidateIntersectionAABBEXT:
+ {
+ _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false);
+ _mat3x4 = transpose(_mat4x3);
+ if (rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQuery))
+ {
+ doSomething();
+ }
+
+ float t = 0.5;
+ rayQueryGenerateIntersectionEXT(rayQuery, t);
+ rayQueryTerminateEXT(rayQuery);
+ break;
+ }
+ }
+ }
+
+ if(_mat3x4[0][0] == _mat4x3[0][0])
+ {
+ doSomething();
+ }
+
+ uint committedStatus = rayQueryGetIntersectionTypeEXT(rayQuery, true);
+
+ switch(committedStatus)
+ {
+ case gl_RayQueryCommittedIntersectionNoneEXT :
+ _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, false);
+ _mat3x4 = transpose(_mat4x3);
+ break;
+
+ case gl_RayQueryCommittedIntersectionTriangleEXT :
+ _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, true);
+ _mat3x4 = transpose(_mat4x3);
+
+ if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true).y == 0)
+ {
+ doSomething();
+ }
+ break;
+
+ case gl_RayQueryCommittedIntersectionGeneratedEXT :
+
+ if(rayQueryGetIntersectionGeometryIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionInstanceIdEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true).z > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true).x > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionTEXT(rayQuery, true) > 0.f)
+ {
+ doSomething();
+ }
+ break;
+ }
+
+ if (_mat3x4[0][0] == _mat4x3[0][0])
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetRayFlagsEXT(rayQuery) > gl_RayFlagsSkipTrianglesEXT)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetRayTMinEXT(rayQuery) > 0.0)
+ {
+ doSomething();
+ }
+
+ vec3 o = rayQueryGetWorldRayOriginEXT(rayQuery);
+ vec3 d = rayQueryGetWorldRayDirectionEXT(rayQuery);
+
+ if (o.x == d.z)
+ {
+ doSomething();
+ }
+}
diff --git a/Test/rayQuery-allOps.frag b/Test/rayQuery-allOps.frag
new file mode 100644
index 0000000..9fdf0c0
--- /dev/null
+++ b/Test/rayQuery-allOps.frag
@@ -0,0 +1,212 @@
+#version 460
+#extension GL_NV_ray_tracing : enable
+#extension GL_EXT_ray_query : enable
+
+struct Ray
+{
+ vec3 pos;
+ float tmin;
+ vec3 dir;
+ float tmax;
+};
+
+layout(std430, set = 0, binding = 0) buffer Log
+{
+ uint x;
+ uint y;
+};
+
+layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas;
+layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; };
+
+void doSomething()
+{
+ x = 0;
+ y = 0;
+}
+
+Ray makeRayDesc()
+{
+ Ray ray;
+ ray.pos= vec3(0,0,0);
+ ray.dir = vec3(1,0,0);
+ ray.tmin = 0.0f;
+ ray.tmax = 9999.0;
+ return ray;
+}
+
+void main()
+{
+ Ray ray = makeRayDesc();
+ rayQueryEXT rayQuery;
+ rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsNoneEXT, 0xFF, ray.pos, ray.tmin, ray.dir, ray.tmax);
+
+ mat4x3 _mat4x3;
+ mat3x4 _mat3x4;
+
+ while (rayQueryProceedEXT(rayQuery))
+ {
+ uint candidateType = rayQueryGetIntersectionTypeEXT(rayQuery, false);
+ switch(candidateType)
+ {
+ case gl_RayQueryCandidateIntersectionTriangleEXT:
+
+ rayQueryTerminateEXT(rayQuery);
+ _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false);
+ _mat3x4 = transpose(_mat4x3);
+ rayQueryConfirmIntersectionEXT(rayQuery);
+
+ if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true).x == 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionInstanceIdEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true).x > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true).x > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionTEXT(rayQuery, true) > 0.f)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+ break;
+
+ case gl_RayQueryCandidateIntersectionAABBEXT:
+ {
+ _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false);
+ _mat3x4 = transpose(_mat4x3);
+ if (rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQuery))
+ {
+ doSomething();
+ }
+
+ float t = 0.5;
+ rayQueryGenerateIntersectionEXT(rayQuery, t);
+ rayQueryTerminateEXT(rayQuery);
+ break;
+ }
+ }
+ }
+
+ if(_mat3x4[0][0] == _mat4x3[0][0])
+ {
+ doSomething();
+ }
+
+ uint committedStatus = rayQueryGetIntersectionTypeEXT(rayQuery, true);
+
+ switch(committedStatus)
+ {
+ case gl_RayQueryCommittedIntersectionNoneEXT :
+ _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, false);
+ _mat3x4 = transpose(_mat4x3);
+ break;
+
+ case gl_RayQueryCommittedIntersectionTriangleEXT :
+ _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, true);
+ _mat3x4 = transpose(_mat4x3);
+
+ if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true).y == 0)
+ {
+ doSomething();
+ }
+ break;
+
+ case gl_RayQueryCommittedIntersectionGeneratedEXT :
+
+ if(rayQueryGetIntersectionGeometryIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionInstanceIdEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true).z > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true).x > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionTEXT(rayQuery, true) > 0.f)
+ {
+ doSomething();
+ }
+ break;
+ }
+
+ if (_mat3x4[0][0] == _mat4x3[0][0])
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetRayFlagsEXT(rayQuery) > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetRayTMinEXT(rayQuery) > 0.0)
+ {
+ doSomething();
+ }
+
+ vec3 o = rayQueryGetWorldRayOriginEXT(rayQuery);
+ vec3 d = rayQueryGetWorldRayDirectionEXT(rayQuery);
+
+ if (o.x == d.z)
+ {
+ doSomething();
+ }
+}
diff --git a/Test/rayQuery-allOps.rgen b/Test/rayQuery-allOps.rgen
new file mode 100644
index 0000000..9fdf0c0
--- /dev/null
+++ b/Test/rayQuery-allOps.rgen
@@ -0,0 +1,212 @@
+#version 460
+#extension GL_NV_ray_tracing : enable
+#extension GL_EXT_ray_query : enable
+
+struct Ray
+{
+ vec3 pos;
+ float tmin;
+ vec3 dir;
+ float tmax;
+};
+
+layout(std430, set = 0, binding = 0) buffer Log
+{
+ uint x;
+ uint y;
+};
+
+layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas;
+layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; };
+
+void doSomething()
+{
+ x = 0;
+ y = 0;
+}
+
+Ray makeRayDesc()
+{
+ Ray ray;
+ ray.pos= vec3(0,0,0);
+ ray.dir = vec3(1,0,0);
+ ray.tmin = 0.0f;
+ ray.tmax = 9999.0;
+ return ray;
+}
+
+void main()
+{
+ Ray ray = makeRayDesc();
+ rayQueryEXT rayQuery;
+ rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsNoneEXT, 0xFF, ray.pos, ray.tmin, ray.dir, ray.tmax);
+
+ mat4x3 _mat4x3;
+ mat3x4 _mat3x4;
+
+ while (rayQueryProceedEXT(rayQuery))
+ {
+ uint candidateType = rayQueryGetIntersectionTypeEXT(rayQuery, false);
+ switch(candidateType)
+ {
+ case gl_RayQueryCandidateIntersectionTriangleEXT:
+
+ rayQueryTerminateEXT(rayQuery);
+ _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false);
+ _mat3x4 = transpose(_mat4x3);
+ rayQueryConfirmIntersectionEXT(rayQuery);
+
+ if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true).x == 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionInstanceIdEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true).x > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true).x > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionTEXT(rayQuery, true) > 0.f)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+ break;
+
+ case gl_RayQueryCandidateIntersectionAABBEXT:
+ {
+ _mat4x3 = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, false);
+ _mat3x4 = transpose(_mat4x3);
+ if (rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQuery))
+ {
+ doSomething();
+ }
+
+ float t = 0.5;
+ rayQueryGenerateIntersectionEXT(rayQuery, t);
+ rayQueryTerminateEXT(rayQuery);
+ break;
+ }
+ }
+ }
+
+ if(_mat3x4[0][0] == _mat4x3[0][0])
+ {
+ doSomething();
+ }
+
+ uint committedStatus = rayQueryGetIntersectionTypeEXT(rayQuery, true);
+
+ switch(committedStatus)
+ {
+ case gl_RayQueryCommittedIntersectionNoneEXT :
+ _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, false);
+ _mat3x4 = transpose(_mat4x3);
+ break;
+
+ case gl_RayQueryCommittedIntersectionTriangleEXT :
+ _mat4x3 = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, true);
+ _mat3x4 = transpose(_mat4x3);
+
+ if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, true))
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, true).y == 0)
+ {
+ doSomething();
+ }
+ break;
+
+ case gl_RayQueryCommittedIntersectionGeneratedEXT :
+
+ if(rayQueryGetIntersectionGeometryIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionInstanceIdEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true).z > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true).x > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true) > 0)
+ {
+ doSomething();
+ }
+
+ if(rayQueryGetIntersectionTEXT(rayQuery, true) > 0.f)
+ {
+ doSomething();
+ }
+ break;
+ }
+
+ if (_mat3x4[0][0] == _mat4x3[0][0])
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetRayFlagsEXT(rayQuery) > 0)
+ {
+ doSomething();
+ }
+
+ if (rayQueryGetRayTMinEXT(rayQuery) > 0.0)
+ {
+ doSomething();
+ }
+
+ vec3 o = rayQueryGetWorldRayOriginEXT(rayQuery);
+ vec3 d = rayQueryGetWorldRayDirectionEXT(rayQuery);
+
+ if (o.x == d.z)
+ {
+ doSomething();
+ }
+}
diff --git a/Test/rayQuery-committed.Error.rgen b/Test/rayQuery-committed.Error.rgen
new file mode 100644
index 0000000..aeb8ec0
--- /dev/null
+++ b/Test/rayQuery-committed.Error.rgen
@@ -0,0 +1,105 @@
+#version 460
+#extension GL_NV_ray_tracing : enable
+#extension GL_EXT_ray_query : enable
+
+struct Ray
+{
+ vec3 pos;
+ float tmin;
+ vec3 dir;
+ float tmax;
+};
+
+layout(std430, set = 0, binding = 0) buffer Log
+{
+ uint x;
+ uint y;
+};
+
+layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas;
+layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; };
+
+void doSomething()
+{
+ x = 0;
+ y = 0;
+}
+
+uint launchIndex()
+{
+ return gl_LaunchIDNV.z*gl_LaunchSizeNV.x*gl_LaunchSizeNV.y + gl_LaunchIDNV.y*gl_LaunchSizeNV.x + gl_LaunchIDNV.x;
+}
+
+void main()
+{
+ uint index = launchIndex();
+ Ray ray = rays[index];
+ rayQueryEXT rayQuery;
+
+ bool committed_true = true;
+ bool committed_false = false;
+
+ rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsOpaqueEXT, gl_RayFlagsCullBackFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax);
+ while (rayQueryProceedEXT(rayQuery))
+ {
+ mat4x3 mat_o2w;
+ mat4x3 mat_w2o;
+
+ uint candidateType = rayQueryGetIntersectionTypeEXT(rayQuery, committed_false);
+ if (candidateType == gl_RayQueryCandidateIntersectionTriangleEXT)
+ {
+ rayQueryTerminateEXT(rayQuery);
+
+ mat_o2w = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, committed_false);
+ mat_w2o = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, committed_false);
+
+ rayQueryConfirmIntersectionEXT(rayQuery);
+
+ if (rayQueryGetIntersectionFrontFaceEXT(rayQuery, committed_true))
+ {
+ doSomething();
+ }
+ if (rayQueryGetIntersectionBarycentricsEXT(rayQuery, committed_true).x == 0)
+ {
+ doSomething();
+ }
+ if (rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, committed_true) > 0)
+ {
+ doSomething();
+ }
+ if (rayQueryGetIntersectionInstanceIdEXT(rayQuery, committed_true) > 0)
+ {
+ doSomething();
+ }
+ if (rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, committed_true).x > 0)
+ {
+ doSomething();
+ }
+ if (rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, committed_true).x > 0)
+ {
+ doSomething();
+ }
+ if (rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, committed_true) > 0)
+ {
+ doSomething();
+ }
+ if (rayQueryGetIntersectionTEXT(rayQuery, committed_true) > 0.f)
+ {
+ doSomething();
+ }
+ if (rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, committed_true) > 0)
+ {
+ doSomething();
+ }
+ }
+ }
+
+ uint committedStatus = rayQueryGetIntersectionTypeEXT(rayQuery, committed_true);
+ if (committedStatus == gl_RayQueryCommittedIntersectionGeneratedEXT)
+ {
+ if (rayQueryGetIntersectionGeometryIndexEXT(rayQuery, committed_true) > 0)
+ {
+ doSomething();
+ }
+ }
+}
diff --git a/Test/rayQuery-initialize.rgen b/Test/rayQuery-initialize.rgen
new file mode 100644
index 0000000..ff61800
--- /dev/null
+++ b/Test/rayQuery-initialize.rgen
@@ -0,0 +1,33 @@
+#version 460
+#extension GL_NV_ray_tracing : enable
+#extension GL_EXT_ray_query : enable
+
+struct Ray
+{
+ vec3 pos;
+ float tmin;
+ vec3 dir;
+ float tmax;
+};
+
+layout(binding = 0, set = 0) uniform accelerationStructureEXT rtas;
+layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; };
+
+uint launchIndex()
+{
+ return gl_LaunchIDNV.z*gl_LaunchSizeNV.x*gl_LaunchSizeNV.y + gl_LaunchIDNV.y*gl_LaunchSizeNV.x + gl_LaunchIDNV.x;
+}
+
+void doInitialize(rayQueryEXT rayQuery, Ray ray)
+{
+ rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsNoneEXT, gl_RayFlagsCullBackFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax);
+}
+
+void main()
+{
+ uint index = launchIndex();
+ Ray ray = rays[index];
+ rayQueryEXT rayQuery;
+ doInitialize(rayQuery, ray);
+ rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsOpaqueEXT, gl_RayFlagsCullFrontFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax);
+}
diff --git a/Test/rayQuery-no-cse.rgen b/Test/rayQuery-no-cse.rgen
new file mode 100644
index 0000000..ccec76f
--- /dev/null
+++ b/Test/rayQuery-no-cse.rgen
@@ -0,0 +1,35 @@
+#version 460
+#extension GL_NV_ray_tracing : enable
+#extension GL_EXT_ray_query : enable
+
+struct Ray
+{
+ vec3 pos;
+ float tmin;
+ vec3 dir;
+ float tmax;
+};
+
+layout(binding = 0, set = 0) uniform accelerationStructureEXT rtas;
+layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; };
+
+uint launchIndex()
+{
+ return gl_LaunchIDNV.z*gl_LaunchSizeNV.x*gl_LaunchSizeNV.y + gl_LaunchIDNV.y*gl_LaunchSizeNV.x + gl_LaunchIDNV.x;
+}
+
+void doInitialize(rayQueryEXT rayQuery, Ray ray)
+{
+ rayQueryInitializeEXT(rayQuery, rtas, gl_RayFlagsNoneEXT, gl_RayFlagsCullBackFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax);
+}
+
+void main()
+{
+ uint index = launchIndex();
+ Ray ray = rays[index];
+ rayQueryEXT rayQuery1;
+ rayQueryEXT rayQuery2;
+ doInitialize(rayQuery1, ray);
+ rayQueryInitializeEXT(rayQuery1, rtas, gl_RayFlagsOpaqueEXT, gl_RayFlagsCullFrontFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax);
+ doInitialize(rayQuery2, ray);
+}
diff --git a/Test/rayQuery.rgen b/Test/rayQuery.rgen
new file mode 100644
index 0000000..8d5638f
--- /dev/null
+++ b/Test/rayQuery.rgen
@@ -0,0 +1,23 @@
+#version 460
+#extension GL_NV_ray_tracing : enable
+#extension GL_EXT_ray_query : enable
+layout(binding = 0, set = 0) uniform accelerationStructureEXT acc0;
+
+layout(shaderRecordNV) buffer block
+{
+ vec3 dir;
+ vec3 origin;
+};
+
+void main()
+{
+ rayQueryEXT localRayQuery;
+ uint rayFlags = gl_RayFlagsOpaqueEXT | gl_RayFlagsSkipClosestHitShaderEXT;
+ float tMin = 0.f;
+ float tMax = 1000.f;
+ rayQueryInitializeEXT(localRayQuery, acc0, rayFlags, 0xFF , origin, tMin, dir, tMax);
+ if (!rayQueryProceedEXT(localRayQuery))
+ {
+ rayQueryTerminateEXT(localRayQuery);
+ }
+}
diff --git a/Test/runtests b/Test/runtests
index 8e31c06..1a7c7c9 100755
--- a/Test/runtests
+++ b/Test/runtests
@@ -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 *.tesc *.tese *.comp > singleThread.out
-$EXE -i -C *.vert *.geom *.frag *.tesc *.tese *.comp -t > multiThread.out
-diff singleThread.out multiThread.out || HASERROR=1
+$EXE -i -C *.vert *.geom *.frag *.tesc *.tese *.comp > $TARGETDIR/singleThread.out
+$EXE -i -C *.vert *.geom *.frag *.tesc *.tese *.comp -t > $TARGETDIR/multiThread.out
+diff $TARGETDIR/singleThread.out $TARGETDIR/multiThread.out || HASERROR=1
if [ $HASERROR -eq 0 ]
then
- rm singleThread.out
- rm multiThread.out
+ rm $TARGETDIR/singleThread.out
+ rm $TARGETDIR/multiThread.out
fi
#
@@ -171,9 +176,9 @@
# Testing -D and -U
#
echo "Testing -D and -U"
-$EXE -DUNDEFED -UIN_SHADER -DFOO=200 -i -l -UUNDEFED -DMUL=FOO*2 glsl.-D-U.frag > $TARGETDIR/glsl.-D-U.frag.out
+$EXE -DUNDEFED -UIN_SHADER -DFOO=200 -i -l --U UNDEFED --define-macro MUL=FOO*2 glsl.-D-U.frag > $TARGETDIR/glsl.-D-U.frag.out
diff -b $BASEDIR/glsl.-D-U.frag.out $TARGETDIR/glsl.-D-U.frag.out || HASERROR=1
-$EXE -D -Od -e main -V -i -DUNDEFED -UIN_SHADER -DFOO=200 -UUNDEFED -Od hlsl.-D-U.frag > $TARGETDIR/hlsl.-D-U.frag.out
+$EXE -D -Od -e main -V -i -DUNDEFED -UIN_SHADER --D FOO=200 --undef-macro UNDEFED -Od hlsl.-D-U.frag > $TARGETDIR/hlsl.-D-U.frag.out
diff -b $BASEDIR/hlsl.-D-U.frag.out $TARGETDIR/hlsl.-D-U.frag.out || HASERROR=1
#
@@ -184,6 +189,7 @@
$EXE --client opengl100 spv.targetOpenGL.vert || HASERROR=1
$EXE --target-env vulkan1.0 spv.targetVulkan.vert || HASERROR=1
$EXE --target-env vulkan1.1 spv.targetVulkan.vert || HASERROR=1
+$EXE --target-env vulkan1.2 spv.targetVulkan.vert || HASERROR=1
$EXE --target-env opengl spv.targetOpenGL.vert || HASERROR=1
$EXE -V100 spv.targetVulkan.vert || HASERROR=1
$EXE -G100 spv.targetOpenGL.vert || HASERROR=1
diff --git a/Test/spv.8bit-16bit-construction.frag b/Test/spv.8bit-16bit-construction.frag
new file mode 100644
index 0000000..573fa54
--- /dev/null
+++ b/Test/spv.8bit-16bit-construction.frag
@@ -0,0 +1,22 @@
+#version 450 core
+
+#extension GL_EXT_shader_8bit_storage : enable
+#extension GL_EXT_shader_16bit_storage : enable
+
+buffer B
+{
+ int8_t i8_from_i16;
+ int16_t i16_from_i8;
+ uint8_t u8_from_u16;
+ uint16_t u16_from_u8;
+ float16_t f16_from_i8;
+};
+
+void main()
+{
+ i8_from_i16 = int8_t(int16_t(1));
+ i16_from_i8 = int16_t(int8_t(1));
+ u8_from_u16 = uint8_t(uint16_t(1));
+ u16_from_u8 = uint16_t(uint8_t(1));
+ f16_from_i8 = float16_t(int8_t(1));
+}
diff --git a/Test/spv.Operations.frag b/Test/spv.Operations.frag
index 52f0a30..3477a79 100644
--- a/Test/spv.Operations.frag
+++ b/Test/spv.Operations.frag
@@ -55,9 +55,10 @@
v += ceil(v);
v += fract(v);
v += mod(v, v);
- v += mod(v, v.x);
+ v += mod(v, v.x);
v += modf(v, v);
+ v += modf(v, v.yzxw);
v += min(v, uv4);
v += max(v, uv4);
@@ -96,6 +97,13 @@
u += max(u, uui);
u += clamp(u, uui, uui);
+ // multiple out operands
+ uvec4 msb;
+ uvec4 lsb;
+ umulExtended(uuv4.xyz, uuv4.xyz, msb.xyz, lsb.xyz);
+ u += msb.x + msb.y + msb.z;
+ u += lsb.x + lsb.y + lsb.z;
+
//// bool
b = isnan(uf);
b = isinf(f);
diff --git a/Test/spv.atomicCounter.comp b/Test/spv.atomicCounter.comp
new file mode 100644
index 0000000..ecb2304
--- /dev/null
+++ b/Test/spv.atomicCounter.comp
@@ -0,0 +1,26 @@
+#version 450
+
+
+
+layout(binding = 0) uniform atomic_uint counter;
+
+layout(binding = 0, offset = 4) uniform atomic_uint countArr[4];
+shared uint value;
+
+int arrX[gl_WorkGroupSize.x];
+int arrY[gl_WorkGroupSize.y];
+int arrZ[gl_WorkGroupSize.z];
+
+uint func(atomic_uint c)
+{
+ return atomicCounterIncrement(c);
+}
+
+void main()
+{
+ memoryBarrierAtomicCounter();
+ func(counter);
+ uint val = atomicCounter(countArr[2]);
+ atomicCounterDecrement(counter);
+ atomicCounterIncrement(counter);
+}
diff --git a/Test/spv.bufferhandle_Error.frag b/Test/spv.bufferhandle_Error.frag
index 98cbac8..034e054 100644
--- a/Test/spv.bufferhandle_Error.frag
+++ b/Test/spv.bufferhandle_Error.frag
@@ -29,6 +29,7 @@
bufType6 b;
b.x.length();
b4.b6.x.length();
+ b[2]; // ERROR, can't index due to unsized array
}
void main() {
diff --git a/Test/spv.controlFlowAttributes.frag b/Test/spv.controlFlowAttributes.frag
index 6d90c0d..cedd602 100644
--- a/Test/spv.controlFlowAttributes.frag
+++ b/Test/spv.controlFlowAttributes.frag
@@ -4,11 +4,18 @@
bool cond;
+void f0() {
+ [[loop]] for (;;) { }
+}
+
+void f1() {
+ [[dont_unroll]] while(true) { }
+}
+
void main()
{
[[unroll]] for (int i = 0; i < 8; ++i) { }
- [[loop]] for (;;) { }
- [[dont_unroll]] while(true) { }
+ f0();
[[dependency_infinite]] do { } while(true);
[[dependency_length(1+3)]] for (int i = 0; i < 8; ++i) { }
[[flatten]] if (cond) { } else { }
diff --git a/Test/spv.dead-after-continue.vert b/Test/spv.dead-after-continue.vert
new file mode 100644
index 0000000..86e8eea
--- /dev/null
+++ b/Test/spv.dead-after-continue.vert
@@ -0,0 +1,14 @@
+#version 450
+
+layout(location =0 ) in int c;
+layout(location =0 ) out int o;
+
+void main() {
+ int i;
+ for (i=0; i < 5; i++) {
+ o = 1;
+ continue;
+ o = 2;
+ }
+ o = 3;
+}
diff --git a/Test/spv.dead-after-discard.frag b/Test/spv.dead-after-discard.frag
new file mode 100644
index 0000000..769592b
--- /dev/null
+++ b/Test/spv.dead-after-discard.frag
@@ -0,0 +1,10 @@
+#version 450
+
+layout(location =0 ) in float c;
+layout(location =0 ) out int o;
+
+void main() {
+ o = 1;
+ discard;
+ o = 3;
+}
diff --git a/Test/spv.dead-after-loop-break.vert b/Test/spv.dead-after-loop-break.vert
new file mode 100644
index 0000000..5498497
--- /dev/null
+++ b/Test/spv.dead-after-loop-break.vert
@@ -0,0 +1,19 @@
+#version 450
+
+layout(location =0 ) in int c;
+layout(location =0 ) out int o;
+
+void main() {
+ int i;
+ o = 1;
+ for (i=0; i < 5; i++) {
+ o = 2;
+ if (i==c) {
+ o = 3;
+ break;
+ o = 4;
+ }
+ o = 5;
+ }
+ o = 6;
+}
diff --git a/Test/spv.dead-after-return.vert b/Test/spv.dead-after-return.vert
new file mode 100644
index 0000000..7172696
--- /dev/null
+++ b/Test/spv.dead-after-return.vert
@@ -0,0 +1,10 @@
+#version 450
+
+layout(location =0 ) in int c;
+layout(location =0 ) out int o;
+
+void main() {
+ o = 1;
+ return;
+ o = 3;
+}
diff --git a/Test/spv.dead-after-switch-break.vert b/Test/spv.dead-after-switch-break.vert
new file mode 100644
index 0000000..b1483e8
--- /dev/null
+++ b/Test/spv.dead-after-switch-break.vert
@@ -0,0 +1,15 @@
+#version 450
+
+layout(location =0 ) in int c;
+layout(location =0 ) out int o;
+
+void main() {
+ int i;
+ switch(c) {
+ case 0: o=1;
+ break;
+ o=2;
+ default: break;
+ }
+ o = 3;
+}
diff --git a/Test/spv.dead-complex-continue-after-return.vert b/Test/spv.dead-complex-continue-after-return.vert
new file mode 100644
index 0000000..85932a3
--- /dev/null
+++ b/Test/spv.dead-complex-continue-after-return.vert
@@ -0,0 +1,19 @@
+#version 450
+
+layout(location =0 ) in int c;
+layout(location =0 ) out int o;
+
+void main() {
+ int i = 0;
+ o = 1;
+ // This has non-trivial continue target.
+ for (i=0; i < 5; ++i, o=99) {
+ o = 2;
+ return;
+ o = 3;
+ }
+ // This is considered reachable since Glslang codegen will
+ // create a conditional branch in the header, and one arm
+ // of that branch reaches this merge block.
+ o = 4;
+}
diff --git a/Test/spv.dead-complex-merge-after-return.vert b/Test/spv.dead-complex-merge-after-return.vert
new file mode 100644
index 0000000..2fff1a2
--- /dev/null
+++ b/Test/spv.dead-complex-merge-after-return.vert
@@ -0,0 +1,23 @@
+#version 450
+
+layout(location =0 ) in int c;
+layout(location =0 ) out int o;
+
+void main() {
+ int i = 0;
+ o = 1;
+ do {
+ o = 2;
+ return;
+ o = 3;
+ } while(i++ < 5);
+
+ // All this is a dead merge block.
+ o = 4;
+ if (c==4) {
+ o = 100;
+ } else {
+ o = 200;
+ }
+ o = 300;
+}
diff --git a/Test/spv.debugPrintf.frag b/Test/spv.debugPrintf.frag
new file mode 100644
index 0000000..3dff629
--- /dev/null
+++ b/Test/spv.debugPrintf.frag
@@ -0,0 +1,13 @@
+#version 450
+#extension GL_EXT_debug_printf : enable
+
+void main()
+{
+ debugPrintfEXT("ASDF \\ \? \x5C %d %d %d", 1, 2, 3);
+
+ // ABA{backspace}Z
+ debugPrintfEXT("\x41\x000042\x41\x8Z");
+
+ // B#${bell, aka \a}B1Z
+ debugPrintfEXT("\102\043\44\7\1021Z");
+}
diff --git a/Test/spv.debugPrintf_Error.frag b/Test/spv.debugPrintf_Error.frag
new file mode 100644
index 0000000..c1980a7
--- /dev/null
+++ b/Test/spv.debugPrintf_Error.frag
@@ -0,0 +1,11 @@
+#version 450
+#extension GL_EXT_debug_printf : enable
+
+void main()
+{
+ // invalid hex sequence
+ debugPrintfEXT("\xZ");
+
+ // not an octal sequence
+ debugPrintfEXT("\8");
+}
diff --git a/Test/spv.ext.AnyHitShader.rahit b/Test/spv.ext.AnyHitShader.rahit
new file mode 100644
index 0000000..ee7d9c7
--- /dev/null
+++ b/Test/spv.ext.AnyHitShader.rahit
@@ -0,0 +1,29 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
+void main()
+{
+ uvec3 v0 = gl_LaunchIDEXT;
+ uvec3 v1 = gl_LaunchSizeEXT;
+ int v2 = gl_PrimitiveID;
+ int v3 = gl_InstanceID;
+ int v4 = gl_InstanceCustomIndexEXT;
+ vec3 v5 = gl_WorldRayOriginEXT;
+ vec3 v6 = gl_WorldRayDirectionEXT;
+ vec3 v7 = gl_ObjectRayOriginEXT;
+ vec3 v8 = gl_ObjectRayDirectionEXT;
+ float v9 = gl_RayTminEXT;
+ float v10 = gl_RayTmaxEXT;
+ float v11 = gl_HitTEXT;
+ uint v12 = gl_HitKindEXT;
+ mat4x3 v13 = gl_ObjectToWorldEXT;
+ mat4x3 v14 = gl_WorldToObjectEXT;
+ int v15 = gl_GeometryIndexEXT;
+ mat3x4 v16 = gl_ObjectToWorld3x4EXT;
+ mat3x4 v17 = gl_WorldToObject3x4EXT;
+ incomingPayload = vec4(0.5f);
+ if (v2 == 1)
+ ignoreIntersectionEXT();
+ else
+ terminateRayEXT();
+}
diff --git a/Test/spv.ext.AnyHitShader_Errors.rahit b/Test/spv.ext.AnyHitShader_Errors.rahit
new file mode 100644
index 0000000..f9fd730
--- /dev/null
+++ b/Test/spv.ext.AnyHitShader_Errors.rahit
@@ -0,0 +1,11 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+hitAttributeEXT vec4 payload;
+layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
+
+void main()
+{
+ payload.x = 1.0f; // ERROR, cannot write to hitattributeEXT in stage
+ reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage
+ traceRayEXT(accEXT, 0, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 0); // ERROR, unsupported builtin in stage
+}
diff --git a/Test/spv.ext.ClosestHitShader.rchit b/Test/spv.ext.ClosestHitShader.rchit
new file mode 100644
index 0000000..3f9bbaa
--- /dev/null
+++ b/Test/spv.ext.ClosestHitShader.rchit
@@ -0,0 +1,27 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
+layout(location = 0) rayPayloadEXT vec4 localPayload;
+layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
+void main()
+{
+ uvec3 v0 = gl_LaunchIDEXT;
+ uvec3 v1 = gl_LaunchSizeEXT;
+ int v2 = gl_PrimitiveID;
+ int v3 = gl_InstanceID;
+ int v4 = gl_InstanceCustomIndexEXT;
+ vec3 v5 = gl_WorldRayOriginEXT;
+ vec3 v6 = gl_WorldRayDirectionEXT;
+ vec3 v7 = gl_ObjectRayOriginEXT;
+ vec3 v8 = gl_ObjectRayDirectionEXT;
+ float v9 = gl_RayTminEXT;
+ float v10 = gl_RayTmaxEXT;
+ float v11 = gl_HitTEXT;
+ uint v12 = gl_HitKindEXT;
+ mat4x3 v13 = gl_ObjectToWorldEXT;
+ mat4x3 v14 = gl_WorldToObjectEXT;
+ int v15 = gl_GeometryIndexEXT;
+ mat3x4 v16 = gl_ObjectToWorld3x4EXT;
+ mat3x4 v17 = gl_WorldToObject3x4EXT;
+ traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
+}
diff --git a/Test/spv.ext.ClosestHitShader_Errors.rchit b/Test/spv.ext.ClosestHitShader_Errors.rchit
new file mode 100644
index 0000000..05e05fe
--- /dev/null
+++ b/Test/spv.ext.ClosestHitShader_Errors.rchit
@@ -0,0 +1,13 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+hitAttributeEXT vec4 payload;
+layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
+
+void main()
+{
+ payload.x = 1.0f; // ERROR, cannot write to hitattributeEXT in stage
+ reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage
+ terminateRayEXT();
+ ignoreIntersectionEXT();
+ bool e1 = gl_IncomingRayFlagsEXT == gl_RayFlagsSkipAABBEXT;
+}
diff --git a/Test/spv.ext.IntersectShader.rint b/Test/spv.ext.IntersectShader.rint
new file mode 100644
index 0000000..4933ff5
--- /dev/null
+++ b/Test/spv.ext.IntersectShader.rint
@@ -0,0 +1,23 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+hitAttributeEXT vec4 iAttr;
+void main()
+{
+ uvec3 v0 = gl_LaunchIDEXT;
+ uvec3 v1 = gl_LaunchSizeEXT;
+ int v2 = gl_PrimitiveID;
+ int v3 = gl_InstanceID;
+ int v4 = gl_InstanceCustomIndexEXT;
+ vec3 v5 = gl_WorldRayOriginEXT;
+ vec3 v6 = gl_WorldRayDirectionEXT;
+ vec3 v7 = gl_ObjectRayOriginEXT;
+ vec3 v8 = gl_ObjectRayDirectionEXT;
+ float v9 = gl_RayTminEXT;
+ float v10 = gl_RayTmaxEXT;
+ mat4x3 v11 = gl_ObjectToWorldEXT;
+ mat4x3 v12 = gl_WorldToObjectEXT;
+ mat3x4 v13 = gl_ObjectToWorld3x4EXT;
+ mat3x4 v14 = gl_WorldToObject3x4EXT;
+ iAttr = vec4(0.5f,0.5f,0.0f,1.0f);
+ reportIntersectionEXT(0.5, 1U);
+}
diff --git a/Test/spv.ext.IntersectShader_Errors.rint b/Test/spv.ext.IntersectShader_Errors.rint
new file mode 100644
index 0000000..e767ca3
--- /dev/null
+++ b/Test/spv.ext.IntersectShader_Errors.rint
@@ -0,0 +1,11 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+rayPayloadInEXT vec4 payloadIn; // ERROR, rayPayloadIn unsupported in this stage
+rayPayloadEXT vec4 payload; // ERROR, rayPayload unsuppoted in this stage
+uniform accelerationStructureEXT accEXT;
+void main()
+{
+ float e12 = gl_HitTEXT; // ERROR, unsupported builtin in stage
+ float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage
+ traceRayEXT(accEXT, 0, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 0); // ERROR, unsupported
+}
diff --git a/Test/spv.ext.MissShader.rmiss b/Test/spv.ext.MissShader.rmiss
new file mode 100644
index 0000000..e774334
--- /dev/null
+++ b/Test/spv.ext.MissShader.rmiss
@@ -0,0 +1,15 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
+layout(location = 0) rayPayloadEXT vec4 localPayload;
+layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
+void main()
+{
+ uvec3 v0 = gl_LaunchIDEXT;
+ uvec3 v1 = gl_LaunchSizeEXT;
+ vec3 v2 = gl_WorldRayOriginEXT;
+ vec3 v3 = gl_WorldRayDirectionEXT;
+ float v4 = gl_RayTminEXT;
+ float v5 = gl_RayTmaxEXT;
+ traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
+}
diff --git a/Test/spv.ext.MissShader_Errors.rmiss b/Test/spv.ext.MissShader_Errors.rmiss
new file mode 100644
index 0000000..2391211
--- /dev/null
+++ b/Test/spv.ext.MissShader_Errors.rmiss
@@ -0,0 +1,16 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+hitAttributeEXT vec4 payload; // ERROR, hitattributeEXT unsupported in this stage
+void main()
+{
+ int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage
+ int e1 = gl_InstanceID; // ERROR, unsupported builtin in stage
+ int e3 = gl_InstanceCustomIndexEXT; // ERROR, unsupported builtin in stage
+ mat4x3 e10 = gl_ObjectToWorldEXT; // ERROR, unsupported builtin in stage
+ mat4x3 e11 = gl_WorldToObjectEXT; // ERROR, unsupported builtin in stage
+ float e12 = gl_HitTEXT; // ERROR, unsupported builtin in stage
+ float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage
+ reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage
+ ignoreIntersectionEXT(); // ERROR, unsupported builtin in stage
+ terminateRayEXT(); // ERROR, unsupported builtin in stage
+}
diff --git a/Test/spv.ext.RayCallable.rcall b/Test/spv.ext.RayCallable.rcall
new file mode 100644
index 0000000..9ec6820
--- /dev/null
+++ b/Test/spv.ext.RayCallable.rcall
@@ -0,0 +1,13 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+layout(location = 0) callableDataEXT vec4 data0;
+layout(location = 1) callableDataInEXT dataBlock {
+ uint data1;
+};
+void main()
+{
+ uvec3 id = gl_LaunchIDEXT;
+ uvec3 size = gl_LaunchSizeEXT;
+ data1 = 256U;
+ executeCallableEXT(2,1);
+}
diff --git a/Test/spv.ext.RayCallable_Errors.rcall b/Test/spv.ext.RayCallable_Errors.rcall
new file mode 100644
index 0000000..d35672e
--- /dev/null
+++ b/Test/spv.ext.RayCallable_Errors.rcall
@@ -0,0 +1,26 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+hitAttributeEXT vec4 hitattr; // ERROR, hitattributeEXT unsupported in this stage
+rayPayloadEXT vec4 payload; // ERROR, rayPayloadEXT unsupported in this stage
+rayPayloadInEXT vec4 payloadIn; // ERROR, rayPayloadInEXT unsupported in this stage
+
+void main()
+{
+ int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage
+ int e1 = gl_InstanceID; // ERROR, unsupported builtin in stage
+ int e3 = gl_InstanceCustomIndexEXT; // ERROR, unsupported builtin in stage
+ vec3 e4 = gl_WorldRayOriginEXT; // ERROR, unsupported builtin in stage
+ vec3 e5 = gl_WorldRayDirectionEXT; // ERROR, unsupported builtin in stage
+ vec3 e6 = gl_ObjectRayOriginEXT; // ERROR, unsupported builtin in stage
+ vec3 e7 = gl_ObjectRayDirectionEXT; // ERROR, unsupported builtin in stage
+ float e8 = gl_RayTminEXT; // ERROR, unsupported builtin in stage
+ float e9 = gl_RayTmaxEXT; // ERROR, unsupported builtin in stage
+ mat4x3 e10 = gl_ObjectToWorldEXT; // ERROR, unsupported builtin in stage
+ mat4x3 e11 = gl_WorldToObjectEXT; // ERROR, unsupported builtin in stage
+ float e12 = gl_HitTEXT; // ERROR, unsupported builtin in stage
+ float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage
+ uint curFlags = gl_IncomingRayFlagsEXT; // ERROR, unsupported builtin in stage
+ reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage
+ ignoreIntersectionEXT(); // ERROR, unsupported builtin in stage
+ terminateRayEXT(); // ERROR, unsupported builtin in stage
+}
diff --git a/Test/spv.ext.RayConstants.rgen b/Test/spv.ext.RayConstants.rgen
new file mode 100644
index 0000000..73cb0c1
--- /dev/null
+++ b/Test/spv.ext.RayConstants.rgen
@@ -0,0 +1,15 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
+layout(location = 0) rayPayloadEXT vec4 payload;
+void main()
+{
+ const uint rayFlags = gl_RayFlagsNoneEXT | gl_RayFlagsOpaqueEXT |
+ gl_RayFlagsNoOpaqueEXT | gl_RayFlagsTerminateOnFirstHitEXT |
+ gl_RayFlagsSkipClosestHitShaderEXT | gl_RayFlagsCullBackFacingTrianglesEXT |
+ gl_RayFlagsCullFrontFacingTrianglesEXT | gl_RayFlagsCullOpaqueEXT |
+ gl_RayFlagsCullNoOpaqueEXT;
+
+ const int payloadId = 1;
+ traceRayEXT(accEXT, rayFlags, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, payloadId);
+}
diff --git a/Test/spv.ext.RayGenShader.rgen b/Test/spv.ext.RayGenShader.rgen
new file mode 100644
index 0000000..c92772e
--- /dev/null
+++ b/Test/spv.ext.RayGenShader.rgen
@@ -0,0 +1,21 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+#extension GL_EXT_ray_flags_primitive_culling : enable
+layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT0;
+layout(binding = 1, set = 0) uniform accelerationStructureEXT accEXT1; // Unused
+layout(binding = 2, r32ui) shadercallcoherent uniform uimage2D imageu;
+layout(location = 0) rayPayloadEXT vec4 payload;
+layout(shaderRecordEXT) buffer block
+{
+ vec3 dir;
+ vec3 origin;
+
+};
+void main()
+{
+ uint lx = gl_LaunchIDEXT.x;
+ uint ly = gl_LaunchIDEXT.y;
+ uint sx = gl_LaunchSizeEXT.x;
+ uint sy = gl_LaunchSizeEXT.y;
+ traceRayEXT(accEXT0, lx, ly, sx, sy, gl_RayFlagsSkipTrianglesEXT | gl_RayFlagsSkipAABBEXT, origin, 0.5f, dir, 0.75f, 1);
+}
diff --git a/Test/spv.ext.RayGenShader11.rgen b/Test/spv.ext.RayGenShader11.rgen
new file mode 100644
index 0000000..4817026
--- /dev/null
+++ b/Test/spv.ext.RayGenShader11.rgen
@@ -0,0 +1,17 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
+layout(location = 0) rayPayloadEXT vec4 payload;
+layout(shaderRecordEXT) buffer block
+{
+ vec3 dir;
+ vec3 origin;
+};
+void main()
+{
+ uint lx = gl_LaunchIDEXT.x;
+ uint ly = gl_LaunchIDEXT.y;
+ uint sx = gl_LaunchSizeEXT.x;
+ uint sy = gl_LaunchSizeEXT.y;
+ traceRayEXT(accEXT, lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+}
diff --git a/Test/spv.ext.RayGenShaderArray.rgen b/Test/spv.ext.RayGenShaderArray.rgen
new file mode 100644
index 0000000..d3f99de
--- /dev/null
+++ b/Test/spv.ext.RayGenShaderArray.rgen
@@ -0,0 +1,22 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+#extension GL_EXT_nonuniform_qualifier : enable
+layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT0[];
+layout(binding = 1, set = 0) uniform accelerationStructureEXT accEXT1[2];
+layout(location = 0) rayPayloadEXT vec4 payload;
+layout(shaderRecordEXT) buffer block
+{
+ vec3 dir;
+ vec3 origin;
+ int i;
+};
+void main()
+{
+ uint lx = gl_LaunchIDEXT.x;
+ uint ly = gl_LaunchIDEXT.y;
+ uint sx = gl_LaunchSizeEXT.x;
+ uint sy = gl_LaunchSizeEXT.y;
+ traceRayEXT(accEXT0[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+ traceRayEXT(accEXT1[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+ traceRayEXT(accEXT0[nonuniformEXT(i)], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+}
diff --git a/Test/spv.ext.RayGenShader_Errors.rgen b/Test/spv.ext.RayGenShader_Errors.rgen
new file mode 100644
index 0000000..3498342
--- /dev/null
+++ b/Test/spv.ext.RayGenShader_Errors.rgen
@@ -0,0 +1,42 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+hitAttributeEXT vec4 payload; // ERROR, hitattributeEXT unsupported in this stage
+rayPayloadInEXT vec4 payloadIn; // ERROR, rayPayloadIn unsupported in this stage
+layout(shaderRecordEXT) uniform ublock // ERROR, shaderRecordEXT unsupported on uniform blocks
+{
+ float a;
+};
+layout(binding = 0, shaderRecordEXT) buffer bblock { // ERROR, binding unsupported on shaderRecordEXT blocks
+ float b;
+};
+layout(set = 0, shaderRecordEXT) buffer bblock2 { // ERROR, set unsupported on shaderRecordEXT blocks
+ float c;
+};
+layout(shaderRecordEXT) buffer bblock3 {
+ float d;
+};
+layout(shaderRecordEXT) buffer bblock4 { // ERROR, cannot have more than one shaderRecordEXTX block
+ float e;
+};
+void main()
+{
+ accelerationStructureEXT a = 0;
+ int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage
+ int e1 = gl_InstanceID; // ERROR, unsupported builtin in stage
+ int e3 = gl_InstanceCustomIndexEXT; // ERROR, unsupported builtin in stage
+ vec3 e4 = gl_WorldRayOriginEXT; // ERROR, unsupported builtin in stage
+ vec3 e5 = gl_WorldRayDirectionEXT; // ERROR, unsupported builtin in stage
+ vec3 e6 = gl_ObjectRayOriginEXT; // ERROR, unsupported builtin in stage
+ vec3 e7 = gl_ObjectRayDirectionEXT; // ERROR, unsupported builtin in stage
+ float e8 = gl_RayTminEXT; // ERROR, unsupported builtin in stage
+ float e9 = gl_RayTmaxEXT; // ERROR, unsupported builtin in stage
+ mat4x3 e10 = gl_ObjectToWorldEXT; // ERROR, unsupported builtin in stage
+ mat4x3 e11 = gl_WorldToObjectEXT; // ERROR, unsupported builtin in stage
+ float e12 = gl_HitTEXT; // ERROR, unsupported builtin in stage
+ float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage
+ int e14 = gl_RayFlagsSkipAABBEXT; // ERROR, unsupported builtin in stage
+ reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage
+ ignoreIntersectionEXT(); // ERROR, unsupported builtin in stage
+ terminateRayEXT(); // ERROR, unsupported builtin in stage
+ d = 1.0f; // ERROR, can't modify shaderRecordEXT block
+}
diff --git a/Test/spv.memoryScopeSemantics.comp b/Test/spv.memoryScopeSemantics.comp
index 037e6d7..528a639 100644
--- a/Test/spv.memoryScopeSemantics.comp
+++ b/Test/spv.memoryScopeSemantics.comp
@@ -20,6 +20,7 @@
shared int64_t atomi64;
layout (binding = 8) volatile buffer BufferL { uint x; } bufferl;
layout (binding = 9) buffer BufferM { volatile uint x; } bufferm;
+layout(binding = 10, r32i) volatile coherent uniform iimage2DMS imageMS;
void main()
@@ -66,5 +67,8 @@
imageAtomicAdd(imagei, ivec2(0,0), 3);
atomicAdd(bufferu.x, 4u, gl_ScopeDevice, 0, 0);
atomicAdd(bufferu.x, 5u, gl_ScopeDevice, 0, gl_SemanticsVolatile);
+
+ imageAtomicStore(imageMS, ivec2(0,0), 1, 4, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease);
+ imageAtomicStore(imagei, ivec2(0,0), -7, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease);
}
diff --git a/Test/spv.nonuniform3.frag b/Test/spv.nonuniform3.frag
new file mode 100644
index 0000000..e79865e
--- /dev/null
+++ b/Test/spv.nonuniform3.frag
@@ -0,0 +1,10 @@
+#version 450
+#extension GL_EXT_nonuniform_qualifier : require
+layout(set = 0, binding = 0) uniform texture2D uTex[];
+layout(set = 1, binding = 0) uniform sampler uSamp;
+layout(location = 0) flat in int Index;
+layout(location = 0) out vec4 FragColor;
+void main()
+{
+ FragColor = texture(nonuniformEXT(sampler2D(uTex[Index], uSamp)), vec2(0.5));
+}
diff --git a/Test/spv.nonuniform4.frag b/Test/spv.nonuniform4.frag
new file mode 100644
index 0000000..2eb98aa
--- /dev/null
+++ b/Test/spv.nonuniform4.frag
@@ -0,0 +1,8 @@
+#version 450
+#extension GL_EXT_nonuniform_qualifier : require
+layout(set=0,binding=4,r32ui) uniform uimageBuffer data[];
+layout(location = 3) in flat int rIndex;
+void main()
+{
+ imageAtomicAdd(data[nonuniformEXT(rIndex)], 0, 0);
+}
diff --git a/Test/spv.nonuniform5.frag b/Test/spv.nonuniform5.frag
new file mode 100644
index 0000000..ef70779
--- /dev/null
+++ b/Test/spv.nonuniform5.frag
@@ -0,0 +1,15 @@
+#version 450
+#extension GL_EXT_nonuniform_qualifier : require
+
+layout(location = 0) flat in int Index;
+layout(location = 0) out vec4 FragColor;
+
+layout(set = 0, binding = 0) uniform UBO
+{
+ vec4 v;
+} ubos[];
+
+void main()
+{
+ FragColor = ubos[nonuniformEXT(Index)].v;
+}
diff --git a/Test/spv.specTexture.frag b/Test/spv.specTexture.frag
new file mode 100644
index 0000000..7fd89f5
--- /dev/null
+++ b/Test/spv.specTexture.frag
@@ -0,0 +1,10 @@
+#version 450
+
+layout(constant_id = 1) const int offs = 0;
+layout(binding = 0) uniform sampler2D tex;
+layout(location = 0) out vec4 color_out;
+
+void main(void)
+{
+ color_out = textureLodOffset(tex, vec2(0.0, 0.0), 0.0, ivec2(offs, offs));
+}
\ No newline at end of file
diff --git a/Test/spv.volatileAtomic.comp b/Test/spv.volatileAtomic.comp
new file mode 100644
index 0000000..2b7e6c6
--- /dev/null
+++ b/Test/spv.volatileAtomic.comp
@@ -0,0 +1,8 @@
+#version 450 core
+
+layout(set=0, binding=3) volatile buffer D { uint d[]; } d;
+
+void main()
+{
+ atomicExchange(d.d[0], 0);
+}
diff --git a/Test/web.comp b/Test/web.comp
new file mode 100644
index 0000000..07847b4
--- /dev/null
+++ b/Test/web.comp
@@ -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 --git a/Test/web.separate.frag b/Test/web.separate.frag
new file mode 100644
index 0000000..b747cba
--- /dev/null
+++ b/Test/web.separate.frag
@@ -0,0 +1,63 @@
+#version 310 es
+
+precision highp sampler;
+precision highp samplerShadow;
+precision highp texture2DArray;
+precision highp itexture2D;
+precision highp itexture3D;
+precision highp itextureCube;
+precision highp itexture2DArray;
+precision highp utexture2D;
+precision highp utexture3D;
+precision highp utextureCube;
+precision highp utexture2DArray;
+precision highp texture3D;
+precision highp float;
+
+layout(binding = 0) uniform sampler s;
+layout(binding = 1) uniform samplerShadow sShadow;
+layout(binding = 2) uniform sampler sA[4];
+layout(binding = 3) uniform texture2D t2d;
+layout(binding = 4) uniform texture3D t3d[4];
+layout(location = 0) flat in int i;
+
+layout(location = 0) out vec4 color;
+
+void main()
+{
+ color = texture(sampler2D(t2d, s), vec2(0.5));
+ color += texture(sampler3D(t3d[1], sA[2]), vec3(0.5));
+ color += texture(sampler2D(t2d, s), vec2(0.5));
+}
+
+layout(binding = 5) uniform texture2D tex2D;
+layout(binding = 6) uniform textureCube texCube;
+layout(binding = 15) uniform texture2DArray tex2DArray;
+layout(binding = 16) uniform itexture2D itex2D;
+layout(binding = 17) uniform itexture3D itex3D;
+layout(binding = 18) uniform itextureCube itexCube;
+layout(binding = 19) uniform itexture2DArray itex2DArray;
+layout(binding = 20) uniform utexture2D utex2D;
+layout(binding = 21) uniform utexture3D utex3D;
+layout(binding = 22) uniform utextureCube utexCube;
+layout(binding = 23) uniform utexture2DArray utex2DArray;
+layout(binding = 36) uniform texture3D tex3D;
+
+void foo()
+{
+ sampler2D (tex2D, s);
+ samplerCube (texCube, s);
+ samplerCubeShadow (texCube, sShadow);
+ sampler2DArray (tex2DArray, s);
+ sampler2DArrayShadow (tex2DArray, sShadow);
+ isampler2D (itex2D, s);
+ isampler3D (itex3D, s);
+ isamplerCube (itexCube, s);
+ isampler2DArray (itex2DArray, s);
+ usampler2D (utex2D, s);
+ usampler3D (utex3D, s);
+ usamplerCube (utexCube, s);
+ usampler2DArray (utex2DArray, s);
+ sampler3D (tex3D, s);
+ sampler2DShadow (tex2D, sShadow);
+}
diff --git a/Test/web.testlist b/Test/web.testlist
index fba9212..764c0c0 100644
--- a/Test/web.testlist
+++ b/Test/web.testlist
@@ -5,3 +5,5 @@
web.operations.frag
web.texture.frag
web.array.frag
+web.separate.frag
+web.comp
diff --git a/WORKSPACE b/WORKSPACE
new file mode 100644
index 0000000..3c38e61
--- /dev/null
+++ b/WORKSPACE
@@ -0,0 +1,27 @@
+workspace(name = "org_khronos_glslang")
+load(
+ "@bazel_tools//tools/build_defs/repo:http.bzl",
+ "http_archive",
+)
+
+http_archive(
+ name = "com_google_googletest",
+ sha256 = "ef9e2e12e7bf115ee48b427ae171fc869eeaf1b532c0fcfd982f6a353d2471b4",
+ strip_prefix = "googletest-37ae1fc5e6be26f367d76c078beabd7024fed53a",
+ urls = ["https://github.com/google/googletest/archive/37ae1fc5e6be26f367d76c078beabd7024fed53a.zip"], # 2018-07-16
+)
+
+http_archive(
+ name = "com_googlesource_code_re2",
+ sha256 = "b885bb965ab4b6cf8718bbb8154d8f6474cd00331481b6d3e390babb3532263e",
+ strip_prefix = "re2-e860767c86e577b87deadf24cc4567ea83c4f162/",
+ urls = ["https://github.com/google/re2/archive/e860767c86e577b87deadf24cc4567ea83c4f162.zip"],
+)
+
+http_archive(
+ name = "com_google_effcee",
+ build_file = "BUILD.effcee.bazel",
+ sha256 = "b0c21a01995fdf9792510566d78d5e7fe6f83cb4ba986eba691f4926f127cb34",
+ strip_prefix = "effcee-8f0a61dc95e0df18c18e0ac56d83b3fa9d2fe90b/",
+ urls = ["https://github.com/google/effcee/archive/8f0a61dc95e0df18c18e0ac56d83b3fa9d2fe90b.zip"],
+)
diff --git a/_config.yml b/_config.yml
index c50ff38..e8b995b 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1 +1 @@
-theme: jekyll-theme-merlot
\ No newline at end of file
+theme: jekyll-theme-merlot
diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp
new file mode 100644
index 0000000..c4c24a9
--- /dev/null
+++ b/glslang/CInterface/glslang_c_interface.cpp
@@ -0,0 +1,461 @@
+/**
+ This code is based on the glslang_c_interface implementation by Viktor Latypov
+**/
+
+/**
+BSD 2-Clause License
+
+Copyright (c) 2019, Viktor Latypov
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. 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.
+
+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 HOLDER 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 "glslang/Include/glslang_c_interface.h"
+
+#include "SPIRV/GlslangToSpv.h"
+#include "SPIRV/Logger.h"
+#include "SPIRV/SpvTools.h"
+#include "StandAlone/DirStackFileIncluder.h"
+#include "StandAlone/ResourceLimits.h"
+#include "glslang/Include/ShHandle.h"
+
+#include "glslang/Include/ResourceLimits.h"
+#include "glslang/MachineIndependent/Versions.h"
+
+static_assert(int(GLSLANG_STAGE_COUNT) == EShLangCount, "");
+static_assert(int(GLSLANG_STAGE_MASK_COUNT) == EShLanguageMaskCount, "");
+static_assert(int(GLSLANG_SOURCE_COUNT) == glslang::EShSourceCount, "");
+static_assert(int(GLSLANG_CLIENT_COUNT) == glslang::EShClientCount, "");
+static_assert(int(GLSLANG_TARGET_COUNT) == glslang::EShTargetCount, "");
+static_assert(int(GLSLANG_TARGET_CLIENT_VERSION_COUNT) == glslang::EShTargetClientVersionCount, "");
+static_assert(int(GLSLANG_TARGET_LANGUAGE_VERSION_COUNT) == glslang::EShTargetLanguageVersionCount, "");
+static_assert(int(GLSLANG_OPT_LEVEL_COUNT) == EshOptLevelCount, "");
+static_assert(int(GLSLANG_TEX_SAMP_TRANS_COUNT) == EShTexSampTransCount, "");
+static_assert(int(GLSLANG_MSG_COUNT) == EShMsgCount, "");
+static_assert(int(GLSLANG_REFLECTION_COUNT) == EShReflectionCount, "");
+static_assert(int(GLSLANG_PROFILE_COUNT) == EProfileCount, "");
+static_assert(sizeof(glslang_limits_t) == sizeof(TLimits), "");
+static_assert(sizeof(glslang_resource_t) == sizeof(TBuiltInResource), "");
+
+typedef struct glslang_shader_s {
+ glslang::TShader* shader;
+ std::string preprocessedGLSL;
+} glslang_shader_t;
+
+typedef struct glslang_program_s {
+ glslang::TProgram* program;
+ std::vector<unsigned int> spirv;
+ std::string loggerMessages;
+} glslang_program_t;
+
+/* Wrapper/Adapter for C glsl_include_callbacks_t functions
+
+ This class contains a 'glsl_include_callbacks_t' structure
+ with C include_local/include_system callback pointers.
+
+ This class implement TShader::Includer interface
+ by redirecting C++ virtual methods to C callbacks.
+
+ The 'IncludeResult' instances produced by this Includer
+ contain a reference to glsl_include_result_t C structure
+ to allow its lifetime management by another C callback
+ (CallbackIncluder::callbacks::free_include_result)
+*/
+class CallbackIncluder : public glslang::TShader::Includer {
+public:
+ /* Wrapper of IncludeResult which stores a glsl_include_result object internally */
+ class CallbackIncludeResult : public glslang::TShader::Includer::IncludeResult {
+ public:
+ CallbackIncludeResult(const std::string& headerName, const char* const headerData, const size_t headerLength,
+ void* userData, glsl_include_result_t* includeResult)
+ : glslang::TShader::Includer::IncludeResult(headerName, headerData, headerLength, userData),
+ includeResult(includeResult)
+ {
+ }
+
+ virtual ~CallbackIncludeResult() {}
+
+ protected:
+ friend class CallbackIncluder;
+
+ glsl_include_result_t* includeResult;
+ };
+
+public:
+ CallbackIncluder(glsl_include_callbacks_t _callbacks, void* _context) : callbacks(_callbacks), context(_context) {}
+
+ virtual ~CallbackIncluder() {}
+
+ virtual IncludeResult* includeSystem(const char* headerName, const char* includerName,
+ size_t inclusionDepth) override
+ {
+ if (this->callbacks.include_system) {
+ glsl_include_result_t* result =
+ this->callbacks.include_system(this->context, headerName, includerName, inclusionDepth);
+
+ return new CallbackIncludeResult(std::string(headerName), result->header_data, result->header_length,
+ nullptr, result);
+ }
+
+ return glslang::TShader::Includer::includeSystem(headerName, includerName, inclusionDepth);
+ }
+
+ virtual IncludeResult* includeLocal(const char* headerName, const char* includerName,
+ size_t inclusionDepth) override
+ {
+ if (this->callbacks.include_local) {
+ glsl_include_result_t* result =
+ this->callbacks.include_local(this->context, headerName, includerName, inclusionDepth);
+
+ return new CallbackIncludeResult(std::string(headerName), result->header_data, result->header_length,
+ nullptr, result);
+ }
+
+ return glslang::TShader::Includer::includeLocal(headerName, includerName, inclusionDepth);
+ }
+
+ /* This function only calls free_include_result callback
+ when the IncludeResult instance is allocated by a C function */
+ virtual void releaseInclude(IncludeResult* result) override
+ {
+ if (result == nullptr)
+ return;
+
+ if (this->callbacks.free_include_result && (result->userData == nullptr)) {
+ CallbackIncludeResult* innerResult = static_cast<CallbackIncludeResult*>(result);
+ /* use internal free() function */
+ this->callbacks.free_include_result(this->context, innerResult->includeResult);
+ /* ignore internal fields of TShader::Includer::IncludeResult */
+ delete result;
+ return;
+ }
+
+ delete[] static_cast<char*>(result->userData);
+ delete result;
+ }
+
+private:
+ CallbackIncluder() {}
+
+ /* C callback pointers */
+ glsl_include_callbacks_t callbacks;
+ /* User-defined context */
+ void* context;
+};
+
+int glslang_initialize_process() { return static_cast<int>(glslang::InitializeProcess()); }
+
+void glslang_finalize_process() { glslang::FinalizeProcess(); }
+
+static EShLanguage c_shader_stage(glslang_stage_t stage)
+{
+ switch (stage) {
+ case GLSLANG_STAGE_VERTEX:
+ return EShLangVertex;
+ case GLSLANG_STAGE_TESSCONTROL:
+ return EShLangTessControl;
+ case GLSLANG_STAGE_TESSEVALUATION:
+ return EShLangTessEvaluation;
+ case GLSLANG_STAGE_GEOMETRY:
+ return EShLangGeometry;
+ case GLSLANG_STAGE_FRAGMENT:
+ return EShLangFragment;
+ case GLSLANG_STAGE_COMPUTE:
+ return EShLangCompute;
+ case GLSLANG_STAGE_RAYGEN_NV:
+ return EShLangRayGen;
+ case GLSLANG_STAGE_INTERSECT_NV:
+ return EShLangIntersect;
+ case GLSLANG_STAGE_ANYHIT_NV:
+ return EShLangAnyHit;
+ case GLSLANG_STAGE_CLOSESTHIT_NV:
+ return EShLangClosestHit;
+ case GLSLANG_STAGE_MISS_NV:
+ return EShLangMiss;
+ case GLSLANG_STAGE_CALLABLE_NV:
+ return EShLangCallable;
+ case GLSLANG_STAGE_TASK_NV:
+ return EShLangTaskNV;
+ case GLSLANG_STAGE_MESH_NV:
+ return EShLangMeshNV;
+ default:
+ break;
+ }
+ return EShLangCount;
+}
+
+static int c_shader_messages(glslang_messages_t messages)
+{
+#define CONVERT_MSG(in, out) \
+ if ((messages & in) == in) \
+ res |= out;
+
+ int res = 0;
+
+ CONVERT_MSG(GLSLANG_MSG_RELAXED_ERRORS_BIT, EShMsgRelaxedErrors);
+ CONVERT_MSG(GLSLANG_MSG_SUPPRESS_WARNINGS_BIT, EShMsgSuppressWarnings);
+ CONVERT_MSG(GLSLANG_MSG_AST_BIT, EShMsgAST);
+ CONVERT_MSG(GLSLANG_MSG_SPV_RULES_BIT, EShMsgSpvRules);
+ CONVERT_MSG(GLSLANG_MSG_VULKAN_RULES_BIT, EShMsgVulkanRules);
+ CONVERT_MSG(GLSLANG_MSG_ONLY_PREPROCESSOR_BIT, EShMsgOnlyPreprocessor);
+ CONVERT_MSG(GLSLANG_MSG_READ_HLSL_BIT, EShMsgReadHlsl);
+ CONVERT_MSG(GLSLANG_MSG_CASCADING_ERRORS_BIT, EShMsgCascadingErrors);
+ CONVERT_MSG(GLSLANG_MSG_KEEP_UNCALLED_BIT, EShMsgKeepUncalled);
+ CONVERT_MSG(GLSLANG_MSG_HLSL_OFFSETS_BIT, EShMsgHlslOffsets);
+ CONVERT_MSG(GLSLANG_MSG_DEBUG_INFO_BIT, EShMsgDebugInfo);
+ CONVERT_MSG(GLSLANG_MSG_HLSL_ENABLE_16BIT_TYPES_BIT, EShMsgHlslEnable16BitTypes);
+ CONVERT_MSG(GLSLANG_MSG_HLSL_LEGALIZATION_BIT, EShMsgHlslLegalization);
+ CONVERT_MSG(GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT, EShMsgHlslDX9Compatible);
+ CONVERT_MSG(GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT, EShMsgBuiltinSymbolTable);
+ return res;
+#undef CONVERT_MSG
+}
+
+static glslang::EShTargetLanguageVersion
+c_shader_target_language_version(glslang_target_language_version_t target_language_version)
+{
+ switch (target_language_version) {
+ case GLSLANG_TARGET_SPV_1_0:
+ return glslang::EShTargetSpv_1_0;
+ case GLSLANG_TARGET_SPV_1_1:
+ return glslang::EShTargetSpv_1_1;
+ case GLSLANG_TARGET_SPV_1_2:
+ return glslang::EShTargetSpv_1_2;
+ case GLSLANG_TARGET_SPV_1_3:
+ return glslang::EShTargetSpv_1_3;
+ case GLSLANG_TARGET_SPV_1_4:
+ return glslang::EShTargetSpv_1_4;
+ case GLSLANG_TARGET_SPV_1_5:
+ return glslang::EShTargetSpv_1_5;
+ default:
+ break;
+ }
+ return glslang::EShTargetSpv_1_0;
+}
+
+static glslang::EShClient c_shader_client(glslang_client_t client)
+{
+ switch (client) {
+ case GLSLANG_CLIENT_VULKAN:
+ return glslang::EShClientVulkan;
+ case GLSLANG_CLIENT_OPENGL:
+ return glslang::EShClientOpenGL;
+ default:
+ break;
+ }
+
+ return glslang::EShClientNone;
+}
+
+static glslang::EShTargetClientVersion c_shader_client_version(glslang_target_client_version_t client_version)
+{
+ switch (client_version) {
+ case GLSLANG_TARGET_VULKAN_1_1:
+ return glslang::EShTargetVulkan_1_1;
+ case GLSLANG_TARGET_OPENGL_450:
+ return glslang::EShTargetOpenGL_450;
+ default:
+ break;
+ }
+
+ return glslang::EShTargetVulkan_1_0;
+}
+
+static glslang::EShTargetLanguage c_shader_target_language(glslang_target_language_t target_language)
+{
+ if (target_language == GLSLANG_TARGET_NONE)
+ return glslang::EShTargetNone;
+
+ return glslang::EShTargetSpv;
+}
+
+static glslang::EShSource c_shader_source(glslang_source_t source)
+{
+ switch (source) {
+ case GLSLANG_SOURCE_GLSL:
+ return glslang::EShSourceGlsl;
+ case GLSLANG_SOURCE_HLSL:
+ return glslang::EShSourceHlsl;
+ default:
+ break;
+ }
+
+ return glslang::EShSourceNone;
+}
+
+static EProfile c_shader_profile(glslang_profile_t profile)
+{
+ switch (profile) {
+ case GLSLANG_BAD_PROFILE:
+ return EBadProfile;
+ case GLSLANG_NO_PROFILE:
+ return ENoProfile;
+ case GLSLANG_CORE_PROFILE:
+ return ECoreProfile;
+ case GLSLANG_COMPATIBILITY_PROFILE:
+ return ECompatibilityProfile;
+ case GLSLANG_ES_PROFILE:
+ return EEsProfile;
+ case GLSLANG_PROFILE_COUNT: // Should not use this
+ break;
+ }
+
+ return EProfile();
+}
+
+glslang_shader_t* glslang_shader_create(const glslang_input_t* input)
+{
+ if (!input || !input->code) {
+ printf("Error creating shader: null input(%p)/input->code\n", input);
+
+ if (input)
+ printf("input->code = %p\n", input->code);
+
+ return nullptr;
+ }
+
+ glslang_shader_t* shader = new glslang_shader_t();
+
+ shader->shader = new glslang::TShader(c_shader_stage(input->stage));
+ shader->shader->setStrings(&input->code, 1);
+ shader->shader->setEnvInput(c_shader_source(input->language), c_shader_stage(input->stage),
+ c_shader_client(input->client), input->default_version);
+ shader->shader->setEnvClient(c_shader_client(input->client), c_shader_client_version(input->client_version));
+ shader->shader->setEnvTarget(c_shader_target_language(input->target_language),
+ c_shader_target_language_version(input->target_language_version));
+
+ return shader;
+}
+
+const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader)
+{
+ return shader->preprocessedGLSL.c_str();
+}
+
+int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input)
+{
+ DirStackFileIncluder Includer;
+ /* TODO: use custom callbacks if they are available in 'i->callbacks' */
+ return shader->shader->preprocess(
+ reinterpret_cast<const TBuiltInResource*>(input->resource),
+ input->default_version,
+ c_shader_profile(input->default_profile),
+ input->force_default_version_and_profile != 0,
+ input->forward_compatible != 0,
+ (EShMessages)c_shader_messages(input->messages),
+ &shader->preprocessedGLSL,
+ Includer
+ );
+}
+
+int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input)
+{
+ const char* preprocessedCStr = shader->preprocessedGLSL.c_str();
+ shader->shader->setStrings(&preprocessedCStr, 1);
+
+ return shader->shader->parse(
+ reinterpret_cast<const TBuiltInResource*>(input->resource),
+ input->default_version,
+ input->forward_compatible != 0,
+ (EShMessages)c_shader_messages(input->messages)
+ );
+}
+
+const char* glslang_shader_get_info_log(glslang_shader_t* shader) { return shader->shader->getInfoLog(); }
+
+const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader) { return shader->shader->getInfoDebugLog(); }
+
+void glslang_shader_delete(glslang_shader_t* shader)
+{
+ if (!shader)
+ return;
+
+ delete (shader->shader);
+ delete (shader);
+}
+
+glslang_program_t* glslang_program_create()
+{
+ glslang_program_t* p = new glslang_program_t();
+ p->program = new glslang::TProgram();
+ return p;
+}
+
+void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage)
+{
+ spv::SpvBuildLogger logger;
+ glslang::SpvOptions spvOptions;
+ spvOptions.validate = true;
+
+ const glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage));
+
+ glslang::GlslangToSpv(*intermediate, program->spirv, &logger, &spvOptions);
+
+ program->loggerMessages = logger.getAllMessages();
+}
+
+size_t glslang_program_SPIRV_get_size(glslang_program_t* program) { return program->spirv.size(); }
+
+void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int* out)
+{
+ memcpy(out, program->spirv.data(), program->spirv.size() * sizeof(unsigned int));
+}
+
+unsigned int* glslang_program_SPIRV_get_ptr(glslang_program_t* program)
+{
+ return program->spirv.data();
+}
+
+const char* glslang_program_SPIRV_get_messages(glslang_program_t* program)
+{
+ return program->loggerMessages.empty() ? nullptr : program->loggerMessages.c_str();
+}
+
+void glslang_program_delete(glslang_program_t* program)
+{
+ if (!program)
+ return;
+
+ delete (program->program);
+ delete (program);
+}
+
+void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader)
+{
+ program->program->addShader(shader->shader);
+}
+
+int glslang_program_link(glslang_program_t* program, int messages)
+{
+ return (int)program->program->link((EShMessages)messages);
+}
+
+const char* glslang_program_get_info_log(glslang_program_t* program)
+{
+ return program->program->getInfoLog();
+}
+
+const char* glslang_program_get_info_debug_log(glslang_program_t* program)
+{
+ return program->program->getInfoDebugLog();
+}
diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt
index 930893c..a0259a3 100644
--- a/glslang/CMakeLists.txt
+++ b/glslang/CMakeLists.txt
@@ -6,9 +6,10 @@
message("unknown platform")
endif(WIN32)
-if(EMSCRIPTEN OR ENABLE_GLSLANG_WEB)
+if(EMSCRIPTEN OR ENABLE_GLSLANG_JS)
+ # May be enabled on non-Emscripten builds for binary-size testing.
add_subdirectory(OSDependent/Web)
-endif(EMSCRIPTEN OR ENABLE_GLSLANG_WEB)
+endif(EMSCRIPTEN OR ENABLE_GLSLANG_JS)
set(SOURCES
MachineIndependent/glslang.m4
@@ -41,7 +42,8 @@
MachineIndependent/preprocessor/PpTokens.cpp
MachineIndependent/propagateNoContraction.cpp
GenericCodeGen/CodeGen.cpp
- GenericCodeGen/Link.cpp)
+ GenericCodeGen/Link.cpp
+ CInterface/glslang_c_interface.cpp)
set(HEADERS
Public/ShaderLang.h
@@ -49,6 +51,8 @@
Include/BaseTypes.h
Include/Common.h
Include/ConstantUnion.h
+ Include/glslang_c_interface.h
+ Include/glslang_c_shader_types.h
Include/InfoSink.h
Include/InitializeGlobals.h
Include/intermediate.h
@@ -82,7 +86,9 @@
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
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
if(WIN32 AND BUILD_SHARED_LIBS)
set_target_properties(glslang PROPERTIES PREFIX "")
@@ -102,14 +108,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)
diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h
index 6d4b4ff..b69eaeb 100644
--- a/glslang/Include/BaseTypes.h
+++ b/glslang/Include/BaseTypes.h
@@ -2,6 +2,7 @@
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2013 LunarG, Inc.
// Copyright (C) 2017 ARM Limited.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -61,8 +62,9 @@
EbtSampler,
EbtStruct,
EbtBlock,
- EbtAccStructNV,
+ EbtAccStruct,
EbtReference,
+ EbtRayQuery,
// HLSL types that live only temporarily.
EbtString,
@@ -90,11 +92,11 @@
EvqBuffer, // read/write, shared with app
EvqShared, // compute shader's read/write 'shared' qualifier
- EvqPayloadNV,
- EvqPayloadInNV,
- EvqHitAttrNV,
- EvqCallableDataNV,
- EvqCallableDataInNV,
+ EvqPayload,
+ EvqPayloadIn,
+ EvqHitAttr,
+ EvqCallableData,
+ EvqCallableDataIn,
// parameters
EvqIn, // also, for 'in' in the grammar before we know if it's a pipeline input or an 'in' parameter
@@ -229,6 +231,9 @@
EbvFragSizeEXT,
EbvFragInvocationCountEXT,
+ EbvSecondaryFragDataEXT,
+ EbvSecondaryFragColorEXT,
+
EbvViewportMaskNV,
EbvSecondaryPositionNV,
EbvSecondaryViewportMaskNV,
@@ -238,20 +243,23 @@
EbvFragmentSizeNV,
EbvInvocationsPerPixelNV,
// ray tracing
- EbvLaunchIdNV,
- EbvLaunchSizeNV,
- EbvInstanceCustomIndexNV,
- EbvWorldRayOriginNV,
- EbvWorldRayDirectionNV,
- EbvObjectRayOriginNV,
- EbvObjectRayDirectionNV,
- EbvRayTminNV,
- EbvRayTmaxNV,
- EbvHitTNV,
- EbvHitKindNV,
- EbvObjectToWorldNV,
- EbvWorldToObjectNV,
- EbvIncomingRayFlagsNV,
+ EbvLaunchId,
+ EbvLaunchSize,
+ EbvInstanceCustomIndex,
+ EbvGeometryIndex,
+ EbvWorldRayOrigin,
+ EbvWorldRayDirection,
+ EbvObjectRayOrigin,
+ EbvObjectRayDirection,
+ EbvRayTmin,
+ EbvRayTmax,
+ EbvHitT,
+ EbvHitKind,
+ EbvObjectToWorld,
+ EbvObjectToWorld3x4,
+ EbvWorldToObject,
+ EbvWorldToObject3x4,
+ EbvIncomingRayFlags,
// barycentrics
EbvBaryCoordNV,
EbvBaryCoordNoPerspNV,
@@ -328,11 +336,11 @@
case EvqPointCoord: return "gl_PointCoord"; break;
case EvqFragColor: return "fragColor"; break;
case EvqFragDepth: return "gl_FragDepth"; break;
- 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;
+ case EvqPayload: return "rayPayloadNV"; break;
+ case EvqPayloadIn: return "rayPayloadInNV"; break;
+ case EvqHitAttr: return "hitAttributeNV"; break;
+ case EvqCallableData: return "callableDataNV"; break;
+ case EvqCallableDataIn: return "callableDataInNV"; break;
default: return "unknown qualifier";
}
}
@@ -428,6 +436,9 @@
case EbvFragSizeEXT: return "FragSizeEXT";
case EbvFragInvocationCountEXT: return "FragInvocationCountEXT";
+ case EbvSecondaryFragDataEXT: return "SecondaryFragDataEXT";
+ case EbvSecondaryFragColorEXT: return "SecondaryFragColorEXT";
+
case EbvViewportMaskNV: return "ViewportMaskNV";
case EbvSecondaryPositionNV: return "SecondaryPositionNV";
case EbvSecondaryViewportMaskNV: return "SecondaryViewportMaskNV";
@@ -436,20 +447,21 @@
case EbvFragFullyCoveredNV: return "FragFullyCoveredNV";
case EbvFragmentSizeNV: return "FragmentSizeNV";
case EbvInvocationsPerPixelNV: return "InvocationsPerPixelNV";
- case EbvLaunchIdNV: return "LaunchIdNV";
- case EbvLaunchSizeNV: return "LaunchSizeNV";
- case EbvInstanceCustomIndexNV: return "InstanceCustomIndexNV";
- case EbvWorldRayOriginNV: return "WorldRayOriginNV";
- case EbvWorldRayDirectionNV: return "WorldRayDirectionNV";
- case EbvObjectRayOriginNV: return "ObjectRayOriginNV";
- case EbvObjectRayDirectionNV: return "ObjectRayDirectionNV";
- case EbvRayTminNV: return "ObjectRayTminNV";
- case EbvRayTmaxNV: return "ObjectRayTmaxNV";
- case EbvHitTNV: return "HitTNV";
- case EbvHitKindNV: return "HitKindNV";
- case EbvIncomingRayFlagsNV: return "IncomingRayFlagsNV";
- case EbvObjectToWorldNV: return "ObjectToWorldNV";
- case EbvWorldToObjectNV: return "WorldToObjectNV";
+ case EbvLaunchId: return "LaunchIdNV";
+ case EbvLaunchSize: return "LaunchSizeNV";
+ case EbvInstanceCustomIndex: return "InstanceCustomIndexNV";
+ case EbvGeometryIndex: return "GeometryIndexEXT";
+ case EbvWorldRayOrigin: return "WorldRayOriginNV";
+ case EbvWorldRayDirection: return "WorldRayDirectionNV";
+ case EbvObjectRayOrigin: return "ObjectRayOriginNV";
+ case EbvObjectRayDirection: return "ObjectRayDirectionNV";
+ case EbvRayTmin: return "ObjectRayTminNV";
+ case EbvRayTmax: return "ObjectRayTmaxNV";
+ case EbvHitT: return "HitTNV";
+ case EbvHitKind: return "HitKindNV";
+ case EbvIncomingRayFlags: return "IncomingRayFlagsNV";
+ case EbvObjectToWorld: return "ObjectToWorldNV";
+ case EbvWorldToObject: return "WorldToObjectNV";
case EbvBaryCoordNV: return "BaryCoordNV";
case EbvBaryCoordNoPerspNV: return "BaryCoordNoPerspNV";
diff --git a/glslang/Include/ConstantUnion.h b/glslang/Include/ConstantUnion.h
index 76b2d9c..c4ffb85 100644
--- a/glslang/Include/ConstantUnion.h
+++ b/glslang/Include/ConstantUnion.h
@@ -921,7 +921,7 @@
else
unionArray = new TConstUnionVector(size);
}
- TConstUnionArray(const TConstUnionArray& a) : unionArray(a.unionArray) { }
+ TConstUnionArray(const TConstUnionArray& a) = default;
TConstUnionArray(const TConstUnionArray& a, int start, int size)
{
unionArray = new TConstUnionVector(size);
diff --git a/glslang/Include/PoolAlloc.h b/glslang/Include/PoolAlloc.h
index 0e237a6..b8eccb8 100644
--- a/glslang/Include/PoolAlloc.h
+++ b/glslang/Include/PoolAlloc.h
@@ -304,7 +304,6 @@
size_type max_size() const { return static_cast<size_type>(-1) / sizeof(T); }
size_type max_size(int size) const { return static_cast<size_type>(-1) / size; }
- void setAllocator(TPoolAllocator* a) { allocator = *a; }
TPoolAllocator& getAllocator() const { return allocator; }
protected:
diff --git a/glslang/Include/ResourceLimits.h b/glslang/Include/ResourceLimits.h
index 106b21d..b670cf1 100644
--- a/glslang/Include/ResourceLimits.h
+++ b/glslang/Include/ResourceLimits.h
@@ -142,6 +142,7 @@
int maxTaskWorkGroupSizeY_NV;
int maxTaskWorkGroupSizeZ_NV;
int maxMeshViewCountNV;
+ int maxDualSourceDrawBuffersEXT;
TLimits limits;
};
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index 9961c94..b2c416d 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -3,6 +3,7 @@
// Copyright (C) 2012-2016 LunarG, Inc.
// Copyright (C) 2015-2016 Google, Inc.
// Copyright (C) 2017 ARM Limited.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -79,25 +80,7 @@
bool ms : 1;
bool image : 1; // image, combined should be false
bool combined : 1; // true means texture is combined with a sampler, false means texture with no sampler
-#ifdef ENABLE_HLSL
- unsigned int vectorSize : 3; // vector return type size.
- unsigned int getVectorSize() const { return vectorSize; }
- void clearReturnStruct() { structReturnIndex = noReturnStruct; }
- bool hasReturnStruct() const { return structReturnIndex != noReturnStruct; }
- unsigned getStructReturnIndex() const { return structReturnIndex; }
-
- static const unsigned structReturnIndexBits = 4; // number of index bits to use.
- static const unsigned structReturnSlots = (1<<structReturnIndexBits)-1; // number of valid values
- static const unsigned noReturnStruct = structReturnSlots; // value if no return struct type.
-
- // Index into a language specific table of texture return structures.
- unsigned int structReturnIndex : structReturnIndexBits;
-#else
- unsigned int getVectorSize() const { return 4; }
- void clearReturnStruct() const { }
- bool hasReturnStruct() const { return false; }
- unsigned getStructReturnIndex() const { return 0; }
-#endif
+ bool sampler : 1; // true means a pure sampler, other fields should be clear()
#ifdef GLSLANG_WEB
bool is1D() const { return false; }
@@ -105,8 +88,6 @@
bool isRect() const { return false; }
bool isSubpass() const { return false; }
bool isCombined() const { return true; }
- bool isPureSampler() const { return false; }
- bool isTexture() const { return false; }
bool isImage() const { return false; }
bool isImageClass() const { return false; }
bool isMultiSample() const { return false; }
@@ -114,19 +95,30 @@
void setExternal(bool e) { }
bool isYuv() const { return false; }
#else
- bool sampler : 1; // true means a pure sampler, other fields should be clear()
- bool external : 1; // GL_OES_EGL_image_external
- bool yuv : 1; // GL_EXT_YUV_target
+ 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<<structReturnIndexBits)-1; // number of valid values
+ static const unsigned noReturnStruct = structReturnSlots; // value if no return struct type.
+ // Index into a language specific table of texture return structures.
+ unsigned int structReturnIndex : structReturnIndexBits;
+
+ bool external : 1; // GL_OES_EGL_image_external
+ bool yuv : 1; // GL_EXT_YUV_target
+
+#ifdef ENABLE_HLSL
+ unsigned int getVectorSize() const { return vectorSize; }
+ void clearReturnStruct() { structReturnIndex = noReturnStruct; }
+ bool hasReturnStruct() const { return structReturnIndex != noReturnStruct; }
+ unsigned getStructReturnIndex() const { return structReturnIndex; }
+#endif
bool is1D() const { return dim == Esd1D; }
bool isBuffer() const { return dim == EsdBuffer; }
bool isRect() const { return dim == EsdRect; }
bool isSubpass() const { return dim == EsdSubpass; }
bool isCombined() const { return combined; }
- bool isPureSampler() const { return sampler; }
- bool isTexture() const { return !sampler && !image; }
bool isImage() const { return image && !isSubpass(); }
bool isImageClass() const { return image; }
bool isMultiSample() const { return ms; }
@@ -134,7 +126,12 @@
void setExternal(bool e) { external = e; }
bool isYuv() const { return yuv; }
#endif
+ bool isTexture() const { return !sampler && !image; }
+ bool isPureSampler() const { return sampler; }
+
void setCombined(bool c) { combined = c; }
+ void setBasicType(TBasicType t) { type = t; }
+ TBasicType getBasicType() const { return type; }
bool isShadow() const { return shadow; }
bool isArrayed() const { return arrayed; }
@@ -147,8 +144,8 @@
ms = false;
image = false;
combined = false;
-#ifndef GLSLANG_WEB
sampler = false;
+#ifndef GLSLANG_WEB
external = false;
yuv = false;
#endif
@@ -195,6 +192,14 @@
ms = m;
}
+ // make a pure sampler, no texture, no image, nothing combined, the 'sampler' keyword
+ void setPureSampler(bool s)
+ {
+ clear();
+ sampler = true;
+ shadow = s;
+ }
+
#ifndef GLSLANG_WEB
// make a subpass input attachment
void setSubpass(TBasicType t, bool m = false)
@@ -205,14 +210,6 @@
dim = EsdSubpass;
ms = m;
}
-
- // make a pure sampler, no texture, no image, nothing combined, the 'sampler' keyword
- void setPureSampler(bool s)
- {
- clear();
- sampler = true;
- shadow = s;
- }
#endif
bool operator==(const TSampler& right) const
@@ -226,9 +223,12 @@
isCombined() == right.isCombined() &&
isPureSampler() == right.isPureSampler() &&
isExternal() == right.isExternal() &&
- isYuv() == right.isYuv() &&
- getVectorSize() == right.getVectorSize() &&
- getStructReturnIndex() == right.getStructReturnIndex();
+ isYuv() == right.isYuv()
+#ifdef ENABLE_HLSL
+ && getVectorSize() == right.getVectorSize() &&
+ getStructReturnIndex() == right.getStructReturnIndex()
+#endif
+ ;
}
bool operator!=(const TSampler& right) const
@@ -473,6 +473,18 @@
EioCount,
};
+enum TShaderInterface
+{
+ // Includes both uniform blocks and buffer blocks
+ EsiUniform = 0,
+ EsiInput,
+ EsiOutput,
+ EsiNone,
+
+ EsiCount
+};
+
+
class TQualifier {
public:
static const int layoutNotSet = -1;
@@ -527,16 +539,19 @@
void clearMemory()
{
+#ifndef GLSLANG_WEB
coherent = false;
devicecoherent = false;
queuefamilycoherent = false;
workgroupcoherent = false;
subgroupcoherent = false;
+ shadercallcoherent = false;
nonprivate = false;
volatil = false;
restrict = false;
readonly = false;
writeonly = false;
+#endif
}
const char* semanticName;
@@ -549,23 +564,17 @@
bool centroid : 1;
bool smooth : 1;
bool flat : 1;
- bool coherent : 1;
- bool devicecoherent : 1;
- bool queuefamilycoherent : 1;
- bool workgroupcoherent : 1;
- bool subgroupcoherent : 1;
- bool nonprivate : 1;
- bool volatil : 1;
- bool restrict : 1;
- bool readonly : 1;
- bool writeonly : 1;
// having a constant_id is not sufficient: expressions have no id, but are still specConstant
bool specConstant : 1;
bool nonUniform : 1;
+ bool explicitOffset : 1;
#ifdef GLSLANG_WEB
bool isWriteOnly() const { return false; }
bool isReadOnly() const { return false; }
+ bool isRestrict() const { return false; }
+ bool isCoherent() const { return false; }
+ bool isVolatile() const { return false; }
bool isSample() const { return false; }
bool isMemory() const { return false; }
bool isMemoryQualifierImageAndSSBOOnly() const { return false; }
@@ -587,16 +596,30 @@
bool perTaskNV : 1;
bool patch : 1;
bool sample : 1;
+ bool restrict : 1;
+ bool readonly : 1;
+ bool writeonly : 1;
+ bool coherent : 1;
+ bool volatil : 1;
+ bool devicecoherent : 1;
+ bool queuefamilycoherent : 1;
+ bool workgroupcoherent : 1;
+ bool subgroupcoherent : 1;
+ bool shadercallcoherent : 1;
+ bool nonprivate : 1;
bool isWriteOnly() const { return writeonly; }
bool isReadOnly() const { return readonly; }
+ bool isRestrict() const { return restrict; }
+ bool isCoherent() const { return coherent; }
+ bool isVolatile() const { return volatil; }
bool isSample() const { return sample; }
bool isMemory() const
{
- return subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || restrict || readonly || writeonly || nonprivate;
+ return shadercallcoherent || subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || restrict || readonly || writeonly || nonprivate;
}
bool isMemoryQualifierImageAndSSBOOnly() const
{
- return subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || restrict || readonly || writeonly;
+ return shadercallcoherent || subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || restrict || readonly || writeonly;
}
bool bufferReferenceNeedsVulkanMemoryModel() const
{
@@ -766,7 +789,7 @@
layoutViewportRelative = false;
// -2048 as the default value indicating layoutSecondaryViewportRelative is not set
layoutSecondaryViewportRelativeOffset = -2048;
- layoutShaderRecordNV = false;
+ layoutShaderRecord = false;
layoutBufferReferenceAlign = layoutBufferReferenceAlignEnd;
layoutFormat = ElfNone;
#endif
@@ -779,8 +802,8 @@
{
layoutLocation = layoutLocationEnd;
layoutComponent = layoutComponentEnd;
- layoutIndex = layoutIndexEnd;
#ifndef GLSLANG_WEB
+ layoutIndex = layoutIndexEnd;
clearStreamLayout();
clearXfbLayout();
#endif
@@ -805,7 +828,7 @@
hasAnyLocation() ||
hasStream() ||
hasFormat() ||
- isShaderRecordNV() ||
+ isShaderRecord() ||
isPushConstant() ||
hasBufferReference();
}
@@ -864,7 +887,7 @@
bool layoutPassthrough;
bool layoutViewportRelative;
int layoutSecondaryViewportRelativeOffset;
- bool layoutShaderRecordNV;
+ bool layoutShaderRecord;
#endif
bool hasUniformLayout() const
@@ -885,7 +908,9 @@
layoutSet = layoutSetEnd;
layoutBinding = layoutBindingEnd;
+#ifndef GLSLANG_WEB
layoutAttachment = layoutAttachmentEnd;
+#endif
}
bool hasMatrix() const
@@ -922,6 +947,7 @@
bool hasOffset() const { return false; }
bool isNonPerspective() const { return false; }
bool hasIndex() const { return false; }
+ unsigned getIndex() const { return 0; }
bool hasComponent() const { return false; }
bool hasStream() const { return false; }
bool hasFormat() const { return false; }
@@ -932,7 +958,7 @@
bool hasAttachment() const { return false; }
TLayoutFormat getFormat() const { return ElfNone; }
bool isPushConstant() const { return false; }
- bool isShaderRecordNV() const { return false; }
+ bool isShaderRecord() const { return false; }
bool hasBufferReference() const { return false; }
bool hasBufferReferenceAlign() const { return false; }
bool isNonUniform() const { return false; }
@@ -946,6 +972,7 @@
{
return layoutIndex != layoutIndexEnd;
}
+ unsigned getIndex() const { return layoutIndex; }
bool hasComponent() const
{
return layoutComponent != layoutComponentEnd;
@@ -982,7 +1009,7 @@
}
TLayoutFormat getFormat() const { return layoutFormat; }
bool isPushConstant() const { return layoutPushConstant; }
- bool isShaderRecordNV() const { return layoutShaderRecordNV; }
+ bool isShaderRecord() const { return layoutShaderRecord; }
bool hasBufferReference() const { return layoutBufferReference; }
bool hasBufferReferenceAlign() const
{
@@ -1601,6 +1628,23 @@
assert(fieldName);
return *fieldName;
}
+ TShaderInterface getShaderInterface() const
+ {
+ if (basicType != EbtBlock)
+ return EsiNone;
+
+ switch (qualifier.storage) {
+ default:
+ return EsiNone;
+ case EvqVaryingIn:
+ return EsiInput;
+ case EvqVaryingOut:
+ return EsiOutput;
+ case EvqUniform:
+ case EvqBuffer:
+ return EsiUniform;
+ }
+ }
virtual TBasicType getBasicType() const { return basicType; }
virtual const TSampler& getSampler() const { return sampler; }
@@ -1659,7 +1703,7 @@
}
virtual bool isOpaque() const { return basicType == EbtSampler
#ifndef GLSLANG_WEB
- || basicType == EbtAtomicUint || basicType == EbtAccStructNV
+ || basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery
#endif
; }
virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; }
@@ -1920,6 +1964,7 @@
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";
@@ -1932,10 +1977,10 @@
case EbtUint64: return "uint64_t";
case EbtBool: return "bool";
case EbtAtomicUint: return "atomic_uint";
- case EbtSampler: return "sampler/image";
case EbtStruct: return "structure";
case EbtBlock: return "block";
- case EbtAccStructNV: return "accelerationStructureNV";
+ case EbtAccStruct: return "accelerationStructureNV";
+ case EbtRayQuery: return "rayQueryEXT";
case EbtReference: return "reference";
#endif
default: return "unknown type";
@@ -2045,7 +2090,7 @@
appendStr(" layoutSecondaryViewportRelativeOffset=");
appendInt(qualifier.layoutSecondaryViewportRelativeOffset);
}
- if (qualifier.layoutShaderRecordNV)
+ if (qualifier.layoutShaderRecord)
appendStr(" shaderRecordNV");
appendStr(")");
@@ -2088,6 +2133,8 @@
appendStr(" workgroupcoherent");
if (qualifier.subgroupcoherent)
appendStr(" subgroupcoherent");
+ if (qualifier.shadercallcoherent)
+ appendStr(" shadercallcoherent");
if (qualifier.nonprivate)
appendStr(" nonprivate");
if (qualifier.volatil)
@@ -2193,7 +2240,8 @@
const TTypeList* getStruct() const { assert(isStruct()); return structure; }
void setStruct(TTypeList* s) { assert(isStruct()); structure = s; }
TTypeList* getWritableStruct() const { assert(isStruct()); return structure; } // This should only be used when known to not be sharing with other threads
-
+ void setBasicType(const TBasicType& t) { basicType = t; }
+
int computeNumComponents() const
{
int components = 0;
diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h
new file mode 100644
index 0000000..50e95b7
--- /dev/null
+++ b/glslang/Include/glslang_c_interface.h
@@ -0,0 +1,233 @@
+/**
+ This code is based on the glslang_c_interface implementation by Viktor Latypov
+**/
+
+/**
+BSD 2-Clause License
+
+Copyright (c) 2019, Viktor Latypov
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. 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.
+
+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 HOLDER 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.
+**/
+
+#ifndef GLSLANG_C_IFACE_H_INCLUDED
+#define GLSLANG_C_IFACE_H_INCLUDED
+
+#include <stdbool.h>
+#include <stdlib.h>
+
+#include "glslang_c_shader_types.h"
+
+typedef struct glslang_shader_s glslang_shader_t;
+typedef struct glslang_program_s glslang_program_t;
+
+/* TLimits counterpart */
+typedef struct glslang_limits_s {
+ bool non_inductive_for_loops;
+ bool while_loops;
+ bool do_while_loops;
+ bool general_uniform_indexing;
+ bool general_attribute_matrix_vector_indexing;
+ bool general_varying_indexing;
+ bool general_sampler_indexing;
+ bool general_variable_indexing;
+ bool general_constant_matrix_vector_indexing;
+} glslang_limits_t;
+
+/* TBuiltInResource counterpart */
+typedef struct glslang_resource_s {
+ int max_lights;
+ int max_clip_planes;
+ int max_texture_units;
+ int max_texture_coords;
+ int max_vertex_attribs;
+ int max_vertex_uniform_components;
+ int max_varying_floats;
+ int max_vertex_texture_image_units;
+ int max_combined_texture_image_units;
+ int max_texture_image_units;
+ int max_fragment_uniform_components;
+ int max_draw_buffers;
+ int max_vertex_uniform_vectors;
+ int max_varying_vectors;
+ int max_fragment_uniform_vectors;
+ int max_vertex_output_vectors;
+ int max_fragment_input_vectors;
+ int min_program_texel_offset;
+ int max_program_texel_offset;
+ int max_clip_distances;
+ int max_compute_work_group_count_x;
+ int max_compute_work_group_count_y;
+ int max_compute_work_group_count_z;
+ int max_compute_work_group_size_x;
+ int max_compute_work_group_size_y;
+ int max_compute_work_group_size_z;
+ int max_compute_uniform_components;
+ int max_compute_texture_image_units;
+ int max_compute_image_uniforms;
+ int max_compute_atomic_counters;
+ int max_compute_atomic_counter_buffers;
+ int max_varying_components;
+ int max_vertex_output_components;
+ int max_geometry_input_components;
+ int max_geometry_output_components;
+ int max_fragment_input_components;
+ int max_image_units;
+ int max_combined_image_units_and_fragment_outputs;
+ int max_combined_shader_output_resources;
+ int max_image_samples;
+ int max_vertex_image_uniforms;
+ int max_tess_control_image_uniforms;
+ int max_tess_evaluation_image_uniforms;
+ int max_geometry_image_uniforms;
+ int max_fragment_image_uniforms;
+ int max_combined_image_uniforms;
+ int max_geometry_texture_image_units;
+ int max_geometry_output_vertices;
+ int max_geometry_total_output_components;
+ int max_geometry_uniform_components;
+ int max_geometry_varying_components;
+ int max_tess_control_input_components;
+ int max_tess_control_output_components;
+ int max_tess_control_texture_image_units;
+ int max_tess_control_uniform_components;
+ int max_tess_control_total_output_components;
+ int max_tess_evaluation_input_components;
+ int max_tess_evaluation_output_components;
+ int max_tess_evaluation_texture_image_units;
+ int max_tess_evaluation_uniform_components;
+ int max_tess_patch_components;
+ int max_patch_vertices;
+ int max_tess_gen_level;
+ int max_viewports;
+ int max_vertex_atomic_counters;
+ int max_tess_control_atomic_counters;
+ int max_tess_evaluation_atomic_counters;
+ int max_geometry_atomic_counters;
+ int max_fragment_atomic_counters;
+ int max_combined_atomic_counters;
+ int max_atomic_counter_bindings;
+ int max_vertex_atomic_counter_buffers;
+ int max_tess_control_atomic_counter_buffers;
+ int max_tess_evaluation_atomic_counter_buffers;
+ int max_geometry_atomic_counter_buffers;
+ int max_fragment_atomic_counter_buffers;
+ int max_combined_atomic_counter_buffers;
+ int max_atomic_counter_buffer_size;
+ int max_transform_feedback_buffers;
+ int max_transform_feedback_interleaved_components;
+ int max_cull_distances;
+ int max_combined_clip_and_cull_distances;
+ int max_samples;
+ int max_mesh_output_vertices_nv;
+ int max_mesh_output_primitives_nv;
+ int max_mesh_work_group_size_x_nv;
+ int max_mesh_work_group_size_y_nv;
+ int max_mesh_work_group_size_z_nv;
+ int max_task_work_group_size_x_nv;
+ int max_task_work_group_size_y_nv;
+ int max_task_work_group_size_z_nv;
+ int max_mesh_view_count_nv;
+ int maxDualSourceDrawBuffersEXT;
+
+ glslang_limits_t limits;
+} glslang_resource_t;
+
+typedef struct glslang_input_s {
+ glslang_source_t language;
+ glslang_stage_t stage;
+ glslang_client_t client;
+ glslang_target_client_version_t client_version;
+ glslang_target_language_t target_language;
+ glslang_target_language_version_t target_language_version;
+ /** Shader source code */
+ const char* code;
+ int default_version;
+ glslang_profile_t default_profile;
+ int force_default_version_and_profile;
+ int forward_compatible;
+ glslang_messages_t messages;
+ const glslang_resource_t* resource;
+} glslang_input_t;
+
+/* Inclusion result structure allocated by C include_local/include_system callbacks */
+typedef struct glsl_include_result_s {
+ /* Header file name or NULL if inclusion failed */
+ const char* header_name;
+
+ /* Header contents or NULL */
+ const char* header_data;
+ size_t header_length;
+
+} glsl_include_result_t;
+
+/* Callback for local file inclusion */
+typedef glsl_include_result_t* (*glsl_include_local_func)(void* ctx, const char* header_name, const char* includer_name,
+ size_t include_depth);
+
+/* Callback for system file inclusion */
+typedef glsl_include_result_t* (*glsl_include_system_func)(void* ctx, const char* header_name,
+ const char* includer_name, size_t include_depth);
+
+/* Callback for include result destruction */
+typedef int (*glsl_free_include_result_func)(void* ctx, glsl_include_result_t* result);
+
+/* Collection of callbacks for GLSL preprocessor */
+typedef struct glsl_include_callbacks_s {
+ glsl_include_system_func include_system;
+ glsl_include_local_func include_local;
+ glsl_free_include_result_func free_include_result;
+} glsl_include_callbacks_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int glslang_initialize_process();
+void glslang_finalize_process();
+
+glslang_shader_t* glslang_shader_create(const glslang_input_t* input);
+void glslang_shader_delete(glslang_shader_t* shader);
+int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input);
+int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input);
+const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader);
+const char* glslang_shader_get_info_log(glslang_shader_t* shader);
+const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader);
+
+glslang_program_t* glslang_program_create();
+void glslang_program_delete(glslang_program_t* program);
+void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader);
+int glslang_program_link(glslang_program_t* program, int messages); // glslang_messages_t
+void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage);
+size_t glslang_program_SPIRV_get_size(glslang_program_t* program);
+void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int*);
+unsigned int* glslang_program_SPIRV_get_ptr(glslang_program_t* program);
+const char* glslang_program_SPIRV_get_messages(glslang_program_t* program);
+const char* glslang_program_get_info_log(glslang_program_t* program);
+const char* glslang_program_get_info_debug_log(glslang_program_t* program);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* #ifdef GLSLANG_C_IFACE_INCLUDED */
diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h
new file mode 100644
index 0000000..769f4c4
--- /dev/null
+++ b/glslang/Include/glslang_c_shader_types.h
@@ -0,0 +1,182 @@
+/**
+ This code is based on the glslang_c_interface implementation by Viktor Latypov
+**/
+
+/**
+BSD 2-Clause License
+
+Copyright (c) 2019, Viktor Latypov
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. 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.
+
+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 HOLDER 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.
+**/
+
+#ifndef C_SHADER_TYPES_H_INCLUDED
+#define C_SHADER_TYPES_H_INCLUDED
+
+#define LAST_ELEMENT_MARKER(x) x
+
+/* EShLanguage counterpart */
+typedef enum {
+ GLSLANG_STAGE_VERTEX,
+ GLSLANG_STAGE_TESSCONTROL,
+ GLSLANG_STAGE_TESSEVALUATION,
+ GLSLANG_STAGE_GEOMETRY,
+ GLSLANG_STAGE_FRAGMENT,
+ GLSLANG_STAGE_COMPUTE,
+ GLSLANG_STAGE_RAYGEN_NV,
+ GLSLANG_STAGE_INTERSECT_NV,
+ GLSLANG_STAGE_ANYHIT_NV,
+ GLSLANG_STAGE_CLOSESTHIT_NV,
+ GLSLANG_STAGE_MISS_NV,
+ GLSLANG_STAGE_CALLABLE_NV,
+ GLSLANG_STAGE_TASK_NV,
+ GLSLANG_STAGE_MESH_NV,
+ LAST_ELEMENT_MARKER(GLSLANG_STAGE_COUNT),
+} glslang_stage_t; // would be better as stage, but this is ancient now
+
+/* EShLanguageMask counterpart */
+typedef enum {
+ GLSLANG_STAGE_VERTEX_MASK = (1 << GLSLANG_STAGE_VERTEX),
+ GLSLANG_STAGE_TESSCONTROL_MASK = (1 << GLSLANG_STAGE_TESSCONTROL),
+ GLSLANG_STAGE_TESSEVALUATION_MASK = (1 << GLSLANG_STAGE_TESSEVALUATION),
+ GLSLANG_STAGE_GEOMETRY_MASK = (1 << GLSLANG_STAGE_GEOMETRY),
+ GLSLANG_STAGE_FRAGMENT_MASK = (1 << GLSLANG_STAGE_FRAGMENT),
+ GLSLANG_STAGE_COMPUTE_MASK = (1 << GLSLANG_STAGE_COMPUTE),
+ GLSLANG_STAGE_RAYGEN_NV_MASK = (1 << GLSLANG_STAGE_RAYGEN_NV),
+ GLSLANG_STAGE_INTERSECT_NV_MASK = (1 << GLSLANG_STAGE_INTERSECT_NV),
+ GLSLANG_STAGE_ANYHIT_NV_MASK = (1 << GLSLANG_STAGE_ANYHIT_NV),
+ GLSLANG_STAGE_CLOSESTHIT_NV_MASK = (1 << GLSLANG_STAGE_CLOSESTHIT_NV),
+ GLSLANG_STAGE_MISS_NV_MASK = (1 << GLSLANG_STAGE_MISS_NV),
+ GLSLANG_STAGE_CALLABLE_NV_MASK = (1 << GLSLANG_STAGE_CALLABLE_NV),
+ GLSLANG_STAGE_TASK_NV_MASK = (1 << GLSLANG_STAGE_TASK_NV),
+ GLSLANG_STAGE_MESH_NV_MASK = (1 << GLSLANG_STAGE_MESH_NV),
+ LAST_ELEMENT_MARKER(GLSLANG_STAGE_MASK_COUNT),
+} glslang_stage_mask_t;
+
+/* EShSource counterpart */
+typedef enum {
+ GLSLANG_SOURCE_NONE,
+ GLSLANG_SOURCE_GLSL,
+ GLSLANG_SOURCE_HLSL,
+ LAST_ELEMENT_MARKER(GLSLANG_SOURCE_COUNT),
+} glslang_source_t;
+
+/* EShClient counterpart */
+typedef enum {
+ GLSLANG_CLIENT_NONE,
+ GLSLANG_CLIENT_VULKAN,
+ GLSLANG_CLIENT_OPENGL,
+ LAST_ELEMENT_MARKER(GLSLANG_CLIENT_COUNT),
+} glslang_client_t;
+
+/* EShTargetLanguage counterpart */
+typedef enum {
+ GLSLANG_TARGET_NONE,
+ GLSLANG_TARGET_SPV,
+ LAST_ELEMENT_MARKER(GLSLANG_TARGET_COUNT),
+} glslang_target_language_t;
+
+/* SH_TARGET_ClientVersion counterpart */
+typedef enum {
+ GLSLANG_TARGET_VULKAN_1_0 = (1 << 22),
+ GLSLANG_TARGET_VULKAN_1_1 = (1 << 22) | (1 << 12),
+ GLSLANG_TARGET_OPENGL_450 = 450,
+ LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT),
+} glslang_target_client_version_t;
+
+/* SH_TARGET_LanguageVersion counterpart */
+typedef enum {
+ GLSLANG_TARGET_SPV_1_0 = (1 << 16),
+ GLSLANG_TARGET_SPV_1_1 = (1 << 16) | (1 << 8),
+ GLSLANG_TARGET_SPV_1_2 = (1 << 16) | (2 << 8),
+ GLSLANG_TARGET_SPV_1_3 = (1 << 16) | (3 << 8),
+ GLSLANG_TARGET_SPV_1_4 = (1 << 16) | (4 << 8),
+ GLSLANG_TARGET_SPV_1_5 = (1 << 16) | (5 << 8),
+ LAST_ELEMENT_MARKER(GLSLANG_TARGET_LANGUAGE_VERSION_COUNT),
+} glslang_target_language_version_t;
+
+/* EShExecutable counterpart */
+typedef enum { GLSLANG_EX_VERTEX_FRAGMENT, GLSLANG_EX_FRAGMENT } glslang_executable_t;
+
+/* EShOptimizationLevel counterpart */
+typedef enum {
+ GLSLANG_OPT_NO_GENERATION,
+ GLSLANG_OPT_NONE,
+ GLSLANG_OPT_SIMPLE,
+ GLSLANG_OPT_FULL,
+ LAST_ELEMENT_MARKER(GLSLANG_OPT_LEVEL_COUNT),
+} glslang_optimization_level_t;
+
+/* EShTextureSamplerTransformMode counterpart */
+typedef enum {
+ GLSLANG_TEX_SAMP_TRANS_KEEP,
+ GLSLANG_TEX_SAMP_TRANS_UPGRADE_TEXTURE_REMOVE_SAMPLER,
+ LAST_ELEMENT_MARKER(GLSLANG_TEX_SAMP_TRANS_COUNT),
+} glslang_texture_sampler_transform_mode_t;
+
+/* EShMessages counterpart */
+typedef enum {
+ GLSLANG_MSG_DEFAULT_BIT = 0,
+ GLSLANG_MSG_RELAXED_ERRORS_BIT = (1 << 0),
+ GLSLANG_MSG_SUPPRESS_WARNINGS_BIT = (1 << 1),
+ GLSLANG_MSG_AST_BIT = (1 << 2),
+ GLSLANG_MSG_SPV_RULES_BIT = (1 << 3),
+ GLSLANG_MSG_VULKAN_RULES_BIT = (1 << 4),
+ GLSLANG_MSG_ONLY_PREPROCESSOR_BIT = (1 << 5),
+ GLSLANG_MSG_READ_HLSL_BIT = (1 << 6),
+ GLSLANG_MSG_CASCADING_ERRORS_BIT = (1 << 7),
+ GLSLANG_MSG_KEEP_UNCALLED_BIT = (1 << 8),
+ GLSLANG_MSG_HLSL_OFFSETS_BIT = (1 << 9),
+ GLSLANG_MSG_DEBUG_INFO_BIT = (1 << 10),
+ GLSLANG_MSG_HLSL_ENABLE_16BIT_TYPES_BIT = (1 << 11),
+ GLSLANG_MSG_HLSL_LEGALIZATION_BIT = (1 << 12),
+ GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT = (1 << 13),
+ GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT = (1 << 14),
+ LAST_ELEMENT_MARKER(GLSLANG_MSG_COUNT),
+} glslang_messages_t;
+
+/* EShReflectionOptions counterpart */
+typedef enum {
+ GLSLANG_REFLECTION_DEFAULT_BIT = 0,
+ GLSLANG_REFLECTION_STRICT_ARRAY_SUFFIX_BIT = (1 << 0),
+ GLSLANG_REFLECTION_BASIC_ARRAY_SUFFIX_BIT = (1 << 1),
+ GLSLANG_REFLECTION_INTERMEDIATE_IOO_BIT = (1 << 2),
+ GLSLANG_REFLECTION_SEPARATE_BUFFERS_BIT = (1 << 3),
+ GLSLANG_REFLECTION_ALL_BLOCK_VARIABLES_BIT = (1 << 4),
+ GLSLANG_REFLECTION_UNWRAP_IO_BLOCKS_BIT = (1 << 5),
+ LAST_ELEMENT_MARKER(GLSLANG_REFLECTION_COUNT),
+} glslang_reflection_options_t;
+
+/* EProfile counterpart (from Versions.h) */
+typedef enum {
+ GLSLANG_BAD_PROFILE = 0,
+ GLSLANG_NO_PROFILE = (1 << 0),
+ GLSLANG_CORE_PROFILE = (1 << 1),
+ GLSLANG_COMPATIBILITY_PROFILE = (1 << 2),
+ GLSLANG_ES_PROFILE = (1 << 3),
+ LAST_ELEMENT_MARKER(GLSLANG_PROFILE_COUNT),
+} glslang_profile_t;
+
+#undef LAST_ELEMENT_MARKER
+
+#endif
diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h
index b599a90..bf12fcf 100644
--- a/glslang/Include/intermediate.h
+++ b/glslang/Include/intermediate.h
@@ -2,6 +2,7 @@
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2016 LunarG, Inc.
// Copyright (C) 2017 ARM Limited.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -621,6 +622,8 @@
EOpIsHelperInvocation,
+ EOpDebugPrintf,
+
//
// Branch
//
@@ -899,12 +902,50 @@
EOpFindLSB,
EOpFindMSB,
- EOpTraceNV,
- EOpReportIntersectionNV,
- EOpIgnoreIntersectionNV,
- EOpTerminateRayNV,
- EOpExecuteCallableNV,
+ EOpCountLeadingZeros,
+ EOpCountTrailingZeros,
+ EOpAbsDifference,
+ EOpAddSaturate,
+ EOpSubSaturate,
+ EOpAverage,
+ EOpAverageRounded,
+ EOpMul32x16,
+
+ EOpTrace,
+ EOpReportIntersection,
+ EOpIgnoreIntersection,
+ EOpTerminateRay,
+ EOpExecuteCallable,
EOpWritePackedPrimitiveIndices4x8NV,
+
+ //
+ // GL_EXT_ray_query operations
+ //
+
+ EOpRayQueryInitialize,
+ EOpRayQueryTerminate,
+ EOpRayQueryGenerateIntersection,
+ EOpRayQueryConfirmIntersection,
+ EOpRayQueryProceed,
+ EOpRayQueryGetIntersectionType,
+ EOpRayQueryGetRayTMin,
+ EOpRayQueryGetRayFlags,
+ EOpRayQueryGetIntersectionT,
+ EOpRayQueryGetIntersectionInstanceCustomIndex,
+ EOpRayQueryGetIntersectionInstanceId,
+ EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset,
+ EOpRayQueryGetIntersectionGeometryIndex,
+ EOpRayQueryGetIntersectionPrimitiveIndex,
+ EOpRayQueryGetIntersectionBarycentrics,
+ EOpRayQueryGetIntersectionFrontFace,
+ EOpRayQueryGetIntersectionCandidateAABBOpaque,
+ EOpRayQueryGetIntersectionObjectRayDirection,
+ EOpRayQueryGetIntersectionObjectRayOrigin,
+ EOpRayQueryGetWorldRayDirection,
+ EOpRayQueryGetWorldRayOrigin,
+ EOpRayQueryGetIntersectionObjectToWorld,
+ EOpRayQueryGetIntersectionWorldToObject,
+
//
// HLSL operations
//
@@ -1189,6 +1230,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;
@@ -1222,7 +1264,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)
@@ -1237,7 +1279,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
@@ -1248,7 +1290,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
@@ -1309,11 +1351,13 @@
bool isSparseTexture() const { return false; }
bool isImageFootprint() const { return false; }
bool isSparseImage() const { return false; }
+ bool isSubgroup() const { return false; }
#else
bool isImage() const { return op > EOpImageGuardBegin && op < EOpImageGuardEnd; }
bool isSparseTexture() const { return op > EOpSparseTextureGuardBegin && op < EOpSparseTextureGuardEnd; }
bool isImageFootprint() const { return op > EOpImageFootprintGuardBegin && op < EOpImageFootprintGuardEnd; }
bool isSparseImage() const { return op == EOpSparseImageLoad; }
+ bool isSubgroup() const { return op > EOpSubgroupGuardStart && op < EOpSubgroupGuardStop; }
#endif
void setOperationPrecision(TPrecisionQualifier p) { operationPrecision = p; }
diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h
index 06fccdf..744c2fb 100644
--- a/glslang/Include/revision.h
+++ b/glslang/Include/revision.h
@@ -1,3 +1,3 @@
// This header is generated by the make-revision script.
-#define GLSLANG_PATCH_LEVEL 3381
+#define GLSLANG_PATCH_LEVEL 3743
diff --git a/glslang/Include/revision.template b/glslang/Include/revision.template
index 6c13630..4a16bee 100644
--- a/glslang/Include/revision.template
+++ b/glslang/Include/revision.template
@@ -1,13 +1,13 @@
-// The file revision.h should be updated to the latest version, somehow, on
-// check-in, if glslang has changed.
-//
-// revision.template is the source for revision.h when using SubWCRev as the
-// method of updating revision.h. You don't have to do it this way, the
-// requirement is only that revision.h gets updated.
-//
-// revision.h is under source control so that not all consumers of glslang
-// source have to figure out how to create revision.h just to get a build
-// going. However, if it is not updated, it can be a version behind.
-
-#define GLSLANG_REVISION "$WCREV$"
-#define GLSLANG_DATE "$WCDATE$"
+// The file revision.h should be updated to the latest version, somehow, on
+// check-in, if glslang has changed.
+//
+// revision.template is the source for revision.h when using SubWCRev as the
+// method of updating revision.h. You don't have to do it this way, the
+// requirement is only that revision.h gets updated.
+//
+// revision.h is under source control so that not all consumers of glslang
+// source have to figure out how to create revision.h just to get a build
+// going. However, if it is not updated, it can be a version behind.
+
+#define GLSLANG_REVISION "$WCREV$"
+#define GLSLANG_DATE "$WCDATE$"
diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp
index 98c2666..e21cf42 100644
--- a/glslang/MachineIndependent/Constant.cpp
+++ b/glslang/MachineIndependent/Constant.cpp
@@ -2,7 +2,7 @@
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2013 LunarG, Inc.
// Copyright (C) 2017 ARM Limited.
-// Copyright (C) 2018 Google, Inc.
+// Copyright (C) 2018-2020 Google, Inc.
//
// All rights reserved.
//
@@ -1012,6 +1012,7 @@
case EOpMin:
case EOpMax:
case EOpMix:
+ case EOpMod:
case EOpClamp:
case EOpLessThan:
case EOpGreaterThan:
@@ -1074,6 +1075,14 @@
case EOpPow:
newConstArray[comp].setDConst(pow(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst()));
break;
+ case EOpMod:
+ {
+ double arg0 = childConstUnions[0][arg0comp].getDConst();
+ double arg1 = childConstUnions[1][arg1comp].getDConst();
+ double result = arg0 - arg1 * floor(arg0 / arg1);
+ newConstArray[comp].setDConst(result);
+ break;
+ }
case EOpMin:
switch(children[0]->getAsTyped()->getBasicType()) {
case EbtFloat16:
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 2344d36..36c35a8 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -1,8 +1,9 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2016 LunarG, Inc.
-// Copyright (C) 2015-2018 Google, Inc.
+// Copyright (C) 2015-2020 Google, Inc.
// Copyright (C) 2017 ARM Limited.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -85,18 +86,18 @@
enum ArgType {
// numbers hardcoded to correspond to 'TypeString'; order and value matter
- TypeB = 1 << 0, // Boolean
- TypeF = 1 << 1, // float 32
- TypeI = 1 << 2, // int 32
- TypeU = 1 << 3, // uint 32
- TypeF16 = 1 << 4, // float 16
- TypeF64 = 1 << 5, // float 64
- TypeI8 = 1 << 6, // int 8
- TypeI16 = 1 << 7, // int 16
- TypeI64 = 1 << 8, // int 64
- TypeU8 = 1 << 9, // uint 8
- TypeU16 = 1 << 10, // uint 16
- TypeU64 = 1 << 11, // uint 64
+ TypeB = 1 << 0, // Boolean
+ TypeF = 1 << 1, // float 32
+ TypeI = 1 << 2, // int 32
+ TypeU = 1 << 3, // uint 32
+ TypeF16 = 1 << 4, // float 16
+ TypeF64 = 1 << 5, // float 64
+ TypeI8 = 1 << 6, // int 8
+ TypeI16 = 1 << 7, // int 16
+ TypeI64 = 1 << 8, // int 64
+ TypeU8 = 1 << 9, // uint 8
+ TypeU16 = 1 << 10, // uint 16
+ TypeU64 = 1 << 11, // uint 64
};
// Mixtures of the above, to help the function tables
const ArgType TypeFI = static_cast<ArgType>(TypeF | TypeI);
@@ -106,27 +107,25 @@
// The relationships between arguments and return type, whether anything is
// output, or other unusual situations.
enum ArgClass {
- ClassRegular = 0, // nothing special, just all vector widths with matching return type; traditional arithmetic
- ClassLS = 1 << 0, // the last argument is also held fixed as a (type-matched) scalar while the others cycle
- ClassXLS = 1 << 1, // the last argument is exclusively a (type-matched) scalar while the others cycle
- ClassLS2 = 1 << 2, // the last two arguments are held fixed as a (type-matched) scalar while the others cycle
- ClassFS = 1 << 3, // the first argument is held fixed as a (type-matched) scalar while the others cycle
- ClassFS2 = 1 << 4, // the first two arguments are held fixed as a (type-matched) scalar while the others cycle
- ClassLO = 1 << 5, // the last argument is an output
- ClassB = 1 << 6, // return type cycles through only bool/bvec, matching vector width of args
- ClassLB = 1 << 7, // last argument cycles through only bool/bvec, matching vector width of args
- ClassV1 = 1 << 8, // scalar only
- ClassFIO = 1 << 9, // first argument is inout
- ClassRS = 1 << 10, // the return is held scalar as the arguments cycle
- ClassNS = 1 << 11, // no scalar prototype
- ClassCV = 1 << 12, // first argument is 'coherent volatile'
- ClassFO = 1 << 13, // first argument is output
- ClassV3 = 1 << 14, // vec3 only
+ ClassRegular = 0, // nothing special, just all vector widths with matching return type; traditional arithmetic
+ ClassLS = 1 << 0, // the last argument is also held fixed as a (type-matched) scalar while the others cycle
+ ClassXLS = 1 << 1, // the last argument is exclusively a (type-matched) scalar while the others cycle
+ ClassLS2 = 1 << 2, // the last two arguments are held fixed as a (type-matched) scalar while the others cycle
+ ClassFS = 1 << 3, // the first argument is held fixed as a (type-matched) scalar while the others cycle
+ ClassFS2 = 1 << 4, // the first two arguments are held fixed as a (type-matched) scalar while the others cycle
+ ClassLO = 1 << 5, // the last argument is an output
+ ClassB = 1 << 6, // return type cycles through only bool/bvec, matching vector width of args
+ ClassLB = 1 << 7, // last argument cycles through only bool/bvec, matching vector width of args
+ ClassV1 = 1 << 8, // scalar only
+ ClassFIO = 1 << 9, // first argument is inout
+ ClassRS = 1 << 10, // the return is held scalar as the arguments cycle
+ ClassNS = 1 << 11, // no scalar prototype
+ ClassCV = 1 << 12, // first argument is 'coherent volatile'
+ ClassFO = 1 << 13, // first argument is output
+ ClassV3 = 1 << 14, // vec3 only
};
// Mixtures of the above, to help the function tables
const ArgClass ClassV1FIOCV = (ArgClass)(ClassV1 | ClassFIO | ClassCV);
-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);
@@ -153,10 +152,10 @@
{ EBadProfile } };
const Versioning* Es300Desktop130 = &Es300Desktop130Version[0];
- const Versioning Es310Desktop430Version[] = { { EEsProfile, 0, 310, 0, nullptr },
- { EDesktopProfile, 0, 430, 0, nullptr },
+ const Versioning Es310Desktop420Version[] = { { EEsProfile, 0, 310, 0, nullptr },
+ { EDesktopProfile, 0, 420, 0, nullptr },
{ EBadProfile } };
- const Versioning* Es310Desktop430 = &Es310Desktop430Version[0];
+ const Versioning* Es310Desktop420 = &Es310Desktop420Version[0];
const Versioning Es310Desktop450Version[] = { { EEsProfile, 0, 310, 0, nullptr },
{ EDesktopProfile, 0, 450, 0, nullptr },
@@ -256,18 +255,19 @@
{ EOpGreaterThanEqual, "greaterThanEqual", 2, TypeU, ClassBNS, Es300Desktop130 },
{ EOpVectorEqual, "equal", 2, TypeU, ClassBNS, Es300Desktop130 },
{ EOpVectorNotEqual, "notEqual", 2, TypeU, ClassBNS, Es300Desktop130 },
+ { EOpAtomicAdd, "atomicAdd", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 },
+ { EOpAtomicMin, "atomicMin", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 },
+ { EOpAtomicMax, "atomicMax", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 },
+ { EOpAtomicAnd, "atomicAnd", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 },
+ { EOpAtomicOr, "atomicOr", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 },
+ { EOpAtomicXor, "atomicXor", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 },
+ { EOpAtomicExchange, "atomicExchange", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 },
+ { EOpAtomicCompSwap, "atomicCompSwap", 3, TypeIU, ClassV1FIOCV, Es310Desktop420 },
#ifndef GLSLANG_WEB
- { 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 },
{ EOpMix, "mix", 3, TypeB, ClassRegular, Es310Desktop450 },
{ EOpMix, "mix", 3, TypeIU, ClassLB, Es310Desktop450 },
#endif
+
{ EOpNull }
};
@@ -278,6 +278,59 @@
{ 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)
@@ -331,8 +384,10 @@
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)
@@ -382,9 +437,10 @@
// Relate a single table of built-ins to their AST operator.
// This can get called redundantly (especially for the common built-ins, when
// called once per stage). This is a performance issue only, not a correctness
-// concern. It is done for quality arising from simplicity, as there are subtlies
+// concern. It is done for quality arising from simplicity, as there are subtleties
// to get correct if instead trying to do it surgically.
-void RelateTabledBuiltins(const BuiltInFunction* functions, TSymbolTable& symbolTable)
+template<class FunctionT>
+void RelateTabledBuiltins(const FunctionT* functions, TSymbolTable& symbolTable)
{
while (functions->op != EOpNull) {
symbolTable.relateToOperator(functions->name, functions->op);
@@ -408,10 +464,6 @@
forEachFunction(commonBuiltins, BaseFunctions);
forEachFunction(stageBuiltins[EShLangFragment], DerivativeFunctions);
-#ifdef GLSLANG_WEB
- return;
-#endif
-
if ((profile == EEsProfile && version >= 320) || (profile != EEsProfile && version >= 450))
forEachFunction(stageBuiltins[EShLangCompute], DerivativeFunctions);
}
@@ -421,6 +473,7 @@
{
RelateTabledBuiltins(BaseFunctions, symbolTable);
RelateTabledBuiltins(DerivativeFunctions, symbolTable);
+ RelateTabledBuiltins(CustomFunctions, symbolTable);
}
inline bool IncludeLegacy(int version, EProfile profile, const SpvVersion& spvVersion)
@@ -465,7 +518,7 @@
dimMap[Esd1D] = 1;
dimMap[EsdRect] = 2;
dimMap[EsdBuffer] = 1;
- dimMap[EsdSubpass] = 2; // potientially unused for now
+ dimMap[EsdSubpass] = 2; // potentially unused for now
#endif
}
@@ -484,6 +537,10 @@
//
void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvVersion)
{
+#ifdef GLSLANG_WEB
+ version = 310;
+ profile = EEsProfile;
+#endif
addTabledBuiltins(version, profile, spvVersion);
//============================================================================
@@ -631,7 +688,7 @@
//
// double functions added to desktop 4.00, but not fma, frexp, ldexp, or pack/unpack
//
- if (profile != EEsProfile && version >= 400) {
+ if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64
commonBuiltins.append(
"double sqrt(double);"
@@ -1204,7 +1261,7 @@
#endif
if ((profile == EEsProfile && version >= 300) ||
- (profile != EEsProfile && version >= 330)) {
+ (profile != EEsProfile && version >= 150)) { // GL_ARB_shader_bit_encoding
commonBuiltins.append(
"int floatBitsToInt(highp float value);"
"ivec2 floatBitsToInt(highp vec2 value);"
@@ -1239,15 +1296,15 @@
"vec3 fma(vec3, vec3, vec3 );"
"vec4 fma(vec4, vec4, vec4 );"
"\n");
+ }
- if (profile != EEsProfile) {
+ if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64
commonBuiltins.append(
"double fma(double, double, double);"
"dvec2 fma(dvec2, dvec2, dvec2 );"
"dvec3 fma(dvec3, dvec3, dvec3 );"
"dvec4 fma(dvec4, dvec4, dvec4 );"
"\n");
- }
}
if ((profile == EEsProfile && version >= 310) ||
@@ -1266,7 +1323,7 @@
"\n");
}
- if (profile != EEsProfile && version >= 400) {
+ if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64
commonBuiltins.append(
"double frexp(double, out int);"
"dvec2 frexp( dvec2, out ivec2);"
@@ -1286,7 +1343,7 @@
#endif
if ((profile == EEsProfile && version >= 300) ||
- (profile != EEsProfile && version >= 400)) {
+ (profile != EEsProfile && version >= 150)) {
commonBuiltins.append(
"highp uint packUnorm2x16(vec2);"
"vec2 unpackUnorm2x16(highp uint);"
@@ -1294,7 +1351,7 @@
}
if ((profile == EEsProfile && version >= 300) ||
- (profile != EEsProfile && version >= 420)) {
+ (profile != EEsProfile && version >= 150)) {
commonBuiltins.append(
"highp uint packSnorm2x16(vec2);"
" vec2 unpackSnorm2x16(highp uint);"
@@ -1306,16 +1363,15 @@
commonBuiltins.append(
"mediump vec2 unpackHalf2x16(highp uint);"
"\n");
- }
-#ifndef GLSLANG_WEB
- else if (profile != EEsProfile && version >= 420) {
+ } else if (profile != EEsProfile && version >= 150) {
commonBuiltins.append(
" vec2 unpackHalf2x16(highp uint);"
"\n");
}
+#ifndef GLSLANG_WEB
if ((profile == EEsProfile && version >= 310) ||
- (profile != EEsProfile && version >= 400)) {
+ (profile != EEsProfile && version >= 150)) {
commonBuiltins.append(
"highp uint packSnorm4x8(vec4);"
"highp uint packUnorm4x8(vec4);"
@@ -1327,7 +1383,7 @@
"mediump vec4 unpackSnorm4x8(highp uint);"
"mediump vec4 unpackUnorm4x8(highp uint);"
"\n");
- } else if (profile != EEsProfile && version >= 400) {
+ } else if (profile != EEsProfile && version >= 150) {
commonBuiltins.append(
"vec4 unpackSnorm4x8(highp uint);"
"vec4 unpackUnorm4x8(highp uint);"
@@ -2796,6 +2852,181 @@
"\n");
}
+ if ((profile != EEsProfile && version >= 130) ||
+ (profile == EEsProfile && version >= 300)) {
+ commonBuiltins.append(
+ "uint countLeadingZeros(uint);"
+ "uvec2 countLeadingZeros(uvec2);"
+ "uvec3 countLeadingZeros(uvec3);"
+ "uvec4 countLeadingZeros(uvec4);"
+
+ "uint countTrailingZeros(uint);"
+ "uvec2 countTrailingZeros(uvec2);"
+ "uvec3 countTrailingZeros(uvec3);"
+ "uvec4 countTrailingZeros(uvec4);"
+
+ "uint absoluteDifference(int, int);"
+ "uvec2 absoluteDifference(ivec2, ivec2);"
+ "uvec3 absoluteDifference(ivec3, ivec3);"
+ "uvec4 absoluteDifference(ivec4, ivec4);"
+
+ "uint16_t absoluteDifference(int16_t, int16_t);"
+ "u16vec2 absoluteDifference(i16vec2, i16vec2);"
+ "u16vec3 absoluteDifference(i16vec3, i16vec3);"
+ "u16vec4 absoluteDifference(i16vec4, i16vec4);"
+
+ "uint64_t absoluteDifference(int64_t, int64_t);"
+ "u64vec2 absoluteDifference(i64vec2, i64vec2);"
+ "u64vec3 absoluteDifference(i64vec3, i64vec3);"
+ "u64vec4 absoluteDifference(i64vec4, i64vec4);"
+
+ "uint absoluteDifference(uint, uint);"
+ "uvec2 absoluteDifference(uvec2, uvec2);"
+ "uvec3 absoluteDifference(uvec3, uvec3);"
+ "uvec4 absoluteDifference(uvec4, uvec4);"
+
+ "uint16_t absoluteDifference(uint16_t, uint16_t);"
+ "u16vec2 absoluteDifference(u16vec2, u16vec2);"
+ "u16vec3 absoluteDifference(u16vec3, u16vec3);"
+ "u16vec4 absoluteDifference(u16vec4, u16vec4);"
+
+ "uint64_t absoluteDifference(uint64_t, uint64_t);"
+ "u64vec2 absoluteDifference(u64vec2, u64vec2);"
+ "u64vec3 absoluteDifference(u64vec3, u64vec3);"
+ "u64vec4 absoluteDifference(u64vec4, u64vec4);"
+
+ "int addSaturate(int, int);"
+ "ivec2 addSaturate(ivec2, ivec2);"
+ "ivec3 addSaturate(ivec3, ivec3);"
+ "ivec4 addSaturate(ivec4, ivec4);"
+
+ "int16_t addSaturate(int16_t, int16_t);"
+ "i16vec2 addSaturate(i16vec2, i16vec2);"
+ "i16vec3 addSaturate(i16vec3, i16vec3);"
+ "i16vec4 addSaturate(i16vec4, i16vec4);"
+
+ "int64_t addSaturate(int64_t, int64_t);"
+ "i64vec2 addSaturate(i64vec2, i64vec2);"
+ "i64vec3 addSaturate(i64vec3, i64vec3);"
+ "i64vec4 addSaturate(i64vec4, i64vec4);"
+
+ "uint addSaturate(uint, uint);"
+ "uvec2 addSaturate(uvec2, uvec2);"
+ "uvec3 addSaturate(uvec3, uvec3);"
+ "uvec4 addSaturate(uvec4, uvec4);"
+
+ "uint16_t addSaturate(uint16_t, uint16_t);"
+ "u16vec2 addSaturate(u16vec2, u16vec2);"
+ "u16vec3 addSaturate(u16vec3, u16vec3);"
+ "u16vec4 addSaturate(u16vec4, u16vec4);"
+
+ "uint64_t addSaturate(uint64_t, uint64_t);"
+ "u64vec2 addSaturate(u64vec2, u64vec2);"
+ "u64vec3 addSaturate(u64vec3, u64vec3);"
+ "u64vec4 addSaturate(u64vec4, u64vec4);"
+
+ "int subtractSaturate(int, int);"
+ "ivec2 subtractSaturate(ivec2, ivec2);"
+ "ivec3 subtractSaturate(ivec3, ivec3);"
+ "ivec4 subtractSaturate(ivec4, ivec4);"
+
+ "int16_t subtractSaturate(int16_t, int16_t);"
+ "i16vec2 subtractSaturate(i16vec2, i16vec2);"
+ "i16vec3 subtractSaturate(i16vec3, i16vec3);"
+ "i16vec4 subtractSaturate(i16vec4, i16vec4);"
+
+ "int64_t subtractSaturate(int64_t, int64_t);"
+ "i64vec2 subtractSaturate(i64vec2, i64vec2);"
+ "i64vec3 subtractSaturate(i64vec3, i64vec3);"
+ "i64vec4 subtractSaturate(i64vec4, i64vec4);"
+
+ "uint subtractSaturate(uint, uint);"
+ "uvec2 subtractSaturate(uvec2, uvec2);"
+ "uvec3 subtractSaturate(uvec3, uvec3);"
+ "uvec4 subtractSaturate(uvec4, uvec4);"
+
+ "uint16_t subtractSaturate(uint16_t, uint16_t);"
+ "u16vec2 subtractSaturate(u16vec2, u16vec2);"
+ "u16vec3 subtractSaturate(u16vec3, u16vec3);"
+ "u16vec4 subtractSaturate(u16vec4, u16vec4);"
+
+ "uint64_t subtractSaturate(uint64_t, uint64_t);"
+ "u64vec2 subtractSaturate(u64vec2, u64vec2);"
+ "u64vec3 subtractSaturate(u64vec3, u64vec3);"
+ "u64vec4 subtractSaturate(u64vec4, u64vec4);"
+
+ "int average(int, int);"
+ "ivec2 average(ivec2, ivec2);"
+ "ivec3 average(ivec3, ivec3);"
+ "ivec4 average(ivec4, ivec4);"
+
+ "int16_t average(int16_t, int16_t);"
+ "i16vec2 average(i16vec2, i16vec2);"
+ "i16vec3 average(i16vec3, i16vec3);"
+ "i16vec4 average(i16vec4, i16vec4);"
+
+ "int64_t average(int64_t, int64_t);"
+ "i64vec2 average(i64vec2, i64vec2);"
+ "i64vec3 average(i64vec3, i64vec3);"
+ "i64vec4 average(i64vec4, i64vec4);"
+
+ "uint average(uint, uint);"
+ "uvec2 average(uvec2, uvec2);"
+ "uvec3 average(uvec3, uvec3);"
+ "uvec4 average(uvec4, uvec4);"
+
+ "uint16_t average(uint16_t, uint16_t);"
+ "u16vec2 average(u16vec2, u16vec2);"
+ "u16vec3 average(u16vec3, u16vec3);"
+ "u16vec4 average(u16vec4, u16vec4);"
+
+ "uint64_t average(uint64_t, uint64_t);"
+ "u64vec2 average(u64vec2, u64vec2);"
+ "u64vec3 average(u64vec3, u64vec3);"
+ "u64vec4 average(u64vec4, u64vec4);"
+
+ "int averageRounded(int, int);"
+ "ivec2 averageRounded(ivec2, ivec2);"
+ "ivec3 averageRounded(ivec3, ivec3);"
+ "ivec4 averageRounded(ivec4, ivec4);"
+
+ "int16_t averageRounded(int16_t, int16_t);"
+ "i16vec2 averageRounded(i16vec2, i16vec2);"
+ "i16vec3 averageRounded(i16vec3, i16vec3);"
+ "i16vec4 averageRounded(i16vec4, i16vec4);"
+
+ "int64_t averageRounded(int64_t, int64_t);"
+ "i64vec2 averageRounded(i64vec2, i64vec2);"
+ "i64vec3 averageRounded(i64vec3, i64vec3);"
+ "i64vec4 averageRounded(i64vec4, i64vec4);"
+
+ "uint averageRounded(uint, uint);"
+ "uvec2 averageRounded(uvec2, uvec2);"
+ "uvec3 averageRounded(uvec3, uvec3);"
+ "uvec4 averageRounded(uvec4, uvec4);"
+
+ "uint16_t averageRounded(uint16_t, uint16_t);"
+ "u16vec2 averageRounded(u16vec2, u16vec2);"
+ "u16vec3 averageRounded(u16vec3, u16vec3);"
+ "u16vec4 averageRounded(u16vec4, u16vec4);"
+
+ "uint64_t averageRounded(uint64_t, uint64_t);"
+ "u64vec2 averageRounded(u64vec2, u64vec2);"
+ "u64vec3 averageRounded(u64vec3, u64vec3);"
+ "u64vec4 averageRounded(u64vec4, u64vec4);"
+
+ "int multiply32x16(int, int);"
+ "ivec2 multiply32x16(ivec2, ivec2);"
+ "ivec3 multiply32x16(ivec3, ivec3);"
+ "ivec4 multiply32x16(ivec4, ivec4);"
+
+ "uint multiply32x16(uint, uint);"
+ "uvec2 multiply32x16(uvec2, uvec2);"
+ "uvec3 multiply32x16(uvec3, uvec3);"
+ "uvec4 multiply32x16(uvec4, uvec4);"
+ "\n");
+ }
+
if ((profile != EEsProfile && version >= 450) ||
(profile == EEsProfile && version >= 320)) {
commonBuiltins.append(
@@ -2829,6 +3060,24 @@
"\n");
}
+ if ((profile == EEsProfile && version >= 300 && version < 310) ||
+ (profile != EEsProfile && version >= 150 && version < 450)) { // GL_EXT_shader_integer_mix
+ commonBuiltins.append("int mix(int, int, bool);"
+ "ivec2 mix(ivec2, ivec2, bvec2);"
+ "ivec3 mix(ivec3, ivec3, bvec3);"
+ "ivec4 mix(ivec4, ivec4, bvec4);"
+ "uint mix(uint, uint, bool );"
+ "uvec2 mix(uvec2, uvec2, bvec2);"
+ "uvec3 mix(uvec3, uvec3, bvec3);"
+ "uvec4 mix(uvec4, uvec4, bvec4);"
+ "bool mix(bool, bool, bool );"
+ "bvec2 mix(bvec2, bvec2, bvec2);"
+ "bvec3 mix(bvec3, bvec3, bvec3);"
+ "bvec4 mix(bvec4, bvec4, bvec4);"
+
+ "\n");
+ }
+
// GL_AMD_gpu_shader_half_float/Explicit types
if (profile != EEsProfile && version >= 450) {
commonBuiltins.append(
@@ -3713,7 +3962,7 @@
//
// Geometric Functions.
//
- if (IncludeLegacy(version, profile, spvVersion))
+ if (spvVersion.vulkan == 0 && IncludeLegacy(version, profile, spvVersion))
stageBuiltins[EShLangVertex].append("vec4 ftransform();");
//
@@ -3795,6 +4044,7 @@
"void EndPrimitive();"
"\n");
}
+#endif
//============================================================================
//
@@ -3824,15 +4074,20 @@
);
if ((profile != EEsProfile && version >= 420) || esBarrier) {
commonBuiltins.append(
- "void memoryBarrierAtomicCounter();"
"void memoryBarrierBuffer();"
- "void memoryBarrierImage();"
);
stageBuiltins[EShLangCompute].append(
"void memoryBarrierShared();"
"void groupMemoryBarrier();"
);
}
+#ifndef GLSLANG_WEB
+ if ((profile != EEsProfile && version >= 420) || esBarrier) {
+ if (spvVersion.vulkan == 0) {
+ commonBuiltins.append("void memoryBarrierAtomicCounter();");
+ }
+ commonBuiltins.append("void memoryBarrierImage();");
+ }
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
stageBuiltins[EShLangMeshNV].append(
"void memoryBarrierShared();"
@@ -3847,6 +4102,8 @@
commonBuiltins.append("void controlBarrier(int, int, int, int);\n"
"void memoryBarrier(int, int, int);\n");
+ commonBuiltins.append("void debugPrintfEXT();\n");
+
if (profile != EEsProfile && version >= 450) {
// coopMatStoreNV perhaps ought to have "out" on the buf parameter, but
// adding it introduces undesirable tempArgs on the stack. What we want
@@ -4081,29 +4338,64 @@
"\n");
}
- // Builtins for GL_NV_ray_tracing
+ // Builtins for GL_NV_ray_tracing/GL_EXT_ray_tracing/GL_EXT_ray_query
if (profile != EEsProfile && version >= 460) {
- stageBuiltins[EShLangRayGenNV].append(
- "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
- "void executeCallableNV(uint, int);"
+ commonBuiltins.append("void rayQueryInitializeEXT(rayQueryEXT, accelerationStructureEXT, uint, uint, vec3, float, vec3, float);"
+ "void rayQueryTerminateEXT(rayQueryEXT);"
+ "void rayQueryGenerateIntersectionEXT(rayQueryEXT, float);"
+ "void rayQueryConfirmIntersectionEXT(rayQueryEXT);"
+ "bool rayQueryProceedEXT(rayQueryEXT);"
+ "uint rayQueryGetIntersectionTypeEXT(rayQueryEXT, bool);"
+ "float rayQueryGetRayTMinEXT(rayQueryEXT);"
+ "uint rayQueryGetRayFlagsEXT(rayQueryEXT);"
+ "vec3 rayQueryGetWorldRayOriginEXT(rayQueryEXT);"
+ "vec3 rayQueryGetWorldRayDirectionEXT(rayQueryEXT);"
+ "float rayQueryGetIntersectionTEXT(rayQueryEXT, bool);"
+ "int rayQueryGetIntersectionInstanceCustomIndexEXT(rayQueryEXT, bool);"
+ "int rayQueryGetIntersectionInstanceIdEXT(rayQueryEXT, bool);"
+ "uint rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQueryEXT, bool);"
+ "int rayQueryGetIntersectionGeometryIndexEXT(rayQueryEXT, bool);"
+ "int rayQueryGetIntersectionPrimitiveIndexEXT(rayQueryEXT, bool);"
+ "vec2 rayQueryGetIntersectionBarycentricsEXT(rayQueryEXT, bool);"
+ "bool rayQueryGetIntersectionFrontFaceEXT(rayQueryEXT, bool);"
+ "bool rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQueryEXT);"
+ "vec3 rayQueryGetIntersectionObjectRayDirectionEXT(rayQueryEXT, bool);"
+ "vec3 rayQueryGetIntersectionObjectRayOriginEXT(rayQueryEXT, bool);"
+ "mat4x3 rayQueryGetIntersectionObjectToWorldEXT(rayQueryEXT, bool);"
+ "mat4x3 rayQueryGetIntersectionWorldToObjectEXT(rayQueryEXT, bool);"
"\n");
- stageBuiltins[EShLangIntersectNV].append(
+
+ stageBuiltins[EShLangRayGen].append(
+ "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
+ "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
+ "void executeCallableNV(uint, int);"
+ "void executeCallableEXT(uint, int);"
+ "\n");
+ stageBuiltins[EShLangIntersect].append(
"bool reportIntersectionNV(float, uint);"
+ "bool reportIntersectionEXT(float, uint);"
"\n");
- stageBuiltins[EShLangAnyHitNV].append(
+ stageBuiltins[EShLangAnyHit].append(
"void ignoreIntersectionNV();"
+ "void ignoreIntersectionEXT();"
"void terminateRayNV();"
+ "void terminateRayEXT();"
"\n");
- stageBuiltins[EShLangClosestHitNV].append(
+ stageBuiltins[EShLangClosestHit].append(
"void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
+ "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
"void executeCallableNV(uint, int);"
+ "void executeCallableEXT(uint, int);"
"\n");
- stageBuiltins[EShLangMissNV].append(
+ stageBuiltins[EShLangMiss].append(
"void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
+ "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
"void executeCallableNV(uint, int);"
+ "void executeCallableEXT(uint, int);"
"\n");
- stageBuiltins[EShLangCallableNV].append(
+ stageBuiltins[EShLangCallable].append(
"void executeCallableNV(uint, int);"
+ "void executeCallableEXT(uint, int);"
"\n");
}
@@ -4279,6 +4571,7 @@
"\n");
}
+#endif
//============================================================================
//
@@ -4308,6 +4601,7 @@
"\n");
}
+#ifndef GLSLANG_WEB
//============================================================================
//
// Define the interface to the mesh/task shader.
@@ -4937,19 +5231,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;"
@@ -5144,100 +5444,160 @@
stageBuiltins[EShLangMeshNV] .append(computeSubgroupDecls);
stageBuiltins[EShLangTaskNV] .append(subgroupDecls);
stageBuiltins[EShLangTaskNV] .append(computeSubgroupDecls);
- stageBuiltins[EShLangRayGenNV] .append(subgroupDecls);
- stageBuiltins[EShLangIntersectNV] .append(subgroupDecls);
- stageBuiltins[EShLangAnyHitNV] .append(subgroupDecls);
- stageBuiltins[EShLangClosestHitNV] .append(subgroupDecls);
- stageBuiltins[EShLangMissNV] .append(subgroupDecls);
- stageBuiltins[EShLangCallableNV] .append(subgroupDecls);
+ stageBuiltins[EShLangRayGen] .append(subgroupDecls);
+ stageBuiltins[EShLangIntersect] .append(subgroupDecls);
+ stageBuiltins[EShLangAnyHit] .append(subgroupDecls);
+ stageBuiltins[EShLangClosestHit] .append(subgroupDecls);
+ stageBuiltins[EShLangMiss] .append(subgroupDecls);
+ stageBuiltins[EShLangCallable] .append(subgroupDecls);
}
- // GL_NV_ray_tracing
+ // GL_NV_ray_tracing/GL_EXT_ray_tracing
if (profile != EEsProfile && version >= 460) {
const char *constRayFlags =
"const uint gl_RayFlagsNoneNV = 0U;"
+ "const uint gl_RayFlagsNoneEXT = 0U;"
"const uint gl_RayFlagsOpaqueNV = 1U;"
+ "const uint gl_RayFlagsOpaqueEXT = 1U;"
"const uint gl_RayFlagsNoOpaqueNV = 2U;"
+ "const uint gl_RayFlagsNoOpaqueEXT = 2U;"
"const uint gl_RayFlagsTerminateOnFirstHitNV = 4U;"
+ "const uint gl_RayFlagsTerminateOnFirstHitEXT = 4U;"
"const uint gl_RayFlagsSkipClosestHitShaderNV = 8U;"
+ "const uint gl_RayFlagsSkipClosestHitShaderEXT = 8U;"
"const uint gl_RayFlagsCullBackFacingTrianglesNV = 16U;"
+ "const uint gl_RayFlagsCullBackFacingTrianglesEXT = 16U;"
"const uint gl_RayFlagsCullFrontFacingTrianglesNV = 32U;"
+ "const uint gl_RayFlagsCullFrontFacingTrianglesEXT = 32U;"
"const uint gl_RayFlagsCullOpaqueNV = 64U;"
+ "const uint gl_RayFlagsCullOpaqueEXT = 64U;"
"const uint gl_RayFlagsCullNoOpaqueNV = 128U;"
+ "const uint gl_RayFlagsCullNoOpaqueEXT = 128U;"
+ "const uint gl_RayFlagsSkipTrianglesEXT = 256U;"
+ "const uint gl_RayFlagsSkipAABBEXT = 512U;"
+ "const uint gl_HitKindFrontFacingTriangleEXT = 254U;"
+ "const uint gl_HitKindBackFacingTriangleEXT = 255U;"
"\n";
+
+ const char *constRayQueryIntersection =
+ "const uint gl_RayQueryCandidateIntersectionEXT = 0U;"
+ "const uint gl_RayQueryCommittedIntersectionEXT = 1U;"
+ "const uint gl_RayQueryCommittedIntersectionNoneEXT = 0U;"
+ "const uint gl_RayQueryCommittedIntersectionTriangleEXT = 1U;"
+ "const uint gl_RayQueryCommittedIntersectionGeneratedEXT = 2U;"
+ "const uint gl_RayQueryCandidateIntersectionTriangleEXT = 0U;"
+ "const uint gl_RayQueryCandidateIntersectionAABBEXT = 1U;"
+ "\n";
+
const char *rayGenDecls =
"in uvec3 gl_LaunchIDNV;"
+ "in uvec3 gl_LaunchIDEXT;"
"in uvec3 gl_LaunchSizeNV;"
+ "in uvec3 gl_LaunchSizeEXT;"
"\n";
const char *intersectDecls =
"in uvec3 gl_LaunchIDNV;"
+ "in uvec3 gl_LaunchIDEXT;"
"in uvec3 gl_LaunchSizeNV;"
+ "in uvec3 gl_LaunchSizeEXT;"
"in int gl_PrimitiveID;"
"in int gl_InstanceID;"
"in int gl_InstanceCustomIndexNV;"
+ "in int gl_InstanceCustomIndexEXT;"
+ "in int gl_GeometryIndexEXT;"
"in vec3 gl_WorldRayOriginNV;"
+ "in vec3 gl_WorldRayOriginEXT;"
"in vec3 gl_WorldRayDirectionNV;"
+ "in vec3 gl_WorldRayDirectionEXT;"
"in vec3 gl_ObjectRayOriginNV;"
+ "in vec3 gl_ObjectRayOriginEXT;"
"in vec3 gl_ObjectRayDirectionNV;"
+ "in vec3 gl_ObjectRayDirectionEXT;"
"in float gl_RayTminNV;"
+ "in float gl_RayTminEXT;"
"in float gl_RayTmaxNV;"
+ "in float gl_RayTmaxEXT;"
"in mat4x3 gl_ObjectToWorldNV;"
+ "in mat4x3 gl_ObjectToWorldEXT;"
+ "in mat3x4 gl_ObjectToWorld3x4EXT;"
"in mat4x3 gl_WorldToObjectNV;"
+ "in mat4x3 gl_WorldToObjectEXT;"
+ "in mat3x4 gl_WorldToObject3x4EXT;"
"in uint gl_IncomingRayFlagsNV;"
+ "in uint gl_IncomingRayFlagsEXT;"
"\n";
const char *hitDecls =
"in uvec3 gl_LaunchIDNV;"
+ "in uvec3 gl_LaunchIDEXT;"
"in uvec3 gl_LaunchSizeNV;"
+ "in uvec3 gl_LaunchSizeEXT;"
"in int gl_PrimitiveID;"
"in int gl_InstanceID;"
"in int gl_InstanceCustomIndexNV;"
+ "in int gl_InstanceCustomIndexEXT;"
+ "in int gl_GeometryIndexEXT;"
"in vec3 gl_WorldRayOriginNV;"
+ "in vec3 gl_WorldRayOriginEXT;"
"in vec3 gl_WorldRayDirectionNV;"
+ "in vec3 gl_WorldRayDirectionEXT;"
"in vec3 gl_ObjectRayOriginNV;"
+ "in vec3 gl_ObjectRayOriginEXT;"
"in vec3 gl_ObjectRayDirectionNV;"
+ "in vec3 gl_ObjectRayDirectionEXT;"
"in float gl_RayTminNV;"
+ "in float gl_RayTminEXT;"
"in float gl_RayTmaxNV;"
+ "in float gl_RayTmaxEXT;"
"in float gl_HitTNV;"
+ "in float gl_HitTEXT;"
"in uint gl_HitKindNV;"
+ "in uint gl_HitKindEXT;"
"in mat4x3 gl_ObjectToWorldNV;"
+ "in mat4x3 gl_ObjectToWorldEXT;"
+ "in mat3x4 gl_ObjectToWorld3x4EXT;"
"in mat4x3 gl_WorldToObjectNV;"
+ "in mat4x3 gl_WorldToObjectEXT;"
+ "in mat3x4 gl_WorldToObject3x4EXT;"
"in uint gl_IncomingRayFlagsNV;"
+ "in uint gl_IncomingRayFlagsEXT;"
"\n";
const char *missDecls =
"in uvec3 gl_LaunchIDNV;"
+ "in uvec3 gl_LaunchIDEXT;"
"in uvec3 gl_LaunchSizeNV;"
+ "in uvec3 gl_LaunchSizeEXT;"
"in vec3 gl_WorldRayOriginNV;"
+ "in vec3 gl_WorldRayOriginEXT;"
"in vec3 gl_WorldRayDirectionNV;"
+ "in vec3 gl_WorldRayDirectionEXT;"
"in vec3 gl_ObjectRayOriginNV;"
"in vec3 gl_ObjectRayDirectionNV;"
"in float gl_RayTminNV;"
+ "in float gl_RayTminEXT;"
"in float gl_RayTmaxNV;"
+ "in float gl_RayTmaxEXT;"
"in uint gl_IncomingRayFlagsNV;"
+ "in uint gl_IncomingRayFlagsEXT;"
"\n";
const char *callableDecls =
"in uvec3 gl_LaunchIDNV;"
+ "in uvec3 gl_LaunchIDEXT;"
"in uvec3 gl_LaunchSizeNV;"
+ "in uvec3 gl_LaunchSizeEXT;"
"\n";
- stageBuiltins[EShLangRayGenNV].append(rayGenDecls);
- stageBuiltins[EShLangRayGenNV].append(constRayFlags);
- stageBuiltins[EShLangIntersectNV].append(intersectDecls);
- stageBuiltins[EShLangIntersectNV].append(constRayFlags);
+ commonBuiltins.append(constRayQueryIntersection);
+ commonBuiltins.append(constRayFlags);
- stageBuiltins[EShLangAnyHitNV].append(hitDecls);
- stageBuiltins[EShLangAnyHitNV].append(constRayFlags);
-
- stageBuiltins[EShLangClosestHitNV].append(hitDecls);
- stageBuiltins[EShLangClosestHitNV].append(constRayFlags);
-
- stageBuiltins[EShLangMissNV].append(missDecls);
- stageBuiltins[EShLangMissNV].append(constRayFlags);
-
- stageBuiltins[EShLangCallableNV].append(callableDecls);
- stageBuiltins[EShLangCallableNV].append(constRayFlags);
+ stageBuiltins[EShLangRayGen].append(rayGenDecls);
+ stageBuiltins[EShLangIntersect].append(intersectDecls);
+ stageBuiltins[EShLangAnyHit].append(hitDecls);
+ stageBuiltins[EShLangClosestHit].append(hitDecls);
+ stageBuiltins[EShLangMiss].append(missDecls);
+ stageBuiltins[EShLangCallable].append(callableDecls);
}
if ((profile != EEsProfile && version >= 140)) {
@@ -5245,11 +5605,11 @@
"in highp int gl_DeviceIndex;" // GL_EXT_device_group
"\n";
- stageBuiltins[EShLangRayGenNV].append(deviceIndex);
- stageBuiltins[EShLangIntersectNV].append(deviceIndex);
- stageBuiltins[EShLangAnyHitNV].append(deviceIndex);
- stageBuiltins[EShLangClosestHitNV].append(deviceIndex);
- stageBuiltins[EShLangMissNV].append(deviceIndex);
+ stageBuiltins[EShLangRayGen].append(deviceIndex);
+ stageBuiltins[EShLangIntersect].append(deviceIndex);
+ stageBuiltins[EShLangAnyHit].append(deviceIndex);
+ stageBuiltins[EShLangClosestHit].append(deviceIndex);
+ stageBuiltins[EShLangMiss].append(deviceIndex);
}
if (version >= 300 /* both ES and non-ES */) {
@@ -5265,6 +5625,7 @@
commonBuiltins.append("const int gl_ScopeSubgroup = 3;\n");
commonBuiltins.append("const int gl_ScopeInvocation = 4;\n");
commonBuiltins.append("const int gl_ScopeQueueFamily = 5;\n");
+ commonBuiltins.append("const int gl_ScopeShaderCallEXT = 6;\n");
commonBuiltins.append("const int gl_SemanticsRelaxed = 0x0;\n");
commonBuiltins.append("const int gl_SemanticsAcquire = 0x2;\n");
@@ -5314,10 +5675,9 @@
#ifdef GLSLANG_WEB
const int ms = 0;
#else
- for (int ms = 0; ms <= 1; ++ms)
+ for (int ms = 0; ms <= 1; ++ms) // loop over "bool" multisample or not
#endif
{
-#ifndef GLSLANG_WEB
if ((ms || image) && shadow)
continue;
if (ms && profile != EEsProfile && version < 150)
@@ -5326,7 +5686,6 @@
continue;
if (ms && profile == EEsProfile && version < 310)
continue;
-#endif
for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not
#ifdef GLSLANG_WEB
@@ -5431,14 +5790,12 @@
}
}
-#ifndef GLSLANG_WEB
//
// sparseTexelsResidentARB()
//
if (profile != EEsProfile && version >= 450) {
commonBuiltins.append("bool sparseTexelsResidentARB(int code);\n");
}
-#endif
}
//
@@ -5465,7 +5822,7 @@
return;
#endif
- if (sampler.isImage() && ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 430)))
+ if (sampler.isImage() && ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 420)))
return;
if (profile == EEsProfile)
@@ -5504,9 +5861,9 @@
//
// textureQueryLod(), fragment stage only
- //
+ // Also enabled with extension GL_ARB_texture_query_lod
- if (profile != EEsProfile && version >= 400 && sampler.isCombined() && sampler.dim != EsdRect &&
+ if (profile != EEsProfile && version >= 150 && sampler.isCombined() && sampler.dim != EsdRect &&
! sampler.isMultiSample() && ! sampler.isBuffer()) {
for (int f16TexAddr = 0; f16TexAddr < 2; ++f16TexAddr) {
if (f16TexAddr && sampler.type != EbtFloat16)
@@ -5725,6 +6082,11 @@
//
void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile)
{
+#ifdef GLSLANG_WEB
+ profile = EEsProfile;
+ version = 310;
+#endif
+
//
// texturing
//
@@ -6005,6 +6367,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:
@@ -6243,6 +6610,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.
//
@@ -6254,7 +6626,7 @@
//============================================================================
TString& s = commonBuiltins;
- const int maxSize = 80;
+ const int maxSize = 200;
char builtInConstant[maxSize];
//
@@ -6300,9 +6672,7 @@
s.append(builtInConstant);
}
-#ifdef GLSLANG_WEB
- }
-#else
+#ifndef GLSLANG_WEB
if (version >= 310) {
// geometry
@@ -6368,9 +6738,46 @@
}
}
+ if (version >= 320) {
+ // tessellation
+
+ snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlImageUniforms = %d;", resources.maxTessControlImageUniforms);
+ s.append(builtInConstant);
+ snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationImageUniforms = %d;", resources.maxTessEvaluationImageUniforms);
+ s.append(builtInConstant);
+ snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlAtomicCounters = %d;", resources.maxTessControlAtomicCounters);
+ s.append(builtInConstant);
+ snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationAtomicCounters = %d;", resources.maxTessEvaluationAtomicCounters);
+ s.append(builtInConstant);
+ snprintf(builtInConstant, maxSize, "const int gl_MaxTessControlAtomicCounterBuffers = %d;", resources.maxTessControlAtomicCounterBuffers);
+ s.append(builtInConstant);
+ snprintf(builtInConstant, maxSize, "const int gl_MaxTessEvaluationAtomicCounterBuffers = %d;", resources.maxTessEvaluationAtomicCounterBuffers);
+ s.append(builtInConstant);
+ }
+
+ if (version >= 100) {
+ // GL_EXT_blend_func_extended
+ snprintf(builtInConstant, maxSize, "const mediump int gl_MaxDualSourceDrawBuffersEXT = %d;", resources.maxDualSourceDrawBuffersEXT);
+ s.append(builtInConstant);
+ // this is here instead of with the others in initialize(version, profile) due to the dependence on gl_MaxDualSourceDrawBuffersEXT
+ if (language == EShLangFragment) {
+ s.append(
+ "mediump vec4 gl_SecondaryFragColorEXT;"
+ "mediump vec4 gl_SecondaryFragDataEXT[gl_MaxDualSourceDrawBuffersEXT];"
+ "\n");
+ }
+ }
} else {
// non-ES profile
+ if (version > 400) {
+ snprintf(builtInConstant, maxSize, "const int gl_MaxVertexUniformVectors = %d;", resources.maxVertexUniformVectors);
+ s.append(builtInConstant);
+
+ snprintf(builtInConstant, maxSize, "const int gl_MaxFragmentUniformVectors = %d;", resources.maxFragmentUniformVectors);
+ s.append(builtInConstant);
+ }
+
snprintf(builtInConstant, maxSize, "const int gl_MaxVertexAttribs = %d;", resources.maxVertexAttribs);
s.append(builtInConstant);
@@ -6584,8 +6991,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)) {
@@ -6601,6 +7029,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)) {
@@ -6638,31 +7078,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);
@@ -6781,6 +7196,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.
@@ -6886,6 +7306,15 @@
symbolTable.setFunctionExtensions("fragmentFetchAMD", 1, &E_GL_AMD_shader_fragment_mask);
}
+ symbolTable.setFunctionExtensions("countLeadingZeros", 1, &E_GL_INTEL_shader_integer_functions2);
+ symbolTable.setFunctionExtensions("countTrailingZeros", 1, &E_GL_INTEL_shader_integer_functions2);
+ symbolTable.setFunctionExtensions("absoluteDifference", 1, &E_GL_INTEL_shader_integer_functions2);
+ symbolTable.setFunctionExtensions("addSaturate", 1, &E_GL_INTEL_shader_integer_functions2);
+ symbolTable.setFunctionExtensions("subtractSaturate", 1, &E_GL_INTEL_shader_integer_functions2);
+ symbolTable.setFunctionExtensions("average", 1, &E_GL_INTEL_shader_integer_functions2);
+ symbolTable.setFunctionExtensions("averageRounded", 1, &E_GL_INTEL_shader_integer_functions2);
+ symbolTable.setFunctionExtensions("multiply32x16", 1, &E_GL_INTEL_shader_integer_functions2);
+
symbolTable.setFunctionExtensions("textureFootprintNV", 1, &E_GL_NV_shader_texture_footprint);
symbolTable.setFunctionExtensions("textureFootprintClampNV", 1, &E_GL_NV_shader_texture_footprint);
symbolTable.setFunctionExtensions("textureFootprintLodNV", 1, &E_GL_NV_shader_texture_footprint);
@@ -7150,18 +7579,61 @@
BuiltInVariable("gl_FragStencilRefARB", EbvFragStencilRef, symbolTable);
}
- if ((profile != EEsProfile && version >= 400) ||
+ if (profile != EEsProfile && version < 400) {
+ symbolTable.setFunctionExtensions("textureQueryLod", 1, &E_GL_ARB_texture_query_lod);
+ }
+
+ if (profile != EEsProfile && version >= 460) {
+ symbolTable.setFunctionExtensions("rayQueryInitializeEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryTerminateEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGenerateIntersectionEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryConfirmIntersectionEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryProceedEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionTypeEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionTEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetRayFlagsEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetRayTMinEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionInstanceCustomIndexEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionInstanceIdEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionGeometryIndexEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionPrimitiveIndexEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionBarycentricsEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionFrontFaceEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionCandidateAABBOpaqueEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionObjectRayDirectionEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionObjectRayOriginEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionObjectToWorldEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetIntersectionWorldToObjectEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetWorldRayOriginEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setFunctionExtensions("rayQueryGetWorldRayDirectionEXT", 1, &E_GL_EXT_ray_query);
+ symbolTable.setVariableExtensions("gl_RayFlagsSkipAABBEXT", 1, &E_GL_EXT_ray_flags_primitive_culling);
+ symbolTable.setVariableExtensions("gl_RayFlagsSkipTrianglesEXT", 1, &E_GL_EXT_ray_flags_primitive_culling);
+ }
+
+ 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);
+ }
}
}
@@ -7377,6 +7849,45 @@
symbolTable.setFunctionExtensions("imageAtomicCompSwap", 1, &E_GL_OES_shader_image_atomic);
}
+ if (profile != EEsProfile && version < 330 ) {
+ symbolTable.setFunctionExtensions("floatBitsToInt", 1, &E_GL_ARB_shader_bit_encoding);
+ symbolTable.setFunctionExtensions("floatBitsToUint", 1, &E_GL_ARB_shader_bit_encoding);
+ symbolTable.setFunctionExtensions("intBitsToFloat", 1, &E_GL_ARB_shader_bit_encoding);
+ symbolTable.setFunctionExtensions("uintBitsToFloat", 1, &E_GL_ARB_shader_bit_encoding);
+ }
+
+ if (profile != EEsProfile && version < 430 ) {
+ symbolTable.setFunctionExtensions("imageSize", 1, &E_GL_ARB_shader_image_size);
+ }
+
+ // GL_ARB_shader_storage_buffer_object
+ if (profile != EEsProfile && version < 430 ) {
+ symbolTable.setFunctionExtensions("atomicAdd", 1, &E_GL_ARB_shader_storage_buffer_object);
+ symbolTable.setFunctionExtensions("atomicMin", 1, &E_GL_ARB_shader_storage_buffer_object);
+ symbolTable.setFunctionExtensions("atomicMax", 1, &E_GL_ARB_shader_storage_buffer_object);
+ symbolTable.setFunctionExtensions("atomicAnd", 1, &E_GL_ARB_shader_storage_buffer_object);
+ symbolTable.setFunctionExtensions("atomicOr", 1, &E_GL_ARB_shader_storage_buffer_object);
+ symbolTable.setFunctionExtensions("atomicXor", 1, &E_GL_ARB_shader_storage_buffer_object);
+ symbolTable.setFunctionExtensions("atomicExchange", 1, &E_GL_ARB_shader_storage_buffer_object);
+ symbolTable.setFunctionExtensions("atomicCompSwap", 1, &E_GL_ARB_shader_storage_buffer_object);
+ }
+
+ // GL_ARB_shading_language_packing
+ if (profile != EEsProfile && version < 400 ) {
+ symbolTable.setFunctionExtensions("packUnorm2x16", 1, &E_GL_ARB_shading_language_packing);
+ symbolTable.setFunctionExtensions("unpackUnorm2x16", 1, &E_GL_ARB_shading_language_packing);
+ symbolTable.setFunctionExtensions("packSnorm4x8", 1, &E_GL_ARB_shading_language_packing);
+ symbolTable.setFunctionExtensions("packUnorm4x8", 1, &E_GL_ARB_shading_language_packing);
+ symbolTable.setFunctionExtensions("unpackSnorm4x8", 1, &E_GL_ARB_shading_language_packing);
+ symbolTable.setFunctionExtensions("unpackUnorm4x8", 1, &E_GL_ARB_shading_language_packing);
+ }
+ if (profile != EEsProfile && version < 420 ) {
+ symbolTable.setFunctionExtensions("packSnorm2x16", 1, &E_GL_ARB_shading_language_packing);
+ symbolTable.setFunctionExtensions("unpackSnorm2x16", 1, &E_GL_ARB_shading_language_packing);
+ symbolTable.setFunctionExtensions("unpackHalf2x16", 1, &E_GL_ARB_shading_language_packing);
+ symbolTable.setFunctionExtensions("packHalf2x16", 1, &E_GL_ARB_shading_language_packing);
+ }
+
symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group);
BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable);
symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview);
@@ -7547,7 +8058,6 @@
#endif
break;
-#ifndef GLSLANG_WEB
case EShLangCompute:
BuiltInVariable("gl_NumWorkGroups", EbvNumWorkGroups, symbolTable);
BuiltInVariable("gl_WorkGroupSize", EbvWorkGroupSize, symbolTable);
@@ -7555,6 +8065,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);
@@ -7580,7 +8099,9 @@
symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_ARB_compute_shader);
}
+
symbolTable.setFunctionExtensions("controlBarrier", 1, &E_GL_KHR_memory_scope_semantics);
+ symbolTable.setFunctionExtensions("debugPrintfEXT", 1, &E_GL_EXT_debug_printf);
// GL_ARB_shader_ballot
if (profile != EEsProfile) {
@@ -7636,14 +8157,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)) {
@@ -7674,51 +8187,101 @@
symbolTable.setFunctionExtensions("dFdyCoarse", 1, &E_GL_NV_compute_shader_derivatives);
symbolTable.setFunctionExtensions("fwidthCoarse", 1, &E_GL_NV_compute_shader_derivatives);
}
-
+#endif
break;
- case EShLangRayGenNV:
- case EShLangIntersectNV:
- case EShLangAnyHitNV:
- case EShLangClosestHitNV:
- case EShLangMissNV:
- case EShLangCallableNV:
+
+#ifndef GLSLANG_WEB
+ case EShLangRayGen:
+ case EShLangIntersect:
+ case EShLangAnyHit:
+ case EShLangClosestHit:
+ case EShLangMiss:
+ case EShLangCallable:
if (profile != EEsProfile && version >= 460) {
+ const char *rtexts[] = { E_GL_NV_ray_tracing, E_GL_EXT_ray_tracing };
symbolTable.setVariableExtensions("gl_LaunchIDNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_LaunchIDEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_LaunchSizeNV", 1, &E_GL_NV_ray_tracing);
- symbolTable.setVariableExtensions("gl_PrimitiveID", 1, &E_GL_NV_ray_tracing);
- symbolTable.setVariableExtensions("gl_InstanceID", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_LaunchSizeEXT", 1, &E_GL_EXT_ray_tracing);
+ symbolTable.setVariableExtensions("gl_PrimitiveID", 2, rtexts);
+ symbolTable.setVariableExtensions("gl_InstanceID", 2, rtexts);
symbolTable.setVariableExtensions("gl_InstanceCustomIndexNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_InstanceCustomIndexEXT", 1, &E_GL_EXT_ray_tracing);
+ symbolTable.setVariableExtensions("gl_GeometryIndexEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_WorldRayOriginNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_WorldRayOriginEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_WorldRayDirectionNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_WorldRayDirectionEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_ObjectRayOriginNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_ObjectRayOriginEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_ObjectRayDirectionNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_ObjectRayDirectionEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_RayTminNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_RayTminEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_RayTmaxNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_RayTmaxEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_HitTNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_HitTEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_HitKindNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_HitKindEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_ObjectToWorldNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_ObjectToWorldEXT", 1, &E_GL_EXT_ray_tracing);
+ symbolTable.setVariableExtensions("gl_ObjectToWorld3x4EXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_WorldToObjectNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_WorldToObjectEXT", 1, &E_GL_EXT_ray_tracing);
+ symbolTable.setVariableExtensions("gl_WorldToObject3x4EXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_IncomingRayFlagsNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setVariableExtensions("gl_IncomingRayFlagsEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group);
- BuiltInVariable("gl_LaunchIDNV", EbvLaunchIdNV, symbolTable);
- BuiltInVariable("gl_LaunchSizeNV", EbvLaunchSizeNV, symbolTable);
- BuiltInVariable("gl_PrimitiveID", EbvPrimitiveId, symbolTable);
- BuiltInVariable("gl_InstanceID", EbvInstanceId, symbolTable);
- BuiltInVariable("gl_InstanceCustomIndexNV", EbvInstanceCustomIndexNV,symbolTable);
- BuiltInVariable("gl_WorldRayOriginNV", EbvWorldRayOriginNV, symbolTable);
- BuiltInVariable("gl_WorldRayDirectionNV", EbvWorldRayDirectionNV, symbolTable);
- BuiltInVariable("gl_ObjectRayOriginNV", EbvObjectRayOriginNV, symbolTable);
- BuiltInVariable("gl_ObjectRayDirectionNV", EbvObjectRayDirectionNV, symbolTable);
- BuiltInVariable("gl_RayTminNV", EbvRayTminNV, symbolTable);
- BuiltInVariable("gl_RayTmaxNV", EbvRayTmaxNV, symbolTable);
- BuiltInVariable("gl_HitTNV", EbvHitTNV, symbolTable);
- BuiltInVariable("gl_HitKindNV", EbvHitKindNV, symbolTable);
- BuiltInVariable("gl_ObjectToWorldNV", EbvObjectToWorldNV, symbolTable);
- BuiltInVariable("gl_WorldToObjectNV", EbvWorldToObjectNV, symbolTable);
- BuiltInVariable("gl_IncomingRayFlagsNV", EbvIncomingRayFlagsNV, symbolTable);
- BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable);
+
+ symbolTable.setFunctionExtensions("traceNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setFunctionExtensions("traceRayEXT", 1, &E_GL_EXT_ray_tracing);
+ symbolTable.setFunctionExtensions("reportIntersectionNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setFunctionExtensions("reportIntersectionEXT", 1, &E_GL_EXT_ray_tracing);
+ symbolTable.setFunctionExtensions("ignoreIntersectionNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setFunctionExtensions("ignoreIntersectionEXT", 1, &E_GL_EXT_ray_tracing);
+ symbolTable.setFunctionExtensions("terminateRayNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setFunctionExtensions("terminateRayEXT", 1, &E_GL_EXT_ray_tracing);
+ symbolTable.setFunctionExtensions("executeCallableNV", 1, &E_GL_NV_ray_tracing);
+ symbolTable.setFunctionExtensions("executeCallableEXT", 1, &E_GL_EXT_ray_tracing);
+
+
+ BuiltInVariable("gl_LaunchIDNV", EbvLaunchId, symbolTable);
+ BuiltInVariable("gl_LaunchIDEXT", EbvLaunchId, symbolTable);
+ BuiltInVariable("gl_LaunchSizeNV", EbvLaunchSize, symbolTable);
+ BuiltInVariable("gl_LaunchSizeEXT", EbvLaunchSize, symbolTable);
+ BuiltInVariable("gl_PrimitiveID", EbvPrimitiveId, symbolTable);
+ BuiltInVariable("gl_InstanceID", EbvInstanceId, symbolTable);
+ BuiltInVariable("gl_InstanceCustomIndexNV", EbvInstanceCustomIndex,symbolTable);
+ BuiltInVariable("gl_InstanceCustomIndexEXT", EbvInstanceCustomIndex,symbolTable);
+ BuiltInVariable("gl_GeometryIndexEXT", EbvGeometryIndex, symbolTable);
+ BuiltInVariable("gl_WorldRayOriginNV", EbvWorldRayOrigin, symbolTable);
+ BuiltInVariable("gl_WorldRayOriginEXT", EbvWorldRayOrigin, symbolTable);
+ BuiltInVariable("gl_WorldRayDirectionNV", EbvWorldRayDirection, symbolTable);
+ BuiltInVariable("gl_WorldRayDirectionEXT", EbvWorldRayDirection, symbolTable);
+ BuiltInVariable("gl_ObjectRayOriginNV", EbvObjectRayOrigin, symbolTable);
+ BuiltInVariable("gl_ObjectRayOriginEXT", EbvObjectRayOrigin, symbolTable);
+ BuiltInVariable("gl_ObjectRayDirectionNV", EbvObjectRayDirection, symbolTable);
+ BuiltInVariable("gl_ObjectRayDirectionEXT", EbvObjectRayDirection, symbolTable);
+ BuiltInVariable("gl_RayTminNV", EbvRayTmin, symbolTable);
+ BuiltInVariable("gl_RayTminEXT", EbvRayTmin, symbolTable);
+ BuiltInVariable("gl_RayTmaxNV", EbvRayTmax, symbolTable);
+ BuiltInVariable("gl_RayTmaxEXT", EbvRayTmax, symbolTable);
+ BuiltInVariable("gl_HitTNV", EbvHitT, symbolTable);
+ BuiltInVariable("gl_HitTEXT", EbvHitT, symbolTable);
+ BuiltInVariable("gl_HitKindNV", EbvHitKind, symbolTable);
+ BuiltInVariable("gl_HitKindEXT", EbvHitKind, symbolTable);
+ BuiltInVariable("gl_ObjectToWorldNV", EbvObjectToWorld, symbolTable);
+ BuiltInVariable("gl_ObjectToWorldEXT", EbvObjectToWorld, symbolTable);
+ BuiltInVariable("gl_ObjectToWorld3x4EXT", EbvObjectToWorld3x4, symbolTable);
+ BuiltInVariable("gl_WorldToObjectNV", EbvWorldToObject, symbolTable);
+ BuiltInVariable("gl_WorldToObjectEXT", EbvWorldToObject, symbolTable);
+ BuiltInVariable("gl_WorldToObject3x4EXT", EbvWorldToObject3x4, symbolTable);
+ BuiltInVariable("gl_IncomingRayFlagsNV", EbvIncomingRayFlags, symbolTable);
+ BuiltInVariable("gl_IncomingRayFlagsEXT", EbvIncomingRayFlags, symbolTable);
+ BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable);
// GL_ARB_shader_ballot
symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot);
@@ -8034,21 +8597,6 @@
relateTabledBuiltins(version, profile, spvVersion, language, symbolTable);
- symbolTable.relateToOperator("matrixCompMult", EOpMul);
- // 120 and 150 are correct for both ES and desktop
- if (version >= 120) {
- symbolTable.relateToOperator("outerProduct", EOpOuterProduct);
- symbolTable.relateToOperator("transpose", EOpTranspose);
- if (version >= 150) {
- symbolTable.relateToOperator("determinant", EOpDeterminant);
- symbolTable.relateToOperator("inverse", EOpMatrixInverse);
- }
- }
-
- symbolTable.relateToOperator("floatBitsToInt", EOpFloatBitsToInt);
- symbolTable.relateToOperator("floatBitsToUint", EOpFloatBitsToUint);
- symbolTable.relateToOperator("intBitsToFloat", EOpIntBitsToFloat);
- symbolTable.relateToOperator("uintBitsToFloat", EOpUintBitsToFloat);
#ifndef GLSLANG_WEB
symbolTable.relateToOperator("doubleBitsToInt64", EOpDoubleBitsToInt64);
symbolTable.relateToOperator("doubleBitsToUint64", EOpDoubleBitsToUint64);
@@ -8063,14 +8611,7 @@
symbolTable.relateToOperator("int16BitsToHalf", EOpInt16BitsToFloat16);
symbolTable.relateToOperator("uint16BitsToHalf", EOpUint16BitsToFloat16);
-#endif
- symbolTable.relateToOperator("packSnorm2x16", EOpPackSnorm2x16);
- symbolTable.relateToOperator("unpackSnorm2x16", EOpUnpackSnorm2x16);
- symbolTable.relateToOperator("packUnorm2x16", EOpPackUnorm2x16);
- symbolTable.relateToOperator("unpackUnorm2x16", EOpUnpackUnorm2x16);
-
-#ifndef GLSLANG_WEB
symbolTable.relateToOperator("packSnorm4x8", EOpPackSnorm4x8);
symbolTable.relateToOperator("unpackSnorm4x8", EOpUnpackSnorm4x8);
symbolTable.relateToOperator("packUnorm4x8", EOpPackUnorm4x8);
@@ -8078,17 +8619,12 @@
symbolTable.relateToOperator("packDouble2x32", EOpPackDouble2x32);
symbolTable.relateToOperator("unpackDouble2x32", EOpUnpackDouble2x32);
-#endif
-
- symbolTable.relateToOperator("packHalf2x16", EOpPackHalf2x16);
- symbolTable.relateToOperator("unpackHalf2x16", EOpUnpackHalf2x16);
symbolTable.relateToOperator("packInt2x32", EOpPackInt2x32);
symbolTable.relateToOperator("unpackInt2x32", EOpUnpackInt2x32);
symbolTable.relateToOperator("packUint2x32", EOpPackUint2x32);
symbolTable.relateToOperator("unpackUint2x32", EOpUnpackUint2x32);
-#ifndef GLSLANG_WEB
symbolTable.relateToOperator("packInt2x16", EOpPackInt2x16);
symbolTable.relateToOperator("unpackInt2x16", EOpUnpackInt2x16);
symbolTable.relateToOperator("packUint2x16", EOpPackUint2x16);
@@ -8109,11 +8645,8 @@
symbolTable.relateToOperator("unpack16", EOpUnpack16);
symbolTable.relateToOperator("unpack8", EOpUnpack8);
- symbolTable.relateToOperator("barrier", EOpBarrier);
symbolTable.relateToOperator("controlBarrier", EOpBarrier);
- symbolTable.relateToOperator("memoryBarrier", EOpMemoryBarrier);
symbolTable.relateToOperator("memoryBarrierAtomicCounter", EOpMemoryBarrierAtomicCounter);
- symbolTable.relateToOperator("memoryBarrierBuffer", EOpMemoryBarrierBuffer);
symbolTable.relateToOperator("memoryBarrierImage", EOpMemoryBarrierImage);
symbolTable.relateToOperator("atomicLoad", EOpAtomicLoad);
@@ -8156,10 +8689,19 @@
symbolTable.relateToOperator("findMSB", EOpFindMSB);
symbolTable.relateToOperator("helperInvocationEXT", EOpIsHelperInvocation);
-#endif
+
+ 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);
+ symbolTable.relateToOperator("debugPrintfEXT", EOpDebugPrintf);
+
if (PureOperatorBuiltins) {
-#ifndef GLSLANG_WEB
symbolTable.relateToOperator("imageSize", EOpImageQuerySize);
symbolTable.relateToOperator("imageSamples", EOpImageQuerySamples);
symbolTable.relateToOperator("imageLoad", EOpImageLoad);
@@ -8177,28 +8719,7 @@
symbolTable.relateToOperator("subpassLoad", EOpSubpassLoad);
symbolTable.relateToOperator("subpassLoadMS", EOpSubpassLoadMS);
-#endif
- symbolTable.relateToOperator("textureSize", EOpTextureQuerySize);
- symbolTable.relateToOperator("textureQueryLod", EOpTextureQueryLod);
- symbolTable.relateToOperator("textureQueryLevels", EOpTextureQueryLevels);
- symbolTable.relateToOperator("textureSamples", EOpTextureQuerySamples);
- symbolTable.relateToOperator("texture", EOpTexture);
- symbolTable.relateToOperator("textureProj", EOpTextureProj);
- symbolTable.relateToOperator("textureLod", EOpTextureLod);
- symbolTable.relateToOperator("textureOffset", EOpTextureOffset);
- symbolTable.relateToOperator("texelFetch", EOpTextureFetch);
- symbolTable.relateToOperator("texelFetchOffset", EOpTextureFetchOffset);
- symbolTable.relateToOperator("textureProjOffset", EOpTextureProjOffset);
- symbolTable.relateToOperator("textureLodOffset", EOpTextureLodOffset);
- symbolTable.relateToOperator("textureProjLod", EOpTextureProjLod);
- symbolTable.relateToOperator("textureProjLodOffset", EOpTextureProjLodOffset);
- symbolTable.relateToOperator("textureGrad", EOpTextureGrad);
- symbolTable.relateToOperator("textureGradOffset", EOpTextureGradOffset);
- symbolTable.relateToOperator("textureProjGrad", EOpTextureProjGrad);
- symbolTable.relateToOperator("textureProjGradOffset", EOpTextureProjGradOffset);
-
-#ifndef GLSLANG_WEB
symbolTable.relateToOperator("textureGather", EOpTextureGather);
symbolTable.relateToOperator("textureGatherOffset", EOpTextureGatherOffset);
symbolTable.relateToOperator("textureGatherOffsets", EOpTextureGatherOffsets);
@@ -8214,9 +8735,11 @@
symbolTable.relateToOperator("textureFootprintGradNV", EOpImageSampleFootprintGradNV);
symbolTable.relateToOperator("textureFootprintGradClampNV", EOpImageSampleFootprintGradClampNV);
+ if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion))
+ symbolTable.relateToOperator("ftransform", EOpFtransform);
+
if (spvVersion.spv == 0 && (IncludeLegacy(version, profile, spvVersion) ||
(profile == EEsProfile && version == 100))) {
- symbolTable.relateToOperator("ftransform", EOpFtransform);
symbolTable.relateToOperator("texture1D", EOpTexture);
symbolTable.relateToOperator("texture1DGradARB", EOpTextureGrad);
@@ -8440,10 +8963,8 @@
symbolTable.relateToOperator("shadow2DEXT", EOpTexture);
symbolTable.relateToOperator("shadow2DProjEXT", EOpTextureProj);
}
-#endif
}
-#ifndef GLSLANG_WEB
switch(language) {
case EShLangVertex:
break;
@@ -8468,6 +8989,33 @@
symbolTable.relateToOperator("dFdyCoarse", EOpDPdyCoarse);
symbolTable.relateToOperator("fwidthCoarse", EOpFwidthCoarse);
}
+
+ if (profile != EEsProfile && version >= 460) {
+ symbolTable.relateToOperator("rayQueryInitializeEXT", EOpRayQueryInitialize);
+ symbolTable.relateToOperator("rayQueryTerminateEXT", EOpRayQueryTerminate);
+ symbolTable.relateToOperator("rayQueryGenerateIntersectionEXT", EOpRayQueryGenerateIntersection);
+ symbolTable.relateToOperator("rayQueryConfirmIntersectionEXT", EOpRayQueryConfirmIntersection);
+ symbolTable.relateToOperator("rayQueryProceedEXT", EOpRayQueryProceed);
+ symbolTable.relateToOperator("rayQueryGetIntersectionTypeEXT", EOpRayQueryGetIntersectionType);
+ symbolTable.relateToOperator("rayQueryGetRayTMinEXT", EOpRayQueryGetRayTMin);
+ symbolTable.relateToOperator("rayQueryGetRayFlagsEXT", EOpRayQueryGetRayFlags);
+ symbolTable.relateToOperator("rayQueryGetIntersectionTEXT", EOpRayQueryGetIntersectionT);
+ symbolTable.relateToOperator("rayQueryGetIntersectionInstanceCustomIndexEXT", EOpRayQueryGetIntersectionInstanceCustomIndex);
+ symbolTable.relateToOperator("rayQueryGetIntersectionInstanceIdEXT", EOpRayQueryGetIntersectionInstanceId);
+ symbolTable.relateToOperator("rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT", EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset);
+ symbolTable.relateToOperator("rayQueryGetIntersectionGeometryIndexEXT", EOpRayQueryGetIntersectionGeometryIndex);
+ symbolTable.relateToOperator("rayQueryGetIntersectionPrimitiveIndexEXT", EOpRayQueryGetIntersectionPrimitiveIndex);
+ symbolTable.relateToOperator("rayQueryGetIntersectionBarycentricsEXT", EOpRayQueryGetIntersectionBarycentrics);
+ symbolTable.relateToOperator("rayQueryGetIntersectionFrontFaceEXT", EOpRayQueryGetIntersectionFrontFace);
+ symbolTable.relateToOperator("rayQueryGetIntersectionCandidateAABBOpaqueEXT", EOpRayQueryGetIntersectionCandidateAABBOpaque);
+ symbolTable.relateToOperator("rayQueryGetIntersectionObjectRayDirectionEXT", EOpRayQueryGetIntersectionObjectRayDirection);
+ symbolTable.relateToOperator("rayQueryGetIntersectionObjectRayOriginEXT", EOpRayQueryGetIntersectionObjectRayOrigin);
+ symbolTable.relateToOperator("rayQueryGetWorldRayDirectionEXT", EOpRayQueryGetWorldRayDirection);
+ symbolTable.relateToOperator("rayQueryGetWorldRayOriginEXT", EOpRayQueryGetWorldRayOrigin);
+ symbolTable.relateToOperator("rayQueryGetIntersectionObjectToWorldEXT", EOpRayQueryGetIntersectionObjectToWorld);
+ symbolTable.relateToOperator("rayQueryGetIntersectionWorldToObjectEXT", EOpRayQueryGetIntersectionWorldToObject);
+ }
+
symbolTable.relateToOperator("interpolateAtCentroid", EOpInterpolateAtCentroid);
symbolTable.relateToOperator("interpolateAtSample", EOpInterpolateAtSample);
symbolTable.relateToOperator("interpolateAtOffset", EOpInterpolateAtOffset);
@@ -8481,8 +9029,6 @@
break;
case EShLangCompute:
- symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared);
- symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier);
symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared);
if ((profile != EEsProfile && version >= 450) ||
(profile == EEsProfile && version >= 320)) {
@@ -8501,27 +9047,34 @@
symbolTable.relateToOperator("coopMatMulAddNV", EOpCooperativeMatrixMulAdd);
break;
- case EShLangRayGenNV:
- case EShLangClosestHitNV:
- case EShLangMissNV:
+ case EShLangRayGen:
+ case EShLangClosestHit:
+ case EShLangMiss:
if (profile != EEsProfile && version >= 460) {
- symbolTable.relateToOperator("traceNV", EOpTraceNV);
- symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV);
+ symbolTable.relateToOperator("traceNV", EOpTrace);
+ symbolTable.relateToOperator("traceRayEXT", EOpTrace);
+ symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallable);
+ symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallable);
}
break;
- case EShLangIntersectNV:
- if (profile != EEsProfile && version >= 460)
- symbolTable.relateToOperator("reportIntersectionNV", EOpReportIntersectionNV);
- break;
- case EShLangAnyHitNV:
+ case EShLangIntersect:
if (profile != EEsProfile && version >= 460) {
- symbolTable.relateToOperator("ignoreIntersectionNV", EOpIgnoreIntersectionNV);
- symbolTable.relateToOperator("terminateRayNV", EOpTerminateRayNV);
+ symbolTable.relateToOperator("reportIntersectionNV", EOpReportIntersection);
+ symbolTable.relateToOperator("reportIntersectionEXT", EOpReportIntersection);
+ }
+ break;
+ case EShLangAnyHit:
+ if (profile != EEsProfile && version >= 460) {
+ symbolTable.relateToOperator("ignoreIntersectionNV", EOpIgnoreIntersection);
+ symbolTable.relateToOperator("ignoreIntersectionEXT", EOpIgnoreIntersection);
+ symbolTable.relateToOperator("terminateRayNV", EOpTerminateRay);
+ symbolTable.relateToOperator("terminateRayEXT", EOpTerminateRay);
}
break;
- case EShLangCallableNV:
+ case EShLangCallable:
if (profile != EEsProfile && version >= 460) {
- symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV);
+ symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallable);
+ symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallable);
}
break;
case EShLangMeshNV:
@@ -8578,6 +9131,16 @@
symbolTable.insert(*new TVariable(NewPoolTString("gl_FragData"), fragData));
SpecialQualifier("gl_FragData", EvqFragColor, EbvFragData, symbolTable);
}
+
+ // GL_EXT_blend_func_extended
+ if (profile == EEsProfile && version >= 100) {
+ symbolTable.setVariableExtensions("gl_MaxDualSourceDrawBuffersEXT", 1, &E_GL_EXT_blend_func_extended);
+ symbolTable.setVariableExtensions("gl_SecondaryFragColorEXT", 1, &E_GL_EXT_blend_func_extended);
+ symbolTable.setVariableExtensions("gl_SecondaryFragDataEXT", 1, &E_GL_EXT_blend_func_extended);
+ SpecialQualifier("gl_SecondaryFragColorEXT", EvqVaryingOut, EbvSecondaryFragColorEXT, symbolTable);
+ SpecialQualifier("gl_SecondaryFragDataEXT", EvqVaryingOut, EbvSecondaryFragDataEXT, symbolTable);
+ }
+
break;
case EShLangTessControl:
diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp
old mode 100644
new mode 100755
index 93d41f7..d7049d8
--- a/glslang/MachineIndependent/Intermediate.cpp
+++ b/glslang/MachineIndependent/Intermediate.cpp
@@ -1,7 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2015 LunarG, Inc.
-// Copyright (C) 2015-2018 Google, Inc.
+// Copyright (C) 2015-2020 Google, Inc.
// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
@@ -538,7 +538,7 @@
return false;
case EbtAtomicUint:
case EbtSampler:
- case EbtAccStructNV:
+ case EbtAccStruct:
// opaque types can be passed to functions
if (op == EOpFunction)
break;
@@ -562,6 +562,237 @@
return true;
}
+bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& newOp) const
+{
+ switch (dst) {
+#ifndef GLSLANG_WEB
+ case EbtDouble:
+ switch (src) {
+ case EbtUint: newOp = EOpConvUintToDouble; break;
+ case EbtBool: newOp = EOpConvBoolToDouble; break;
+ case EbtFloat: newOp = EOpConvFloatToDouble; break;
+ case EbtInt: newOp = EOpConvIntToDouble; break;
+ case EbtInt8: newOp = EOpConvInt8ToDouble; break;
+ case EbtUint8: newOp = EOpConvUint8ToDouble; break;
+ case EbtInt16: newOp = EOpConvInt16ToDouble; break;
+ case EbtUint16: newOp = EOpConvUint16ToDouble; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToDouble; break;
+ case EbtInt64: newOp = EOpConvInt64ToDouble; break;
+ case EbtUint64: newOp = EOpConvUint64ToDouble; break;
+ default:
+ return false;
+ }
+ break;
+#endif
+ case EbtFloat:
+ switch (src) {
+ case EbtInt: newOp = EOpConvIntToFloat; break;
+ case EbtUint: newOp = EOpConvUintToFloat; break;
+ case EbtBool: newOp = EOpConvBoolToFloat; break;
+#ifndef GLSLANG_WEB
+ case EbtDouble: newOp = EOpConvDoubleToFloat; break;
+ case EbtInt8: newOp = EOpConvInt8ToFloat; break;
+ case EbtUint8: newOp = EOpConvUint8ToFloat; break;
+ case EbtInt16: newOp = EOpConvInt16ToFloat; break;
+ case EbtUint16: newOp = EOpConvUint16ToFloat; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToFloat; break;
+ case EbtInt64: newOp = EOpConvInt64ToFloat; break;
+ case EbtUint64: newOp = EOpConvUint64ToFloat; break;
+#endif
+ default:
+ return false;
+ }
+ break;
+#ifndef GLSLANG_WEB
+ case EbtFloat16:
+ switch (src) {
+ case EbtInt8: newOp = EOpConvInt8ToFloat16; break;
+ case EbtUint8: newOp = EOpConvUint8ToFloat16; break;
+ case EbtInt16: newOp = EOpConvInt16ToFloat16; break;
+ case EbtUint16: newOp = EOpConvUint16ToFloat16; break;
+ case EbtInt: newOp = EOpConvIntToFloat16; break;
+ case EbtUint: newOp = EOpConvUintToFloat16; break;
+ case EbtBool: newOp = EOpConvBoolToFloat16; break;
+ case EbtFloat: newOp = EOpConvFloatToFloat16; break;
+ case EbtDouble: newOp = EOpConvDoubleToFloat16; break;
+ case EbtInt64: newOp = EOpConvInt64ToFloat16; break;
+ case EbtUint64: newOp = EOpConvUint64ToFloat16; break;
+ default:
+ return false;
+ }
+ break;
+#endif
+ case EbtBool:
+ switch (src) {
+ case EbtInt: newOp = EOpConvIntToBool; break;
+ case EbtUint: newOp = EOpConvUintToBool; break;
+ case EbtFloat: newOp = EOpConvFloatToBool; break;
+#ifndef GLSLANG_WEB
+ case EbtDouble: newOp = EOpConvDoubleToBool; break;
+ case EbtInt8: newOp = EOpConvInt8ToBool; break;
+ case EbtUint8: newOp = EOpConvUint8ToBool; break;
+ case EbtInt16: newOp = EOpConvInt16ToBool; break;
+ case EbtUint16: newOp = EOpConvUint16ToBool; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToBool; break;
+ case EbtInt64: newOp = EOpConvInt64ToBool; break;
+ case EbtUint64: newOp = EOpConvUint64ToBool; break;
+#endif
+ default:
+ return false;
+ }
+ break;
+#ifndef GLSLANG_WEB
+ case EbtInt8:
+ switch (src) {
+ case EbtUint8: newOp = EOpConvUint8ToInt8; break;
+ case EbtInt16: newOp = EOpConvInt16ToInt8; break;
+ case EbtUint16: newOp = EOpConvUint16ToInt8; break;
+ case EbtInt: newOp = EOpConvIntToInt8; break;
+ case EbtUint: newOp = EOpConvUintToInt8; break;
+ case EbtInt64: newOp = EOpConvInt64ToInt8; break;
+ case EbtUint64: newOp = EOpConvUint64ToInt8; break;
+ case EbtBool: newOp = EOpConvBoolToInt8; break;
+ case EbtFloat: newOp = EOpConvFloatToInt8; break;
+ case EbtDouble: newOp = EOpConvDoubleToInt8; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToInt8; break;
+ default:
+ return false;
+ }
+ break;
+ case EbtUint8:
+ switch (src) {
+ case EbtInt8: newOp = EOpConvInt8ToUint8; break;
+ case EbtInt16: newOp = EOpConvInt16ToUint8; break;
+ case EbtUint16: newOp = EOpConvUint16ToUint8; break;
+ case EbtInt: newOp = EOpConvIntToUint8; break;
+ case EbtUint: newOp = EOpConvUintToUint8; break;
+ case EbtInt64: newOp = EOpConvInt64ToUint8; break;
+ case EbtUint64: newOp = EOpConvUint64ToUint8; break;
+ case EbtBool: newOp = EOpConvBoolToUint8; break;
+ case EbtFloat: newOp = EOpConvFloatToUint8; break;
+ case EbtDouble: newOp = EOpConvDoubleToUint8; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToUint8; break;
+ default:
+ return false;
+ }
+ break;
+
+ case EbtInt16:
+ switch (src) {
+ case EbtUint8: newOp = EOpConvUint8ToInt16; break;
+ case EbtInt8: newOp = EOpConvInt8ToInt16; break;
+ case EbtUint16: newOp = EOpConvUint16ToInt16; break;
+ case EbtInt: newOp = EOpConvIntToInt16; break;
+ case EbtUint: newOp = EOpConvUintToInt16; break;
+ case EbtInt64: newOp = EOpConvInt64ToInt16; break;
+ case EbtUint64: newOp = EOpConvUint64ToInt16; break;
+ case EbtBool: newOp = EOpConvBoolToInt16; break;
+ case EbtFloat: newOp = EOpConvFloatToInt16; break;
+ case EbtDouble: newOp = EOpConvDoubleToInt16; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToInt16; break;
+ default:
+ return false;
+ }
+ break;
+ case EbtUint16:
+ switch (src) {
+ case EbtInt8: newOp = EOpConvInt8ToUint16; break;
+ case EbtUint8: newOp = EOpConvUint8ToUint16; break;
+ case EbtInt16: newOp = EOpConvInt16ToUint16; break;
+ case EbtInt: newOp = EOpConvIntToUint16; break;
+ case EbtUint: newOp = EOpConvUintToUint16; break;
+ case EbtInt64: newOp = EOpConvInt64ToUint16; break;
+ case EbtUint64: newOp = EOpConvUint64ToUint16; break;
+ case EbtBool: newOp = EOpConvBoolToUint16; break;
+ case EbtFloat: newOp = EOpConvFloatToUint16; break;
+ case EbtDouble: newOp = EOpConvDoubleToUint16; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToUint16; break;
+ default:
+ return false;
+ }
+ break;
+#endif
+
+ case EbtInt:
+ switch (src) {
+ case EbtUint: newOp = EOpConvUintToInt; break;
+ case EbtBool: newOp = EOpConvBoolToInt; break;
+ case EbtFloat: newOp = EOpConvFloatToInt; break;
+#ifndef GLSLANG_WEB
+ case EbtInt8: newOp = EOpConvInt8ToInt; break;
+ case EbtUint8: newOp = EOpConvUint8ToInt; break;
+ case EbtInt16: newOp = EOpConvInt16ToInt; break;
+ case EbtUint16: newOp = EOpConvUint16ToInt; break;
+ case EbtDouble: newOp = EOpConvDoubleToInt; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToInt; break;
+ case EbtInt64: newOp = EOpConvInt64ToInt; break;
+ case EbtUint64: newOp = EOpConvUint64ToInt; break;
+#endif
+ default:
+ return false;
+ }
+ break;
+ case EbtUint:
+ switch (src) {
+ case EbtInt: newOp = EOpConvIntToUint; break;
+ case EbtBool: newOp = EOpConvBoolToUint; break;
+ case EbtFloat: newOp = EOpConvFloatToUint; break;
+#ifndef GLSLANG_WEB
+ case EbtInt8: newOp = EOpConvInt8ToUint; break;
+ case EbtUint8: newOp = EOpConvUint8ToUint; break;
+ case EbtInt16: newOp = EOpConvInt16ToUint; break;
+ case EbtUint16: newOp = EOpConvUint16ToUint; break;
+ case EbtDouble: newOp = EOpConvDoubleToUint; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToUint; break;
+ case EbtInt64: newOp = EOpConvInt64ToUint; break;
+ case EbtUint64: newOp = EOpConvUint64ToUint; break;
+#endif
+ default:
+ return false;
+ }
+ break;
+#ifndef GLSLANG_WEB
+ case EbtInt64:
+ switch (src) {
+ case EbtInt8: newOp = EOpConvInt8ToInt64; break;
+ case EbtUint8: newOp = EOpConvUint8ToInt64; break;
+ case EbtInt16: newOp = EOpConvInt16ToInt64; break;
+ case EbtUint16: newOp = EOpConvUint16ToInt64; break;
+ case EbtInt: newOp = EOpConvIntToInt64; break;
+ case EbtUint: newOp = EOpConvUintToInt64; break;
+ case EbtBool: newOp = EOpConvBoolToInt64; break;
+ case EbtFloat: newOp = EOpConvFloatToInt64; break;
+ case EbtDouble: newOp = EOpConvDoubleToInt64; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToInt64; break;
+ case EbtUint64: newOp = EOpConvUint64ToInt64; break;
+ default:
+ return false;
+ }
+ break;
+ case EbtUint64:
+ switch (src) {
+ case EbtInt8: newOp = EOpConvInt8ToUint64; break;
+ case EbtUint8: newOp = EOpConvUint8ToUint64; break;
+ case EbtInt16: newOp = EOpConvInt16ToUint64; break;
+ case EbtUint16: newOp = EOpConvUint16ToUint64; break;
+ case EbtInt: newOp = EOpConvIntToUint64; break;
+ case EbtUint: newOp = EOpConvUintToUint64; break;
+ case EbtBool: newOp = EOpConvBoolToUint64; break;
+ case EbtFloat: newOp = EOpConvFloatToUint64; break;
+ case EbtDouble: newOp = EOpConvDoubleToUint64; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToUint64; break;
+ case EbtInt64: newOp = EOpConvInt64ToUint64; break;
+ default:
+ return false;
+ }
+ break;
+#endif
+ default:
+ return false;
+ }
+ return true;
+}
+
// This is 'mechanism' here, it does any conversion told.
// It is about basic type, not about shape.
// The policy comes from the shader or the calling code.
@@ -570,10 +801,8 @@
//
// Add a new newNode for the conversion.
//
- TIntermUnary* newNode = nullptr;
- TOperator newOp = EOpNull;
-
+#ifndef GLSLANG_WEB
bool convertToIntTypes = (convertTo == EbtInt8 || convertTo == EbtUint8 ||
convertTo == EbtInt16 || convertTo == EbtUint16 ||
convertTo == EbtInt || convertTo == EbtUint ||
@@ -607,231 +836,11 @@
(node->getBasicType() == EbtFloat16 && ! convertToFloatTypes))
return nullptr;
}
-
- switch (convertTo) {
-#ifndef GLSLANG_WEB
- case EbtDouble:
- switch (node->getBasicType()) {
- case EbtUint: newOp = EOpConvUintToDouble; break;
- case EbtBool: newOp = EOpConvBoolToDouble; break;
- case EbtFloat: newOp = EOpConvFloatToDouble; break;
- case EbtInt: newOp = EOpConvIntToDouble; break;
- case EbtInt8: newOp = EOpConvInt8ToDouble; break;
- case EbtUint8: newOp = EOpConvUint8ToDouble; break;
- case EbtInt16: newOp = EOpConvInt16ToDouble; break;
- case EbtUint16: newOp = EOpConvUint16ToDouble; break;
- case EbtFloat16: newOp = EOpConvFloat16ToDouble; break;
- case EbtInt64: newOp = EOpConvInt64ToDouble; break;
- case EbtUint64: newOp = EOpConvUint64ToDouble; break;
- default:
- return nullptr;
- }
- break;
-#endif
- case EbtFloat:
- switch (node->getBasicType()) {
- case EbtInt: newOp = EOpConvIntToFloat; break;
- case EbtUint: newOp = EOpConvUintToFloat; break;
- case EbtBool: newOp = EOpConvBoolToFloat; break;
-#ifndef GLSLANG_WEB
- case EbtDouble: newOp = EOpConvDoubleToFloat; break;
- case EbtInt8: newOp = EOpConvInt8ToFloat; break;
- case EbtUint8: newOp = EOpConvUint8ToFloat; break;
- case EbtInt16: newOp = EOpConvInt16ToFloat; break;
- case EbtUint16: newOp = EOpConvUint16ToFloat; break;
- case EbtFloat16: newOp = EOpConvFloat16ToFloat; break;
- case EbtInt64: newOp = EOpConvInt64ToFloat; break;
- case EbtUint64: newOp = EOpConvUint64ToFloat; break;
-#endif
- default:
- return nullptr;
- }
- break;
-#ifndef GLSLANG_WEB
- case EbtFloat16:
- switch (node->getBasicType()) {
- case EbtInt8: newOp = EOpConvInt8ToFloat16; break;
- case EbtUint8: newOp = EOpConvUint8ToFloat16; break;
- case EbtInt16: newOp = EOpConvInt16ToFloat16; break;
- case EbtUint16: newOp = EOpConvUint16ToFloat16; break;
- case EbtInt: newOp = EOpConvIntToFloat16; break;
- case EbtUint: newOp = EOpConvUintToFloat16; break;
- case EbtBool: newOp = EOpConvBoolToFloat16; break;
- case EbtFloat: newOp = EOpConvFloatToFloat16; break;
- case EbtDouble: newOp = EOpConvDoubleToFloat16; break;
- case EbtInt64: newOp = EOpConvInt64ToFloat16; break;
- case EbtUint64: newOp = EOpConvUint64ToFloat16; break;
- default:
- return nullptr;
- }
- break;
-#endif
- case EbtBool:
- switch (node->getBasicType()) {
- case EbtInt: newOp = EOpConvIntToBool; break;
- case EbtUint: newOp = EOpConvUintToBool; break;
- case EbtFloat: newOp = EOpConvFloatToBool; break;
-#ifndef GLSLANG_WEB
- case EbtDouble: newOp = EOpConvDoubleToBool; break;
- case EbtInt8: newOp = EOpConvInt8ToBool; break;
- case EbtUint8: newOp = EOpConvUint8ToBool; break;
- case EbtInt16: newOp = EOpConvInt16ToBool; break;
- case EbtUint16: newOp = EOpConvUint16ToBool; break;
- case EbtFloat16: newOp = EOpConvFloat16ToBool; break;
- case EbtInt64: newOp = EOpConvInt64ToBool; break;
- case EbtUint64: newOp = EOpConvUint64ToBool; break;
-#endif
- default:
- return nullptr;
- }
- break;
-#ifndef GLSLANG_WEB
- case EbtInt8:
- switch (node->getBasicType()) {
- case EbtUint8: newOp = EOpConvUint8ToInt8; break;
- case EbtInt16: newOp = EOpConvInt16ToInt8; break;
- case EbtUint16: newOp = EOpConvUint16ToInt8; break;
- case EbtInt: newOp = EOpConvIntToInt8; break;
- case EbtUint: newOp = EOpConvUintToInt8; break;
- case EbtInt64: newOp = EOpConvInt64ToInt8; break;
- case EbtUint64: newOp = EOpConvUint64ToInt8; break;
- case EbtBool: newOp = EOpConvBoolToInt8; break;
- case EbtFloat: newOp = EOpConvFloatToInt8; break;
- case EbtDouble: newOp = EOpConvDoubleToInt8; break;
- case EbtFloat16: newOp = EOpConvFloat16ToInt8; break;
- default:
- return nullptr;
- }
- break;
- case EbtUint8:
- switch (node->getBasicType()) {
- case EbtInt8: newOp = EOpConvInt8ToUint8; break;
- case EbtInt16: newOp = EOpConvInt16ToUint8; break;
- case EbtUint16: newOp = EOpConvUint16ToUint8; break;
- case EbtInt: newOp = EOpConvIntToUint8; break;
- case EbtUint: newOp = EOpConvUintToUint8; break;
- case EbtInt64: newOp = EOpConvInt64ToUint8; break;
- case EbtUint64: newOp = EOpConvUint64ToUint8; break;
- case EbtBool: newOp = EOpConvBoolToUint8; break;
- case EbtFloat: newOp = EOpConvFloatToUint8; break;
- case EbtDouble: newOp = EOpConvDoubleToUint8; break;
- case EbtFloat16: newOp = EOpConvFloat16ToUint8; break;
- default:
- return nullptr;
- }
- break;
-
- case EbtInt16:
- switch (node->getBasicType()) {
- case EbtUint8: newOp = EOpConvUint8ToInt16; break;
- case EbtInt8: newOp = EOpConvInt8ToInt16; break;
- case EbtUint16: newOp = EOpConvUint16ToInt16; break;
- case EbtInt: newOp = EOpConvIntToInt16; break;
- case EbtUint: newOp = EOpConvUintToInt16; break;
- case EbtInt64: newOp = EOpConvInt64ToInt16; break;
- case EbtUint64: newOp = EOpConvUint64ToInt16; break;
- case EbtBool: newOp = EOpConvBoolToInt16; break;
- case EbtFloat: newOp = EOpConvFloatToInt16; break;
- case EbtDouble: newOp = EOpConvDoubleToInt16; break;
- case EbtFloat16: newOp = EOpConvFloat16ToInt16; break;
- default:
- return nullptr;
- }
- break;
- case EbtUint16:
- switch (node->getBasicType()) {
- case EbtInt8: newOp = EOpConvInt8ToUint16; break;
- case EbtUint8: newOp = EOpConvUint8ToUint16; break;
- case EbtInt16: newOp = EOpConvInt16ToUint16; break;
- case EbtInt: newOp = EOpConvIntToUint16; break;
- case EbtUint: newOp = EOpConvUintToUint16; break;
- case EbtInt64: newOp = EOpConvInt64ToUint16; break;
- case EbtUint64: newOp = EOpConvUint64ToUint16; break;
- case EbtBool: newOp = EOpConvBoolToUint16; break;
- case EbtFloat: newOp = EOpConvFloatToUint16; break;
- case EbtDouble: newOp = EOpConvDoubleToUint16; break;
- case EbtFloat16: newOp = EOpConvFloat16ToUint16; break;
- default:
- return nullptr;
- }
- break;
#endif
- case EbtInt:
- switch (node->getBasicType()) {
- case EbtUint: newOp = EOpConvUintToInt; break;
- case EbtBool: newOp = EOpConvBoolToInt; break;
- case EbtFloat: newOp = EOpConvFloatToInt; break;
-#ifndef GLSLANG_WEB
- case EbtInt8: newOp = EOpConvInt8ToInt; break;
- case EbtUint8: newOp = EOpConvUint8ToInt; break;
- case EbtInt16: newOp = EOpConvInt16ToInt; break;
- case EbtUint16: newOp = EOpConvUint16ToInt; break;
- case EbtDouble: newOp = EOpConvDoubleToInt; break;
- case EbtFloat16: newOp = EOpConvFloat16ToInt; break;
- case EbtInt64: newOp = EOpConvInt64ToInt; break;
- case EbtUint64: newOp = EOpConvUint64ToInt; break;
-#endif
- default:
- return nullptr;
- }
- break;
- case EbtUint:
- switch (node->getBasicType()) {
- case EbtInt: newOp = EOpConvIntToUint; break;
- case EbtBool: newOp = EOpConvBoolToUint; break;
- case EbtFloat: newOp = EOpConvFloatToUint; break;
-#ifndef GLSLANG_WEB
- case EbtInt8: newOp = EOpConvInt8ToUint; break;
- case EbtUint8: newOp = EOpConvUint8ToUint; break;
- case EbtInt16: newOp = EOpConvInt16ToUint; break;
- case EbtUint16: newOp = EOpConvUint16ToUint; break;
- case EbtDouble: newOp = EOpConvDoubleToUint; break;
- case EbtFloat16: newOp = EOpConvFloat16ToUint; break;
- case EbtInt64: newOp = EOpConvInt64ToUint; break;
- case EbtUint64: newOp = EOpConvUint64ToUint; break;
-#endif
- default:
- return nullptr;
- }
- break;
-#ifndef GLSLANG_WEB
- case EbtInt64:
- switch (node->getBasicType()) {
- case EbtInt8: newOp = EOpConvInt8ToInt64; break;
- case EbtUint8: newOp = EOpConvUint8ToInt64; break;
- case EbtInt16: newOp = EOpConvInt16ToInt64; break;
- case EbtUint16: newOp = EOpConvUint16ToInt64; break;
- case EbtInt: newOp = EOpConvIntToInt64; break;
- case EbtUint: newOp = EOpConvUintToInt64; break;
- case EbtBool: newOp = EOpConvBoolToInt64; break;
- case EbtFloat: newOp = EOpConvFloatToInt64; break;
- case EbtDouble: newOp = EOpConvDoubleToInt64; break;
- case EbtFloat16: newOp = EOpConvFloat16ToInt64; break;
- case EbtUint64: newOp = EOpConvUint64ToInt64; break;
- default:
- return nullptr;
- }
- break;
- case EbtUint64:
- switch (node->getBasicType()) {
- case EbtInt8: newOp = EOpConvInt8ToUint64; break;
- case EbtUint8: newOp = EOpConvUint8ToUint64; break;
- case EbtInt16: newOp = EOpConvInt16ToUint64; break;
- case EbtUint16: newOp = EOpConvUint16ToUint64; break;
- case EbtInt: newOp = EOpConvIntToUint64; break;
- case EbtUint: newOp = EOpConvUintToUint64; break;
- case EbtBool: newOp = EOpConvBoolToUint64; break;
- case EbtFloat: newOp = EOpConvFloatToUint64; break;
- case EbtDouble: newOp = EOpConvDoubleToUint64; break;
- case EbtFloat16: newOp = EOpConvFloat16ToUint64; break;
- case EbtInt64: newOp = EOpConvInt64ToUint64; break;
- default:
- return nullptr;
- }
- break;
-#endif
- default:
+ TIntermUnary* newNode = nullptr;
+ TOperator newOp = EOpNull;
+ if (!buildConvertOp(convertTo, node->getBasicType(), newOp)) {
return nullptr;
}
@@ -839,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;
@@ -1117,6 +1129,7 @@
case EOpLit:
case EOpMax:
case EOpMin:
+ case EOpMod:
case EOpModf:
case EOpPow:
case EOpReflect:
@@ -1607,7 +1620,7 @@
//
bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperator op) const
{
- if (isEsProfile() || version == 110)
+ if ((isEsProfile() && version < 310 ) || version == 110)
return false;
if (from == to)
@@ -1654,7 +1667,7 @@
extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float16) ||
extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float32) ||
extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float64);
-
+
if (explicitTypesEnabled) {
// integral promotions
if (isIntegralPromotion(from, to)) {
@@ -1686,6 +1699,30 @@
if (from == EbtBool && (to == EbtInt || to == EbtUint || to == EbtFloat))
return true;
}
+ } else if (isEsProfile()) {
+ switch (to) {
+ case EbtFloat:
+ switch (from) {
+ case EbtInt:
+ case EbtUint:
+ return extensionRequested(E_GL_EXT_shader_implicit_conversions);
+ case EbtFloat:
+ return true;
+ default:
+ return false;
+ }
+ case EbtUint:
+ switch (from) {
+ case EbtInt:
+ return extensionRequested(E_GL_EXT_shader_implicit_conversions);
+ case EbtUint:
+ return true;
+ default:
+ return false;
+ }
+ default:
+ return false;
+ }
} else {
switch (to) {
case EbtDouble:
@@ -1718,15 +1755,14 @@
return extensionRequested(E_GL_AMD_gpu_shader_int16);
case EbtFloat16:
return
- extensionRequested(E_GL_AMD_gpu_shader_half_float) ||
- getSource() == EShSourceHlsl;
+ extensionRequested(E_GL_AMD_gpu_shader_half_float) || getSource() == EShSourceHlsl;
default:
return false;
}
case EbtUint:
switch (from) {
case EbtInt:
- return version >= 400 || getSource() == EShSourceHlsl;
+ return version >= 400 || getSource() == EShSourceHlsl;
case EbtUint:
return true;
case EbtBool:
@@ -1918,7 +1954,9 @@
TBasicType res0 = EbtNumTypes;
TBasicType res1 = EbtNumTypes;
- if (isEsProfile() || version == 110)
+ if ((isEsProfile() &&
+ (version < 310 || !extensionRequested(E_GL_EXT_shader_implicit_conversions))) ||
+ version == 110)
return std::make_tuple(res0, res1);
if (getSource() == EShSourceHlsl) {
@@ -2761,6 +2799,9 @@
case EShTexSampTransUpgradeTextureRemoveSampler:
performTextureUpgradeAndSamplerRemovalTransformation(root);
break;
+ case EShTexSampTransCount:
+ assert(0);
+ break;
}
#endif
@@ -3221,10 +3262,17 @@
return false;
break;
-
default:
- if (operand->getBasicType() != EbtFloat)
+ // HLSL uses this path for initial function signature finding for built-ins
+ // taking a single argument, which generally don't participate in
+ // operator-based type promotion (type conversion will occur later).
+ // For now, scalar argument cases are relying on the setType() call below.
+ if (getSource() == EShSourceHlsl)
+ break;
+ // GLSL only allows integer arguments for the cases identified above in the
+ // case statements.
+ if (operand->getBasicType() != EbtFloat)
return false;
}
diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp
index 282ecca..b464009 100644
--- a/glslang/MachineIndependent/ParseContextBase.cpp
+++ b/glslang/MachineIndependent/ParseContextBase.cpp
@@ -157,11 +157,11 @@
case EvqBuffer:
if (node->getQualifier().isReadOnly())
message = "can't modify a readonly buffer";
- if (node->getQualifier().isShaderRecordNV())
+ if (node->getQualifier().isShaderRecord())
message = "can't modify a shaderrecordnv qualified buffer";
break;
- case EvqHitAttrNV:
- if (language != EShLangIntersectNV)
+ case EvqHitAttr:
+ if (language != EShLangIntersect)
message = "cannot modify hitAttributeNV in this stage";
break;
#endif
@@ -181,9 +181,12 @@
case EbtAtomicUint:
message = "can't modify an atomic_uint";
break;
- case EbtAccStructNV:
+ case EbtAccStruct:
message = "can't modify accelerationStructureNV";
break;
+ case EbtRayQuery:
+ message = "can't modify rayQueryEXT";
+ break;
#endif
default:
break;
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index b5ea803..117c164 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -2,7 +2,8 @@
// 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.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -427,8 +428,18 @@
#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());
+ if (base->getType().getReferentType()->containsUnsizedArray()) {
+ error(loc, "cannot index reference to buffer containing an unsized array", "", "");
+ result = nullptr;
+ } else {
+ result = intermediate.addBinaryMath(EOpAdd, base, index, loc);
+ if (result != nullptr)
+ result->setType(base->getType());
+ }
+ if (result == nullptr) {
+ error(loc, "cannot index buffer reference", "", "");
+ result = intermediate.addConstantUnion(0.0, EbtFloat, loc);
+ }
return result;
}
if (base->getAsSymbolNode() && isIoResizeArray(base->getType()))
@@ -821,50 +832,7 @@
TIntermTyped* result = base;
if ((base->isVector() || base->isScalar()) &&
(base->isFloatingDomain() || base->isIntegerDomain() || base->getBasicType() == EbtBool)) {
- if (base->isScalar()) {
- const char* dotFeature = "scalar swizzle";
- requireProfile(loc, ~EEsProfile, dotFeature);
- profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, dotFeature);
- }
-
- TSwizzleSelectors<TVectorSelector> selectors;
- parseSwizzleSelector(loc, field, base->getVectorSize(), selectors);
-
- 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");
- if (base->isVector() && selectors.size() != 1 && base->getType().contains8BitInt())
- requireInt8Arithmetic(loc, ".", "can't swizzle types containing (u)int8");
-
- if (base->isScalar()) {
- if (selectors.size() == 1)
- return result;
- else {
- TType type(base->getBasicType(), EvqTemporary, selectors.size());
- // Swizzle operations propagate specialization-constantness
- if (base->getQualifier().isSpecConstant())
- type.getQualifier().makeSpecConstant();
- return addConstructor(loc, base, type);
- }
- }
-
- if (base->getType().getQualifier().isFrontEndConstant())
- result = intermediate.foldSwizzle(base, selectors, loc);
- else {
- if (selectors.size() == 1) {
- TIntermTyped* index = intermediate.addConstantUnion(selectors[0], loc);
- result = intermediate.addIndex(EOpIndexDirect, base, index, loc);
- result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision));
- } else {
- TIntermTyped* index = intermediate.addSwizzle(selectors, loc);
- result = intermediate.addIndex(EOpVectorSwizzle, base, index, loc);
- result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision, selectors.size()));
- }
- // Swizzle operations propagate specialization-constantness
- if (base->getType().getQualifier().isSpecConstant())
- result->getWritableType().getQualifier().makeSpecConstant();
- }
+ result = handleDotSwizzle(loc, base, field);
} else if (base->isStruct() || base->isReference()) {
const TTypeList* fields = base->isReference() ?
base->getType().getReferentType()->getStruct() :
@@ -905,6 +873,60 @@
return result;
}
+//
+// Handle seeing a base.swizzle, a subset of base.identifier in the grammar.
+//
+TIntermTyped* TParseContext::handleDotSwizzle(const TSourceLoc& loc, TIntermTyped* base, const TString& field)
+{
+ TIntermTyped* result = base;
+ if (base->isScalar()) {
+ const char* dotFeature = "scalar swizzle";
+ requireProfile(loc, ~EEsProfile, dotFeature);
+ profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, dotFeature);
+ }
+
+ TSwizzleSelectors<TVectorSelector> selectors;
+ parseSwizzleSelector(loc, field, base->getVectorSize(), selectors);
+
+ 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");
+ if (base->isVector() && selectors.size() != 1 && base->getType().contains8BitInt())
+ requireInt8Arithmetic(loc, ".", "can't swizzle types containing (u)int8");
+
+ if (base->isScalar()) {
+ if (selectors.size() == 1)
+ return result;
+ else {
+ TType type(base->getBasicType(), EvqTemporary, selectors.size());
+ // Swizzle operations propagate specialization-constantness
+ if (base->getQualifier().isSpecConstant())
+ type.getQualifier().makeSpecConstant();
+ return addConstructor(loc, base, type);
+ }
+ }
+
+ if (base->getType().getQualifier().isFrontEndConstant())
+ result = intermediate.foldSwizzle(base, selectors, loc);
+ else {
+ if (selectors.size() == 1) {
+ TIntermTyped* index = intermediate.addConstantUnion(selectors[0], loc);
+ result = intermediate.addIndex(EOpIndexDirect, base, index, loc);
+ result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision));
+ } else {
+ TIntermTyped* index = intermediate.addSwizzle(selectors, loc);
+ result = intermediate.addIndex(EOpVectorSwizzle, base, index, loc);
+ result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision, selectors.size()));
+ }
+ // Swizzle operations propagate specialization-constantness
+ if (base->getType().getQualifier().isSpecConstant())
+ result->getWritableType().getQualifier().makeSpecConstant();
+ }
+
+ return result;
+}
+
void TParseContext::blockMemberExtensionCheck(const TSourceLoc& loc, const TIntermTyped* base, int member, const TString& memberName)
{
// a block that needs extension checking is either 'base', or if arrayed,
@@ -1160,6 +1182,7 @@
const TQualifier& argQualifier = argType.getQualifier();
if (argQualifier.isMemory() && (argType.containsOpaque() || argType.isReference())) {
const char* message = "argument cannot drop memory qualifier when passed to formal parameter";
+#ifndef GLSLANG_WEB
if (argQualifier.volatil && ! formalQualifier.volatil)
error(arguments->getLoc(), message, "volatile", "");
if (argQualifier.coherent && ! (formalQualifier.devicecoherent || formalQualifier.coherent))
@@ -1179,6 +1202,7 @@
// Don't check 'restrict', it is different than the rest:
// "...but only restrict can be taken away from a calling argument, by a formal parameter that
// lacks the restrict qualifier..."
+#endif
}
if (!builtIn && argQualifier.getFormat() != formalQualifier.getFormat()) {
// we have mismatched formats, which should only be allowed if writeonly
@@ -1351,6 +1375,9 @@
case EOpInterpolateAtSample:
numArgs = 1;
break;
+ case EOpDebugPrintf:
+ numArgs = 0;
+ break;
default:
break;
}
@@ -1670,6 +1697,9 @@
unsigned int semantics = 0, storageClassSemantics = 0;
unsigned int semantics2 = 0, storageClassSemantics2 = 0;
+ const TIntermTyped* arg0 = (*argp)[0]->getAsTyped();
+ const bool isMS = arg0->getBasicType() == EbtSampler && arg0->getType().getSampler().isMultiSample();
+
// Grab the semantics and storage class semantics from the operands, based on opcode
switch (callNode.getOp()) {
case EOpAtomicAdd:
@@ -1702,18 +1732,18 @@
case EOpImageAtomicXor:
case EOpImageAtomicExchange:
case EOpImageAtomicStore:
- storageClassSemantics = (*argp)[4]->getAsConstantUnion()->getConstArray()[0].getIConst();
- semantics = (*argp)[5]->getAsConstantUnion()->getConstArray()[0].getIConst();
+ storageClassSemantics = (*argp)[isMS ? 5 : 4]->getAsConstantUnion()->getConstArray()[0].getIConst();
+ semantics = (*argp)[isMS ? 6 : 5]->getAsConstantUnion()->getConstArray()[0].getIConst();
break;
case EOpImageAtomicLoad:
- storageClassSemantics = (*argp)[3]->getAsConstantUnion()->getConstArray()[0].getIConst();
- semantics = (*argp)[4]->getAsConstantUnion()->getConstArray()[0].getIConst();
+ storageClassSemantics = (*argp)[isMS ? 4 : 3]->getAsConstantUnion()->getConstArray()[0].getIConst();
+ semantics = (*argp)[isMS ? 5 : 4]->getAsConstantUnion()->getConstArray()[0].getIConst();
break;
case EOpImageAtomicCompSwap:
- storageClassSemantics = (*argp)[5]->getAsConstantUnion()->getConstArray()[0].getIConst();
- semantics = (*argp)[6]->getAsConstantUnion()->getConstArray()[0].getIConst();
- storageClassSemantics2 = (*argp)[7]->getAsConstantUnion()->getConstArray()[0].getIConst();
- semantics2 = (*argp)[8]->getAsConstantUnion()->getConstArray()[0].getIConst();
+ storageClassSemantics = (*argp)[isMS ? 6 : 5]->getAsConstantUnion()->getConstArray()[0].getIConst();
+ semantics = (*argp)[isMS ? 7 : 6]->getAsConstantUnion()->getConstArray()[0].getIConst();
+ storageClassSemantics2 = (*argp)[isMS ? 8 : 7]->getAsConstantUnion()->getConstArray()[0].getIConst();
+ semantics2 = (*argp)[isMS ? 9 : 8]->getAsConstantUnion()->getConstArray()[0].getIConst();
break;
case EOpBarrier:
@@ -2004,18 +2034,20 @@
if (arg > 0) {
#ifndef GLSLANG_WEB
- bool f16ShadowCompare = (*argp)[1]->getAsTyped()->getBasicType() == EbtFloat16 && arg0->getType().getSampler().shadow;
+ bool f16ShadowCompare = (*argp)[1]->getAsTyped()->getBasicType() == EbtFloat16 &&
+ arg0->getType().getSampler().shadow;
if (f16ShadowCompare)
++arg;
#endif
- if (! (*argp)[arg]->getAsConstantUnion())
+ if (! (*argp)[arg]->getAsTyped()->getQualifier().isConstant())
error(loc, "argument must be compile-time constant", "texel offset", "");
- else {
+ else if ((*argp)[arg]->getAsConstantUnion()) {
const TType& type = (*argp)[arg]->getAsTyped()->getType();
for (int c = 0; c < type.getVectorSize(); ++c) {
int offset = (*argp)[arg]->getAsConstantUnion()->getConstArray()[c].getIConst();
if (offset > resources.maxProgramTexelOffset || offset < resources.minProgramTexelOffset)
- error(loc, "value is out of range:", "texel offset", "[gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]");
+ error(loc, "value is out of range:", "texel offset",
+ "[gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]");
}
}
}
@@ -2024,15 +2056,32 @@
}
#ifndef GLSLANG_WEB
- case EOpTraceNV:
+ case EOpTrace:
if (!(*argp)[10]->getAsConstantUnion())
error(loc, "argument must be compile-time constant", "payload number", "");
break;
- case EOpExecuteCallableNV:
+ case EOpExecuteCallable:
if (!(*argp)[1]->getAsConstantUnion())
error(loc, "argument must be compile-time constant", "callable data number", "");
break;
+ case EOpRayQueryGetIntersectionType:
+ case EOpRayQueryGetIntersectionT:
+ case EOpRayQueryGetIntersectionInstanceCustomIndex:
+ case EOpRayQueryGetIntersectionInstanceId:
+ case EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset:
+ case EOpRayQueryGetIntersectionGeometryIndex:
+ case EOpRayQueryGetIntersectionPrimitiveIndex:
+ case EOpRayQueryGetIntersectionBarycentrics:
+ case EOpRayQueryGetIntersectionFrontFace:
+ case EOpRayQueryGetIntersectionObjectRayDirection:
+ case EOpRayQueryGetIntersectionObjectRayOrigin:
+ case EOpRayQueryGetIntersectionObjectToWorld:
+ case EOpRayQueryGetIntersectionWorldToObject:
+ if (!(*argp)[1]->getAsConstantUnion())
+ error(loc, "argument must be compile-time constant", "committed", "");
+ break;
+
case EOpTextureQuerySamples:
case EOpImageQuerySamples:
// GL_ARB_shader_texture_image_samples
@@ -2155,6 +2204,7 @@
break;
case EOpSubgroupBroadcast:
+ case EOpSubgroupQuadBroadcast:
if (spvVersion.spv < EShTargetSpv_1_5) {
// <id> must be an integral constant expression.
if ((*argp)[1]->getAsConstantUnion() == nullptr)
@@ -2169,6 +2219,28 @@
memorySemanticsCheck(loc, fnCandidate, callNode);
}
break;
+
+ case EOpMix:
+ if (profile == EEsProfile && version < 310) {
+ // Look for specific signatures
+ if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat &&
+ (*argp)[1]->getAsTyped()->getBasicType() != EbtFloat &&
+ (*argp)[2]->getAsTyped()->getBasicType() == EbtBool) {
+ requireExtensions(loc, 1, &E_GL_EXT_shader_integer_mix, "specific signature of builtin mix");
+ }
+ }
+
+ if (profile != EEsProfile && version < 450) {
+ if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat &&
+ (*argp)[0]->getAsTyped()->getBasicType() != EbtDouble &&
+ (*argp)[1]->getAsTyped()->getBasicType() != EbtFloat &&
+ (*argp)[1]->getAsTyped()->getBasicType() != EbtDouble &&
+ (*argp)[2]->getAsTyped()->getBasicType() == EbtBool) {
+ requireExtensions(loc, 1, &E_GL_EXT_shader_integer_mix, fnCandidate.getName().c_str());
+ }
+ }
+
+ break;
#endif
default:
@@ -2200,7 +2272,7 @@
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", "");
@@ -2666,14 +2738,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 (isEsProfile() && version <= 300)
- error(loc, "identifiers containing consecutive underscores (\"__\") are reserved, and an error if version <= 300", identifier.c_str(), "");
+ if (isEsProfile() && version < 300)
+ error(loc, "identifiers containing consecutive underscores (\"__\") are reserved, and an error if version < 300", identifier.c_str(), "");
else
warn(loc, "identifiers containing consecutive underscores (\"__\") are reserved", identifier.c_str(), "");
}
@@ -2685,7 +2757,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
@@ -2703,8 +2775,8 @@
strcmp(identifier, "__VERSION__") == 0))
ppError(loc, "predefined names can't be (un)defined:", op, identifier);
else {
- if (isEsProfile() && version <= 300)
- ppError(loc, "names containing consecutive underscores are reserved, and an error if version <= 300:", op, identifier);
+ if (isEsProfile() && version < 300)
+ ppError(loc, "names containing consecutive underscores are reserved, and an error if version < 300:", op, identifier);
else
ppWarn(loc, "names containing consecutive underscores are reserved:", op, identifier);
}
@@ -2778,6 +2850,7 @@
// 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());
@@ -2785,6 +2858,7 @@
type.getQualifier().nonUniform = true;
}
break;
+#endif
default:
type.shallowCopy(function.getType());
break;
@@ -2793,10 +2867,8 @@
// See if it's a matrix
bool constructingMatrix = false;
switch (op) {
-#ifndef GLSLANG_WEB
case EOpConstructTextureSampler:
return constructorTextureSamplerError(loc, function);
-#endif
case EOpConstructMat2x2:
case EOpConstructMat2x3:
case EOpConstructMat2x4:
@@ -3080,7 +3152,7 @@
error(loc, "constructor argument does not have a type", "constructor", "");
return true;
}
- if (op != EOpConstructStruct && typed->getBasicType() == EbtSampler) {
+ if (op != EOpConstructStruct && op != EOpConstructNonuniform && typed->getBasicType() == EbtSampler) {
error(loc, "cannot convert a sampler", "constructor", "");
return true;
}
@@ -3125,7 +3197,7 @@
if (function[0].type->getBasicType() != EbtSampler ||
! function[0].type->getSampler().isTexture() ||
function[0].type->isArray()) {
- error(loc, "sampler-constructor first argument must be a scalar textureXXX type", token, "");
+ error(loc, "sampler-constructor first argument must be a scalar *texture* type", token, "");
return true;
}
// simulate the first argument's impact on the result type, so it can be compared with the encapsulated operator!=()
@@ -3133,7 +3205,8 @@
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, "");
+ error(loc, "sampler-constructor first argument must be a *texture* type"
+ " matching the dimensionality and sampled type of the constructor", token, "");
return true;
}
@@ -3143,7 +3216,7 @@
if ( function[1].type->getBasicType() != EbtSampler ||
! function[1].type->getSampler().isPureSampler() ||
function[1].type->isArray()) {
- error(loc, "sampler-constructor second argument must be a scalar type 'sampler'", token, "");
+ error(loc, "sampler-constructor second argument must be a scalar sampler or samplerShadow", token, "");
return true;
}
@@ -3219,14 +3292,14 @@
error(loc, "atomic_uints can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str());
}
-void TParseContext::accStructNVCheck(const TSourceLoc& loc, const TType& type, const TString& identifier)
+void TParseContext::accStructCheck(const TSourceLoc& loc, const TType& type, const TString& identifier)
{
if (type.getQualifier().storage == EvqUniform)
return;
- if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtAccStructNV))
+ if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtAccStruct))
error(loc, "non-uniform struct contains an accelerationStructureNV:", type.getBasicTypeString().c_str(), identifier.c_str());
- else if (type.getBasicType() == EbtAccStructNV && type.getQualifier().storage != EvqUniform)
+ else if (type.getBasicType() == EbtAccStruct && type.getQualifier().storage != EvqUniform)
error(loc, "accelerationStructureNV can only be used in uniform variables or function parameters:",
type.getBasicTypeString().c_str(), identifier.c_str());
@@ -3324,6 +3397,11 @@
!qualifier.hasBufferReference())
error(loc, "buffers can be declared only as blocks", "buffer", "");
+ if (qualifier.storage != EvqVaryingIn && publicType.basicType == EbtDouble &&
+ extensionTurnedOn(E_GL_ARB_vertex_attrib_64bit) && language == EShLangVertex &&
+ version < 400) {
+ profileRequires(loc, ECoreProfile | ECompatibilityProfile, 410, E_GL_ARB_gpu_shader_fp64, "vertex-shader `double` type");
+ }
if (qualifier.storage != EvqVaryingIn && qualifier.storage != EvqVaryingOut)
return;
@@ -3374,7 +3452,7 @@
profileRequires(loc, ENoProfile, 150, nullptr, "vertex input arrays");
}
if (publicType.basicType == EbtDouble)
- profileRequires(loc, ~EEsProfile, 410, nullptr, "vertex-shader `double` type input");
+ profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_vertex_attrib_64bit, "vertex-shader `double` type input");
if (qualifier.isAuxiliary() || qualifier.isInterpolation() || qualifier.isMemory() || qualifier.invariant)
error(loc, "vertex input cannot be further qualified", "", "");
break;
@@ -3388,11 +3466,11 @@
requireProfile(loc, ~EEsProfile, "fragment-shader struct input containing an array");
}
break;
-#ifndef GLSLANG_WEB
case EShLangCompute:
if (! symbolTable.atBuiltInLevel())
error(loc, "global storage input qualifier cannot be used in a compute shader", "in", "");
break;
+#ifndef GLSLANG_WEB
case EShLangTessControl:
if (qualifier.patch)
error(loc, "can only use on output in tessellation-control shader", "patch", "");
@@ -3433,10 +3511,10 @@
error(loc, "cannot contain a double, int64, or uint64", GetStorageQualifierString(qualifier.storage), "");
break;
-#ifndef GLSLANG_WEB
case EShLangCompute:
error(loc, "global storage output qualifier cannot be used in a compute shader", "out", "");
break;
+#ifndef GLSLANG_WEB
case EShLangTessEvaluation:
if (qualifier.patch)
error(loc, "can only use on input in tessellation-evaluation shader", "patch", "");
@@ -3510,12 +3588,14 @@
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)) ||
- (src.workgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.subgroupcoherent)) ||
- (src.subgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent)))) {
- error(loc, "only one coherent/devicecoherent/queuefamilycoherent/workgroupcoherent/subgroupcoherent qualifier allowed", GetPrecisionQualifierString(src.precision), "");
+ if (!force && ((src.coherent && (dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) ||
+ (src.devicecoherent && (dst.coherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) ||
+ (src.queuefamilycoherent && (dst.coherent || dst.devicecoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) ||
+ (src.workgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.subgroupcoherent || dst.shadercallcoherent)) ||
+ (src.subgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.shadercallcoherent)) ||
+ (src.shadercallcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent)))) {
+ error(loc, "only one coherent/devicecoherent/queuefamilycoherent/workgroupcoherent/subgroupcoherent/shadercallcoherent qualifier allowed",
+ GetPrecisionQualifierString(src.precision), "");
}
#endif
// Layout qualifiers
@@ -3543,6 +3623,7 @@
MERGE_SINGLETON(queuefamilycoherent);
MERGE_SINGLETON(workgroupcoherent);
MERGE_SINGLETON(subgroupcoherent);
+ MERGE_SINGLETON(shadercallcoherent);
MERGE_SINGLETON(nonprivate);
MERGE_SINGLETON(volatil);
MERGE_SINGLETON(restrict);
@@ -3814,10 +3895,6 @@
// 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:
@@ -3852,6 +3929,10 @@
#endif
+ // last member of ssbo block exception:
+ if (qualifier.storage == EvqBuffer && lastMember)
+ return;
+
arraySizeRequiredCheck(loc, *arraySizes);
}
@@ -3980,7 +4061,7 @@
}
// check for additional things allowed by GL_EXT_nonuniform_qualifier
- if (base.getBasicType() == EbtSampler || base.getBasicType() == EbtAccStructNV ||
+ if (base.getBasicType() == EbtSampler || base.getBasicType() == EbtAccStruct || base.getBasicType() == EbtRayQuery ||
(base.getBasicType() == EbtBlock && base.getType().getQualifier().isUniformOrBuffer()))
requireExtensions(loc, 1, &E_GL_EXT_nonuniform_qualifier, "variable index");
else
@@ -4476,6 +4557,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;
@@ -4483,11 +4565,13 @@
type.getQualifier().queuefamilycoherent = qualifier.queuefamilycoherent;
type.getQualifier().workgroupcoherent = qualifier.workgroupcoherent;
type.getQualifier().subgroupcoherent = qualifier.subgroupcoherent;
+ type.getQualifier().shadercallcoherent = qualifier.shadercallcoherent;
type.getQualifier().nonprivate = qualifier.nonprivate;
type.getQualifier().readonly = qualifier.readonly;
type.getQualifier().writeonly = qualifier.writeonly;
type.getQualifier().restrict = qualifier.restrict;
}
+#endif
if (qualifier.isAuxiliary() ||
qualifier.isInterpolation())
@@ -4863,7 +4947,7 @@
#ifndef GLSLANG_WEB
if (id == TQualifier::getLayoutPackingString(ElpStd430)) {
requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, "std430");
- profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, nullptr, "std430");
+ profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_shader_storage_buffer_object, "std430");
profileRequires(loc, EEsProfile, 310, nullptr, "std430");
publicType.qualifier.layoutPacking = ElpStd430;
return;
@@ -5062,13 +5146,19 @@
return;
}
} else {
- if (language == EShLangRayGenNV || language == EShLangIntersectNV ||
- language == EShLangAnyHitNV || language == EShLangClosestHitNV ||
- language == EShLangMissNV || language == EShLangCallableNV) {
- if (id == "shaderrecordnv") {
- publicType.qualifier.layoutShaderRecordNV = true;
+ if (language == EShLangRayGen || language == EShLangIntersect ||
+ language == EShLangAnyHit || language == EShLangClosestHit ||
+ language == EShLangMiss || language == EShLangCallable) {
+ if (id == "shaderrecordnv" || id == "shaderrecordext") {
+ if (id == "shaderrecordnv") {
+ requireExtensions(loc, 1, &E_GL_NV_ray_tracing, "shader record NV");
+ } else {
+ requireExtensions(loc, 1, &E_GL_EXT_ray_tracing, "shader record EXT");
+ }
+ publicType.qualifier.layoutShaderRecord = true;
return;
}
+
}
}
if (language == EShLangCompute) {
@@ -5130,6 +5220,7 @@
profileRequires(loc, EEsProfile, 310, nullptr, feature);
}
publicType.qualifier.layoutOffset = value;
+ publicType.qualifier.explicitOffset = true;
if (nonLiteral)
error(loc, "needs a literal integer", "offset", "");
return;
@@ -5149,7 +5240,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(), "");
@@ -5293,11 +5385,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)
@@ -5310,9 +5401,6 @@
}
break;
- case EShLangTessEvaluation:
- break;
-
case EShLangGeometry:
if (id == "invocations") {
profileRequires(loc, ECompatibilityProfile | ECoreProfile, 400, nullptr, "invocations");
@@ -5345,10 +5433,10 @@
case EShLangFragment:
if (id == "index") {
- requireProfile(loc, ECompatibilityProfile | ECoreProfile, "index layout qualifier on fragment output");
+ requireProfile(loc, ECompatibilityProfile | ECoreProfile | EEsProfile, "index layout qualifier on fragment output");
const char* exts[2] = { E_GL_ARB_separate_shader_objects, E_GL_ARB_explicit_attrib_location };
profileRequires(loc, ECompatibilityProfile | ECoreProfile, 330, 2, exts, "index layout qualifier on fragment output");
-
+ profileRequires(loc, EEsProfile ,310, E_GL_EXT_blend_func_extended, "index layout qualifier on fragment output");
// "It is also a compile-time error if a fragment shader sets a layout index to less than 0 or greater than 1."
if (value < 0 || value > 1) {
value = 0;
@@ -5385,16 +5473,17 @@
case EShLangTaskNV:
// Fall through
+#endif
case EShLangCompute:
if (id.compare(0, 11, "local_size_") == 0) {
+#ifndef GLSLANG_WEB
if (language == EShLangMeshNV || language == EShLangTaskNV) {
requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "gl_WorkGroupSize");
- }
- else
- {
+ } 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) {
@@ -5432,12 +5521,11 @@
}
}
break;
+
default:
break;
}
-#endif // GLSLANG_WEB
-
error(loc, "there is no such layout identifier for this stage taking an assigned value", id.c_str(), "");
}
@@ -5512,8 +5600,8 @@
dst.layoutViewportRelative = true;
if (src.layoutSecondaryViewportRelativeOffset != -2048)
dst.layoutSecondaryViewportRelativeOffset = src.layoutSecondaryViewportRelativeOffset;
- if (src.layoutShaderRecordNV)
- dst.layoutShaderRecordNV = true;
+ if (src.layoutShaderRecord)
+ dst.layoutShaderRecord = true;
if (src.pervertexNV)
dst.pervertexNV = true;
#endif
@@ -5581,7 +5669,7 @@
error(loc, "cannot specify on a variable declaration", "align", "");
if (qualifier.isPushConstant())
error(loc, "can only specify on a uniform block", "push_constant", "");
- if (qualifier.isShaderRecordNV())
+ if (qualifier.isShaderRecord())
error(loc, "can only specify on a buffer block", "shaderRecordNV", "");
}
break;
@@ -5655,11 +5743,11 @@
error(loc, "cannot apply to uniform or buffer block", "location", "");
break;
#ifndef GLSLANG_WEB
- case EvqPayloadNV:
- case EvqPayloadInNV:
- case EvqHitAttrNV:
- case EvqCallableDataNV:
- case EvqCallableDataInNV:
+ case EvqPayload:
+ case EvqPayloadIn:
+ case EvqHitAttr:
+ case EvqCallableData:
+ case EvqCallableDataIn:
break;
#endif
default:
@@ -5754,7 +5842,7 @@
if (spvVersion.spv > 0) {
if (qualifier.isUniformOrBuffer()) {
if (type.getBasicType() == EbtBlock && !qualifier.isPushConstant() &&
- !qualifier.isShaderRecordNV() &&
+ !qualifier.isShaderRecord() &&
!qualifier.hasAttachment() &&
!qualifier.hasBufferReference())
error(loc, "uniform/buffer blocks require layout(binding=X)", "binding", "");
@@ -5811,7 +5899,7 @@
if (qualifier.hasBufferReference() && type.getBasicType() != EbtBlock)
error(loc, "can only be used with a block", "buffer_reference", "");
- if (qualifier.isShaderRecordNV() && type.getBasicType() != EbtBlock)
+ if (qualifier.isShaderRecord() && type.getBasicType() != EbtBlock)
error(loc, "can only be used with a block", "shaderRecordNV", "");
// input attachment
@@ -5909,8 +5997,9 @@
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;
}
@@ -5955,7 +6044,7 @@
if (qualifier.storage != EvqBuffer)
error(loc, "can only be used with buffer", "buffer_reference", "");
}
- if (qualifier.isShaderRecordNV()) {
+ if (qualifier.isShaderRecord()) {
if (qualifier.storage != EvqBuffer)
error(loc, "can only be used with a buffer", "shaderRecordNV", "");
if (qualifier.hasBinding())
@@ -5964,7 +6053,7 @@
error(loc, "cannot be used with shaderRecordNV", "set", "");
}
- if (qualifier.storage == EvqHitAttrNV && qualifier.hasLayout()) {
+ if (qualifier.storage == EvqHitAttr && qualifier.hasLayout()) {
error(loc, "cannot apply layout qualifiers to hitAttributeNV variable", "hitAttributeNV", "");
}
}
@@ -6032,6 +6121,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
@@ -6072,6 +6165,15 @@
#endif
const TFunction* function = nullptr;
+
+ // debugPrintfEXT has var args and is in the symbol table as "debugPrintfEXT()",
+ // mangled to "debugPrintfEXT("
+ if (call.getName() == "debugPrintfEXT") {
+ TSymbol* symbol = symbolTable.find("debugPrintfEXT(", &builtIn);
+ if (symbol)
+ return symbol->getAsFunction();
+ }
+
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) ||
@@ -6081,10 +6183,13 @@
extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float32) ||
extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float64);
- if (isEsProfile() || version < 120)
+ if (isEsProfile())
+ function = (extensionTurnedOn(E_GL_EXT_shader_implicit_conversions) && version >= 310) ?
+ findFunction120(loc, call, builtIn) : findFunctionExact(loc, call, builtIn);
+ else if (version < 120)
function = findFunctionExact(loc, call, builtIn);
else if (version < 400)
- function = findFunction120(loc, call, builtIn);
+ function = extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) ? findFunction400(loc, call, builtIn) : findFunction120(loc, call, builtIn);
else if (explicitTypesEnabled)
function = findFunctionExplicitTypes(loc, call, builtIn);
else
@@ -6377,13 +6482,15 @@
void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType& publicType)
{
#ifndef GLSLANG_WEB
- if (publicType.basicType == EbtAtomicUint && publicType.qualifier.hasBinding() &&
- publicType.qualifier.hasOffset()) {
+ if (publicType.basicType == EbtAtomicUint && publicType.qualifier.hasBinding()) {
if (publicType.qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) {
error(loc, "atomic_uint binding is too large", "binding", "");
return;
}
- atomicUintOffsets[publicType.qualifier.layoutBinding] = publicType.qualifier.layoutOffset;
+
+ if(publicType.qualifier.hasOffset()) {
+ atomicUintOffsets[publicType.qualifier.layoutBinding] = publicType.qualifier.layoutOffset;
+ }
return;
}
@@ -6452,7 +6559,7 @@
transparentOpaqueCheck(loc, type, identifier);
#ifndef GLSLANG_WEB
atomicUintCheck(loc, type, identifier);
- accStructNVCheck(loc, type, identifier);
+ accStructCheck(loc, type, identifier);
checkAndResizeMeshViewDim(loc, type, /*isBlockMember*/ false);
#endif
if (type.getQualifier().storage == EvqConst && type.containsReference()) {
@@ -6919,7 +7026,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());
@@ -7014,8 +7121,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;
}
@@ -7031,8 +7144,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;
}
@@ -7048,8 +7167,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;
}
@@ -7065,8 +7190,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;
}
@@ -7082,8 +7213,14 @@
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;
}
@@ -7356,7 +7493,7 @@
// 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.isPushConstant() && !currentBlockQualifier.hasPacking()) ||
- (currentBlockQualifier.isShaderRecordNV() && !currentBlockQualifier.hasPacking()))
+ (currentBlockQualifier.isShaderRecord() && !currentBlockQualifier.hasPacking()))
currentBlockQualifier.layoutPacking = ElpStd430;
// Special case for "taskNV in/out", which has a default of std430,
@@ -7383,6 +7520,7 @@
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", "");
@@ -7396,6 +7534,7 @@
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(), "");
@@ -7438,6 +7577,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
@@ -7447,6 +7587,7 @@
if (!currentBlockQualifier.hasXfbBuffer() && currentBlockQualifier.hasXfbOffset())
currentBlockQualifier.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer;
}
+#endif
// Process the members
fixBlockLocations(loc, currentBlockQualifier, typeList, memberWithLocation, memberWithoutLocation);
@@ -7569,16 +7710,17 @@
// with a particular stage.
void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& qualifier)
{
+ const char *extsrt[2] = { E_GL_NV_ray_tracing, E_GL_EXT_ray_tracing };
switch (qualifier.storage) {
case EvqUniform:
profileRequires(loc, EEsProfile, 300, nullptr, "uniform block");
- profileRequires(loc, ENoProfile, 140, nullptr, "uniform block");
+ 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:
requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, "buffer block");
- profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, nullptr, "buffer block");
+ profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_shader_storage_buffer_object, "buffer block");
profileRequires(loc, EEsProfile, 310, nullptr, "buffer block");
break;
case EvqVaryingIn:
@@ -7607,28 +7749,28 @@
}
break;
#ifndef GLSLANG_WEB
- case EvqPayloadNV:
- profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV block");
- requireStage(loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangAnyHitNVMask | EShLangClosestHitNVMask | EShLangMissNVMask),
+ case EvqPayload:
+ profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "rayPayloadNV block");
+ requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangAnyHitMask | EShLangClosestHitMask | EShLangMissMask),
"rayPayloadNV block");
break;
- case EvqPayloadInNV:
- profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV block");
- requireStage(loc, (EShLanguageMask)(EShLangAnyHitNVMask | EShLangClosestHitNVMask | EShLangMissNVMask),
+ case EvqPayloadIn:
+ profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "rayPayloadInNV block");
+ requireStage(loc, (EShLanguageMask)(EShLangAnyHitMask | EShLangClosestHitMask | EShLangMissMask),
"rayPayloadInNV block");
break;
- case EvqHitAttrNV:
- profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV block");
- requireStage(loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangAnyHitNVMask | EShLangClosestHitNVMask), "hitAttributeNV block");
+ case EvqHitAttr:
+ profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "hitAttributeNV block");
+ requireStage(loc, (EShLanguageMask)(EShLangIntersectMask | EShLangAnyHitMask | EShLangClosestHitMask), "hitAttributeNV block");
break;
- case EvqCallableDataNV:
- profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "callableDataNV block");
- requireStage(loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask),
+ case EvqCallableData:
+ profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "callableDataNV block");
+ requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask),
"callableDataNV block");
break;
- case EvqCallableDataInNV:
- profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV block");
- requireStage(loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV block");
+ case EvqCallableDataIn:
+ profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "callableDataInNV block");
+ requireStage(loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV block");
break;
#endif
default:
@@ -7667,8 +7809,8 @@
error(loc, "cannot use invariant qualifier on an interface block", "invariant", "");
if (qualifier.isPushConstant())
intermediate.addPushConstantCount();
- if (qualifier.isShaderRecordNV())
- intermediate.addShaderRecordNVCount();
+ if (qualifier.isShaderRecord())
+ intermediate.addShaderRecordCount();
if (qualifier.isTaskMemory())
intermediate.addTaskNVCount();
}
@@ -8003,6 +8145,7 @@
else
error(loc, "can only apply to 'in'", "point_mode", "");
}
+#endif
for (int i = 0; i < 3; ++i) {
if (publicType.shaderQualifiers.localSizeNotDefault[i]) {
if (publicType.qualifier.storage == EvqVaryingIn) {
@@ -8019,7 +8162,9 @@
}
if (intermediate.getLocalSize(i) > (unsigned int)max)
error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", "");
- } else if (language == EShLangMeshNV) {
+ }
+#ifndef GLSLANG_WEB
+ else if (language == EShLangMeshNV) {
switch (i) {
case 0: max = resources.maxMeshWorkGroupSizeX_NV; break;
case 1: max = resources.maxMeshWorkGroupSizeY_NV; break;
@@ -8037,7 +8182,9 @@
}
if (intermediate.getLocalSize(i) > (unsigned int)max)
error(loc, "too large; see gl_MaxTaskWorkGroupSizeNV", "local_size", "");
- } else {
+ }
+#endif
+ else {
assert(0);
}
@@ -8062,6 +8209,7 @@
}
}
+#ifndef GLSLANG_WEB
if (publicType.shaderQualifiers.earlyFragmentTests) {
if (publicType.qualifier.storage == EvqVaryingIn)
intermediate.setEarlyFragmentTests();
@@ -8184,7 +8332,7 @@
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", "");
- if (qualifier.isShaderRecordNV())
+ if (qualifier.isShaderRecord())
error(loc, "cannot declare a default, can only be used on a block", "shaderRecordNV", "");
}
diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h
index 5cee05e..9c5fdc7 100644
--- a/glslang/MachineIndependent/ParseHelper.h
+++ b/glslang/MachineIndependent/ParseHelper.h
@@ -283,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;
@@ -315,6 +315,7 @@
TIntermTyped* handleBinaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right);
TIntermTyped* handleUnaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* childNode);
TIntermTyped* handleDotDereference(const TSourceLoc&, TIntermTyped* base, const TString& field);
+ TIntermTyped* handleDotSwizzle(const TSourceLoc&, TIntermTyped* base, const TString& field);
void blockMemberExtensionCheck(const TSourceLoc&, const TIntermTyped* base, int member, const TString& memberName);
TFunction* handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype);
TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&);
@@ -358,7 +359,7 @@
void boolCheck(const TSourceLoc&, const TPublicType&);
void samplerCheck(const TSourceLoc&, const TType&, const TString& identifier, TIntermTyped* initializer);
void atomicUintCheck(const TSourceLoc&, const TType&, const TString& identifier);
- void accStructNVCheck(const TSourceLoc & loc, const TType & type, const TString & identifier);
+ void accStructCheck(const TSourceLoc & loc, const TType & type, const TString & identifier);
void transparentOpaqueCheck(const TSourceLoc&, const TType&, const TString& identifier);
void memberQualifierCheck(glslang::TPublicType&);
void globalQualifierFixCheck(const TSourceLoc&, TQualifier&);
diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp
index 9a9b69c..bd3181a 100644
--- a/glslang/MachineIndependent/Scan.cpp
+++ b/glslang/MachineIndependent/Scan.cpp
@@ -2,6 +2,8 @@
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2013 LunarG, Inc.
// Copyright (C) 2017 ARM Limited.
+// Copyright (C) 2020 Google, Inc.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -187,17 +189,15 @@
if (lookingInMiddle) {
notFirstToken = true;
// make forward progress by finishing off the current line plus extra new lines
- if (peek() == '\n' || peek() == '\r') {
- while (peek() == '\n' || peek() == '\r')
- get();
- } else
+ if (peek() != '\n' && peek() != '\r') {
do {
c = get();
} while (c != EndOfInput && c != '\n' && c != '\r');
- while (peek() == '\n' || peek() == '\r')
- get();
- if (peek() == EndOfInput)
- return true;
+ }
+ while (peek() == '\n' || peek() == '\r')
+ get();
+ if (peek() == EndOfInput)
+ return true;
}
lookingInMiddle = true;
@@ -343,6 +343,7 @@
(*KeywordMap)["const"] = CONST;
(*KeywordMap)["uniform"] = UNIFORM;
+ (*KeywordMap)["buffer"] = BUFFER;
(*KeywordMap)["in"] = IN;
(*KeywordMap)["out"] = OUT;
(*KeywordMap)["smooth"] = SMOOTH;
@@ -410,12 +411,12 @@
(*KeywordMap)["attribute"] = ATTRIBUTE;
(*KeywordMap)["varying"] = VARYING;
(*KeywordMap)["noperspective"] = NOPERSPECTIVE;
- (*KeywordMap)["buffer"] = BUFFER;
(*KeywordMap)["coherent"] = COHERENT;
(*KeywordMap)["devicecoherent"] = DEVICECOHERENT;
(*KeywordMap)["queuefamilycoherent"] = QUEUEFAMILYCOHERENT;
(*KeywordMap)["workgroupcoherent"] = WORKGROUPCOHERENT;
(*KeywordMap)["subgroupcoherent"] = SUBGROUPCOHERENT;
+ (*KeywordMap)["shadercallcoherent"] = SHADERCALLCOHERENT;
(*KeywordMap)["nonprivate"] = NONPRIVATE;
(*KeywordMap)["restrict"] = RESTRICT;
(*KeywordMap)["readonly"] = READONLY;
@@ -564,10 +565,6 @@
(*KeywordMap)["sampler2D"] = SAMPLER2D;
(*KeywordMap)["samplerCube"] = SAMPLERCUBE;
- (*KeywordMap)["samplerCubeArray"] = SAMPLERCUBEARRAY;
- (*KeywordMap)["samplerCubeArrayShadow"] = SAMPLERCUBEARRAYSHADOW;
- (*KeywordMap)["isamplerCubeArray"] = ISAMPLERCUBEARRAY;
- (*KeywordMap)["usamplerCubeArray"] = USAMPLERCUBEARRAY;
(*KeywordMap)["samplerCubeShadow"] = SAMPLERCUBESHADOW;
(*KeywordMap)["sampler2DArray"] = SAMPLER2DARRAY;
(*KeywordMap)["sampler2DArrayShadow"] = SAMPLER2DARRAYSHADOW;
@@ -582,7 +579,30 @@
(*KeywordMap)["sampler3D"] = SAMPLER3D;
(*KeywordMap)["sampler2DShadow"] = SAMPLER2DSHADOW;
+ (*KeywordMap)["texture2D"] = TEXTURE2D;
+ (*KeywordMap)["textureCube"] = TEXTURECUBE;
+ (*KeywordMap)["texture2DArray"] = TEXTURE2DARRAY;
+ (*KeywordMap)["itexture2D"] = ITEXTURE2D;
+ (*KeywordMap)["itexture3D"] = ITEXTURE3D;
+ (*KeywordMap)["itextureCube"] = ITEXTURECUBE;
+ (*KeywordMap)["itexture2DArray"] = ITEXTURE2DARRAY;
+ (*KeywordMap)["utexture2D"] = UTEXTURE2D;
+ (*KeywordMap)["utexture3D"] = UTEXTURE3D;
+ (*KeywordMap)["utextureCube"] = UTEXTURECUBE;
+ (*KeywordMap)["utexture2DArray"] = UTEXTURE2DARRAY;
+ (*KeywordMap)["texture3D"] = TEXTURE3D;
+
+ (*KeywordMap)["sampler"] = SAMPLER;
+ (*KeywordMap)["samplerShadow"] = SAMPLERSHADOW;
+
#ifndef GLSLANG_WEB
+ (*KeywordMap)["textureCubeArray"] = TEXTURECUBEARRAY;
+ (*KeywordMap)["itextureCubeArray"] = ITEXTURECUBEARRAY;
+ (*KeywordMap)["utextureCubeArray"] = UTEXTURECUBEARRAY;
+ (*KeywordMap)["samplerCubeArray"] = SAMPLERCUBEARRAY;
+ (*KeywordMap)["samplerCubeArrayShadow"] = SAMPLERCUBEARRAYSHADOW;
+ (*KeywordMap)["isamplerCubeArray"] = ISAMPLERCUBEARRAY;
+ (*KeywordMap)["usamplerCubeArray"] = USAMPLERCUBEARRAY;
(*KeywordMap)["sampler1DArrayShadow"] = SAMPLER1DARRAYSHADOW;
(*KeywordMap)["isampler1DArray"] = ISAMPLER1DARRAY;
(*KeywordMap)["usampler1D"] = USAMPLER1D;
@@ -609,28 +629,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;
@@ -642,7 +645,6 @@
(*KeywordMap)["itexture2DMSArray"] = ITEXTURE2DMSARRAY;
(*KeywordMap)["utexture2DMSArray"] = UTEXTURE2DMSARRAY;
(*KeywordMap)["texture1D"] = TEXTURE1D;
- (*KeywordMap)["texture3D"] = TEXTURE3D;
(*KeywordMap)["texture2DRect"] = TEXTURE2DRECT;
(*KeywordMap)["texture1DArray"] = TEXTURE1DARRAY;
@@ -703,11 +705,18 @@
(*KeywordMap)["precise"] = PRECISE;
(*KeywordMap)["rayPayloadNV"] = PAYLOADNV;
+ (*KeywordMap)["rayPayloadEXT"] = PAYLOADEXT;
(*KeywordMap)["rayPayloadInNV"] = PAYLOADINNV;
+ (*KeywordMap)["rayPayloadInEXT"] = PAYLOADINEXT;
(*KeywordMap)["hitAttributeNV"] = HITATTRNV;
+ (*KeywordMap)["hitAttributeEXT"] = HITATTREXT;
(*KeywordMap)["callableDataNV"] = CALLDATANV;
+ (*KeywordMap)["callableDataEXT"] = CALLDATAEXT;
(*KeywordMap)["callableDataInNV"] = CALLDATAINNV;
+ (*KeywordMap)["callableDataInEXT"] = CALLDATAINEXT;
(*KeywordMap)["accelerationStructureNV"] = ACCSTRUCTNV;
+ (*KeywordMap)["accelerationStructureEXT"] = ACCSTRUCTEXT;
+ (*KeywordMap)["rayQueryEXT"] = RAYQUERYEXT;
(*KeywordMap)["perprimitiveNV"] = PERPRIMITIVENV;
(*KeywordMap)["perviewNV"] = PERVIEWNV;
(*KeywordMap)["taskNV"] = PERTASKNV;
@@ -842,6 +851,7 @@
parseContext.error(loc, "not supported", "::", "");
break;
+ case PpAtomConstString: parserToken->sType.lex.string = NewPoolTString(tokenText); return STRING_LITERAL;
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;
@@ -904,6 +914,14 @@
case CASE:
return keyword;
+ case BUFFER:
+ afterBuffer = true;
+ if ((parseContext.isEsProfile() && parseContext.version < 310) ||
+ (!parseContext.isEsProfile() && (parseContext.version < 430 &&
+ !parseContext.extensionTurnedOn(E_GL_ARB_shader_storage_buffer_object))))
+ return identifierOrType();
+ return keyword;
+
case STRUCT:
afterStruct = true;
return keyword;
@@ -982,8 +1000,7 @@
#ifndef GLSLANG_WEB
case NOPERSPECTIVE:
- if (parseContext.isEsProfile() && parseContext.version >= 300 &&
- parseContext.extensionTurnedOn(E_GL_NV_shader_noperspective_interpolation))
+ if (parseContext.extensionTurnedOn(E_GL_NV_shader_noperspective_interpolation))
return keyword;
return es30ReservedFromGLSL(130);
@@ -997,12 +1014,6 @@
if (parseContext.isEsProfile() && parseContext.version >= 300)
reservedWord();
return keyword;
- case BUFFER:
- afterBuffer = true;
- if ((parseContext.isEsProfile() && parseContext.version < 310) ||
- (!parseContext.isEsProfile() && parseContext.version < 430))
- return identifierOrType();
- return keyword;
case PAYLOADNV:
case PAYLOADINNV:
case HITATTRNV:
@@ -1010,8 +1021,24 @@
case CALLDATAINNV:
case ACCSTRUCTNV:
if (parseContext.symbolTable.atBuiltInLevel() ||
+ parseContext.extensionTurnedOn(E_GL_NV_ray_tracing))
+ return keyword;
+ return identifierOrType();
+ case PAYLOADEXT:
+ case PAYLOADINEXT:
+ case HITATTREXT:
+ case CALLDATAEXT:
+ case CALLDATAINEXT:
+ case ACCSTRUCTEXT:
+ if (parseContext.symbolTable.atBuiltInLevel() ||
+ parseContext.extensionTurnedOn(E_GL_EXT_ray_tracing) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_ray_query))
+ return keyword;
+ return identifierOrType();
+ case RAYQUERYEXT:
+ if (parseContext.symbolTable.atBuiltInLevel() ||
(!parseContext.isEsProfile() && parseContext.version >= 460
- && parseContext.extensionTurnedOn(E_GL_NV_ray_tracing)))
+ && parseContext.extensionTurnedOn(E_GL_EXT_ray_query)))
return keyword;
return identifierOrType();
case ATOMIC_UINT:
@@ -1025,6 +1052,7 @@
case QUEUEFAMILYCOHERENT:
case WORKGROUPCOHERENT:
case SUBGROUPCOHERENT:
+ case SHADERCALLCOHERENT:
case NONPRIVATE:
case RESTRICT:
case READONLY:
@@ -1057,13 +1085,12 @@
case SUBROUTINE:
return es30ReservedFromGLSL(400);
+#endif
case SHARED:
if ((parseContext.isEsProfile() && parseContext.version < 300) ||
(!parseContext.isEsProfile() && parseContext.version < 140))
return identifierOrType();
return keyword;
-#endif
-
case LAYOUT:
{
const int numLayoutExts = 2;
@@ -1167,7 +1194,10 @@
case DVEC3:
case DVEC4:
afterType = true;
- if (parseContext.isEsProfile() || parseContext.version < 400)
+ if (parseContext.isEsProfile() || parseContext.version < 150 ||
+ (!parseContext.symbolTable.atBuiltInLevel() &&
+ (parseContext.version < 400 && !parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) &&
+ (parseContext.version < 410 && !parseContext.extensionTurnedOn(E_GL_ARB_vertex_attrib_64bit)))))
reservedWord();
return keyword;
@@ -1181,10 +1211,9 @@
case U64VEC4:
afterType = true;
if (parseContext.symbolTable.atBuiltInLevel() ||
- (!parseContext.isEsProfile() && parseContext.version >= 450 &&
- (parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_int64) ||
- parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
- parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int64))))
+ parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_int64) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int64))
return keyword;
return identifierOrType();
@@ -1198,10 +1227,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.isEsProfile() && parseContext.version >= 450))
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_8bit_storage) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int8))
return keyword;
return identifierOrType();
@@ -1215,11 +1243,10 @@
case U16VEC4:
afterType = true;
if (parseContext.symbolTable.atBuiltInLevel() ||
- (!parseContext.isEsProfile() && parseContext.version >= 450 &&
- (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) ||
- parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) ||
- parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
- parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int16))))
+ parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int16))
return keyword;
return identifierOrType();
case INT32_T:
@@ -1232,9 +1259,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.isEsProfile() && parseContext.version >= 450))
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int32))
return keyword;
return identifierOrType();
case FLOAT32_T:
@@ -1255,9 +1281,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.isEsProfile() && parseContext.version >= 450))
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float32))
return keyword;
return identifierOrType();
@@ -1279,9 +1304,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.isEsProfile() && parseContext.version >= 450))
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float64))
return keyword;
return identifierOrType();
@@ -1291,11 +1315,10 @@
case F16VEC4:
afterType = true;
if (parseContext.symbolTable.atBuiltInLevel() ||
- (!parseContext.isEsProfile() && parseContext.version >= 450 &&
- (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
- parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) ||
- parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
- parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16))))
+ parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16))
return keyword;
return identifierOrType();
@@ -1314,14 +1337,12 @@
case F16MAT4X4:
afterType = true;
if (parseContext.symbolTable.atBuiltInLevel() ||
- (!parseContext.isEsProfile() && parseContext.version >= 450 &&
- (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
- parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
- parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16))))
+ parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16))
return keyword;
return identifierOrType();
-#endif
case SAMPLERCUBEARRAY:
case SAMPLERCUBEARRAYSHADOW:
@@ -1335,6 +1356,15 @@
reservedWord();
return keyword;
+ case TEXTURECUBEARRAY:
+ case ITEXTURECUBEARRAY:
+ case UTEXTURECUBEARRAY:
+ if (parseContext.spvVersion.vulkan > 0)
+ return keyword;
+ else
+ return identifierOrType();
+#endif
+
case UINT:
case UVEC2:
case UVEC3:
@@ -1369,6 +1399,25 @@
}
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:
@@ -1403,6 +1452,9 @@
afterType = true;
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);
case SAMPLER2DMSARRAY:
@@ -1412,6 +1464,9 @@
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:
@@ -1458,25 +1513,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:
@@ -1488,11 +1529,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
@@ -1556,20 +1594,17 @@
case F16SUBPASSINPUTMS:
afterType = true;
if (parseContext.symbolTable.atBuiltInLevel() ||
- (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float_fetch) &&
- !parseContext.isEsProfile() && parseContext.version >= 450))
+ parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float_fetch))
return keyword;
return identifierOrType();
case EXPLICITINTERPAMD:
- if (!parseContext.isEsProfile() && parseContext.version >= 450 &&
- parseContext.extensionTurnedOn(E_GL_AMD_shader_explicit_vertex_parameter))
+ if (parseContext.extensionTurnedOn(E_GL_AMD_shader_explicit_vertex_parameter))
return keyword;
return identifierOrType();
case PERVERTEXNV:
- if (((!parseContext.isEsProfile() && parseContext.version >= 450) ||
- (parseContext.isEsProfile() && parseContext.version >= 320)) &&
+ if ((!parseContext.isEsProfile() && parseContext.version >= 450) ||
parseContext.extensionTurnedOn(E_GL_NV_fragment_shader_barycentric))
return keyword;
return identifierOrType();
@@ -1737,7 +1772,11 @@
return keyword;
}
- if (!parseContext.isEsProfile() && parseContext.version >= 400)
+ if (!parseContext.isEsProfile() && (parseContext.version >= 400 ||
+ parseContext.symbolTable.atBuiltInLevel() ||
+ (parseContext.version >= 150 && parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_fp64)) ||
+ (parseContext.version >= 150 && parseContext.extensionTurnedOn(E_GL_ARB_vertex_attrib_64bit)
+ && parseContext.language == EShLangVertex)))
return keyword;
if (parseContext.isForwardCompatible())
diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp
index 9b3cdc6..a1392db 100644
--- a/glslang/MachineIndependent/ShaderLang.cpp
+++ b/glslang/MachineIndependent/ShaderLang.cpp
@@ -1,7 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2013-2016 LunarG, Inc.
-// Copyright (C) 2015-2018 Google, Inc.
+// Copyright (C) 2015-2020 Google, Inc.
//
// All rights reserved.
//
@@ -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<TBuiltInParseables> builtInParseables(CreateBuiltInParseables(infoSink, source));
if (builtInParseables == nullptr)
@@ -341,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) ||
@@ -350,17 +361,17 @@
// check for ray tracing stages
if (profile != EEsProfile && version >= 450) {
- InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGenNV, source,
+ InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGen, source,
infoSink, commonTable, symbolTables);
- InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangIntersectNV, source,
+ InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangIntersect, source,
infoSink, commonTable, symbolTables);
- InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangAnyHitNV, source,
+ InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangAnyHit, source,
infoSink, commonTable, symbolTables);
- InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangClosestHitNV, source,
+ InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangClosestHit, source,
infoSink, commonTable, symbolTables);
- InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMissNV, source,
+ InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMiss, source,
infoSink, commonTable, symbolTables);
- InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCallableNV, source,
+ InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCallable, source,
infoSink, commonTable, symbolTables);
}
@@ -375,7 +386,6 @@
(profile == EEsProfile && version >= 320))
InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTaskNV, source,
infoSink, commonTable, symbolTables);
-#endif
return true;
}
@@ -613,12 +623,12 @@
version = profile == EEsProfile ? 310 : 420;
}
break;
- case EShLangRayGenNV:
- case EShLangIntersectNV:
- case EShLangAnyHitNV:
- case EShLangClosestHitNV:
- case EShLangMissNV:
- case EShLangCallableNV:
+ case EShLangRayGen:
+ case EShLangIntersect:
+ case EShLangAnyHit:
+ case EShLangClosestHit:
+ case EShLangMiss:
+ case EShLangCallable:
if (profile == EEsProfile || version < 460) {
correct = false;
infoSink.info.message(EPrefixError, "#version: ray tracing shaders require non-es profile with version 460 or above");
@@ -706,6 +716,9 @@
case EShClientOpenGL:
spvVersion.openGl = environment->input.dialectVersion;
break;
+ case EShClientCount:
+ assert(0);
+ break;
}
switch (environment->input.languageFamily) {
case EShSourceNone:
@@ -718,6 +731,9 @@
source = EShSourceHlsl;
messages = static_cast<EShMessages>(messages | EShMsgReadHlsl);
break;
+ case EShSourceCount:
+ assert(0);
+ break;
}
}
@@ -871,6 +887,11 @@
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;
@@ -1756,6 +1777,8 @@
sourceEntryPointName = name;
}
+// Log initial settings and transforms.
+// See comment for class TProcesses.
void TShader::addProcesses(const std::vector<std::string>& p)
{
intermediate->addProcesses(p);
diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp
index 2ea14af..06b5a81 100644
--- a/glslang/MachineIndependent/SymbolTable.cpp
+++ b/glslang/MachineIndependent/SymbolTable.cpp
@@ -3,6 +3,7 @@
// Copyright (C) 2012-2013 LunarG, Inc.
// Copyright (C) 2017 ARM Limited.
// Copyright (C) 2015-2018 Google, Inc.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -74,7 +75,8 @@
case EbtInt64: mangledName += "i64"; break;
case EbtUint64: mangledName += "u64"; break;
case EbtAtomicUint: mangledName += "au"; break;
- case EbtAccStructNV: mangledName += "asnv"; break;
+ case EbtAccStruct: mangledName += "as"; break;
+ case EbtRayQuery: mangledName += "rq"; break;
#endif
case EbtSampler:
switch (sampler.type) {
@@ -114,12 +116,13 @@
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.getStructReturnIndex());
+ snprintf(text, sizeof(text), "%u-", sampler.getStructReturnIndex());
mangledName += text;
} else {
switch (sampler.getVectorSize()) {
@@ -129,6 +132,7 @@
case 4: break; // default to prior name mangle behavior
}
}
+#endif
if (sampler.isMultiSample())
mangledName += "M";
diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp
index 644acb1..143f251 100644
--- a/glslang/MachineIndependent/Versions.cpp
+++ b/glslang/MachineIndependent/Versions.cpp
@@ -2,7 +2,8 @@
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2013 LunarG, Inc.
// Copyright (C) 2017 ARM Limited.
-// Copyright (C) 2015-2018 Google, Inc.
+// Copyright (C) 2015-2020 Google, Inc.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -172,8 +173,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;
@@ -182,6 +185,7 @@
extensionBehavior[E_GL_ARB_shader_texture_image_samples] = EBhDisable;
extensionBehavior[E_GL_ARB_viewport_array] = EBhDisable;
extensionBehavior[E_GL_ARB_gpu_shader_int64] = EBhDisable;
+ extensionBehavior[E_GL_ARB_gpu_shader_fp64] = EBhDisable;
extensionBehavior[E_GL_ARB_shader_ballot] = EBhDisable;
extensionBehavior[E_GL_ARB_sparse_texture2] = EBhDisable;
extensionBehavior[E_GL_ARB_sparse_texture_clamp] = EBhDisable;
@@ -191,6 +195,14 @@
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_ARB_shader_bit_encoding] = EBhDisable;
+ extensionBehavior[E_GL_ARB_shader_image_size] = EBhDisable;
+ extensionBehavior[E_GL_ARB_shader_storage_buffer_object] = EBhDisable;
+ extensionBehavior[E_GL_ARB_shading_language_packing] = EBhDisable;
+ extensionBehavior[E_GL_ARB_texture_query_lod] = EBhDisable;
+ extensionBehavior[E_GL_ARB_vertex_attrib_64bit] = EBhDisable;
extensionBehavior[E_GL_KHR_shader_subgroup_basic] = EBhDisable;
extensionBehavior[E_GL_KHR_shader_subgroup_vote] = EBhDisable;
@@ -216,6 +228,7 @@
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_debug_printf] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_16bit_storage] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_8bit_storage] = EBhDisable;
@@ -235,6 +248,8 @@
extensionBehavior[E_GL_AMD_shader_fragment_mask] = EBhDisable;
extensionBehavior[E_GL_AMD_gpu_shader_half_float_fetch] = EBhDisable;
+ extensionBehavior[E_GL_INTEL_shader_integer_functions2] = EBhDisable;
+
extensionBehavior[E_GL_NV_sample_mask_override_coverage] = EBhDisable;
extensionBehavior[E_SPV_NV_geometry_shader_passthrough] = EBhDisable;
extensionBehavior[E_GL_NV_viewport_array2] = EBhDisable;
@@ -282,11 +297,17 @@
extensionBehavior[E_GL_OES_tessellation_point_size] = EBhDisable;
extensionBehavior[E_GL_OES_texture_buffer] = EBhDisable;
extensionBehavior[E_GL_OES_texture_cube_map_array] = EBhDisable;
+ extensionBehavior[E_GL_EXT_shader_integer_mix] = EBhDisable;
// EXT extensions
- extensionBehavior[E_GL_EXT_device_group] = EBhDisable;
- extensionBehavior[E_GL_EXT_multiview] = EBhDisable;
- extensionBehavior[E_GL_EXT_shader_realtime_clock] = EBhDisable;
+ extensionBehavior[E_GL_EXT_device_group] = EBhDisable;
+ extensionBehavior[E_GL_EXT_multiview] = EBhDisable;
+ extensionBehavior[E_GL_EXT_shader_realtime_clock] = EBhDisable;
+ extensionBehavior[E_GL_EXT_ray_tracing] = EBhDisable;
+ extensionBehavior[E_GL_EXT_ray_query] = EBhDisable;
+ extensionBehavior[E_GL_EXT_ray_flags_primitive_culling] = EBhDisable;
+ extensionBehavior[E_GL_EXT_blend_func_extended] = EBhDisable;
+ extensionBehavior[E_GL_EXT_shader_implicit_conversions] = EBhDisable;
// OVR extensions
extensionBehavior[E_GL_OVR_multiview] = EBhDisable;
@@ -332,7 +353,6 @@
// AEP
"#define GL_ANDROID_extension_pack_es31a 1\n"
- "#define GL_KHR_blend_equation_advanced 1\n"
"#define GL_OES_sample_variables 1\n"
"#define GL_OES_shader_image_atomic 1\n"
"#define GL_OES_shader_multisample_interpolation 1\n"
@@ -346,6 +366,9 @@
"#define GL_EXT_tessellation_point_size 1\n"
"#define GL_EXT_texture_buffer 1\n"
"#define GL_EXT_texture_cube_map_array 1\n"
+ "#define GL_EXT_shader_implicit_conversions 1\n"
+ "#define GL_EXT_shader_integer_mix 1\n"
+ "#define GL_EXT_blend_func_extended 1\n"
// OES matching AEP
"#define GL_OES_geometry_shader 1\n"
@@ -376,8 +399,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"
@@ -386,13 +411,22 @@
"#define GL_ARB_shader_texture_image_samples 1\n"
"#define GL_ARB_viewport_array 1\n"
"#define GL_ARB_gpu_shader_int64 1\n"
+ "#define GL_ARB_gpu_shader_fp64 1\n"
"#define GL_ARB_shader_ballot 1\n"
"#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_shader_image_size 1\n"
+ "#define GL_ARB_shading_language_packing 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_ARB_shader_bit_encoding 1\n"
+ "#define GL_ARB_shader_storage_buffer_object 1\n"
+ "#define GL_ARB_texture_query_lod 1\n"
+ "#define GL_ARB_vertex_attrib_64bit 1\n"
"#define GL_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"
@@ -407,6 +441,7 @@
"#define GL_EXT_buffer_reference2 1\n"
"#define GL_EXT_buffer_reference_uvec2 1\n"
"#define GL_EXT_demote_to_helper_invocation 1\n"
+ "#define GL_EXT_debug_printf 1\n"
// GL_KHR_shader_subgroup
"#define GL_KHR_shader_subgroup_basic 1\n"
@@ -420,6 +455,9 @@
"#define E_GL_EXT_shader_atomic_int64 1\n"
"#define E_GL_EXT_shader_realtime_clock 1\n"
+ "#define E_GL_EXT_ray_tracing 1\n"
+ "#define E_GL_EXT_ray_query 1\n"
+ "#define E_GL_EXT_ray_flags_primitive_culling 1\n"
"#define GL_AMD_shader_ballot 1\n"
"#define GL_AMD_shader_trinary_minmax 1\n"
@@ -432,6 +470,8 @@
"#define GL_AMD_shader_fragment_mask 1\n"
"#define GL_AMD_gpu_shader_half_float_fetch 1\n"
+ "#define GL_INTEL_shader_integer_functions2 1\n"
+
"#define GL_NV_sample_mask_override_coverage 1\n"
"#define GL_NV_geometry_shader_passthrough 1\n"
"#define GL_NV_viewport_array2 1\n"
@@ -493,6 +533,7 @@
preamble +=
"#define GL_GOOGLE_cpp_style_line_directive 1\n"
"#define GL_GOOGLE_include_directive 1\n"
+ "#define GL_KHR_blend_equation_advanced 1\n"
;
#endif
@@ -525,17 +566,17 @@
switch(stage) {
case EShLangVertex: return "vertex";
case EShLangFragment: return "fragment";
+ case EShLangCompute: return "compute";
#ifndef GLSLANG_WEB
case EShLangTessControl: return "tessellation control";
case EShLangTessEvaluation: return "tessellation evaluation";
case EShLangGeometry: return "geometry";
- case EShLangCompute: return "compute";
- case EShLangRayGenNV: return "ray-generation";
- case EShLangIntersectNV: return "intersection";
- case EShLangAnyHitNV: return "any-hit";
- case EShLangClosestHitNV: return "closest-hit";
- case EShLangMissNV: return "miss";
- case EShLangCallableNV: return "callable";
+ case EShLangRayGen: return "ray-generation";
+ case EShLangIntersect: return "intersection";
+ case EShLangAnyHit: return "any-hit";
+ case EShLangClosestHit: return "closest-hit";
+ case EShLangMiss: return "miss";
+ case EShLangCallable: return "callable";
case EShLangMeshNV: return "mesh";
case EShLangTaskNV: return "task";
#endif
@@ -884,8 +925,8 @@
} else {
if (iter->second == EBhDisablePartial)
warn(getCurrentLoc(), "extension is only partially supported:", "#extension", extension);
- if (behavior == EBhEnable || behavior == EBhRequire)
- intermediate.addRequestedExtension(extension);
+ if (behavior == EBhEnable || behavior == EBhRequire || behavior == EBhDisable)
+ intermediate.updateRequestedExtension(extension, behavior);
iter->second = behavior;
}
}
@@ -913,8 +954,13 @@
// Call for any operation needing GLSL double data-type support.
void TParseVersions::doubleCheck(const TSourceLoc& loc, const char* op)
{
- requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
- profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op);
+
+ //requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
+ if (language == EShLangVertex) {
+ const char* const f64_Extensions[] = {E_GL_ARB_gpu_shader_fp64, E_GL_ARB_vertex_attrib_64bit};
+ profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, 2, f64_Extensions, op);
+ } else
+ profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader_fp64, op);
}
// Call for any operation needing GLSL float16 data-type support.
diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h
index fae04f4..8667411 100644
--- a/glslang/MachineIndependent/Versions.h
+++ b/glslang/MachineIndependent/Versions.h
@@ -3,6 +3,7 @@
// Copyright (C) 2012-2013 LunarG, Inc.
// Copyright (C) 2017 ARM Limited.
// Copyright (C) 2015-2018 Google, Inc.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -38,6 +39,8 @@
#ifndef _VERSIONS_INCLUDED_
#define _VERSIONS_INCLUDED_
+#define LAST_ELEMENT_MARKER(x) x
+
//
// Help manage multiple profiles, versions, extensions etc.
//
@@ -54,7 +57,8 @@
ENoProfile = (1 << 0), // only for desktop, before profiles showed up
ECoreProfile = (1 << 1),
ECompatibilityProfile = (1 << 2),
- EEsProfile = (1 << 3)
+ EEsProfile = (1 << 3),
+ LAST_ELEMENT_MARKER(EProfileCount),
} EProfile;
namespace glslang {
@@ -124,8 +128,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";
@@ -134,6 +140,7 @@
const char* const E_GL_ARB_shader_texture_image_samples = "GL_ARB_shader_texture_image_samples";
const char* const E_GL_ARB_viewport_array = "GL_ARB_viewport_array";
const char* const E_GL_ARB_gpu_shader_int64 = "GL_ARB_gpu_shader_int64";
+const char* const E_GL_ARB_gpu_shader_fp64 = "GL_ARB_gpu_shader_fp64";
const char* const E_GL_ARB_shader_ballot = "GL_ARB_shader_ballot";
const char* const E_GL_ARB_sparse_texture2 = "GL_ARB_sparse_texture2";
const char* const E_GL_ARB_sparse_texture_clamp = "GL_ARB_sparse_texture_clamp";
@@ -143,6 +150,14 @@
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_ARB_shader_bit_encoding = "GL_ARB_shader_bit_encoding";
+const char* const E_GL_ARB_shader_image_size = "GL_ARB_shader_image_size";
+const char* const E_GL_ARB_shader_storage_buffer_object = "GL_ARB_shader_storage_buffer_object";
+const char* const E_GL_ARB_shading_language_packing = "GL_ARB_shading_language_packing";
+const char* const E_GL_ARB_texture_query_lod = "GL_ARB_texture_query_lod";
+const char* const E_GL_ARB_vertex_attrib_64bit = "GL_ARB_vertex_attrib_64bit";
const char* const E_GL_KHR_shader_subgroup_basic = "GL_KHR_shader_subgroup_basic";
const char* const E_GL_KHR_shader_subgroup_vote = "GL_KHR_shader_subgroup_vote";
@@ -177,6 +192,12 @@
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";
+const char* const E_GL_EXT_debug_printf = "GL_EXT_debug_printf";
+const char* const E_GL_EXT_ray_tracing = "GL_EXT_ray_tracing";
+const char* const E_GL_EXT_ray_query = "GL_EXT_ray_query";
+const char* const E_GL_EXT_ray_flags_primitive_culling = "GL_EXT_ray_flags_primitive_culling";
+const char* const E_GL_EXT_blend_func_extended = "GL_EXT_blend_func_extended";
+const char* const E_GL_EXT_shader_implicit_conversions = "GL_EXT_shader_implicit_conversions";
// Arrays of extensions for the above viewportEXTs duplications
@@ -205,6 +226,8 @@
const char* const E_GL_AMD_shader_fragment_mask = "GL_AMD_shader_fragment_mask";
const char* const E_GL_AMD_gpu_shader_half_float_fetch = "GL_AMD_gpu_shader_half_float_fetch";
+const char* const E_GL_INTEL_shader_integer_functions2 = "GL_INTEL_shader_integer_functions2";
+
const char* const E_GL_NV_sample_mask_override_coverage = "GL_NV_sample_mask_override_coverage";
const char* const E_SPV_NV_geometry_shader_passthrough = "GL_NV_geometry_shader_passthrough";
const char* const E_GL_NV_viewport_array2 = "GL_NV_viewport_array2";
@@ -246,6 +269,7 @@
const char* const E_GL_EXT_tessellation_point_size = "GL_EXT_tessellation_point_size";
const char* const E_GL_EXT_texture_buffer = "GL_EXT_texture_buffer";
const char* const E_GL_EXT_texture_cube_map_array = "GL_EXT_texture_cube_map_array";
+const char* const E_GL_EXT_shader_integer_mix = "GL_EXT_shader_integer_mix";
// OES matching AEP
const char* const E_GL_OES_geometry_shader = "GL_OES_geometry_shader";
diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4
index 6ace038..1432bf6 100644
--- a/glslang/MachineIndependent/glslang.m4
+++ b/glslang/MachineIndependent/glslang.m4
@@ -2,7 +2,8 @@
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2013 LunarG, Inc.
// Copyright (C) 2017 ARM Limited.
-// Copyright (C) 2015-2018 Google, Inc.
+// Copyright (C) 2015-2019 Google, Inc.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -38,7 +39,7 @@
//
// Do not edit the .y file, only edit the .m4 file.
-// The .y bison file is not a source file, it is a derivitive of the .m4 file.
+// The .y bison file is not a source file, it is a derivative of the .m4 file.
// The m4 file needs to be processed by m4 to generate the .y bison file.
//
// Code sandwiched between a pair:
@@ -49,7 +50,7 @@
// ...
// GLSLANG_WEB_EXCLUDE_OFF
//
-// Will be exluded from the grammar when m4 is executed as:
+// Will be excluded from the grammar when m4 is executed as:
//
// m4 -P -DGLSLANG_WEB
//
@@ -166,8 +167,12 @@
%token <lex> SAMPLER2DARRAYSHADOW ISAMPLER2D ISAMPLER3D ISAMPLERCUBE
%token <lex> ISAMPLER2DARRAY USAMPLER2D USAMPLER3D
%token <lex> USAMPLERCUBE USAMPLER2DARRAY
-%token <lex> SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW
-%token <lex> ISAMPLERCUBEARRAY USAMPLERCUBEARRAY
+
+// separate image/sampler
+%token <lex> SAMPLER SAMPLERSHADOW
+%token <lex> TEXTURE2D TEXTURE3D TEXTURECUBE TEXTURE2DARRAY
+%token <lex> ITEXTURE2D ITEXTURE3D ITEXTURECUBE ITEXTURE2DARRAY
+%token <lex> UTEXTURE2D UTEXTURE3D UTEXTURECUBE UTEXTURE2DARRAY
GLSLANG_WEB_EXCLUDE_ON
@@ -200,9 +205,13 @@
%token <lex> F64MAT4X2 F64MAT4X3 F64MAT4X4
%token <lex> ATOMIC_UINT
%token <lex> ACCSTRUCTNV
+%token <lex> ACCSTRUCTEXT
+%token <lex> RAYQUERYEXT
%token <lex> FCOOPMATNV ICOOPMATNV UCOOPMATNV
// combined image/sampler
+%token <lex> SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW
+%token <lex> ISAMPLERCUBEARRAY USAMPLERCUBEARRAY
%token <lex> SAMPLER1D SAMPLER1DARRAY SAMPLER1DARRAYSHADOW ISAMPLER1D SAMPLER1DSHADOW
%token <lex> SAMPLER2DRECT SAMPLER2DRECTSHADOW ISAMPLER2DRECT USAMPLER2DRECT
%token <lex> SAMPLERBUFFER ISAMPLERBUFFER USAMPLERBUFFER
@@ -233,18 +242,12 @@
%token <lex> F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY
%token <lex> F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY
-// pure sampler
-%token <lex> SAMPLER SAMPLERSHADOW
-
// texture without sampler
-%token <lex> TEXTURE1D TEXTURE2D TEXTURE3D TEXTURECUBE
-%token <lex> TEXTURE1DARRAY TEXTURE2DARRAY
-%token <lex> ITEXTURE1D ITEXTURE2D ITEXTURE3D ITEXTURECUBE
-%token <lex> ITEXTURE1DARRAY ITEXTURE2DARRAY UTEXTURE1D UTEXTURE2D UTEXTURE3D
-%token <lex> UTEXTURECUBE UTEXTURE1DARRAY UTEXTURE2DARRAY
+%token <lex> TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY
+%token <lex> TEXTURE1D ITEXTURE1D UTEXTURE1D
+%token <lex> TEXTURE1DARRAY ITEXTURE1DARRAY UTEXTURE1DARRAY
%token <lex> TEXTURE2DRECT ITEXTURE2DRECT UTEXTURE2DRECT
%token <lex> TEXTUREBUFFER ITEXTUREBUFFER UTEXTUREBUFFER
-%token <lex> TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY
%token <lex> TEXTURE2DMS ITEXTURE2DMS UTEXTURE2DMS
%token <lex> TEXTURE2DMSARRAY ITEXTURE2DMSARRAY UTEXTURE2DMSARRAY
@@ -263,6 +266,7 @@
%token <lex> AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN
%token <lex> MOD_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN XOR_ASSIGN OR_ASSIGN
%token <lex> SUB_ASSIGN
+%token <lex> STRING_LITERAL
%token <lex> LEFT_PAREN RIGHT_PAREN LEFT_BRACKET RIGHT_BRACKET LEFT_BRACE RIGHT_BRACE DOT
%token <lex> COMMA COLON EQUAL SEMICOLON BANG DASH TILDE PLUS STAR SLASH PERCENT
@@ -277,7 +281,7 @@
%token <lex> CENTROID IN OUT INOUT
%token <lex> STRUCT VOID WHILE
%token <lex> BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT
-%token <lex> UNIFORM SHARED
+%token <lex> UNIFORM SHARED BUFFER
%token <lex> FLAT SMOOTH LAYOUT
GLSLANG_WEB_EXCLUDE_ON
@@ -285,9 +289,10 @@
%token <lex> INT64CONSTANT UINT64CONSTANT
%token <lex> SUBROUTINE DEMOTE
%token <lex> PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV
-%token <lex> PATCH SAMPLE BUFFER NONUNIFORM
+%token <lex> PAYLOADEXT PAYLOADINEXT HITATTREXT CALLDATAEXT CALLDATAINEXT
+%token <lex> PATCH SAMPLE NONUNIFORM
%token <lex> COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT
-%token <lex> SUBGROUPCOHERENT NONPRIVATE
+%token <lex> SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT
%token <lex> NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV
%token <lex> PRECISE
GLSLANG_WEB_EXCLUDE_OFF
@@ -377,6 +382,9 @@
$$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true);
}
GLSLANG_WEB_EXCLUDE_ON
+ | STRING_LITERAL {
+ $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true);
+ }
| INT32CONSTANT {
parseContext.explicitInt32Check($1.loc, "32-bit signed literal");
$$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true);
@@ -402,7 +410,9 @@
$$ = parseContext.intermediate.addConstantUnion((unsigned short)$1.u, $1.loc, true);
}
| DOUBLECONSTANT {
- parseContext.doubleCheck($1.loc, "double literal");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double literal");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double literal");
$$ = parseContext.intermediate.addConstantUnion($1.d, EbtDouble, $1.loc, true);
}
| FLOAT16CONSTANT {
@@ -1360,7 +1370,6 @@
$$.init($1.loc);
$$.qualifier.storage = EvqUniform;
}
-GLSLANG_WEB_EXCLUDE_ON
| SHARED {
parseContext.globalCheck($1.loc, "shared");
parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
@@ -1374,6 +1383,7 @@
$$.init($1.loc);
$$.qualifier.storage = EvqBuffer;
}
+GLSLANG_WEB_EXCLUDE_ON
| ATTRIBUTE {
parseContext.requireStage($1.loc, EShLangVertex, "attribute");
parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "attribute");
@@ -1413,42 +1423,81 @@
}
| HITATTRNV {
parseContext.globalCheck($1.loc, "hitAttributeNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask
- | EShLangAnyHitNVMask), "hitAttributeNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
+ | EShLangAnyHitMask), "hitAttributeNV");
parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV");
$$.init($1.loc);
- $$.qualifier.storage = EvqHitAttrNV;
+ $$.qualifier.storage = EvqHitAttr;
+ }
+ | HITATTREXT {
+ parseContext.globalCheck($1.loc, "hitAttributeEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
+ | EShLangAnyHitMask), "hitAttributeEXT");
+ parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "hitAttributeNV");
+ $$.init($1.loc);
+ $$.qualifier.storage = EvqHitAttr;
}
| PAYLOADNV {
parseContext.globalCheck($1.loc, "rayPayloadNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask |
- EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
+ EShLangAnyHitMask | EShLangMissMask), "rayPayloadNV");
parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV");
$$.init($1.loc);
- $$.qualifier.storage = EvqPayloadNV;
+ $$.qualifier.storage = EvqPayload;
+ }
+ | PAYLOADEXT {
+ parseContext.globalCheck($1.loc, "rayPayloadEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
+ EShLangAnyHitMask | EShLangMissMask), "rayPayloadEXT");
+ parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadEXT");
+ $$.init($1.loc);
+ $$.qualifier.storage = EvqPayload;
}
| PAYLOADINNV {
parseContext.globalCheck($1.loc, "rayPayloadInNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitNVMask |
- EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitMask |
+ EShLangAnyHitMask | EShLangMissMask), "rayPayloadInNV");
parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV");
$$.init($1.loc);
- $$.qualifier.storage = EvqPayloadInNV;
+ $$.qualifier.storage = EvqPayloadIn;
+ }
+ | PAYLOADINEXT {
+ parseContext.globalCheck($1.loc, "rayPayloadInEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitMask |
+ EShLangAnyHitMask | EShLangMissMask), "rayPayloadInEXT");
+ parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadInEXT");
+ $$.init($1.loc);
+ $$.qualifier.storage = EvqPayloadIn;
}
| CALLDATANV {
parseContext.globalCheck($1.loc, "callableDataNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask |
- EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask), "callableDataNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask |
+ EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataNV");
parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV");
$$.init($1.loc);
- $$.qualifier.storage = EvqCallableDataNV;
+ $$.qualifier.storage = EvqCallableData;
+ }
+ | CALLDATAEXT {
+ parseContext.globalCheck($1.loc, "callableDataEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask |
+ EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataEXT");
+ parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataEXT");
+ $$.init($1.loc);
+ $$.qualifier.storage = EvqCallableData;
}
| CALLDATAINNV {
parseContext.globalCheck($1.loc, "callableDataInNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV");
parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV");
$$.init($1.loc);
- $$.qualifier.storage = EvqCallableDataInNV;
+ $$.qualifier.storage = EvqCallableDataIn;
+ }
+ | CALLDATAINEXT {
+ parseContext.globalCheck($1.loc, "callableDataInEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT");
+ parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataInEXT");
+ $$.init($1.loc);
+ $$.qualifier.storage = EvqCallableDataIn;
}
| COHERENT {
$$.init($1.loc);
@@ -1479,6 +1528,11 @@
parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate");
$$.qualifier.nonprivate = true;
}
+ | SHADERCALLCOHERENT {
+ $$.init($1.loc);
+ parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent");
+ $$.qualifier.shadercallcoherent = true;
+ }
| VOLATILE {
$$.init($1.loc);
$$.qualifier.volatil = true;
@@ -1751,7 +1805,9 @@
}
GLSLANG_WEB_EXCLUDE_ON
| DOUBLE {
- parseContext.doubleCheck($1.loc, "double");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
}
@@ -1811,19 +1867,25 @@
$$.basicType = EbtUint64;
}
| DVEC2 {
- parseContext.doubleCheck($1.loc, "double vector");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double vector");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setVector(2);
}
| DVEC3 {
- parseContext.doubleCheck($1.loc, "double vector");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double vector");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setVector(3);
}
| DVEC4 {
- parseContext.doubleCheck($1.loc, "double vector");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double vector");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setVector(4);
@@ -2027,73 +2089,97 @@
$$.setVector(4);
}
| DMAT2 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(2, 2);
}
| DMAT3 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(3, 3);
}
| DMAT4 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(4, 4);
}
| DMAT2X2 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(2, 2);
}
| DMAT2X3 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(2, 3);
}
| DMAT2X4 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(2, 4);
}
| DMAT3X2 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(3, 2);
}
| DMAT3X3 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(3, 3);
}
| DMAT3X4 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(3, 4);
}
| DMAT4X2 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(4, 2);
}
| DMAT4X3 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(4, 3);
}
| DMAT4X4 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(4, 4);
@@ -2316,7 +2402,15 @@
}
| ACCSTRUCTNV {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtAccStructNV;
+ $$.basicType = EbtAccStruct;
+ }
+ | ACCSTRUCTEXT {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtAccStruct;
+ }
+ | RAYQUERYEXT {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtRayQuery;
}
| ATOMIC_UINT {
parseContext.vulkanRemoved($1.loc, "atomic counter types");
@@ -2354,6 +2448,16 @@
$$.basicType = EbtSampler;
$$.sampler.set(EbtFloat, EsdCube, false, true);
}
+ | SAMPLER2DARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.set(EbtFloat, Esd2D, true);
+ }
+ | SAMPLER2DARRAYSHADOW {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.set(EbtFloat, Esd2D, true, true);
+ }
GLSLANG_WEB_EXCLUDE_ON
| SAMPLER1DSHADOW {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -2370,17 +2474,6 @@
$$.basicType = EbtSampler;
$$.sampler.set(EbtFloat, Esd1D, true, true);
}
-GLSLANG_WEB_EXCLUDE_OFF
- | SAMPLER2DARRAY {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.set(EbtFloat, Esd2D, true);
- }
- | SAMPLER2DARRAYSHADOW {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.set(EbtFloat, Esd2D, true, true);
- }
| SAMPLERCUBEARRAY {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
@@ -2391,7 +2484,6 @@
$$.basicType = EbtSampler;
$$.sampler.set(EbtFloat, EsdCube, true, true);
}
-GLSLANG_WEB_EXCLUDE_ON
| F16SAMPLER1D {
parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -2491,30 +2583,11 @@
$$.basicType = EbtSampler;
$$.sampler.set(EbtInt, EsdCube);
}
-GLSLANG_WEB_EXCLUDE_ON
- | ISAMPLER1DARRAY {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.set(EbtInt, Esd1D, true);
- }
-GLSLANG_WEB_EXCLUDE_OFF
| ISAMPLER2DARRAY {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.set(EbtInt, Esd2D, true);
}
- | ISAMPLERCUBEARRAY {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.set(EbtInt, EsdCube, true);
- }
-GLSLANG_WEB_EXCLUDE_ON
- | USAMPLER1D {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.set(EbtUint, Esd1D);
- }
-GLSLANG_WEB_EXCLUDE_OFF
| USAMPLER2D {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
@@ -2531,21 +2604,121 @@
$$.sampler.set(EbtUint, EsdCube);
}
GLSLANG_WEB_EXCLUDE_ON
+ | ISAMPLER1DARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.set(EbtInt, Esd1D, true);
+ }
+ | ISAMPLERCUBEARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.set(EbtInt, EsdCube, true);
+ }
+ | USAMPLER1D {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.set(EbtUint, Esd1D);
+ }
| USAMPLER1DARRAY {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.set(EbtUint, Esd1D, true);
}
+ | USAMPLERCUBEARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.set(EbtUint, EsdCube, true);
+ }
+ | TEXTURECUBEARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtFloat, EsdCube, true);
+ }
+ | ITEXTURECUBEARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtInt, EsdCube, true);
+ }
+ | UTEXTURECUBEARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtUint, EsdCube, true);
+ }
GLSLANG_WEB_EXCLUDE_OFF
| USAMPLER2DARRAY {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.set(EbtUint, Esd2D, true);
}
- | USAMPLERCUBEARRAY {
+ | TEXTURE2D {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
- $$.sampler.set(EbtUint, EsdCube, true);
+ $$.sampler.setTexture(EbtFloat, Esd2D);
+ }
+ | TEXTURE3D {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtFloat, Esd3D);
+ }
+ | TEXTURE2DARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtFloat, Esd2D, true);
+ }
+ | TEXTURECUBE {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtFloat, EsdCube);
+ }
+ | ITEXTURE2D {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtInt, Esd2D);
+ }
+ | ITEXTURE3D {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtInt, Esd3D);
+ }
+ | ITEXTURECUBE {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtInt, EsdCube);
+ }
+ | ITEXTURE2DARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtInt, Esd2D, true);
+ }
+ | UTEXTURE2D {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtUint, Esd2D);
+ }
+ | UTEXTURE3D {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtUint, Esd3D);
+ }
+ | UTEXTURECUBE {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtUint, EsdCube);
+ }
+ | UTEXTURE2DARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtUint, Esd2D, true);
+ }
+ | SAMPLER {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setPureSampler(false);
+ }
+ | SAMPLERSHADOW {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setPureSampler(true);
}
GLSLANG_WEB_EXCLUDE_ON
| SAMPLER2DRECT {
@@ -2643,16 +2816,6 @@
$$.basicType = EbtSampler;
$$.sampler.set(EbtUint, Esd2D, true, false, true);
}
- | SAMPLER {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setPureSampler(false);
- }
- | SAMPLERSHADOW {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setPureSampler(true);
- }
| TEXTURE1D {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
@@ -2664,33 +2827,18 @@
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtFloat16, Esd1D);
}
- | TEXTURE2D {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtFloat, Esd2D);
- }
| F16TEXTURE2D {
parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtFloat16, Esd2D);
}
- | TEXTURE3D {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtFloat, Esd3D);
- }
| F16TEXTURE3D {
parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtFloat16, Esd3D);
}
- | TEXTURECUBE {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtFloat, EsdCube);
- }
| F16TEXTURECUBE {
parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -2708,22 +2856,12 @@
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtFloat16, Esd1D, true);
}
- | TEXTURE2DARRAY {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtFloat, Esd2D, true);
- }
| F16TEXTURE2DARRAY {
parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtFloat16, Esd2D, true);
}
- | TEXTURECUBEARRAY {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtFloat, EsdCube, true);
- }
| F16TEXTURECUBEARRAY {
parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -2735,71 +2873,21 @@
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtInt, Esd1D);
}
- | ITEXTURE2D {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtInt, Esd2D);
- }
- | ITEXTURE3D {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtInt, Esd3D);
- }
- | ITEXTURECUBE {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtInt, EsdCube);
- }
| ITEXTURE1DARRAY {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtInt, Esd1D, true);
}
- | ITEXTURE2DARRAY {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtInt, Esd2D, true);
- }
- | ITEXTURECUBEARRAY {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtInt, EsdCube, true);
- }
| UTEXTURE1D {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtUint, Esd1D);
}
- | UTEXTURE2D {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtUint, Esd2D);
- }
- | UTEXTURE3D {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtUint, Esd3D);
- }
- | UTEXTURECUBE {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtUint, EsdCube);
- }
| UTEXTURE1DARRAY {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtUint, Esd1D, true);
}
- | UTEXTURE2DARRAY {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtUint, Esd2D, true);
- }
- | UTEXTURECUBEARRAY {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtUint, EsdCube, true);
- }
| TEXTURE2DRECT {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y
index 008faf0..e33d7d1 100644
--- a/glslang/MachineIndependent/glslang.y
+++ b/glslang/MachineIndependent/glslang.y
@@ -2,7 +2,8 @@
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2013 LunarG, Inc.
// Copyright (C) 2017 ARM Limited.
-// Copyright (C) 2015-2018 Google, Inc.
+// Copyright (C) 2015-2019 Google, Inc.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -38,7 +39,7 @@
//
// Do not edit the .y file, only edit the .m4 file.
-// The .y bison file is not a source file, it is a derivitive of the .m4 file.
+// The .y bison file is not a source file, it is a derivative of the .m4 file.
// The m4 file needs to be processed by m4 to generate the .y bison file.
//
// Code sandwiched between a pair:
@@ -49,7 +50,7 @@
// ...
// GLSLANG_WEB_EXCLUDE_OFF
//
-// Will be exluded from the grammar when m4 is executed as:
+// Will be excluded from the grammar when m4 is executed as:
//
// m4 -P -DGLSLANG_WEB
//
@@ -166,8 +167,12 @@
%token <lex> SAMPLER2DARRAYSHADOW ISAMPLER2D ISAMPLER3D ISAMPLERCUBE
%token <lex> ISAMPLER2DARRAY USAMPLER2D USAMPLER3D
%token <lex> USAMPLERCUBE USAMPLER2DARRAY
-%token <lex> SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW
-%token <lex> ISAMPLERCUBEARRAY USAMPLERCUBEARRAY
+
+// separate image/sampler
+%token <lex> SAMPLER SAMPLERSHADOW
+%token <lex> TEXTURE2D TEXTURE3D TEXTURECUBE TEXTURE2DARRAY
+%token <lex> ITEXTURE2D ITEXTURE3D ITEXTURECUBE ITEXTURE2DARRAY
+%token <lex> UTEXTURE2D UTEXTURE3D UTEXTURECUBE UTEXTURE2DARRAY
@@ -200,9 +205,13 @@
%token <lex> F64MAT4X2 F64MAT4X3 F64MAT4X4
%token <lex> ATOMIC_UINT
%token <lex> ACCSTRUCTNV
+%token <lex> ACCSTRUCTEXT
+%token <lex> RAYQUERYEXT
%token <lex> FCOOPMATNV ICOOPMATNV UCOOPMATNV
// combined image/sampler
+%token <lex> SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW
+%token <lex> ISAMPLERCUBEARRAY USAMPLERCUBEARRAY
%token <lex> SAMPLER1D SAMPLER1DARRAY SAMPLER1DARRAYSHADOW ISAMPLER1D SAMPLER1DSHADOW
%token <lex> SAMPLER2DRECT SAMPLER2DRECTSHADOW ISAMPLER2DRECT USAMPLER2DRECT
%token <lex> SAMPLERBUFFER ISAMPLERBUFFER USAMPLERBUFFER
@@ -233,18 +242,12 @@
%token <lex> F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY
%token <lex> F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY
-// pure sampler
-%token <lex> SAMPLER SAMPLERSHADOW
-
// texture without sampler
-%token <lex> TEXTURE1D TEXTURE2D TEXTURE3D TEXTURECUBE
-%token <lex> TEXTURE1DARRAY TEXTURE2DARRAY
-%token <lex> ITEXTURE1D ITEXTURE2D ITEXTURE3D ITEXTURECUBE
-%token <lex> ITEXTURE1DARRAY ITEXTURE2DARRAY UTEXTURE1D UTEXTURE2D UTEXTURE3D
-%token <lex> UTEXTURECUBE UTEXTURE1DARRAY UTEXTURE2DARRAY
+%token <lex> TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY
+%token <lex> TEXTURE1D ITEXTURE1D UTEXTURE1D
+%token <lex> TEXTURE1DARRAY ITEXTURE1DARRAY UTEXTURE1DARRAY
%token <lex> TEXTURE2DRECT ITEXTURE2DRECT UTEXTURE2DRECT
%token <lex> TEXTUREBUFFER ITEXTUREBUFFER UTEXTUREBUFFER
-%token <lex> TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY
%token <lex> TEXTURE2DMS ITEXTURE2DMS UTEXTURE2DMS
%token <lex> TEXTURE2DMSARRAY ITEXTURE2DMSARRAY UTEXTURE2DMSARRAY
@@ -263,6 +266,7 @@
%token <lex> AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN
%token <lex> MOD_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN XOR_ASSIGN OR_ASSIGN
%token <lex> SUB_ASSIGN
+%token <lex> STRING_LITERAL
%token <lex> LEFT_PAREN RIGHT_PAREN LEFT_BRACKET RIGHT_BRACKET LEFT_BRACE RIGHT_BRACE DOT
%token <lex> COMMA COLON EQUAL SEMICOLON BANG DASH TILDE PLUS STAR SLASH PERCENT
@@ -277,7 +281,7 @@
%token <lex> CENTROID IN OUT INOUT
%token <lex> STRUCT VOID WHILE
%token <lex> BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT
-%token <lex> UNIFORM SHARED
+%token <lex> UNIFORM SHARED BUFFER
%token <lex> FLAT SMOOTH LAYOUT
@@ -285,9 +289,10 @@
%token <lex> INT64CONSTANT UINT64CONSTANT
%token <lex> SUBROUTINE DEMOTE
%token <lex> PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV
-%token <lex> PATCH SAMPLE BUFFER NONUNIFORM
+%token <lex> PAYLOADEXT PAYLOADINEXT HITATTREXT CALLDATAEXT CALLDATAINEXT
+%token <lex> PATCH SAMPLE NONUNIFORM
%token <lex> COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT
-%token <lex> SUBGROUPCOHERENT NONPRIVATE
+%token <lex> SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT
%token <lex> NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV
%token <lex> PRECISE
@@ -377,6 +382,9 @@
$$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true);
}
+ | STRING_LITERAL {
+ $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true);
+ }
| INT32CONSTANT {
parseContext.explicitInt32Check($1.loc, "32-bit signed literal");
$$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true);
@@ -402,7 +410,9 @@
$$ = parseContext.intermediate.addConstantUnion((unsigned short)$1.u, $1.loc, true);
}
| DOUBLECONSTANT {
- parseContext.doubleCheck($1.loc, "double literal");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double literal");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double literal");
$$ = parseContext.intermediate.addConstantUnion($1.d, EbtDouble, $1.loc, true);
}
| FLOAT16CONSTANT {
@@ -1360,7 +1370,6 @@
$$.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");
@@ -1374,6 +1383,7 @@
$$.init($1.loc);
$$.qualifier.storage = EvqBuffer;
}
+
| ATTRIBUTE {
parseContext.requireStage($1.loc, EShLangVertex, "attribute");
parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "attribute");
@@ -1413,42 +1423,81 @@
}
| HITATTRNV {
parseContext.globalCheck($1.loc, "hitAttributeNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask
- | EShLangAnyHitNVMask), "hitAttributeNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
+ | EShLangAnyHitMask), "hitAttributeNV");
parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV");
$$.init($1.loc);
- $$.qualifier.storage = EvqHitAttrNV;
+ $$.qualifier.storage = EvqHitAttr;
+ }
+ | HITATTREXT {
+ parseContext.globalCheck($1.loc, "hitAttributeEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
+ | EShLangAnyHitMask), "hitAttributeEXT");
+ parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "hitAttributeNV");
+ $$.init($1.loc);
+ $$.qualifier.storage = EvqHitAttr;
}
| PAYLOADNV {
parseContext.globalCheck($1.loc, "rayPayloadNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask |
- EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
+ EShLangAnyHitMask | EShLangMissMask), "rayPayloadNV");
parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV");
$$.init($1.loc);
- $$.qualifier.storage = EvqPayloadNV;
+ $$.qualifier.storage = EvqPayload;
+ }
+ | PAYLOADEXT {
+ parseContext.globalCheck($1.loc, "rayPayloadEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
+ EShLangAnyHitMask | EShLangMissMask), "rayPayloadEXT");
+ parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadEXT");
+ $$.init($1.loc);
+ $$.qualifier.storage = EvqPayload;
}
| PAYLOADINNV {
parseContext.globalCheck($1.loc, "rayPayloadInNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitNVMask |
- EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitMask |
+ EShLangAnyHitMask | EShLangMissMask), "rayPayloadInNV");
parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV");
$$.init($1.loc);
- $$.qualifier.storage = EvqPayloadInNV;
+ $$.qualifier.storage = EvqPayloadIn;
+ }
+ | PAYLOADINEXT {
+ parseContext.globalCheck($1.loc, "rayPayloadInEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitMask |
+ EShLangAnyHitMask | EShLangMissMask), "rayPayloadInEXT");
+ parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadInEXT");
+ $$.init($1.loc);
+ $$.qualifier.storage = EvqPayloadIn;
}
| CALLDATANV {
parseContext.globalCheck($1.loc, "callableDataNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask |
- EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask), "callableDataNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask |
+ EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataNV");
parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV");
$$.init($1.loc);
- $$.qualifier.storage = EvqCallableDataNV;
+ $$.qualifier.storage = EvqCallableData;
+ }
+ | CALLDATAEXT {
+ parseContext.globalCheck($1.loc, "callableDataEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask |
+ EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataEXT");
+ parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataEXT");
+ $$.init($1.loc);
+ $$.qualifier.storage = EvqCallableData;
}
| CALLDATAINNV {
parseContext.globalCheck($1.loc, "callableDataInNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV");
parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV");
$$.init($1.loc);
- $$.qualifier.storage = EvqCallableDataInNV;
+ $$.qualifier.storage = EvqCallableDataIn;
+ }
+ | CALLDATAINEXT {
+ parseContext.globalCheck($1.loc, "callableDataInEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT");
+ parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataInEXT");
+ $$.init($1.loc);
+ $$.qualifier.storage = EvqCallableDataIn;
}
| COHERENT {
$$.init($1.loc);
@@ -1479,6 +1528,11 @@
parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate");
$$.qualifier.nonprivate = true;
}
+ | SHADERCALLCOHERENT {
+ $$.init($1.loc);
+ parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent");
+ $$.qualifier.shadercallcoherent = true;
+ }
| VOLATILE {
$$.init($1.loc);
$$.qualifier.volatil = true;
@@ -1751,7 +1805,9 @@
}
| DOUBLE {
- parseContext.doubleCheck($1.loc, "double");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
}
@@ -1811,19 +1867,25 @@
$$.basicType = EbtUint64;
}
| DVEC2 {
- parseContext.doubleCheck($1.loc, "double vector");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double vector");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setVector(2);
}
| DVEC3 {
- parseContext.doubleCheck($1.loc, "double vector");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double vector");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setVector(3);
}
| DVEC4 {
- parseContext.doubleCheck($1.loc, "double vector");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double vector");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setVector(4);
@@ -2027,73 +2089,97 @@
$$.setVector(4);
}
| DMAT2 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(2, 2);
}
| DMAT3 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(3, 3);
}
| DMAT4 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(4, 4);
}
| DMAT2X2 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(2, 2);
}
| DMAT2X3 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(2, 3);
}
| DMAT2X4 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(2, 4);
}
| DMAT3X2 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(3, 2);
}
| DMAT3X3 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(3, 3);
}
| DMAT3X4 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(3, 4);
}
| DMAT4X2 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(4, 2);
}
| DMAT4X3 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(4, 3);
}
| DMAT4X4 {
- parseContext.doubleCheck($1.loc, "double matrix");
+ parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck($1.loc, "double matrix");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(4, 4);
@@ -2316,7 +2402,15 @@
}
| ACCSTRUCTNV {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtAccStructNV;
+ $$.basicType = EbtAccStruct;
+ }
+ | ACCSTRUCTEXT {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtAccStruct;
+ }
+ | RAYQUERYEXT {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtRayQuery;
}
| ATOMIC_UINT {
parseContext.vulkanRemoved($1.loc, "atomic counter types");
@@ -2354,6 +2448,16 @@
$$.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);
+ }
| SAMPLER1DSHADOW {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -2370,17 +2474,6 @@
$$.basicType = EbtSampler;
$$.sampler.set(EbtFloat, Esd1D, true, 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);
- }
| SAMPLERCUBEARRAY {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
@@ -2391,7 +2484,6 @@
$$.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());
@@ -2491,30 +2583,11 @@
$$.basicType = EbtSampler;
$$.sampler.set(EbtInt, EsdCube);
}
-
- | ISAMPLER1DARRAY {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.set(EbtInt, Esd1D, true);
- }
-
| ISAMPLER2DARRAY {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.set(EbtInt, Esd2D, true);
}
- | ISAMPLERCUBEARRAY {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.set(EbtInt, EsdCube, true);
- }
-
- | USAMPLER1D {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.set(EbtUint, Esd1D);
- }
-
| USAMPLER2D {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
@@ -2531,21 +2604,121 @@
$$.sampler.set(EbtUint, EsdCube);
}
+ | ISAMPLER1DARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.set(EbtInt, Esd1D, true);
+ }
+ | ISAMPLERCUBEARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.set(EbtInt, EsdCube, true);
+ }
+ | USAMPLER1D {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.set(EbtUint, Esd1D);
+ }
| USAMPLER1DARRAY {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.set(EbtUint, Esd1D, true);
}
+ | USAMPLERCUBEARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.set(EbtUint, EsdCube, true);
+ }
+ | TEXTURECUBEARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtFloat, EsdCube, true);
+ }
+ | ITEXTURECUBEARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtInt, EsdCube, true);
+ }
+ | UTEXTURECUBEARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtUint, EsdCube, true);
+ }
| USAMPLER2DARRAY {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.set(EbtUint, Esd2D, true);
}
- | USAMPLERCUBEARRAY {
+ | TEXTURE2D {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
- $$.sampler.set(EbtUint, EsdCube, true);
+ $$.sampler.setTexture(EbtFloat, Esd2D);
+ }
+ | TEXTURE3D {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtFloat, Esd3D);
+ }
+ | TEXTURE2DARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtFloat, Esd2D, true);
+ }
+ | TEXTURECUBE {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtFloat, EsdCube);
+ }
+ | ITEXTURE2D {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtInt, Esd2D);
+ }
+ | ITEXTURE3D {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtInt, Esd3D);
+ }
+ | ITEXTURECUBE {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtInt, EsdCube);
+ }
+ | ITEXTURE2DARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtInt, Esd2D, true);
+ }
+ | UTEXTURE2D {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtUint, Esd2D);
+ }
+ | UTEXTURE3D {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtUint, Esd3D);
+ }
+ | UTEXTURECUBE {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtUint, EsdCube);
+ }
+ | UTEXTURE2DARRAY {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setTexture(EbtUint, Esd2D, true);
+ }
+ | SAMPLER {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setPureSampler(false);
+ }
+ | SAMPLERSHADOW {
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtSampler;
+ $$.sampler.setPureSampler(true);
}
| SAMPLER2DRECT {
@@ -2643,16 +2816,6 @@
$$.basicType = EbtSampler;
$$.sampler.set(EbtUint, Esd2D, true, false, true);
}
- | SAMPLER {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setPureSampler(false);
- }
- | SAMPLERSHADOW {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setPureSampler(true);
- }
| TEXTURE1D {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
@@ -2664,33 +2827,18 @@
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtFloat16, Esd1D);
}
- | TEXTURE2D {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtFloat, Esd2D);
- }
| F16TEXTURE2D {
parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtFloat16, Esd2D);
}
- | TEXTURE3D {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtFloat, Esd3D);
- }
| F16TEXTURE3D {
parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtFloat16, Esd3D);
}
- | TEXTURECUBE {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtFloat, EsdCube);
- }
| F16TEXTURECUBE {
parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -2708,22 +2856,12 @@
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtFloat16, Esd1D, true);
}
- | TEXTURE2DARRAY {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtFloat, Esd2D, true);
- }
| F16TEXTURE2DARRAY {
parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtFloat16, Esd2D, true);
}
- | TEXTURECUBEARRAY {
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtSampler;
- $$.sampler.setTexture(EbtFloat, EsdCube, true);
- }
| F16TEXTURECUBEARRAY {
parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -2735,71 +2873,21 @@
$$.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;
@@ -3797,3 +3885,4 @@
%%
+
diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp
index 523e405..69f7f8e 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp
+++ b/glslang/MachineIndependent/glslang_tab.cpp
@@ -62,7 +62,7 @@
/* Copy the first part of user declarations. */
-#line 68 "MachineIndependent/glslang.y" /* yacc.c:339 */
+#line 69 "glslang.y" /* yacc.c:339 */
/* Based on:
@@ -88,7 +88,7 @@
using namespace glslang;
-#line 92 "MachineIndependent/glslang_tab.cpp" /* yacc.c:339 */
+#line 92 "glslang_tab.cpp" /* yacc.c:339 */
# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
@@ -108,8 +108,8 @@
/* In a future release of Bison, this section will be replaced
by #include "glslang_tab.cpp.h". */
-#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
-# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
+#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
+# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 1
@@ -167,370 +167,379 @@
USAMPLER3D = 299,
USAMPLERCUBE = 300,
USAMPLER2DARRAY = 301,
- SAMPLERCUBEARRAY = 302,
- SAMPLERCUBEARRAYSHADOW = 303,
- ISAMPLERCUBEARRAY = 304,
- USAMPLERCUBEARRAY = 305,
- ATTRIBUTE = 306,
- VARYING = 307,
- FLOAT16_T = 308,
- FLOAT32_T = 309,
- DOUBLE = 310,
- FLOAT64_T = 311,
- INT64_T = 312,
- UINT64_T = 313,
- INT32_T = 314,
- UINT32_T = 315,
- INT16_T = 316,
- UINT16_T = 317,
- INT8_T = 318,
- UINT8_T = 319,
- I64VEC2 = 320,
- I64VEC3 = 321,
- I64VEC4 = 322,
- U64VEC2 = 323,
- U64VEC3 = 324,
- U64VEC4 = 325,
- I32VEC2 = 326,
- I32VEC3 = 327,
- I32VEC4 = 328,
- U32VEC2 = 329,
- U32VEC3 = 330,
- U32VEC4 = 331,
- I16VEC2 = 332,
- I16VEC3 = 333,
- I16VEC4 = 334,
- U16VEC2 = 335,
- U16VEC3 = 336,
- U16VEC4 = 337,
- I8VEC2 = 338,
- I8VEC3 = 339,
- I8VEC4 = 340,
- U8VEC2 = 341,
- U8VEC3 = 342,
- U8VEC4 = 343,
- DVEC2 = 344,
- DVEC3 = 345,
- DVEC4 = 346,
- DMAT2 = 347,
- DMAT3 = 348,
- DMAT4 = 349,
- F16VEC2 = 350,
- F16VEC3 = 351,
- F16VEC4 = 352,
- F16MAT2 = 353,
- F16MAT3 = 354,
- F16MAT4 = 355,
- F32VEC2 = 356,
- F32VEC3 = 357,
- F32VEC4 = 358,
- F32MAT2 = 359,
- F32MAT3 = 360,
- F32MAT4 = 361,
- F64VEC2 = 362,
- F64VEC3 = 363,
- F64VEC4 = 364,
- F64MAT2 = 365,
- F64MAT3 = 366,
- F64MAT4 = 367,
- DMAT2X2 = 368,
- DMAT2X3 = 369,
- DMAT2X4 = 370,
- DMAT3X2 = 371,
- DMAT3X3 = 372,
- DMAT3X4 = 373,
- DMAT4X2 = 374,
- DMAT4X3 = 375,
- DMAT4X4 = 376,
- F16MAT2X2 = 377,
- F16MAT2X3 = 378,
- F16MAT2X4 = 379,
- F16MAT3X2 = 380,
- F16MAT3X3 = 381,
- F16MAT3X4 = 382,
- F16MAT4X2 = 383,
- F16MAT4X3 = 384,
- F16MAT4X4 = 385,
- F32MAT2X2 = 386,
- F32MAT2X3 = 387,
- F32MAT2X4 = 388,
- F32MAT3X2 = 389,
- F32MAT3X3 = 390,
- F32MAT3X4 = 391,
- F32MAT4X2 = 392,
- F32MAT4X3 = 393,
- F32MAT4X4 = 394,
- F64MAT2X2 = 395,
- F64MAT2X3 = 396,
- F64MAT2X4 = 397,
- F64MAT3X2 = 398,
- F64MAT3X3 = 399,
- F64MAT3X4 = 400,
- F64MAT4X2 = 401,
- F64MAT4X3 = 402,
- F64MAT4X4 = 403,
- ATOMIC_UINT = 404,
- ACCSTRUCTNV = 405,
- FCOOPMATNV = 406,
- ICOOPMATNV = 407,
- UCOOPMATNV = 408,
- SAMPLER1D = 409,
- SAMPLER1DARRAY = 410,
- SAMPLER1DARRAYSHADOW = 411,
- ISAMPLER1D = 412,
- SAMPLER1DSHADOW = 413,
- SAMPLER2DRECT = 414,
- SAMPLER2DRECTSHADOW = 415,
- ISAMPLER2DRECT = 416,
- USAMPLER2DRECT = 417,
- SAMPLERBUFFER = 418,
- ISAMPLERBUFFER = 419,
- USAMPLERBUFFER = 420,
- SAMPLER2DMS = 421,
- ISAMPLER2DMS = 422,
- USAMPLER2DMS = 423,
- SAMPLER2DMSARRAY = 424,
- ISAMPLER2DMSARRAY = 425,
- USAMPLER2DMSARRAY = 426,
- SAMPLEREXTERNALOES = 427,
- SAMPLEREXTERNAL2DY2YEXT = 428,
- ISAMPLER1DARRAY = 429,
- USAMPLER1D = 430,
- USAMPLER1DARRAY = 431,
- F16SAMPLER1D = 432,
- F16SAMPLER2D = 433,
- F16SAMPLER3D = 434,
- F16SAMPLER2DRECT = 435,
- F16SAMPLERCUBE = 436,
- F16SAMPLER1DARRAY = 437,
- F16SAMPLER2DARRAY = 438,
- F16SAMPLERCUBEARRAY = 439,
- F16SAMPLERBUFFER = 440,
- F16SAMPLER2DMS = 441,
- F16SAMPLER2DMSARRAY = 442,
- F16SAMPLER1DSHADOW = 443,
- F16SAMPLER2DSHADOW = 444,
- F16SAMPLER1DARRAYSHADOW = 445,
- F16SAMPLER2DARRAYSHADOW = 446,
- F16SAMPLER2DRECTSHADOW = 447,
- F16SAMPLERCUBESHADOW = 448,
- F16SAMPLERCUBEARRAYSHADOW = 449,
- IMAGE1D = 450,
- IIMAGE1D = 451,
- UIMAGE1D = 452,
- IMAGE2D = 453,
- IIMAGE2D = 454,
- UIMAGE2D = 455,
- IMAGE3D = 456,
- IIMAGE3D = 457,
- UIMAGE3D = 458,
- IMAGE2DRECT = 459,
- IIMAGE2DRECT = 460,
- UIMAGE2DRECT = 461,
- IMAGECUBE = 462,
- IIMAGECUBE = 463,
- UIMAGECUBE = 464,
- IMAGEBUFFER = 465,
- IIMAGEBUFFER = 466,
- UIMAGEBUFFER = 467,
- IMAGE1DARRAY = 468,
- IIMAGE1DARRAY = 469,
- UIMAGE1DARRAY = 470,
- IMAGE2DARRAY = 471,
- IIMAGE2DARRAY = 472,
- UIMAGE2DARRAY = 473,
- IMAGECUBEARRAY = 474,
- IIMAGECUBEARRAY = 475,
- UIMAGECUBEARRAY = 476,
- IMAGE2DMS = 477,
- IIMAGE2DMS = 478,
- UIMAGE2DMS = 479,
- IMAGE2DMSARRAY = 480,
- IIMAGE2DMSARRAY = 481,
- UIMAGE2DMSARRAY = 482,
- F16IMAGE1D = 483,
- F16IMAGE2D = 484,
- F16IMAGE3D = 485,
- F16IMAGE2DRECT = 486,
- F16IMAGECUBE = 487,
- F16IMAGE1DARRAY = 488,
- F16IMAGE2DARRAY = 489,
- F16IMAGECUBEARRAY = 490,
- F16IMAGEBUFFER = 491,
- F16IMAGE2DMS = 492,
- F16IMAGE2DMSARRAY = 493,
- SAMPLER = 494,
- SAMPLERSHADOW = 495,
- TEXTURE1D = 496,
- TEXTURE2D = 497,
- TEXTURE3D = 498,
- TEXTURECUBE = 499,
- TEXTURE1DARRAY = 500,
- TEXTURE2DARRAY = 501,
- ITEXTURE1D = 502,
- ITEXTURE2D = 503,
- ITEXTURE3D = 504,
- ITEXTURECUBE = 505,
- ITEXTURE1DARRAY = 506,
- ITEXTURE2DARRAY = 507,
- UTEXTURE1D = 508,
- UTEXTURE2D = 509,
- UTEXTURE3D = 510,
- UTEXTURECUBE = 511,
- UTEXTURE1DARRAY = 512,
- UTEXTURE2DARRAY = 513,
- TEXTURE2DRECT = 514,
- ITEXTURE2DRECT = 515,
- UTEXTURE2DRECT = 516,
- TEXTUREBUFFER = 517,
- ITEXTUREBUFFER = 518,
- UTEXTUREBUFFER = 519,
- TEXTURECUBEARRAY = 520,
- ITEXTURECUBEARRAY = 521,
- UTEXTURECUBEARRAY = 522,
- TEXTURE2DMS = 523,
- ITEXTURE2DMS = 524,
- UTEXTURE2DMS = 525,
- TEXTURE2DMSARRAY = 526,
- ITEXTURE2DMSARRAY = 527,
- UTEXTURE2DMSARRAY = 528,
- F16TEXTURE1D = 529,
- F16TEXTURE2D = 530,
- F16TEXTURE3D = 531,
- F16TEXTURE2DRECT = 532,
- F16TEXTURECUBE = 533,
- F16TEXTURE1DARRAY = 534,
- F16TEXTURE2DARRAY = 535,
- F16TEXTURECUBEARRAY = 536,
- F16TEXTUREBUFFER = 537,
- F16TEXTURE2DMS = 538,
- F16TEXTURE2DMSARRAY = 539,
- SUBPASSINPUT = 540,
- SUBPASSINPUTMS = 541,
- ISUBPASSINPUT = 542,
- ISUBPASSINPUTMS = 543,
- USUBPASSINPUT = 544,
- USUBPASSINPUTMS = 545,
- F16SUBPASSINPUT = 546,
- F16SUBPASSINPUTMS = 547,
- LEFT_OP = 548,
- RIGHT_OP = 549,
- INC_OP = 550,
- DEC_OP = 551,
- LE_OP = 552,
- GE_OP = 553,
- EQ_OP = 554,
- NE_OP = 555,
- AND_OP = 556,
- OR_OP = 557,
- XOR_OP = 558,
- MUL_ASSIGN = 559,
- DIV_ASSIGN = 560,
- ADD_ASSIGN = 561,
- MOD_ASSIGN = 562,
- LEFT_ASSIGN = 563,
- RIGHT_ASSIGN = 564,
- AND_ASSIGN = 565,
- XOR_ASSIGN = 566,
- OR_ASSIGN = 567,
- SUB_ASSIGN = 568,
- LEFT_PAREN = 569,
- RIGHT_PAREN = 570,
- LEFT_BRACKET = 571,
- RIGHT_BRACKET = 572,
- LEFT_BRACE = 573,
- RIGHT_BRACE = 574,
- DOT = 575,
- COMMA = 576,
- COLON = 577,
- EQUAL = 578,
- SEMICOLON = 579,
- BANG = 580,
- DASH = 581,
- TILDE = 582,
- PLUS = 583,
- STAR = 584,
- SLASH = 585,
- PERCENT = 586,
- LEFT_ANGLE = 587,
- RIGHT_ANGLE = 588,
- VERTICAL_BAR = 589,
- CARET = 590,
- AMPERSAND = 591,
- QUESTION = 592,
- INVARIANT = 593,
- HIGH_PRECISION = 594,
- MEDIUM_PRECISION = 595,
- LOW_PRECISION = 596,
- PRECISION = 597,
- PACKED = 598,
- RESOURCE = 599,
- SUPERP = 600,
- FLOATCONSTANT = 601,
- INTCONSTANT = 602,
- UINTCONSTANT = 603,
- BOOLCONSTANT = 604,
- IDENTIFIER = 605,
- TYPE_NAME = 606,
- CENTROID = 607,
- IN = 608,
- OUT = 609,
- INOUT = 610,
- STRUCT = 611,
- VOID = 612,
- WHILE = 613,
- BREAK = 614,
- CONTINUE = 615,
- DO = 616,
- ELSE = 617,
- FOR = 618,
- IF = 619,
- DISCARD = 620,
- RETURN = 621,
- SWITCH = 622,
- CASE = 623,
- DEFAULT = 624,
- UNIFORM = 625,
- SHARED = 626,
- FLAT = 627,
- SMOOTH = 628,
- LAYOUT = 629,
- DOUBLECONSTANT = 630,
- INT16CONSTANT = 631,
- UINT16CONSTANT = 632,
- FLOAT16CONSTANT = 633,
- INT32CONSTANT = 634,
- UINT32CONSTANT = 635,
- INT64CONSTANT = 636,
- UINT64CONSTANT = 637,
- SUBROUTINE = 638,
- DEMOTE = 639,
- PAYLOADNV = 640,
- PAYLOADINNV = 641,
- HITATTRNV = 642,
- CALLDATANV = 643,
- CALLDATAINNV = 644,
- PATCH = 645,
- SAMPLE = 646,
- BUFFER = 647,
- NONUNIFORM = 648,
- COHERENT = 649,
- VOLATILE = 650,
- RESTRICT = 651,
- READONLY = 652,
- WRITEONLY = 653,
- DEVICECOHERENT = 654,
- QUEUEFAMILYCOHERENT = 655,
- WORKGROUPCOHERENT = 656,
- SUBGROUPCOHERENT = 657,
- NONPRIVATE = 658,
- NOPERSPECTIVE = 659,
- EXPLICITINTERPAMD = 660,
- PERVERTEXNV = 661,
- PERPRIMITIVENV = 662,
- PERVIEWNV = 663,
- PERTASKNV = 664,
- PRECISE = 665
+ SAMPLER = 302,
+ SAMPLERSHADOW = 303,
+ TEXTURE2D = 304,
+ TEXTURE3D = 305,
+ TEXTURECUBE = 306,
+ TEXTURE2DARRAY = 307,
+ ITEXTURE2D = 308,
+ ITEXTURE3D = 309,
+ ITEXTURECUBE = 310,
+ ITEXTURE2DARRAY = 311,
+ UTEXTURE2D = 312,
+ UTEXTURE3D = 313,
+ UTEXTURECUBE = 314,
+ UTEXTURE2DARRAY = 315,
+ ATTRIBUTE = 316,
+ VARYING = 317,
+ FLOAT16_T = 318,
+ FLOAT32_T = 319,
+ DOUBLE = 320,
+ FLOAT64_T = 321,
+ INT64_T = 322,
+ UINT64_T = 323,
+ INT32_T = 324,
+ UINT32_T = 325,
+ INT16_T = 326,
+ UINT16_T = 327,
+ INT8_T = 328,
+ UINT8_T = 329,
+ I64VEC2 = 330,
+ I64VEC3 = 331,
+ I64VEC4 = 332,
+ U64VEC2 = 333,
+ U64VEC3 = 334,
+ U64VEC4 = 335,
+ I32VEC2 = 336,
+ I32VEC3 = 337,
+ I32VEC4 = 338,
+ U32VEC2 = 339,
+ U32VEC3 = 340,
+ U32VEC4 = 341,
+ I16VEC2 = 342,
+ I16VEC3 = 343,
+ I16VEC4 = 344,
+ U16VEC2 = 345,
+ U16VEC3 = 346,
+ U16VEC4 = 347,
+ I8VEC2 = 348,
+ I8VEC3 = 349,
+ I8VEC4 = 350,
+ U8VEC2 = 351,
+ U8VEC3 = 352,
+ U8VEC4 = 353,
+ DVEC2 = 354,
+ DVEC3 = 355,
+ DVEC4 = 356,
+ DMAT2 = 357,
+ DMAT3 = 358,
+ DMAT4 = 359,
+ F16VEC2 = 360,
+ F16VEC3 = 361,
+ F16VEC4 = 362,
+ F16MAT2 = 363,
+ F16MAT3 = 364,
+ F16MAT4 = 365,
+ F32VEC2 = 366,
+ F32VEC3 = 367,
+ F32VEC4 = 368,
+ F32MAT2 = 369,
+ F32MAT3 = 370,
+ F32MAT4 = 371,
+ F64VEC2 = 372,
+ F64VEC3 = 373,
+ F64VEC4 = 374,
+ F64MAT2 = 375,
+ F64MAT3 = 376,
+ F64MAT4 = 377,
+ DMAT2X2 = 378,
+ DMAT2X3 = 379,
+ DMAT2X4 = 380,
+ DMAT3X2 = 381,
+ DMAT3X3 = 382,
+ DMAT3X4 = 383,
+ DMAT4X2 = 384,
+ DMAT4X3 = 385,
+ DMAT4X4 = 386,
+ F16MAT2X2 = 387,
+ F16MAT2X3 = 388,
+ F16MAT2X4 = 389,
+ F16MAT3X2 = 390,
+ F16MAT3X3 = 391,
+ F16MAT3X4 = 392,
+ F16MAT4X2 = 393,
+ F16MAT4X3 = 394,
+ F16MAT4X4 = 395,
+ F32MAT2X2 = 396,
+ F32MAT2X3 = 397,
+ F32MAT2X4 = 398,
+ F32MAT3X2 = 399,
+ F32MAT3X3 = 400,
+ F32MAT3X4 = 401,
+ F32MAT4X2 = 402,
+ F32MAT4X3 = 403,
+ F32MAT4X4 = 404,
+ F64MAT2X2 = 405,
+ F64MAT2X3 = 406,
+ F64MAT2X4 = 407,
+ F64MAT3X2 = 408,
+ F64MAT3X3 = 409,
+ F64MAT3X4 = 410,
+ F64MAT4X2 = 411,
+ F64MAT4X3 = 412,
+ F64MAT4X4 = 413,
+ ATOMIC_UINT = 414,
+ ACCSTRUCTNV = 415,
+ ACCSTRUCTEXT = 416,
+ RAYQUERYEXT = 417,
+ FCOOPMATNV = 418,
+ ICOOPMATNV = 419,
+ UCOOPMATNV = 420,
+ SAMPLERCUBEARRAY = 421,
+ SAMPLERCUBEARRAYSHADOW = 422,
+ ISAMPLERCUBEARRAY = 423,
+ USAMPLERCUBEARRAY = 424,
+ SAMPLER1D = 425,
+ SAMPLER1DARRAY = 426,
+ SAMPLER1DARRAYSHADOW = 427,
+ ISAMPLER1D = 428,
+ SAMPLER1DSHADOW = 429,
+ SAMPLER2DRECT = 430,
+ SAMPLER2DRECTSHADOW = 431,
+ ISAMPLER2DRECT = 432,
+ USAMPLER2DRECT = 433,
+ SAMPLERBUFFER = 434,
+ ISAMPLERBUFFER = 435,
+ USAMPLERBUFFER = 436,
+ SAMPLER2DMS = 437,
+ ISAMPLER2DMS = 438,
+ USAMPLER2DMS = 439,
+ SAMPLER2DMSARRAY = 440,
+ ISAMPLER2DMSARRAY = 441,
+ USAMPLER2DMSARRAY = 442,
+ SAMPLEREXTERNALOES = 443,
+ SAMPLEREXTERNAL2DY2YEXT = 444,
+ ISAMPLER1DARRAY = 445,
+ USAMPLER1D = 446,
+ USAMPLER1DARRAY = 447,
+ F16SAMPLER1D = 448,
+ F16SAMPLER2D = 449,
+ F16SAMPLER3D = 450,
+ F16SAMPLER2DRECT = 451,
+ F16SAMPLERCUBE = 452,
+ F16SAMPLER1DARRAY = 453,
+ F16SAMPLER2DARRAY = 454,
+ F16SAMPLERCUBEARRAY = 455,
+ F16SAMPLERBUFFER = 456,
+ F16SAMPLER2DMS = 457,
+ F16SAMPLER2DMSARRAY = 458,
+ F16SAMPLER1DSHADOW = 459,
+ F16SAMPLER2DSHADOW = 460,
+ F16SAMPLER1DARRAYSHADOW = 461,
+ F16SAMPLER2DARRAYSHADOW = 462,
+ F16SAMPLER2DRECTSHADOW = 463,
+ F16SAMPLERCUBESHADOW = 464,
+ F16SAMPLERCUBEARRAYSHADOW = 465,
+ IMAGE1D = 466,
+ IIMAGE1D = 467,
+ UIMAGE1D = 468,
+ IMAGE2D = 469,
+ IIMAGE2D = 470,
+ UIMAGE2D = 471,
+ IMAGE3D = 472,
+ IIMAGE3D = 473,
+ UIMAGE3D = 474,
+ IMAGE2DRECT = 475,
+ IIMAGE2DRECT = 476,
+ UIMAGE2DRECT = 477,
+ IMAGECUBE = 478,
+ IIMAGECUBE = 479,
+ UIMAGECUBE = 480,
+ IMAGEBUFFER = 481,
+ IIMAGEBUFFER = 482,
+ UIMAGEBUFFER = 483,
+ IMAGE1DARRAY = 484,
+ IIMAGE1DARRAY = 485,
+ UIMAGE1DARRAY = 486,
+ IMAGE2DARRAY = 487,
+ IIMAGE2DARRAY = 488,
+ UIMAGE2DARRAY = 489,
+ IMAGECUBEARRAY = 490,
+ IIMAGECUBEARRAY = 491,
+ UIMAGECUBEARRAY = 492,
+ IMAGE2DMS = 493,
+ IIMAGE2DMS = 494,
+ UIMAGE2DMS = 495,
+ IMAGE2DMSARRAY = 496,
+ IIMAGE2DMSARRAY = 497,
+ UIMAGE2DMSARRAY = 498,
+ F16IMAGE1D = 499,
+ F16IMAGE2D = 500,
+ F16IMAGE3D = 501,
+ F16IMAGE2DRECT = 502,
+ F16IMAGECUBE = 503,
+ F16IMAGE1DARRAY = 504,
+ F16IMAGE2DARRAY = 505,
+ F16IMAGECUBEARRAY = 506,
+ F16IMAGEBUFFER = 507,
+ F16IMAGE2DMS = 508,
+ F16IMAGE2DMSARRAY = 509,
+ TEXTURECUBEARRAY = 510,
+ ITEXTURECUBEARRAY = 511,
+ UTEXTURECUBEARRAY = 512,
+ TEXTURE1D = 513,
+ ITEXTURE1D = 514,
+ UTEXTURE1D = 515,
+ TEXTURE1DARRAY = 516,
+ ITEXTURE1DARRAY = 517,
+ UTEXTURE1DARRAY = 518,
+ TEXTURE2DRECT = 519,
+ ITEXTURE2DRECT = 520,
+ UTEXTURE2DRECT = 521,
+ TEXTUREBUFFER = 522,
+ ITEXTUREBUFFER = 523,
+ UTEXTUREBUFFER = 524,
+ TEXTURE2DMS = 525,
+ ITEXTURE2DMS = 526,
+ UTEXTURE2DMS = 527,
+ TEXTURE2DMSARRAY = 528,
+ ITEXTURE2DMSARRAY = 529,
+ UTEXTURE2DMSARRAY = 530,
+ F16TEXTURE1D = 531,
+ F16TEXTURE2D = 532,
+ F16TEXTURE3D = 533,
+ F16TEXTURE2DRECT = 534,
+ F16TEXTURECUBE = 535,
+ F16TEXTURE1DARRAY = 536,
+ F16TEXTURE2DARRAY = 537,
+ F16TEXTURECUBEARRAY = 538,
+ F16TEXTUREBUFFER = 539,
+ F16TEXTURE2DMS = 540,
+ F16TEXTURE2DMSARRAY = 541,
+ SUBPASSINPUT = 542,
+ SUBPASSINPUTMS = 543,
+ ISUBPASSINPUT = 544,
+ ISUBPASSINPUTMS = 545,
+ USUBPASSINPUT = 546,
+ USUBPASSINPUTMS = 547,
+ F16SUBPASSINPUT = 548,
+ F16SUBPASSINPUTMS = 549,
+ LEFT_OP = 550,
+ RIGHT_OP = 551,
+ INC_OP = 552,
+ DEC_OP = 553,
+ LE_OP = 554,
+ GE_OP = 555,
+ EQ_OP = 556,
+ NE_OP = 557,
+ AND_OP = 558,
+ OR_OP = 559,
+ XOR_OP = 560,
+ MUL_ASSIGN = 561,
+ DIV_ASSIGN = 562,
+ ADD_ASSIGN = 563,
+ MOD_ASSIGN = 564,
+ LEFT_ASSIGN = 565,
+ RIGHT_ASSIGN = 566,
+ AND_ASSIGN = 567,
+ XOR_ASSIGN = 568,
+ OR_ASSIGN = 569,
+ SUB_ASSIGN = 570,
+ STRING_LITERAL = 571,
+ LEFT_PAREN = 572,
+ RIGHT_PAREN = 573,
+ LEFT_BRACKET = 574,
+ RIGHT_BRACKET = 575,
+ LEFT_BRACE = 576,
+ RIGHT_BRACE = 577,
+ DOT = 578,
+ COMMA = 579,
+ COLON = 580,
+ EQUAL = 581,
+ SEMICOLON = 582,
+ BANG = 583,
+ DASH = 584,
+ TILDE = 585,
+ PLUS = 586,
+ STAR = 587,
+ SLASH = 588,
+ PERCENT = 589,
+ LEFT_ANGLE = 590,
+ RIGHT_ANGLE = 591,
+ VERTICAL_BAR = 592,
+ CARET = 593,
+ AMPERSAND = 594,
+ QUESTION = 595,
+ INVARIANT = 596,
+ HIGH_PRECISION = 597,
+ MEDIUM_PRECISION = 598,
+ LOW_PRECISION = 599,
+ PRECISION = 600,
+ PACKED = 601,
+ RESOURCE = 602,
+ SUPERP = 603,
+ FLOATCONSTANT = 604,
+ INTCONSTANT = 605,
+ UINTCONSTANT = 606,
+ BOOLCONSTANT = 607,
+ IDENTIFIER = 608,
+ TYPE_NAME = 609,
+ CENTROID = 610,
+ IN = 611,
+ OUT = 612,
+ INOUT = 613,
+ STRUCT = 614,
+ VOID = 615,
+ WHILE = 616,
+ BREAK = 617,
+ CONTINUE = 618,
+ DO = 619,
+ ELSE = 620,
+ FOR = 621,
+ IF = 622,
+ DISCARD = 623,
+ RETURN = 624,
+ SWITCH = 625,
+ CASE = 626,
+ DEFAULT = 627,
+ UNIFORM = 628,
+ SHARED = 629,
+ BUFFER = 630,
+ FLAT = 631,
+ SMOOTH = 632,
+ LAYOUT = 633,
+ DOUBLECONSTANT = 634,
+ INT16CONSTANT = 635,
+ UINT16CONSTANT = 636,
+ FLOAT16CONSTANT = 637,
+ INT32CONSTANT = 638,
+ UINT32CONSTANT = 639,
+ INT64CONSTANT = 640,
+ UINT64CONSTANT = 641,
+ SUBROUTINE = 642,
+ DEMOTE = 643,
+ PAYLOADNV = 644,
+ PAYLOADINNV = 645,
+ HITATTRNV = 646,
+ CALLDATANV = 647,
+ CALLDATAINNV = 648,
+ PAYLOADEXT = 649,
+ PAYLOADINEXT = 650,
+ HITATTREXT = 651,
+ CALLDATAEXT = 652,
+ CALLDATAINEXT = 653,
+ PATCH = 654,
+ SAMPLE = 655,
+ NONUNIFORM = 656,
+ COHERENT = 657,
+ VOLATILE = 658,
+ RESTRICT = 659,
+ READONLY = 660,
+ WRITEONLY = 661,
+ DEVICECOHERENT = 662,
+ QUEUEFAMILYCOHERENT = 663,
+ WORKGROUPCOHERENT = 664,
+ SUBGROUPCOHERENT = 665,
+ NONPRIVATE = 666,
+ SHADERCALLCOHERENT = 667,
+ NOPERSPECTIVE = 668,
+ EXPLICITINTERPAMD = 669,
+ PERVERTEXNV = 670,
+ PERPRIMITIVENV = 671,
+ PERVIEWNV = 672,
+ PERTASKNV = 673,
+ PRECISE = 674
};
#endif
@@ -539,7 +548,7 @@
union YYSTYPE
{
-#line 96 "MachineIndependent/glslang.y" /* yacc.c:355 */
+#line 97 "glslang.y" /* yacc.c:355 */
struct {
glslang::TSourceLoc loc;
@@ -575,7 +584,7 @@
glslang::TArraySizes* typeParameters;
} interm;
-#line 579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */
+#line 588 "glslang_tab.cpp" /* yacc.c:355 */
};
typedef union YYSTYPE YYSTYPE;
@@ -587,10 +596,10 @@
int yyparse (glslang::TParseContext* pParseContext);
-#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */
+#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED */
/* Copy the second part of user declarations. */
-#line 132 "MachineIndependent/glslang.y" /* yacc.c:358 */
+#line 133 "glslang.y" /* yacc.c:358 */
/* windows only pragma */
@@ -606,7 +615,7 @@
extern int yylex(YYSTYPE*, TParseContext&);
-#line 610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */
+#line 619 "glslang_tab.cpp" /* yacc.c:358 */
#ifdef short
# undef short
@@ -846,23 +855,23 @@
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 386
+#define YYFINAL 394
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 9369
+#define YYLAST 9550
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 411
+#define YYNTOKENS 420
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 111
/* YYNRULES -- Number of rules. */
-#define YYNRULES 582
+#define YYNRULES 591
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 727
+#define YYNSTATES 736
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
by yylex, with out-of-bounds checking. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 665
+#define YYMAXUTOK 674
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -937,72 +946,74 @@
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
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 352, 352, 358, 361, 366, 369, 372, 376, 380,
- 384, 388, 392, 396, 400, 404, 408, 416, 419, 422,
- 425, 428, 433, 441, 448, 455, 461, 465, 472, 475,
- 481, 488, 498, 506, 511, 539, 548, 554, 558, 562,
- 582, 583, 584, 585, 591, 592, 597, 602, 611, 612,
- 617, 625, 626, 632, 641, 642, 647, 652, 657, 665,
- 666, 675, 687, 688, 697, 698, 707, 708, 717, 718,
- 726, 727, 735, 736, 744, 745, 745, 763, 764, 780,
- 784, 788, 792, 797, 801, 805, 809, 813, 817, 821,
- 828, 831, 842, 849, 854, 859, 866, 870, 874, 878,
- 883, 888, 897, 897, 908, 912, 919, 926, 929, 936,
- 944, 964, 987, 1002, 1027, 1038, 1048, 1058, 1068, 1077,
- 1080, 1084, 1088, 1093, 1101, 1108, 1113, 1118, 1123, 1132,
- 1142, 1169, 1178, 1185, 1193, 1200, 1207, 1215, 1225, 1232,
- 1243, 1249, 1252, 1259, 1263, 1267, 1276, 1286, 1289, 1300,
- 1303, 1306, 1310, 1314, 1319, 1323, 1330, 1334, 1339, 1345,
- 1351, 1358, 1364, 1372, 1377, 1389, 1403, 1409, 1414, 1422,
- 1430, 1438, 1446, 1453, 1457, 1462, 1467, 1472, 1477, 1482,
- 1486, 1490, 1494, 1498, 1504, 1515, 1522, 1525, 1534, 1539,
- 1549, 1554, 1562, 1566, 1576, 1579, 1585, 1591, 1598, 1608,
- 1612, 1616, 1620, 1625, 1629, 1634, 1639, 1644, 1649, 1654,
- 1659, 1664, 1669, 1674, 1680, 1686, 1692, 1697, 1702, 1707,
- 1712, 1717, 1722, 1727, 1732, 1737, 1742, 1747, 1753, 1758,
- 1763, 1768, 1773, 1778, 1783, 1788, 1793, 1798, 1803, 1808,
- 1813, 1819, 1825, 1831, 1837, 1843, 1849, 1855, 1861, 1867,
- 1873, 1879, 1885, 1891, 1897, 1903, 1909, 1915, 1921, 1927,
- 1933, 1939, 1945, 1951, 1957, 1963, 1969, 1975, 1981, 1987,
- 1993, 1999, 2005, 2011, 2017, 2023, 2029, 2035, 2041, 2047,
- 2053, 2059, 2065, 2071, 2077, 2083, 2089, 2095, 2101, 2107,
- 2113, 2119, 2125, 2131, 2137, 2143, 2149, 2155, 2161, 2167,
- 2173, 2179, 2185, 2191, 2197, 2203, 2209, 2215, 2221, 2227,
- 2233, 2239, 2245, 2251, 2257, 2263, 2269, 2275, 2281, 2287,
- 2293, 2299, 2305, 2311, 2317, 2321, 2326, 2332, 2337, 2342,
- 2347, 2352, 2358, 2363, 2368, 2374, 2379, 2384, 2389, 2395,
- 2401, 2407, 2413, 2419, 2425, 2431, 2437, 2443, 2449, 2455,
- 2461, 2467, 2473, 2479, 2484, 2489, 2495, 2501, 2506, 2512,
- 2518, 2523, 2528, 2534, 2540, 2545, 2551, 2556, 2561, 2567,
- 2573, 2578, 2583, 2588, 2594, 2599, 2604, 2609, 2615, 2620,
- 2625, 2630, 2636, 2641, 2646, 2651, 2656, 2661, 2667, 2672,
- 2678, 2683, 2689, 2694, 2700, 2705, 2711, 2716, 2722, 2727,
- 2733, 2738, 2743, 2748, 2753, 2758, 2763, 2768, 2773, 2778,
- 2783, 2788, 2793, 2798, 2803, 2808, 2814, 2819, 2824, 2829,
- 2835, 2840, 2845, 2850, 2856, 2861, 2866, 2871, 2877, 2882,
- 2887, 2892, 2898, 2903, 2908, 2913, 2919, 2924, 2929, 2934,
- 2940, 2945, 2950, 2955, 2961, 2966, 2971, 2976, 2982, 2987,
- 2992, 2997, 3003, 3008, 3013, 3018, 3024, 3029, 3034, 3039,
- 3045, 3050, 3055, 3060, 3066, 3071, 3076, 3081, 3087, 3092,
- 3097, 3102, 3108, 3113, 3118, 3124, 3130, 3136, 3142, 3149,
- 3156, 3162, 3168, 3174, 3180, 3186, 3192, 3199, 3204, 3220,
- 3225, 3230, 3238, 3238, 3249, 3249, 3259, 3262, 3275, 3297,
- 3324, 3328, 3334, 3339, 3350, 3354, 3360, 3371, 3374, 3381,
- 3385, 3386, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3400,
- 3406, 3415, 3416, 3420, 3416, 3432, 3433, 3437, 3437, 3444,
- 3444, 3458, 3461, 3469, 3477, 3488, 3489, 3493, 3497, 3504,
- 3511, 3515, 3523, 3527, 3540, 3544, 3551, 3551, 3571, 3574,
- 3580, 3592, 3604, 3608, 3615, 3615, 3630, 3630, 3646, 3646,
- 3667, 3670, 3676, 3679, 3685, 3689, 3696, 3701, 3706, 3713,
- 3716, 3725, 3729, 3738, 3741, 3745, 3754, 3754, 3777, 3783,
- 3786, 3791, 3794
+ 0, 357, 357, 363, 366, 371, 374, 377, 381, 385,
+ 388, 392, 396, 400, 404, 408, 412, 418, 426, 429,
+ 432, 435, 438, 443, 451, 458, 465, 471, 475, 482,
+ 485, 491, 498, 508, 516, 521, 549, 558, 564, 568,
+ 572, 592, 593, 594, 595, 601, 602, 607, 612, 621,
+ 622, 627, 635, 636, 642, 651, 652, 657, 662, 667,
+ 675, 676, 685, 697, 698, 707, 708, 717, 718, 727,
+ 728, 736, 737, 745, 746, 754, 755, 755, 773, 774,
+ 790, 794, 798, 802, 807, 811, 815, 819, 823, 827,
+ 831, 838, 841, 852, 859, 864, 869, 876, 880, 884,
+ 888, 893, 898, 907, 907, 918, 922, 929, 936, 939,
+ 946, 954, 974, 997, 1012, 1037, 1048, 1058, 1068, 1078,
+ 1087, 1090, 1094, 1098, 1103, 1111, 1118, 1123, 1128, 1133,
+ 1142, 1152, 1179, 1188, 1195, 1203, 1210, 1217, 1225, 1235,
+ 1242, 1253, 1259, 1262, 1269, 1273, 1277, 1286, 1296, 1299,
+ 1310, 1313, 1316, 1320, 1324, 1329, 1333, 1340, 1344, 1349,
+ 1355, 1361, 1368, 1373, 1381, 1387, 1399, 1413, 1419, 1424,
+ 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1495, 1502,
+ 1506, 1511, 1516, 1521, 1526, 1531, 1536, 1540, 1544, 1548,
+ 1552, 1558, 1569, 1576, 1579, 1588, 1593, 1603, 1608, 1616,
+ 1620, 1630, 1633, 1639, 1645, 1652, 1662, 1666, 1670, 1674,
+ 1679, 1683, 1688, 1693, 1698, 1703, 1708, 1713, 1718, 1723,
+ 1728, 1734, 1740, 1746, 1751, 1756, 1761, 1766, 1771, 1776,
+ 1781, 1786, 1791, 1796, 1801, 1807, 1814, 1819, 1824, 1829,
+ 1834, 1839, 1844, 1849, 1854, 1859, 1864, 1869, 1877, 1885,
+ 1893, 1899, 1905, 1911, 1917, 1923, 1929, 1935, 1941, 1947,
+ 1953, 1959, 1965, 1971, 1977, 1983, 1989, 1995, 2001, 2007,
+ 2013, 2019, 2025, 2031, 2037, 2043, 2049, 2055, 2061, 2067,
+ 2073, 2079, 2085, 2091, 2099, 2107, 2115, 2123, 2131, 2139,
+ 2147, 2155, 2163, 2171, 2179, 2187, 2193, 2199, 2205, 2211,
+ 2217, 2223, 2229, 2235, 2241, 2247, 2253, 2259, 2265, 2271,
+ 2277, 2283, 2289, 2295, 2301, 2307, 2313, 2319, 2325, 2331,
+ 2337, 2343, 2349, 2355, 2361, 2367, 2373, 2379, 2385, 2391,
+ 2397, 2403, 2407, 2411, 2415, 2420, 2426, 2431, 2436, 2441,
+ 2446, 2451, 2456, 2462, 2467, 2472, 2477, 2482, 2487, 2493,
+ 2499, 2505, 2511, 2517, 2523, 2529, 2535, 2541, 2547, 2553,
+ 2559, 2565, 2571, 2576, 2581, 2586, 2591, 2596, 2601, 2607,
+ 2612, 2617, 2622, 2627, 2632, 2637, 2642, 2648, 2653, 2658,
+ 2663, 2668, 2673, 2678, 2683, 2688, 2693, 2698, 2703, 2708,
+ 2713, 2718, 2724, 2729, 2734, 2740, 2746, 2751, 2756, 2761,
+ 2767, 2772, 2777, 2782, 2788, 2793, 2798, 2803, 2809, 2814,
+ 2819, 2824, 2830, 2836, 2842, 2848, 2853, 2859, 2865, 2871,
+ 2876, 2881, 2886, 2891, 2896, 2902, 2907, 2912, 2917, 2923,
+ 2928, 2933, 2938, 2944, 2949, 2954, 2959, 2965, 2970, 2975,
+ 2980, 2986, 2991, 2996, 3001, 3007, 3012, 3017, 3022, 3028,
+ 3033, 3038, 3043, 3049, 3054, 3059, 3064, 3070, 3075, 3080,
+ 3085, 3091, 3096, 3101, 3106, 3112, 3117, 3122, 3127, 3133,
+ 3138, 3143, 3148, 3154, 3159, 3164, 3169, 3175, 3180, 3185,
+ 3190, 3196, 3201, 3206, 3212, 3218, 3224, 3230, 3237, 3244,
+ 3250, 3256, 3262, 3268, 3274, 3280, 3287, 3292, 3308, 3313,
+ 3318, 3326, 3326, 3337, 3337, 3347, 3350, 3363, 3385, 3412,
+ 3416, 3422, 3427, 3438, 3442, 3448, 3459, 3462, 3469, 3473,
+ 3474, 3480, 3481, 3482, 3483, 3484, 3485, 3486, 3488, 3494,
+ 3503, 3504, 3508, 3504, 3520, 3521, 3525, 3525, 3532, 3532,
+ 3546, 3549, 3557, 3565, 3576, 3577, 3581, 3585, 3592, 3599,
+ 3603, 3611, 3615, 3628, 3632, 3639, 3639, 3659, 3662, 3668,
+ 3680, 3692, 3696, 3703, 3703, 3718, 3718, 3734, 3734, 3755,
+ 3758, 3764, 3767, 3773, 3777, 3784, 3789, 3794, 3801, 3804,
+ 3813, 3817, 3826, 3829, 3833, 3842, 3842, 3865, 3871, 3874,
+ 3879, 3882
};
#endif
@@ -1018,9 +1029,11 @@
"MAT4X4", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER2DSHADOW",
"SAMPLERCUBESHADOW", "SAMPLER2DARRAY", "SAMPLER2DARRAYSHADOW",
"ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", "ISAMPLER2DARRAY",
- "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER2DARRAY",
- "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY",
- "USAMPLERCUBEARRAY", "ATTRIBUTE", "VARYING", "FLOAT16_T", "FLOAT32_T",
+ "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",
@@ -1037,7 +1050,9 @@
"F32MAT3X2", "F32MAT3X3", "F32MAT3X4", "F32MAT4X2", "F32MAT4X3",
"F32MAT4X4", "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2",
"F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4",
- "ATOMIC_UINT", "ACCSTRUCTNV", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV",
+ "ATOMIC_UINT", "ACCSTRUCTNV", "ACCSTRUCTEXT", "RAYQUERYEXT",
+ "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", "SAMPLERCUBEARRAY",
+ "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY",
"SAMPLER1D", "SAMPLER1DARRAY", "SAMPLER1DARRAYSHADOW", "ISAMPLER1D",
"SAMPLER1DSHADOW", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW",
"ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER",
@@ -1061,45 +1076,44 @@
"F16IMAGE1D", "F16IMAGE2D", "F16IMAGE3D", "F16IMAGE2DRECT",
"F16IMAGECUBE", "F16IMAGE1DARRAY", "F16IMAGE2DARRAY",
"F16IMAGECUBEARRAY", "F16IMAGEBUFFER", "F16IMAGE2DMS",
- "F16IMAGE2DMSARRAY", "SAMPLER", "SAMPLERSHADOW", "TEXTURE1D",
- "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE1DARRAY",
- "TEXTURE2DARRAY", "ITEXTURE1D", "ITEXTURE2D", "ITEXTURE3D",
- "ITEXTURECUBE", "ITEXTURE1DARRAY", "ITEXTURE2DARRAY", "UTEXTURE1D",
- "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", "UTEXTURE1DARRAY",
- "UTEXTURE2DARRAY", "TEXTURE2DRECT", "ITEXTURE2DRECT", "UTEXTURE2DRECT",
- "TEXTUREBUFFER", "ITEXTUREBUFFER", "UTEXTUREBUFFER", "TEXTURECUBEARRAY",
- "ITEXTURECUBEARRAY", "UTEXTURECUBEARRAY", "TEXTURE2DMS", "ITEXTURE2DMS",
- "UTEXTURE2DMS", "TEXTURE2DMSARRAY", "ITEXTURE2DMSARRAY",
- "UTEXTURE2DMSARRAY", "F16TEXTURE1D", "F16TEXTURE2D", "F16TEXTURE3D",
- "F16TEXTURE2DRECT", "F16TEXTURECUBE", "F16TEXTURE1DARRAY",
- "F16TEXTURE2DARRAY", "F16TEXTURECUBEARRAY", "F16TEXTUREBUFFER",
- "F16TEXTURE2DMS", "F16TEXTURE2DMSARRAY", "SUBPASSINPUT",
- "SUBPASSINPUTMS", "ISUBPASSINPUT", "ISUBPASSINPUTMS", "USUBPASSINPUT",
- "USUBPASSINPUTMS", "F16SUBPASSINPUT", "F16SUBPASSINPUTMS", "LEFT_OP",
- "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP",
- "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN",
- "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN",
- "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET",
- "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON",
- "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH",
- "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET",
- "AMPERSAND", "QUESTION", "INVARIANT", "HIGH_PRECISION",
- "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE",
- "SUPERP", "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT",
+ "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", "STRING_LITERAL",
+ "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", "RIGHT_BRACKET",
+ "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON", "EQUAL",
+ "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", "PERCENT",
+ "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", "AMPERSAND",
+ "QUESTION", "INVARIANT", "HIGH_PRECISION", "MEDIUM_PRECISION",
+ "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", "SUPERP",
+ "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT",
"IDENTIFIER", "TYPE_NAME", "CENTROID", "IN", "OUT", "INOUT", "STRUCT",
"VOID", "WHILE", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF",
"DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "UNIFORM", "SHARED",
- "FLAT", "SMOOTH", "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT",
+ "BUFFER", "FLAT", "SMOOTH", "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT",
"UINT16CONSTANT", "FLOAT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT",
"INT64CONSTANT", "UINT64CONSTANT", "SUBROUTINE", "DEMOTE", "PAYLOADNV",
- "PAYLOADINNV", "HITATTRNV", "CALLDATANV", "CALLDATAINNV", "PATCH",
- "SAMPLE", "BUFFER", "NONUNIFORM", "COHERENT", "VOLATILE", "RESTRICT",
- "READONLY", "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT",
- "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", "NOPERSPECTIVE",
- "EXPLICITINTERPAMD", "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV",
- "PERTASKNV", "PRECISE", "$accept", "variable_identifier",
- "primary_expression", "postfix_expression", "integer_expression",
- "function_call", "function_call_or_method", "function_call_generic",
+ "PAYLOADINNV", "HITATTRNV", "CALLDATANV", "CALLDATAINNV", "PAYLOADEXT",
+ "PAYLOADINEXT", "HITATTREXT", "CALLDATAEXT", "CALLDATAINEXT", "PATCH",
+ "SAMPLE", "NONUNIFORM", "COHERENT", "VOLATILE", "RESTRICT", "READONLY",
+ "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT",
+ "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE",
+ "SHADERCALLCOHERENT", "NOPERSPECTIVE", "EXPLICITINTERPAMD",
+ "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", "PERTASKNV", "PRECISE",
+ "$accept", "variable_identifier", "primary_expression",
+ "postfix_expression", "integer_expression", "function_call",
+ "function_call_or_method", "function_call_generic",
"function_call_header_no_parameters",
"function_call_header_with_parameters", "function_call_header",
"function_identifier", "unary_expression", "unary_operator",
@@ -1185,16 +1199,16 @@
635, 636, 637, 638, 639, 640, 641, 642, 643, 644,
645, 646, 647, 648, 649, 650, 651, 652, 653, 654,
655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
- 665
+ 665, 666, 667, 668, 669, 670, 671, 672, 673, 674
};
# endif
-#define YYPACT_NINF -367
+#define YYPACT_NINF -457
#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-367)))
+ (!!((Yystate) == (-457)))
-#define YYTABLE_NINF -528
+#define YYTABLE_NINF -537
#define yytable_value_is_error(Yytable_value) \
0
@@ -1203,79 +1217,80 @@
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 3994, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -13, -367, -367, -367,
- -367, -367, 13, -367, -367, -367, -367, -367, 28, 40,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -2, -1, 88,
- 98, 6034, 116, -367, 74, -367, -367, -367, -367, 4402,
- -367, -367, -367, -367, 104, -367, -367, 730, -367, -367,
- 11, -367, 136, -25, 111, -367, 8, -367, 147, -367,
- 6034, -367, -367, -367, 6034, 139, 140, -367, 61, -367,
- 78, -367, -367, 8391, 155, -367, -367, -367, 149, 6034,
- -367, 152, -367, -309, -367, -367, 80, 6831, -367, 27,
- 1138, -367, -367, -367, -367, 155, 53, -367, 7221, 69,
- -367, 141, -367, 117, 8391, 8391, 8391, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, 77, -367, -367, -367,
- 164, 89, 8781, 172, -367, 8391, -367, -367, -320, 176,
- -367, 6034, 143, 4810, -367, 6034, 8391, -367, -25, -367,
- 145, -367, -367, 138, 144, -231, 23, 65, 158, 153,
- 162, 196, 197, 16, 182, 7611, -367, 185, 183, -367,
- -367, 189, 180, 181, -367, 195, 198, 186, 8001, 200,
- 8391, 199, 187, 122, -367, -367, 123, -367, -1, 203,
- 204, -367, -367, -367, -367, -367, 1546, -367, -367, -367,
- -367, -367, -367, -367, -367, -367, -353, 176, 7221, 71,
- 7221, -367, -367, 7221, 6034, -367, 169, -367, -367, -367,
- 91, -367, -367, 8391, 170, -367, -367, 8391, 207, -367,
- -367, -367, 8391, -367, 143, 155, 125, -367, -367, -367,
- 5218, -367, -367, -367, -367, 8391, 8391, 8391, 8391, 8391,
- 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391,
- 8391, 8391, 8391, 8391, -367, -367, -367, 206, 177, -367,
- 1954, -367, -367, -367, 1954, -367, 8391, -367, -367, 135,
- 8391, 60, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, -367, -367, -367, 8391, 8391, -367, -367, -367,
- -367, -367, -367, -367, 7221, -367, 129, -367, 5626, -367,
- -367, 209, 208, -367, -367, -367, 142, 176, 143, -367,
- -367, -367, -367, -367, 138, 138, 144, 144, -231, -231,
- -231, -231, 23, 23, 65, 158, 153, 162, 196, 197,
- 8391, -367, 214, -314, -367, 1954, 3586, 173, 3178, 93,
- -367, 96, -367, -367, -367, -367, -367, 6441, -367, -367,
- -367, -367, 121, 8391, 213, 177, 215, 208, 188, 6034,
- 217, 221, -367, -367, 3586, 218, -367, -367, -367, 8391,
- 222, -367, -367, -367, 216, 2362, 8391, -367, 219, 226,
- 190, 224, 2770, -367, 227, -367, -367, 7221, -367, -367,
- -367, 100, 8391, 2362, 218, -367, -367, 1954, -367, 220,
- 208, -367, -367, 1954, 228, -367, -367
+ 4075, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, 132, -457,
+ -457, -457, -457, -457, -1, -457, -457, -457, -457, -457,
+ -457, -301, -298, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, 11, -249, 17, 30, 6160,
+ 20, -457, 28, -457, -457, -457, -457, 4492, -457, -457,
+ -457, -457, 50, -457, -457, 739, -457, -457, 16, -457,
+ 81, -29, 69, -457, -313, -457, 111, -457, 6160, -457,
+ -457, -457, 6160, 103, 106, -457, -314, -457, 72, -457,
+ -457, 8566, 142, -457, -457, -457, 136, 6160, -457, 144,
+ -457, 53, -457, -457, 76, 6974, -457, -312, 1156, -457,
+ -457, -457, -457, 142, -309, -457, 7372, -308, -457, 119,
+ -457, 65, 8566, 8566, -457, 8566, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, 36, -457, -457, -457, 171,
+ 85, 8964, 173, -457, 8566, -457, -457, -323, 174, -457,
+ 6160, 139, 4909, -457, 6160, 8566, -457, -29, -457, 141,
+ -457, -457, 145, 99, 35, 26, 71, 156, 159, 161,
+ 196, 195, 23, 181, 7770, -457, 183, 182, -457, -457,
+ 186, 179, 180, -457, 191, 192, 187, 8168, 193, 8566,
+ 188, 189, 127, -457, -457, 96, -457, -249, 200, 201,
+ -457, -457, -457, -457, -457, 1573, -457, -457, -457, -457,
+ -457, -457, -457, -457, -457, -24, 174, 7372, 13, 7372,
+ -457, -457, 7372, 6160, -457, 166, -457, -457, -457, 86,
+ -457, -457, 8566, 168, -457, -457, 8566, 205, -457, -457,
+ -457, 8566, -457, 139, 142, 124, -457, -457, -457, 5326,
+ -457, -457, -457, -457, 8566, 8566, 8566, 8566, 8566, 8566,
+ 8566, 8566, 8566, 8566, 8566, 8566, 8566, 8566, 8566, 8566,
+ 8566, 8566, 8566, -457, -457, -457, 206, 172, -457, 1990,
+ -457, -457, -457, 1990, -457, 8566, -457, -457, 130, 8566,
+ 125, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, -457, -457, 8566, 8566, -457, -457, -457, -457,
+ -457, -457, -457, 7372, -457, 94, -457, 5743, -457, -457,
+ 207, 204, -457, -457, -457, 131, 174, 139, -457, -457,
+ -457, -457, -457, 145, 145, 99, 99, 35, 35, 35,
+ 35, 26, 26, 71, 156, 159, 161, 196, 195, 8566,
+ -457, 212, 60, -457, 1990, 3658, 169, 3241, 87, -457,
+ 89, -457, -457, -457, -457, -457, 6576, -457, -457, -457,
+ -457, 143, 8566, 211, 172, 210, 204, 184, 6160, 217,
+ 219, -457, -457, 3658, 218, -457, -457, -457, 8566, 220,
+ -457, -457, -457, 214, 2407, 8566, -457, 216, 223, 185,
+ 224, 2824, -457, 225, -457, -457, 7372, -457, -457, -457,
+ 97, 8566, 2407, 218, -457, -457, 1990, -457, 222, 204,
+ -457, -457, 1990, 229, -457, -457
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1283,113 +1298,114 @@
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
- 0, 156, 203, 201, 202, 200, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 204, 205, 206, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 327, 328, 329, 330, 331, 335, 336, 353, 354, 355,
- 357, 360, 361, 362, 364, 337, 338, 358, 365, 164,
- 165, 229, 230, 228, 231, 238, 239, 236, 237, 234,
- 235, 232, 233, 261, 262, 263, 273, 274, 275, 258,
- 259, 260, 270, 271, 272, 255, 256, 257, 267, 268,
- 269, 252, 253, 254, 264, 265, 266, 240, 241, 242,
- 276, 277, 278, 243, 244, 245, 288, 289, 290, 246,
- 247, 248, 300, 301, 302, 249, 250, 251, 312, 313,
- 314, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 315, 316,
- 317, 318, 319, 320, 321, 322, 323, 325, 324, 484,
- 485, 486, 326, 333, 334, 352, 332, 366, 367, 370,
- 371, 372, 374, 375, 376, 378, 379, 380, 382, 383,
- 474, 475, 356, 359, 363, 339, 340, 341, 368, 342,
- 346, 347, 350, 373, 377, 381, 343, 344, 348, 349,
- 369, 345, 351, 430, 432, 433, 434, 436, 437, 438,
- 440, 441, 442, 444, 445, 446, 448, 449, 450, 452,
- 453, 454, 456, 457, 458, 460, 461, 462, 464, 465,
- 466, 468, 469, 470, 472, 473, 431, 435, 439, 443,
- 447, 455, 459, 463, 451, 467, 471, 384, 385, 386,
- 388, 390, 392, 394, 396, 400, 401, 402, 403, 404,
- 405, 407, 408, 409, 410, 411, 412, 414, 416, 417,
- 418, 420, 421, 398, 406, 413, 422, 424, 425, 426,
- 428, 429, 387, 389, 391, 415, 393, 395, 397, 399,
- 419, 423, 427, 476, 477, 480, 481, 482, 483, 478,
- 479, 575, 131, 489, 490, 491, 0, 488, 160, 158,
- 159, 157, 0, 199, 161, 162, 133, 132, 0, 183,
- 169, 170, 168, 171, 172, 166, 167, 163, 185, 173,
- 179, 180, 181, 182, 174, 175, 176, 177, 178, 134,
- 135, 136, 137, 138, 139, 146, 574, 0, 576, 0,
- 108, 107, 0, 119, 124, 153, 152, 150, 154, 0,
- 147, 149, 155, 129, 195, 151, 487, 0, 571, 573,
- 0, 494, 0, 0, 0, 96, 0, 93, 0, 106,
- 0, 115, 109, 117, 0, 118, 0, 94, 125, 99,
- 0, 148, 130, 0, 188, 194, 1, 572, 0, 0,
- 492, 143, 145, 0, 141, 186, 0, 0, 97, 0,
- 0, 577, 110, 114, 116, 112, 120, 111, 0, 126,
- 102, 0, 100, 0, 0, 0, 0, 42, 41, 43,
- 40, 5, 6, 7, 8, 2, 15, 13, 14, 16,
- 9, 10, 11, 12, 3, 17, 36, 19, 24, 25,
- 0, 0, 29, 0, 197, 0, 35, 33, 0, 189,
- 95, 0, 0, 0, 496, 0, 0, 140, 0, 184,
- 0, 190, 44, 48, 51, 54, 59, 62, 64, 66,
- 68, 70, 72, 74, 0, 0, 98, 0, 522, 531,
- 535, 0, 0, 0, 556, 0, 0, 0, 0, 0,
- 0, 0, 0, 44, 77, 90, 0, 509, 0, 155,
- 129, 512, 533, 511, 519, 510, 0, 513, 514, 537,
- 515, 544, 516, 517, 552, 518, 0, 113, 0, 121,
- 0, 504, 128, 0, 0, 104, 0, 101, 37, 38,
- 0, 21, 22, 0, 0, 27, 26, 0, 199, 30,
- 32, 39, 0, 196, 0, 502, 0, 500, 495, 497,
- 0, 92, 144, 142, 187, 0, 0, 0, 0, 0,
+ 0, 157, 210, 208, 209, 207, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 211, 212, 213, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 336, 337, 338, 339, 340, 341, 342, 362, 363, 364,
+ 365, 366, 367, 368, 377, 390, 391, 378, 379, 381,
+ 380, 382, 383, 384, 385, 386, 387, 388, 389, 165,
+ 166, 236, 237, 235, 238, 245, 246, 243, 244, 241,
+ 242, 239, 240, 268, 269, 270, 280, 281, 282, 265,
+ 266, 267, 277, 278, 279, 262, 263, 264, 274, 275,
+ 276, 259, 260, 261, 271, 272, 273, 247, 248, 249,
+ 283, 284, 285, 250, 251, 252, 295, 296, 297, 253,
+ 254, 255, 307, 308, 309, 256, 257, 258, 319, 320,
+ 321, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 310,
+ 311, 312, 313, 314, 315, 316, 317, 318, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 334, 331, 332,
+ 333, 493, 494, 495, 346, 347, 370, 373, 335, 344,
+ 345, 361, 343, 392, 393, 396, 397, 398, 400, 401,
+ 402, 404, 405, 406, 408, 409, 483, 484, 369, 371,
+ 372, 348, 349, 350, 394, 351, 355, 356, 359, 399,
+ 403, 407, 352, 353, 357, 358, 395, 354, 360, 439,
+ 441, 442, 443, 445, 446, 447, 449, 450, 451, 453,
+ 454, 455, 457, 458, 459, 461, 462, 463, 465, 466,
+ 467, 469, 470, 471, 473, 474, 475, 477, 478, 479,
+ 481, 482, 440, 444, 448, 452, 456, 464, 468, 472,
+ 460, 476, 480, 374, 375, 376, 410, 419, 421, 415,
+ 420, 422, 423, 425, 426, 427, 429, 430, 431, 433,
+ 434, 435, 437, 438, 411, 412, 413, 424, 414, 416,
+ 417, 418, 428, 432, 436, 485, 486, 489, 490, 491,
+ 492, 487, 488, 584, 132, 498, 499, 500, 0, 497,
+ 161, 159, 160, 158, 0, 206, 162, 163, 164, 134,
+ 133, 0, 190, 171, 173, 169, 175, 177, 172, 174,
+ 170, 176, 178, 167, 168, 192, 179, 186, 187, 188,
+ 189, 180, 181, 182, 183, 184, 185, 135, 136, 137,
+ 138, 139, 140, 147, 583, 0, 585, 0, 109, 108,
+ 0, 120, 125, 154, 153, 151, 155, 0, 148, 150,
+ 156, 130, 202, 152, 496, 0, 580, 582, 0, 503,
+ 0, 0, 0, 97, 0, 94, 0, 107, 0, 116,
+ 110, 118, 0, 119, 0, 95, 126, 100, 0, 149,
+ 131, 0, 195, 201, 1, 581, 0, 0, 501, 144,
+ 146, 0, 142, 193, 0, 0, 98, 0, 0, 586,
+ 111, 115, 117, 113, 121, 112, 0, 127, 103, 0,
+ 101, 0, 0, 0, 9, 0, 43, 42, 44, 41,
+ 5, 6, 7, 8, 2, 16, 14, 15, 17, 10,
+ 11, 12, 13, 3, 18, 37, 20, 25, 26, 0,
+ 0, 30, 0, 204, 0, 36, 34, 0, 196, 96,
+ 0, 0, 0, 505, 0, 0, 141, 0, 191, 0,
+ 197, 45, 49, 52, 55, 60, 63, 65, 67, 69,
+ 71, 73, 75, 0, 0, 99, 0, 531, 540, 544,
+ 0, 0, 0, 565, 0, 0, 0, 0, 0, 0,
+ 0, 0, 45, 78, 91, 0, 518, 0, 156, 130,
+ 521, 542, 520, 528, 519, 0, 522, 523, 546, 524,
+ 553, 525, 526, 561, 527, 0, 114, 0, 122, 0,
+ 513, 129, 0, 0, 105, 0, 102, 38, 39, 0,
+ 22, 23, 0, 0, 28, 27, 0, 206, 31, 33,
+ 40, 0, 203, 0, 511, 0, 509, 504, 506, 0,
+ 93, 145, 143, 194, 0, 0, 0, 0, 0, 0,
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
+ 0, 0, 0, 76, 198, 199, 0, 0, 530, 0,
+ 563, 576, 575, 0, 567, 0, 579, 577, 0, 0,
+ 0, 560, 529, 81, 82, 84, 83, 86, 87, 88,
+ 89, 90, 85, 80, 0, 0, 545, 541, 543, 547,
+ 554, 562, 124, 0, 516, 0, 128, 0, 106, 4,
+ 0, 24, 21, 32, 205, 0, 512, 0, 507, 502,
+ 46, 47, 48, 51, 50, 53, 54, 58, 59, 56,
+ 57, 61, 62, 64, 66, 68, 70, 72, 74, 0,
+ 200, 590, 0, 588, 532, 0, 0, 0, 0, 578,
+ 0, 559, 79, 92, 123, 514, 0, 104, 19, 508,
+ 510, 0, 0, 0, 0, 0, 551, 0, 0, 0,
+ 0, 570, 569, 572, 538, 555, 515, 517, 0, 0,
+ 587, 589, 533, 0, 0, 0, 571, 0, 0, 550,
+ 0, 0, 548, 0, 77, 591, 0, 535, 564, 534,
+ 0, 573, 0, 538, 537, 539, 557, 552, 0, 574,
+ 568, 549, 558, 0, 566, 556
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -367, -367, -367, -367, -367, -367, -367, -367, -367, -367,
- -367, -367, 8696, -367, -81, -78, -225, -82, -20, -18,
- -21, -17, -19, -16, -367, -85, -367, -98, -367, -110,
- -118, 2, -367, -367, -367, 4, -367, -367, -367, 184,
- 191, 192, -367, -367, -339, -367, -367, -367, -367, 102,
- -367, -37, -44, -367, 9, -367, 0, -71, -367, -367,
- -367, -367, 260, -367, -367, -367, -136, -137, 18, -65,
- -209, -367, -94, -198, -366, -367, -134, -367, -367, -148,
- -146, -367, -367, 202, -265, -87, -367, 56, -367, -111,
- -367, 59, -367, -367, -367, -367, 62, -367, -367, -367,
- -367, -367, -367, -367, -367, 225, -367, -367, -367, -367,
- -99
+ -457, -457, -457, -457, -457, -457, -457, -457, -457, -457,
+ -457, -457, 8868, -457, -87, -84, -127, -93, -33, -31,
+ -27, -25, -28, -26, -457, -86, -457, -103, -457, -111,
+ -125, 2, -457, -457, -457, 4, -457, -457, -457, 176,
+ 194, 178, -457, -457, -337, -457, -457, -457, -457, 95,
+ -457, -37, -46, -457, 9, -457, 0, -63, -457, -457,
+ -457, -457, 263, -457, -457, -457, -456, -140, 10, -73,
+ -211, -457, -102, -198, -321, -457, -144, -457, -457, -155,
+ -154, -457, -457, 198, -274, -97, -457, 46, -457, -118,
+ -457, 51, -457, -457, -457, -457, 52, -457, -457, -457,
+ -457, -457, -457, -457, -457, 213, -457, -457, -457, -457,
+ -105
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 434, 435, 436, 621, 437, 438, 439, 440, 441,
- 442, 443, 493, 445, 463, 464, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, 494, 650, 495, 605, 496,
- 552, 497, 337, 524, 413, 498, 339, 340, 341, 371,
- 372, 373, 342, 343, 344, 345, 346, 347, 393, 394,
- 348, 349, 350, 351, 446, 396, 447, 399, 384, 385,
- 448, 354, 355, 356, 455, 389, 453, 454, 546, 547,
- 522, 616, 501, 502, 503, 504, 505, 580, 676, 709,
- 700, 701, 702, 710, 506, 507, 508, 509, 703, 680,
- 510, 511, 704, 724, 512, 513, 514, 656, 584, 658,
- 684, 698, 699, 515, 357, 358, 359, 368, 516, 653,
- 654
+ -1, 443, 444, 445, 630, 446, 447, 448, 449, 450,
+ 451, 452, 502, 454, 472, 473, 474, 475, 476, 477,
+ 478, 479, 480, 481, 482, 503, 659, 504, 614, 505,
+ 561, 506, 345, 533, 421, 507, 347, 348, 349, 379,
+ 380, 381, 350, 351, 352, 353, 354, 355, 401, 402,
+ 356, 357, 358, 359, 455, 404, 456, 407, 392, 393,
+ 457, 362, 363, 364, 464, 397, 462, 463, 555, 556,
+ 531, 625, 510, 511, 512, 513, 514, 589, 685, 718,
+ 709, 710, 711, 719, 515, 516, 517, 518, 712, 689,
+ 519, 520, 713, 733, 521, 522, 523, 665, 593, 667,
+ 693, 707, 708, 524, 365, 366, 367, 376, 525, 662,
+ 663
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -1397,161 +1413,122 @@
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 353, 542, 336, 674, 338, 481, 457, 675, 484, 352,
- 485, 486, 458, 543, 489, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 560, 561, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 374, 381, 530, 409, 609, 613,
- 521, 615, 474, 449, 617, 655, 549, 678, 573, 550,
- 562, 563, 365, 367, 397, 391, 293, 294, 295, 708,
- 381, 361, 398, 374, 517, 519, 716, 638, 639, 640,
- 641, 375, 363, 475, 539, 678, 392, 708, 366, 382,
- 352, 476, 451, 574, 364, 564, 565, 353, 352, 336,
- 388, 338, 297, 362, 566, 567, 352, 302, 303, 397,
- 375, 551, 531, 532, 375, 407, 518, 397, 589, 352,
- 591, 606, 662, 352, 408, 475, 657, 475, 618, 452,
- 577, -34, 523, 533, 614, 459, 410, 534, 352, 411,
- 500, 460, 412, 369, 536, 665, 620, 381, 685, 499,
- 537, 686, 606, 549, 606, 719, 451, 606, 451, 370,
- 521, 606, 521, 622, 378, 521, 594, 595, 596, 597,
- 598, 599, 600, 601, 602, 603, 383, 376, 526, 624,
- 377, 527, 606, 689, 606, 604, 628, 607, 666, 629,
- 667, 544, 723, 452, 390, 452, 606, 609, 688, 660,
- 352, 395, 352, 628, 352, 400, 670, 555, 556, 557,
- 558, 397, 559, 450, 627, 456, 659, 634, 635, 535,
- 661, 549, 636, 637, 642, 643, 540, 451, 569, 405,
- 406, 525, 475, 545, 568, 554, 570, 571, 718, 575,
- 572, 578, 579, 581, 582, 583, 500, 663, 664, 585,
- 587, 593, 586, 451, 590, 499, 521, -35, -33, 619,
- 623, 592, -28, 651, 452, 609, 669, 652, 673, 606,
- 691, 681, 695, 352, 693, 696, -527, 706, 694, 707,
- 672, 713, 478, 712, 725, 717, 677, 726, 644, 646,
- 452, 645, 714, 648, 647, 690, 360, 649, 403, 352,
- 553, 402, 626, 671, 682, 721, 404, 715, 722, 521,
- 401, 683, 610, 697, 677, 611, 692, 0, 612, 0,
- 500, 451, 387, 0, 500, 0, 711, 0, 551, 499,
- 0, 705, 0, 499, 0, 0, 0, 0, 0, 0,
- 0, 0, 720, 0, 0, 0, 0, 0, 0, 521,
- 0, 0, 0, 0, 0, 0, 0, 0, 452, 679,
- 0, 0, 0, 0, 0, 0, 0, 352, 0, 0,
- 0, 0, 0, 0, 0, 381, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 679, 0, 0,
- 0, 0, 0, 0, 0, 500, 500, 0, 500, 0,
- 0, 0, 0, 0, 499, 499, 0, 499, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 382,
- 0, 0, 0, 0, 500, 0, 0, 0, 352, 0,
- 0, 0, 0, 499, 0, 500, 0, 0, 0, 0,
- 0, 0, 500, 0, 499, 0, 0, 0, 0, 0,
- 0, 499, 0, 500, 0, 0, 0, 500, 0, 0,
- 0, 0, 499, 500, 0, 0, 499, 0, 0, 0,
- 386, 0, 499, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 0, 0, 0, 0, 0, 0, 0,
+ 361, 551, 344, 415, 346, 405, 405, 484, 559, 360,
+ 405, 484, 416, 552, 406, 485, 371, 527, 532, 372,
+ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 627, 375, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 389, 382, 530, 539, 664, 622, 618, 624, 483,
+ 369, 626, 558, 417, 399, 571, 572, 582, 687, 458,
+ 569, 570, 484, 540, 541, 377, 389, 490, 373, 623,
+ 493, 382, 494, 495, 384, 400, 498, 385, 548, 383,
+ 526, 528, 370, -35, 378, 542, 687, 390, 360, 543,
+ 460, 573, 574, 583, 374, 361, 360, 344, 396, 346,
+ 299, 466, 575, 576, 360, 304, 305, 467, 383, 560,
+ 683, 386, 383, 717, 684, 391, 598, 360, 600, 535,
+ 725, 360, 536, 418, 468, 666, 419, 461, 586, 420,
+ 469, 717, 398, 545, 629, 694, 360, 695, 509, 546,
+ 615, 615, 674, 615, 389, 728, 675, 508, 676, 558,
+ 615, 615, 403, 616, 530, 460, 530, 460, 567, 530,
+ 568, 631, 408, 603, 604, 605, 606, 607, 608, 609,
+ 610, 611, 612, 633, 647, 648, 649, 650, 637, 615,
+ 671, 638, 732, 613, 615, 637, 413, 669, 679, 414,
+ 553, 405, 461, 459, 461, 697, 618, 615, 698, 360,
+ 465, 360, 534, 360, 295, 296, 297, 564, 565, 566,
+ 643, 644, 651, 652, 668, 645, 646, 558, 670, 544,
+ 549, 636, 554, 484, 563, 577, 460, 578, 579, 580,
+ 581, 584, 587, 590, 588, 727, 591, 592, 594, 595,
+ 599, 672, 673, 601, 596, 509, 602, -36, -34, 628,
+ 530, 632, 460, -29, 508, 661, 660, 678, 615, 682,
+ 690, 700, 702, 461, 618, 704, 705, 703, 715, -536,
+ 716, 722, 360, 721, 653, 487, 726, 654, 681, 734,
+ 723, 735, 655, 657, 686, 656, 658, 699, 411, 461,
+ 412, 368, 562, 635, 680, 691, 724, 730, 360, 731,
+ 692, 619, 410, 530, 409, 706, 620, 621, 395, 701,
+ 0, 0, 686, 0, 0, 0, 0, 0, 0, 509,
+ 460, 0, 0, 509, 720, 714, 560, 0, 508, 0,
+ 0, 0, 508, 0, 0, 0, 0, 0, 0, 0,
+ 729, 0, 0, 530, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 461, 688, 0,
+ 0, 0, 0, 0, 0, 0, 360, 0, 0, 0,
+ 0, 0, 389, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 688, 0, 0, 0,
+ 0, 0, 0, 0, 509, 509, 0, 509, 0, 0,
+ 0, 0, 0, 508, 508, 0, 508, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 390, 0,
+ 0, 0, 0, 509, 0, 0, 0, 360, 0, 0,
+ 0, 0, 508, 0, 509, 0, 0, 0, 0, 0,
+ 0, 509, 0, 508, 0, 0, 0, 0, 0, 0,
+ 508, 0, 509, 0, 0, 0, 509, 0, 0, 0,
+ 0, 508, 509, 0, 0, 508, 0, 0, 0, 394,
+ 0, 508, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 0, 0, 0, 0, 0, 0,
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, 293, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 304, 305, 306, 307, 308, 0, 0, 0, 0, 0,
- 0, 0, 0, 309, 0, 310, 311, 312, 313, 314,
+ 294, 295, 296, 297, 298, 0, 0, 0, 0, 0,
+ 0, 0, 0, 299, 300, 301, 302, 303, 304, 305,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 306, 307, 308, 309, 310, 311, 0, 0,
+ 0, 0, 0, 0, 0, 0, 312, 0, 313, 314,
315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 0, 0, 414, 415, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 416, 0, 477, 0, 478, 479, 0, 0,
- 0, 0, 480, 417, 418, 419, 420, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 292, 293, 294, 295,
- 296, 0, 0, 0, 421, 422, 423, 424, 425, 297,
- 298, 299, 300, 301, 302, 303, 481, 482, 483, 484,
- 0, 485, 486, 487, 488, 489, 490, 491, 304, 305,
- 306, 307, 308, 426, 427, 428, 429, 430, 431, 432,
- 433, 309, 492, 310, 311, 312, 313, 314, 315, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 1,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 1,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
@@ -1580,19 +1557,145 @@
252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
262, 263, 264, 265, 266, 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,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 0, 0, 422, 423, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 416, 0, 477, 0, 478, 608, 0, 0, 0, 0,
- 480, 417, 418, 419, 420, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 292, 293, 294, 295, 296, 0,
- 0, 0, 421, 422, 423, 424, 425, 297, 298, 299,
- 300, 301, 302, 303, 481, 482, 483, 484, 0, 485,
- 486, 487, 488, 489, 490, 491, 304, 305, 306, 307,
- 308, 426, 427, 428, 429, 430, 431, 432, 433, 309,
- 492, 310, 311, 312, 313, 314, 315, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 1, 2, 3,
+ 0, 0, 424, 425, 0, 486, 0, 487, 488, 0,
+ 0, 0, 0, 489, 426, 427, 428, 429, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 294, 295, 296,
+ 297, 298, 0, 0, 0, 430, 431, 432, 433, 434,
+ 299, 300, 301, 302, 303, 304, 305, 490, 491, 492,
+ 493, 0, 494, 495, 496, 497, 498, 499, 500, 306,
+ 307, 308, 309, 310, 311, 435, 436, 437, 438, 439,
+ 440, 441, 442, 312, 501, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 0, 0,
+ 422, 423, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 424,
+ 425, 0, 486, 0, 487, 617, 0, 0, 0, 0,
+ 489, 426, 427, 428, 429, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 294, 295, 296, 297, 298, 0,
+ 0, 0, 430, 431, 432, 433, 434, 299, 300, 301,
+ 302, 303, 304, 305, 490, 491, 492, 493, 0, 494,
+ 495, 496, 497, 498, 499, 500, 306, 307, 308, 309,
+ 310, 311, 435, 436, 437, 438, 439, 440, 441, 442,
+ 312, 501, 313, 314, 315, 316, 317, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 0, 0, 422, 423, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 424, 425, 0, 486,
+ 0, 487, 0, 0, 0, 0, 0, 489, 426, 427,
+ 428, 429, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 294, 295, 296, 297, 298, 0, 0, 0, 430,
+ 431, 432, 433, 434, 299, 300, 301, 302, 303, 304,
+ 305, 490, 491, 492, 493, 0, 494, 495, 496, 497,
+ 498, 499, 500, 306, 307, 308, 309, 310, 311, 435,
+ 436, 437, 438, 439, 440, 441, 442, 312, 501, 313,
+ 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 0, 0, 422, 423, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 424, 425, 0, 486, 0, 408, 0,
+ 0, 0, 0, 0, 489, 426, 427, 428, 429, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 294, 295,
+ 296, 297, 298, 0, 0, 0, 430, 431, 432, 433,
+ 434, 299, 300, 301, 302, 303, 304, 305, 490, 491,
+ 492, 493, 0, 494, 495, 496, 497, 498, 499, 500,
+ 306, 307, 308, 309, 310, 311, 435, 436, 437, 438,
+ 439, 440, 441, 442, 312, 501, 313, 314, 315, 316,
+ 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 1, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
@@ -1621,19 +1724,145 @@
254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 0, 0, 414,
- 415, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 416, 0,
- 477, 0, 478, 0, 0, 0, 0, 0, 480, 417,
- 418, 419, 420, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 292, 293, 294, 295, 296, 0, 0, 0,
- 421, 422, 423, 424, 425, 297, 298, 299, 300, 301,
- 302, 303, 481, 482, 483, 484, 0, 485, 486, 487,
- 488, 489, 490, 491, 304, 305, 306, 307, 308, 426,
- 427, 428, 429, 430, 431, 432, 433, 309, 492, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 1, 2, 3, 4, 5,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 0,
+ 0, 422, 423, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 424, 425, 0, 486, 0, 0, 0, 0, 0, 0,
+ 0, 489, 426, 427, 428, 429, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 294, 295, 296, 297, 298,
+ 0, 0, 0, 430, 431, 432, 433, 434, 299, 300,
+ 301, 302, 303, 304, 305, 490, 491, 492, 493, 0,
+ 494, 495, 496, 497, 498, 499, 500, 306, 307, 308,
+ 309, 310, 311, 435, 436, 437, 438, 439, 440, 441,
+ 442, 312, 501, 313, 314, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 0, 0, 422, 423,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 424, 425, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 489, 426,
+ 427, 428, 429, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 294, 295, 296, 297, 298, 0, 0, 0,
+ 430, 431, 432, 433, 434, 299, 300, 301, 302, 303,
+ 304, 305, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 306, 307, 308, 309, 310, 311,
+ 435, 436, 437, 438, 439, 440, 441, 442, 312, 0,
+ 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 0, 0, 422, 423, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 424, 425, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 426, 427, 428, 429,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 294,
+ 295, 296, 297, 0, 0, 0, 0, 430, 431, 432,
+ 433, 434, 299, 300, 301, 302, 303, 304, 305, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 306, 307, 308, 309, 310, 311, 435, 436, 437,
+ 438, 439, 440, 441, 442, 312, 0, 313, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 293, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 294, 295, 296, 297,
+ 298, 0, 0, 0, 0, 0, 0, 0, 0, 299,
+ 300, 301, 302, 303, 304, 305, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 306, 307,
+ 308, 309, 310, 311, 0, 0, 0, 0, 0, 0,
+ 0, 0, 312, 0, 313, 314, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 1, 2, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
@@ -1662,100 +1891,61 @@
256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
266, 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,
+ 286, 287, 288, 289, 290, 291, 292, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 416, 0, 477, 0,
- 400, 0, 0, 0, 0, 0, 480, 417, 418, 419,
- 420, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 292, 293, 294, 295, 296, 0, 0, 0, 421, 422,
- 423, 424, 425, 297, 298, 299, 300, 301, 302, 303,
- 481, 482, 483, 484, 0, 485, 486, 487, 488, 489,
- 490, 491, 304, 305, 306, 307, 308, 426, 427, 428,
- 429, 430, 431, 432, 433, 309, 492, 310, 311, 312,
- 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 0, 0, 414, 415, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 416, 0, 477, 0, 0, 0,
- 0, 0, 0, 0, 480, 417, 418, 419, 420, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 292, 293,
- 294, 295, 296, 0, 0, 0, 421, 422, 423, 424,
- 425, 297, 298, 299, 300, 301, 302, 303, 481, 482,
- 483, 484, 0, 485, 486, 487, 488, 489, 490, 491,
- 304, 305, 306, 307, 308, 426, 427, 428, 429, 430,
- 431, 432, 433, 309, 492, 310, 311, 312, 313, 314,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 387,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 294, 295, 296, 297, 0, 0, 0,
+ 0, 0, 0, 0, 0, 388, 299, 300, 301, 302,
+ 303, 304, 305, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 306, 307, 308, 309, 310,
+ 311, 0, 0, 0, 0, 0, 0, 0, 0, 312,
+ 0, 313, 314, 315, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+ 342, 343, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 557, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 294, 295, 296, 297, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 299, 300, 301, 302, 303, 304, 305,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 306, 307, 308, 309, 310, 311, 0, 0,
+ 0, 0, 0, 0, 0, 0, 312, 0, 313, 314,
315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 0, 0, 414, 415, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 416, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 480, 417, 418, 419, 420, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 292, 293, 294, 295,
- 296, 0, 0, 0, 421, 422, 423, 424, 425, 297,
- 298, 299, 300, 301, 302, 303, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 304, 305,
- 306, 307, 308, 426, 427, 428, 429, 430, 431, 432,
- 433, 309, 0, 310, 311, 312, 313, 314, 315, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 1,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 1,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
@@ -1784,25 +1974,149 @@
252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
262, 263, 264, 265, 266, 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,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 416, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 417, 418, 419, 420, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 292, 293, 294, 295, 0, 0,
- 0, 0, 421, 422, 423, 424, 425, 297, 298, 299,
- 300, 301, 302, 303, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 304, 305, 306, 307,
- 308, 426, 427, 428, 429, 430, 431, 432, 433, 309,
- 0, 310, 311, 312, 313, 314, 315, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 1, 2, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 639, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 294, 295, 296,
+ 297, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 299, 300, 301, 302, 303, 304, 305, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 306,
+ 307, 308, 309, 310, 311, 0, 0, 0, 0, 0,
+ 0, 0, 0, 312, 0, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, 339, 340, 341, 342, 343, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 677, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 294, 295, 296, 297, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 299, 300, 301,
+ 302, 303, 304, 305, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 306, 307, 308, 309,
+ 310, 311, 0, 0, 0, 0, 0, 0, 0, 0,
+ 312, 0, 313, 314, 315, 316, 317, 318, 319, 320,
+ 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
+ 341, 342, 343, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 294, 295, 296, 297, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 299, 300, 301, 302, 303, 304,
+ 305, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 306, 307, 308, 309, 310, 311, 0,
+ 0, 0, 0, 0, 0, 0, 0, 312, 0, 313,
+ 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 0, 0, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 0, 0, 422, 423, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 424, 425, 0, 0, 0, 529, 696, 0,
+ 0, 0, 0, 0, 426, 427, 428, 429, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 430, 431, 432, 433, 434,
+ 299, 0, 0, 0, 0, 304, 305, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 435, 436, 437, 438, 439,
+ 440, 441, 442, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 325, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 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,
@@ -1825,25 +2139,24 @@
254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
264, 265, 266, 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,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 0,
+ 0, 422, 423, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 424, 425, 0, 0, 470, 0, 0, 0, 0, 0,
+ 0, 0, 426, 427, 428, 429, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 291, 0,
+ 0, 0, 0, 430, 431, 432, 433, 434, 299, 0,
+ 0, 0, 0, 304, 305, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 292, 293, 294, 295, 296, 0, 0, 0,
- 0, 0, 0, 0, 0, 297, 298, 299, 300, 301,
- 302, 303, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 304, 305, 306, 307, 308, 0,
- 0, 0, 0, 0, 0, 0, 0, 309, 0, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 1, 2, 3, 4, 5,
+ 0, 0, 0, 435, 436, 437, 438, 439, 440, 441,
+ 442, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 325, 2, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 56, 57, 58, 0, 0, 61, 62, 63, 64, 65,
66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
@@ -1866,25 +2179,24 @@
256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
266, 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,
+ 286, 287, 288, 289, 290, 291, 292, 0, 0, 422,
+ 423, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 424, 425,
+ 0, 0, 0, 529, 0, 0, 0, 0, 0, 0,
+ 426, 427, 428, 429, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 430, 431, 432, 433, 434, 299, 0, 0, 0,
+ 0, 304, 305, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 379, 0, 0, 0,
+ 0, 435, 436, 437, 438, 439, 440, 441, 442, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 292, 293, 294, 295, 0, 0, 0, 0, 0, 0,
- 0, 0, 380, 297, 298, 299, 300, 301, 302, 303,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 304, 305, 306, 307, 308, 0, 0, 0,
- 0, 0, 0, 0, 0, 309, 0, 310, 311, 312,
- 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 1, 2, 3, 4, 5, 6, 7,
+ 0, 0, 0, 325, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 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,
@@ -1907,25 +2219,24 @@
258, 259, 260, 261, 262, 263, 264, 265, 266, 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,
+ 288, 289, 290, 291, 292, 0, 0, 422, 423, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 548,
+ 0, 0, 0, 0, 0, 0, 424, 425, 0, 0,
+ 585, 0, 0, 0, 0, 0, 0, 0, 426, 427,
+ 428, 429, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 430,
+ 431, 432, 433, 434, 299, 0, 0, 0, 0, 304,
+ 305, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 435,
+ 436, 437, 438, 439, 440, 441, 442, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 292, 293,
- 294, 295, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 297, 298, 299, 300, 301, 302, 303, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 304, 305, 306, 307, 308, 0, 0, 0, 0, 0,
- 0, 0, 0, 309, 0, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 0, 325, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 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,
@@ -1948,24 +2259,23 @@
260, 261, 262, 263, 264, 265, 266, 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,
+ 290, 291, 292, 0, 0, 422, 423, 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, 424, 425, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 597, 426, 427, 428, 429,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 292, 293, 294, 295,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 297,
- 298, 299, 300, 301, 302, 303, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 304, 305,
- 306, 307, 308, 0, 0, 0, 0, 0, 0, 0,
- 0, 309, 0, 310, 311, 312, 313, 314, 315, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 334, 335, 1,
+ 0, 0, 0, 0, 0, 0, 0, 430, 431, 432,
+ 433, 434, 299, 0, 0, 0, 0, 304, 305, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 435, 436, 437,
+ 438, 439, 440, 441, 442, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 325,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 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,
@@ -1988,25 +2298,24 @@
252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
262, 263, 264, 265, 266, 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,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 0, 0, 422, 423, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 424, 425, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 426, 427, 428, 429, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 668, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 430, 431, 432, 433, 434,
+ 299, 0, 0, 0, 0, 304, 305, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 292, 293, 294, 295, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 297, 298, 299,
- 300, 301, 302, 303, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 304, 305, 306, 307,
- 308, 0, 0, 0, 0, 0, 0, 0, 0, 309,
- 0, 310, 311, 312, 313, 314, 315, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 1, 2, 3,
+ 0, 0, 0, 0, 0, 435, 436, 437, 438, 439,
+ 440, 441, 442, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 325, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 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,
@@ -2029,301 +2338,27 @@
254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
264, 265, 266, 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,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 453,
+ 0, 422, 423, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 471, 0, 0, 0, 0, 0, 0,
+ 424, 425, 0, 0, 0, 0, 0, 0, 0, 0,
+ 537, 538, 426, 427, 428, 429, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 430, 431, 432, 433, 434, 299, 0,
+ 0, 0, 550, 304, 547, 0, 0, 0, 0, 0,
+ 0, 0, 0, 471, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 435, 436, 437, 438, 439, 440, 441,
+ 442, 0, 471, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 325, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 292, 293, 294, 295, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 297, 298, 299, 300, 301,
- 302, 303, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 304, 305, 306, 307, 308, 0,
- 0, 0, 0, 0, 0, 0, 0, 309, 0, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, 334, 335, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 0, 0, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 0, 0, 414, 415, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 634,
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, 426, 427, 428, 429,
- 430, 431, 432, 433, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 318, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 0, 0, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 0, 0, 414, 415, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 416, 0, 0, 461, 0,
- 0, 0, 0, 0, 0, 0, 417, 418, 419, 420,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 421, 422, 423,
- 424, 425, 297, 0, 0, 0, 0, 302, 303, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 426, 427, 428, 429,
- 430, 431, 432, 433, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 318, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 0, 0, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 0, 0, 414, 415, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 416, 0, 0, 0, 520,
- 0, 0, 0, 0, 0, 0, 417, 418, 419, 420,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 421, 422, 423,
- 424, 425, 297, 0, 0, 0, 0, 302, 303, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 426, 427, 428, 429,
- 430, 431, 432, 433, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 318, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 0, 0, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 0, 0, 414, 415, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 416, 0, 0, 576, 0,
- 0, 0, 0, 0, 0, 0, 417, 418, 419, 420,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 421, 422, 423,
- 424, 425, 297, 0, 0, 0, 0, 302, 303, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 426, 427, 428, 429,
- 430, 431, 432, 433, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 318, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 0, 0, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 0, 0, 414, 415, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 416, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 588, 417, 418, 419, 420,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 421, 422, 423,
- 424, 425, 297, 0, 0, 0, 0, 302, 303, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 426, 427, 428, 429,
- 430, 431, 432, 433, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 318, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 0, 0, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 0, 0, 414, 415, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 416, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 417, 418, 419, 420,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 421, 422, 423,
- 424, 425, 297, 0, 0, 0, 0, 302, 303, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 426, 427, 428, 429,
- 430, 431, 432, 433, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 318, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 0, 0, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 0, 0, 414, 415, 0, 444,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 462, 0, 416, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 417, 418, 419, 420,
- 528, 529, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 421, 422, 423,
- 424, 425, 297, 0, 0, 0, 0, 302, 538, 0,
- 0, 541, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 462, 0, 0, 0, 426, 427, 428, 429,
- 430, 431, 432, 433, 0, 0, 0, 0, 0, 0,
- 0, 462, 0, 0, 318, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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, 640, 641, 642, 471, 471, 471, 471, 471,
+ 471, 471, 471, 471, 471, 471, 471, 471, 471, 471,
+ 471, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2333,166 +2368,127 @@
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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
+ 471
};
static const yytype_int16 yycheck[] =
{
- 0, 321, 0, 317, 0, 358, 315, 321, 361, 0,
- 363, 364, 321, 333, 367, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 293, 294, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 341, 349, 416, 378, 506, 518,
- 408, 520, 397, 384, 523, 580, 453, 656, 302, 455,
- 297, 298, 324, 324, 316, 350, 339, 340, 341, 695,
- 374, 318, 324, 370, 405, 406, 702, 562, 563, 564,
- 565, 341, 314, 316, 442, 684, 371, 713, 350, 349,
- 341, 324, 389, 337, 314, 332, 333, 357, 349, 357,
- 360, 357, 351, 350, 299, 300, 357, 356, 357, 316,
- 370, 456, 295, 296, 374, 314, 323, 316, 488, 370,
- 490, 321, 322, 374, 323, 316, 584, 316, 524, 389,
- 475, 314, 323, 316, 323, 315, 318, 320, 389, 321,
- 400, 321, 324, 315, 315, 614, 315, 451, 315, 400,
- 321, 315, 321, 550, 321, 315, 453, 321, 455, 321,
- 518, 321, 520, 533, 350, 523, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 332, 321, 321, 537,
- 324, 324, 321, 322, 321, 323, 321, 324, 319, 324,
- 321, 451, 717, 453, 318, 455, 321, 655, 667, 324,
- 451, 350, 453, 321, 455, 318, 324, 329, 330, 331,
- 326, 316, 328, 324, 545, 323, 586, 558, 559, 315,
- 590, 618, 560, 561, 566, 567, 314, 524, 335, 350,
- 350, 350, 316, 350, 336, 350, 334, 301, 707, 317,
- 303, 316, 319, 314, 324, 324, 506, 605, 606, 314,
- 324, 324, 314, 550, 314, 506, 614, 314, 314, 350,
- 350, 322, 315, 317, 524, 723, 317, 350, 314, 321,
- 317, 358, 315, 524, 319, 314, 318, 315, 350, 323,
- 650, 315, 318, 324, 324, 318, 656, 319, 568, 570,
- 550, 569, 362, 572, 571, 673, 296, 573, 374, 550,
- 458, 370, 544, 628, 658, 713, 374, 701, 714, 667,
- 368, 658, 516, 684, 684, 516, 675, -1, 516, -1,
- 580, 618, 357, -1, 584, -1, 696, -1, 673, 580,
- -1, 689, -1, 584, -1, -1, -1, -1, -1, -1,
- -1, -1, 712, -1, -1, -1, -1, -1, -1, 707,
- -1, -1, -1, -1, -1, -1, -1, -1, 618, 656,
- -1, -1, -1, -1, -1, -1, -1, 618, -1, -1,
- -1, -1, -1, -1, -1, 679, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 684, -1, -1,
- -1, -1, -1, -1, -1, 655, 656, -1, 658, -1,
- -1, -1, -1, -1, 655, 656, -1, 658, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 679,
- -1, -1, -1, -1, 684, -1, -1, -1, 679, -1,
- -1, -1, -1, 684, -1, 695, -1, -1, -1, -1,
- -1, -1, 702, -1, 695, -1, -1, -1, -1, -1,
- -1, 702, -1, 713, -1, -1, -1, 717, -1, -1,
- -1, -1, 713, 723, -1, -1, 717, -1, -1, -1,
- 0, -1, 723, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, -1, -1, -1, -1, -1, -1, -1,
+ 0, 324, 0, 317, 0, 319, 319, 319, 464, 0,
+ 319, 319, 326, 336, 327, 327, 317, 326, 326, 317,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 533, 327, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 357, 349, 416, 425, 589, 527, 515, 529, 405,
+ 321, 532, 462, 386, 353, 299, 300, 304, 665, 392,
+ 295, 296, 319, 297, 298, 318, 382, 361, 327, 326,
+ 364, 378, 366, 367, 324, 374, 370, 327, 451, 349,
+ 413, 414, 353, 317, 324, 319, 693, 357, 349, 323,
+ 397, 335, 336, 340, 353, 365, 357, 365, 368, 365,
+ 354, 318, 301, 302, 365, 359, 360, 324, 378, 465,
+ 320, 353, 382, 704, 324, 335, 497, 378, 499, 324,
+ 711, 382, 327, 321, 318, 593, 324, 397, 484, 327,
+ 324, 722, 321, 318, 318, 318, 397, 318, 408, 324,
+ 324, 324, 623, 324, 460, 318, 322, 408, 324, 559,
+ 324, 324, 353, 327, 527, 462, 529, 464, 329, 532,
+ 331, 542, 321, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 315, 546, 571, 572, 573, 574, 324, 324,
+ 325, 327, 726, 326, 324, 324, 353, 327, 327, 353,
+ 460, 319, 462, 327, 464, 676, 664, 324, 325, 460,
+ 326, 462, 353, 464, 342, 343, 344, 332, 333, 334,
+ 567, 568, 575, 576, 595, 569, 570, 627, 599, 318,
+ 317, 554, 353, 319, 353, 339, 533, 338, 337, 303,
+ 305, 320, 319, 317, 322, 716, 327, 327, 317, 317,
+ 317, 614, 615, 325, 327, 515, 327, 317, 317, 353,
+ 623, 353, 559, 318, 515, 353, 320, 320, 324, 317,
+ 361, 320, 322, 533, 732, 318, 317, 353, 318, 321,
+ 326, 318, 533, 327, 577, 321, 321, 578, 659, 327,
+ 365, 322, 579, 581, 665, 580, 582, 682, 382, 559,
+ 382, 298, 467, 553, 637, 667, 710, 722, 559, 723,
+ 667, 525, 378, 676, 376, 693, 525, 525, 365, 684,
+ -1, -1, 693, -1, -1, -1, -1, -1, -1, 589,
+ 627, -1, -1, 593, 705, 698, 682, -1, 589, -1,
+ -1, -1, 593, -1, -1, -1, -1, -1, -1, -1,
+ 721, -1, -1, 716, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 627, 665, -1,
+ -1, -1, -1, -1, -1, -1, 627, -1, -1, -1,
+ -1, -1, 688, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 693, -1, -1, -1,
+ -1, -1, -1, -1, 664, 665, -1, 667, -1, -1,
+ -1, -1, -1, 664, 665, -1, 667, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 688, -1,
+ -1, -1, -1, 693, -1, -1, -1, 688, -1, -1,
+ -1, -1, 693, -1, 704, -1, -1, -1, -1, -1,
+ -1, 711, -1, 704, -1, -1, -1, -1, -1, -1,
+ 711, -1, 722, -1, -1, -1, 726, -1, -1, -1,
+ -1, 722, 732, -1, -1, 726, -1, -1, -1, 0,
+ -1, 732, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 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, 327, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 370, 371, 372, 373, 374, -1, -1, -1, -1, -1,
- -1, -1, -1, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, -1, -1, 295, 296, -1, -1, -1, -1, -1,
+ 341, 342, 343, 344, 345, -1, -1, -1, -1, -1,
+ -1, -1, -1, 354, 355, 356, 357, 358, 359, 360,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 314, -1, 316, -1, 318, 319, -1, -1,
- -1, -1, 324, 325, 326, 327, 328, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 338, 339, 340, 341,
- 342, -1, -1, -1, 346, 347, 348, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- -1, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 3,
+ -1, -1, 373, 374, 375, 376, 377, 378, -1, -1,
+ -1, -1, -1, -1, -1, -1, 387, -1, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
@@ -2521,101 +2517,62 @@
254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
264, 265, 266, 267, 268, 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,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, -1, -1, 297, 298, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 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,
+ -1, -1, 316, 317, -1, 319, -1, 321, 322, -1,
+ -1, -1, -1, 327, 328, 329, 330, 331, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 341, 342, 343,
+ 344, 345, -1, -1, -1, 349, 350, 351, 352, 353,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, -1, 366, 367, 368, 369, 370, 371, 372, 373,
374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, -1, -1, 295,
- 296, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 314, -1,
- 316, -1, 318, -1, -1, -1, -1, -1, 324, 325,
- 326, 327, 328, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 338, 339, 340, 341, 342, -1, -1, -1,
- 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, -1, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, -1, -1, 295, 296, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 314, -1, 316, -1,
- 318, -1, -1, -1, -1, -1, 324, 325, 326, 327,
- 328, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 338, 339, 340, 341, 342, -1, -1, -1, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, -1, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 3, 4, 5, 6, 7, 8, 9,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, -1, -1,
+ 297, 298, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 316,
+ 317, -1, 319, -1, 321, 322, -1, -1, -1, -1,
+ 327, 328, 329, 330, 331, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 341, 342, 343, 344, 345, -1,
+ -1, -1, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, -1, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
+ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
@@ -2644,100 +2601,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, -1, -1, 295, 296, -1, -1, -1,
+ 290, 291, 292, 293, 294, -1, -1, 297, 298, -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,
+ -1, -1, -1, -1, -1, -1, 316, 317, -1, 319,
+ -1, 321, -1, -1, -1, -1, -1, 327, 328, 329,
+ 330, 331, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 341, 342, 343, 344, 345, -1, -1, -1, 349,
350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, -1, 363, 364, 365, 366, 367, 368, 369,
+ 360, 361, 362, 363, 364, -1, 366, 367, 368, 369,
370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 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,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, -1, -1, 297, 298, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 314, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 324, 325, 326, 327, 328, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 338, 339, 340, 341,
- 342, -1, -1, -1, 346, 347, 348, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 370, 371,
- 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, -1,
- -1, 295, 296, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 314, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 325, 326, 327, 328, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 338, 339, 340, 341, -1, -1,
- -1, -1, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 370, 371, 372, 373,
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 3, 4, 5,
+ -1, -1, -1, 316, 317, -1, 319, -1, 321, -1,
+ -1, -1, -1, -1, 327, 328, 329, 330, 331, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 341, 342,
+ 343, 344, 345, -1, -1, -1, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, -1, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
@@ -2766,19 +2684,145 @@
256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
266, 267, 268, 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,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, -1,
+ -1, 297, 298, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 324, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 338, 339, 340, 341, 342, -1, -1, -1,
- -1, -1, -1, -1, -1, 351, 352, 353, 354, 355,
- 356, 357, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 370, 371, 372, 373, 374, -1,
- -1, -1, -1, -1, -1, -1, -1, 383, -1, 385,
+ 316, 317, -1, 319, -1, -1, -1, -1, -1, -1,
+ -1, 327, 328, 329, 330, 331, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 341, 342, 343, 344, 345,
+ -1, -1, -1, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, -1,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 3, 4, 5, 6, 7,
+ 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
+ 416, 417, 418, 419, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, -1, -1, 297, 298,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 316, 317, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 327, 328,
+ 329, 330, 331, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 341, 342, 343, 344, 345, -1, -1, -1,
+ 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, 384, 385, 386, 387, -1,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, -1, -1, 297, 298, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 316, 317, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 328, 329, 330, 331,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 341,
+ 342, 343, 344, -1, -1, -1, -1, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 373, 374, 375, 376, 377, 378, 379, 380, 381,
+ 382, 383, 384, 385, 386, 387, -1, 389, 390, 391,
+ 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
+ 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 412, 413, 414, 415, 416, 417, 418, 419, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 327, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 341, 342, 343, 344,
+ 345, -1, -1, -1, -1, -1, -1, -1, -1, 354,
+ 355, 356, 357, 358, 359, 360, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 373, 374,
+ 375, 376, 377, 378, -1, -1, -1, -1, -1, -1,
+ -1, -1, 387, -1, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
@@ -2807,100 +2851,61 @@
258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
268, 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,
+ 288, 289, 290, 291, 292, 293, 294, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 324, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 327,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 338, 339, 340, 341, -1, -1, -1, -1, -1, -1,
- -1, -1, 350, 351, 352, 353, 354, 355, 356, 357,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 370, 371, 372, 373, 374, -1, -1, -1,
- -1, -1, -1, -1, -1, 383, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ -1, -1, -1, 341, 342, 343, 344, -1, -1, -1,
+ -1, -1, -1, -1, -1, 353, 354, 355, 356, 357,
+ 358, 359, 360, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 373, 374, 375, 376, 377,
+ 378, -1, -1, -1, -1, -1, -1, -1, -1, 387,
+ -1, 389, 390, 391, 392, 393, 394, 395, 396, 397,
398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 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,
+ 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
+ 418, 419, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, -1, -1, -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, 322, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 370, 371, 372, 373, 374, -1, -1, -1, -1, -1,
- -1, -1, -1, 383, -1, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
- 410, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 341, 342, 343, 344, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 354, 355, 356, 357, 358, 359, 360,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 319, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 338, 339, 340, 341,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 351,
- 352, 353, 354, 355, 356, 357, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 370, 371,
- 372, 373, 374, -1, -1, -1, -1, -1, -1, -1,
- -1, 383, -1, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 3,
+ -1, -1, 373, 374, 375, 376, 377, 378, -1, -1,
+ -1, -1, -1, -1, -1, -1, 387, -1, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+ 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
+ 411, 412, 413, 414, 415, 416, 417, 418, 419, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
@@ -2929,25 +2934,149 @@
254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
264, 265, 266, 267, 268, 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,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 322, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 319, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 338, 339, 340, 341, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 351, 352, 353,
- 354, 355, 356, 357, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 370, 371, 372, 373,
- 374, -1, -1, -1, -1, -1, -1, -1, -1, 383,
- -1, 385, 386, 387, 388, 389, 390, 391, 392, 393,
+ -1, -1, -1, -1, -1, -1, -1, 341, 342, 343,
+ 344, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 354, 355, 356, 357, 358, 359, 360, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 373,
+ 374, 375, 376, 377, 378, -1, -1, -1, -1, -1,
+ -1, -1, -1, 387, -1, 389, 390, 391, 392, 393,
394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 3, 4, 5,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 322, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 341, 342, 343, 344, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, 356,
+ 357, 358, 359, 360, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 373, 374, 375, 376,
+ 377, 378, -1, -1, -1, -1, -1, -1, -1, -1,
+ 387, -1, 389, 390, 391, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
+ 417, 418, 419, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 341, 342, 343, 344, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
+ 360, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 373, 374, 375, 376, 377, 378, -1,
+ -1, -1, -1, -1, -1, -1, -1, 387, -1, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, -1, -1, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, -1, -1, 297, 298, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 316, 317, -1, -1, -1, 321, 322, -1,
+ -1, -1, -1, -1, 328, 329, 330, 331, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 349, 350, 351, 352, 353,
+ 354, -1, -1, -1, -1, 359, 360, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 379, 380, 381, 382, 383,
+ 384, 385, 386, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 401, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 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,
@@ -2970,301 +3099,226 @@
256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
266, 267, 268, 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,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, -1,
+ -1, 297, 298, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 316, 317, -1, -1, 320, -1, -1, -1, -1, -1,
+ -1, -1, 328, 329, 330, 331, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 349, 350, 351, 352, 353, 354, -1,
+ -1, -1, -1, 359, 360, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 379, 380, 381, 382, 383, 384, 385,
+ 386, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 401, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, -1, -1, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, -1, -1, 297,
+ 298, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 316, 317,
+ -1, -1, -1, 321, -1, -1, -1, -1, -1, -1,
+ 328, 329, 330, 331, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 349, 350, 351, 352, 353, 354, -1, -1, -1,
+ -1, 359, 360, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 379, 380, 381, 382, 383, 384, 385, 386, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 401, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, -1, -1, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, -1, -1, 297, 298, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 316, 317, -1, -1,
+ 320, -1, -1, -1, -1, -1, -1, -1, 328, 329,
+ 330, 331, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 349,
+ 350, 351, 352, 353, 354, -1, -1, -1, -1, 359,
+ 360, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 379,
+ 380, 381, 382, 383, 384, 385, 386, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 401, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, -1,
+ -1, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, -1, -1, 297, 298, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 316, 317, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 327, 328, 329, 330, 331,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 349, 350, 351,
+ 352, 353, 354, -1, -1, -1, -1, 359, 360, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 379, 380, 381,
+ 382, 383, 384, 385, 386, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 401,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, -1, -1, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, -1, -1, 297, 298, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 316, 317, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 328, 329, 330, 331, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 349, 350, 351, 352, 353,
+ 354, -1, -1, -1, -1, 359, 360, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 379, 380, 381, 382, 383,
+ 384, 385, 386, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 401, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, -1, -1, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 391,
+ -1, 297, 298, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 405, -1, -1, -1, -1, -1, -1,
+ 316, 317, -1, -1, -1, -1, -1, -1, -1, -1,
+ 422, 423, 328, 329, 330, 331, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 349, 350, 351, 352, 353, 354, -1,
+ -1, -1, 454, 359, 360, -1, -1, -1, -1, -1,
+ -1, -1, -1, 465, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 379, 380, 381, 382, 383, 384, 385,
+ 386, -1, 484, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 401, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 338, 339, 340, 341, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 351, 352, 353, 354, 355,
- 356, 357, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 370, 371, 372, 373, 374, -1,
- -1, -1, -1, -1, -1, -1, -1, 383, -1, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, -1, -1, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, -1, -1, 295, 296, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 551,
-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, 375, 376, 377, 378,
- 379, 380, 381, 382, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 393, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, -1, -1, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, -1, -1, 295, 296, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 314, -1, -1, 317, -1,
- -1, -1, -1, -1, -1, -1, 325, 326, 327, 328,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 346, 347, 348,
- 349, 350, 351, -1, -1, -1, -1, 356, 357, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 375, 376, 377, 378,
- 379, 380, 381, 382, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 393, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, -1, -1, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, -1, -1, 295, 296, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 314, -1, -1, -1, 318,
- -1, -1, -1, -1, -1, -1, 325, 326, 327, 328,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 346, 347, 348,
- 349, 350, 351, -1, -1, -1, -1, 356, 357, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 375, 376, 377, 378,
- 379, 380, 381, 382, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 393, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, -1, -1, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, -1, -1, 295, 296, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 314, -1, -1, 317, -1,
- -1, -1, -1, -1, -1, -1, 325, 326, 327, 328,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 346, 347, 348,
- 349, 350, 351, -1, -1, -1, -1, 356, 357, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 375, 376, 377, 378,
- 379, 380, 381, 382, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 393, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, -1, -1, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, -1, -1, 295, 296, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 314, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 324, 325, 326, 327, 328,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 346, 347, 348,
- 349, 350, 351, -1, -1, -1, -1, 356, 357, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 375, 376, 377, 378,
- 379, 380, 381, 382, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 393, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, -1, -1, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, -1, -1, 295, 296, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 314, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 325, 326, 327, 328,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 346, 347, 348,
- 349, 350, 351, -1, -1, -1, -1, 356, 357, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 375, 376, 377, 378,
- 379, 380, 381, 382, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 393, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, -1, -1, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, -1, -1, 295, 296, -1, 383,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 397, -1, 314, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 325, 326, 327, 328,
- 414, 415, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 346, 347, 348,
- 349, 350, 351, -1, -1, -1, -1, 356, 357, -1,
- -1, 445, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 456, -1, -1, -1, 375, 376, 377, 378,
- 379, 380, 381, 382, -1, -1, -1, -1, -1, -1,
- -1, 475, -1, -1, 393, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -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, 564, 565, 566, 567, 568, 569, 570, 571,
+ 572, 573, 574, 575, 576, 577, 578, 579, 580, 581,
+ 582, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -3274,7 +3328,7 @@
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -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
+ 682
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -3310,139 +3364,142 @@
262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 324, 338, 339, 340, 341, 342, 351, 352, 353,
- 354, 355, 356, 357, 370, 371, 372, 373, 374, 383,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 442, 443, 446, 447,
- 448, 449, 453, 454, 455, 456, 457, 458, 461, 462,
- 463, 464, 465, 467, 472, 473, 474, 515, 516, 517,
- 473, 318, 350, 314, 314, 324, 350, 324, 518, 315,
- 321, 450, 451, 452, 462, 467, 321, 324, 350, 324,
- 350, 463, 467, 332, 469, 470, 0, 516, 467, 476,
- 318, 350, 371, 459, 460, 350, 466, 316, 324, 468,
- 318, 494, 451, 450, 452, 350, 350, 314, 323, 468,
- 318, 321, 324, 445, 295, 296, 314, 325, 326, 327,
- 328, 346, 347, 348, 349, 350, 375, 376, 377, 378,
- 379, 380, 381, 382, 412, 413, 414, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 465, 467, 471, 468,
- 324, 462, 467, 477, 478, 475, 323, 315, 321, 315,
- 321, 317, 423, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 316, 324, 316, 318, 319,
- 324, 358, 359, 360, 361, 363, 364, 365, 366, 367,
- 368, 369, 384, 423, 436, 438, 440, 442, 446, 465,
- 467, 483, 484, 485, 486, 487, 495, 496, 497, 498,
- 501, 502, 505, 506, 507, 514, 519, 468, 323, 468,
- 318, 438, 481, 323, 444, 350, 321, 324, 423, 423,
- 440, 295, 296, 316, 320, 315, 315, 321, 357, 438,
- 314, 423, 321, 333, 467, 350, 479, 480, 319, 478,
- 477, 436, 441, 460, 350, 329, 330, 331, 326, 328,
- 293, 294, 297, 298, 332, 333, 299, 300, 336, 335,
- 334, 301, 303, 302, 337, 317, 317, 436, 316, 319,
- 488, 314, 324, 324, 509, 314, 314, 324, 324, 440,
- 314, 440, 322, 324, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 323, 439, 321, 324, 319, 484,
- 498, 502, 507, 481, 323, 481, 482, 481, 477, 350,
- 315, 415, 440, 350, 438, 423, 479, 468, 321, 324,
- 319, 423, 423, 423, 425, 425, 426, 426, 427, 427,
- 427, 427, 428, 428, 429, 430, 431, 432, 433, 434,
- 437, 317, 350, 520, 521, 495, 508, 484, 510, 440,
- 324, 440, 322, 438, 438, 481, 319, 321, 319, 317,
- 324, 480, 440, 314, 317, 321, 489, 440, 455, 462,
- 500, 358, 483, 496, 511, 315, 315, 319, 481, 322,
- 441, 317, 521, 319, 350, 315, 314, 500, 512, 513,
- 491, 492, 493, 499, 503, 438, 315, 323, 485, 490,
- 494, 440, 324, 315, 362, 487, 485, 318, 481, 315,
- 440, 490, 491, 495, 504, 324, 319
+ 292, 293, 294, 327, 341, 342, 343, 344, 345, 354,
+ 355, 356, 357, 358, 359, 360, 373, 374, 375, 376,
+ 377, 378, 387, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
+ 416, 417, 418, 419, 451, 452, 455, 456, 457, 458,
+ 462, 463, 464, 465, 466, 467, 470, 471, 472, 473,
+ 474, 476, 481, 482, 483, 524, 525, 526, 482, 321,
+ 353, 317, 317, 327, 353, 327, 527, 318, 324, 459,
+ 460, 461, 471, 476, 324, 327, 353, 327, 353, 472,
+ 476, 335, 478, 479, 0, 525, 476, 485, 321, 353,
+ 374, 468, 469, 353, 475, 319, 327, 477, 321, 503,
+ 460, 459, 461, 353, 353, 317, 326, 477, 321, 324,
+ 327, 454, 297, 298, 316, 317, 328, 329, 330, 331,
+ 349, 350, 351, 352, 353, 379, 380, 381, 382, 383,
+ 384, 385, 386, 421, 422, 423, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 474, 476, 480, 477, 327,
+ 471, 476, 486, 487, 484, 326, 318, 324, 318, 324,
+ 320, 432, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, 443, 444, 445, 319, 327, 319, 321, 322, 327,
+ 361, 362, 363, 364, 366, 367, 368, 369, 370, 371,
+ 372, 388, 432, 445, 447, 449, 451, 455, 474, 476,
+ 492, 493, 494, 495, 496, 504, 505, 506, 507, 510,
+ 511, 514, 515, 516, 523, 528, 477, 326, 477, 321,
+ 447, 490, 326, 453, 353, 324, 327, 432, 432, 449,
+ 297, 298, 319, 323, 318, 318, 324, 360, 447, 317,
+ 432, 324, 336, 476, 353, 488, 489, 322, 487, 486,
+ 445, 450, 469, 353, 332, 333, 334, 329, 331, 295,
+ 296, 299, 300, 335, 336, 301, 302, 339, 338, 337,
+ 303, 305, 304, 340, 320, 320, 445, 319, 322, 497,
+ 317, 327, 327, 518, 317, 317, 327, 327, 449, 317,
+ 449, 325, 327, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 315, 326, 448, 324, 327, 322, 493, 507,
+ 511, 516, 490, 326, 490, 491, 490, 486, 353, 318,
+ 424, 449, 353, 447, 432, 488, 477, 324, 327, 322,
+ 432, 432, 432, 434, 434, 435, 435, 436, 436, 436,
+ 436, 437, 437, 438, 439, 440, 441, 442, 443, 446,
+ 320, 353, 529, 530, 504, 517, 493, 519, 449, 327,
+ 449, 325, 447, 447, 490, 322, 324, 322, 320, 327,
+ 489, 449, 317, 320, 324, 498, 449, 464, 471, 509,
+ 361, 492, 505, 520, 318, 318, 322, 490, 325, 450,
+ 320, 530, 322, 353, 318, 317, 509, 521, 522, 500,
+ 501, 502, 508, 512, 447, 318, 326, 494, 499, 503,
+ 449, 327, 318, 365, 496, 494, 321, 490, 318, 449,
+ 499, 500, 504, 513, 327, 322
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint16 yyr1[] =
{
- 0, 411, 412, 413, 413, 413, 413, 413, 413, 413,
- 413, 413, 413, 413, 413, 413, 413, 414, 414, 414,
- 414, 414, 414, 415, 416, 417, 418, 418, 419, 419,
- 420, 420, 421, 422, 422, 422, 423, 423, 423, 423,
- 424, 424, 424, 424, 425, 425, 425, 425, 426, 426,
- 426, 427, 427, 427, 428, 428, 428, 428, 428, 429,
- 429, 429, 430, 430, 431, 431, 432, 432, 433, 433,
- 434, 434, 435, 435, 436, 437, 436, 438, 438, 439,
- 439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
- 440, 440, 441, 442, 442, 442, 442, 442, 442, 442,
- 442, 442, 444, 443, 445, 445, 446, 447, 447, 448,
- 448, 449, 450, 450, 451, 451, 451, 451, 452, 453,
- 453, 453, 453, 453, 454, 454, 454, 454, 454, 455,
- 455, 456, 457, 457, 457, 457, 457, 457, 457, 457,
- 458, 459, 459, 460, 460, 460, 461, 462, 462, 463,
- 463, 463, 463, 463, 463, 463, 464, 464, 464, 464,
- 464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
- 464, 464, 464, 464, 464, 464, 464, 464, 464, 464,
- 464, 464, 464, 464, 464, 465, 466, 466, 467, 467,
- 468, 468, 468, 468, 469, 469, 470, 471, 471, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
- 472, 472, 472, 472, 472, 472, 472, 472, 472, 473,
- 473, 473, 475, 474, 476, 474, 477, 477, 478, 478,
- 479, 479, 480, 480, 481, 481, 481, 482, 482, 483,
- 484, 484, 485, 485, 485, 485, 485, 485, 485, 485,
- 486, 487, 488, 489, 487, 490, 490, 492, 491, 493,
- 491, 494, 494, 495, 495, 496, 496, 497, 497, 498,
- 499, 499, 500, 500, 501, 501, 503, 502, 504, 504,
- 505, 505, 506, 506, 508, 507, 509, 507, 510, 507,
- 511, 511, 512, 512, 513, 513, 514, 514, 514, 514,
- 514, 515, 515, 516, 516, 516, 518, 517, 519, 520,
- 520, 521, 521
+ 0, 420, 421, 422, 422, 422, 422, 422, 422, 422,
+ 422, 422, 422, 422, 422, 422, 422, 422, 423, 423,
+ 423, 423, 423, 423, 424, 425, 426, 427, 427, 428,
+ 428, 429, 429, 430, 431, 431, 431, 432, 432, 432,
+ 432, 433, 433, 433, 433, 434, 434, 434, 434, 435,
+ 435, 435, 436, 436, 436, 437, 437, 437, 437, 437,
+ 438, 438, 438, 439, 439, 440, 440, 441, 441, 442,
+ 442, 443, 443, 444, 444, 445, 446, 445, 447, 447,
+ 448, 448, 448, 448, 448, 448, 448, 448, 448, 448,
+ 448, 449, 449, 450, 451, 451, 451, 451, 451, 451,
+ 451, 451, 451, 453, 452, 454, 454, 455, 456, 456,
+ 457, 457, 458, 459, 459, 460, 460, 460, 460, 461,
+ 462, 462, 462, 462, 462, 463, 463, 463, 463, 463,
+ 464, 464, 465, 466, 466, 466, 466, 466, 466, 466,
+ 466, 467, 468, 468, 469, 469, 469, 470, 471, 471,
+ 472, 472, 472, 472, 472, 472, 472, 473, 473, 473,
+ 473, 473, 473, 473, 473, 473, 473, 473, 473, 473,
+ 473, 473, 473, 473, 473, 473, 473, 473, 473, 473,
+ 473, 473, 473, 473, 473, 473, 473, 473, 473, 473,
+ 473, 473, 474, 475, 475, 476, 476, 477, 477, 477,
+ 477, 478, 478, 479, 480, 480, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 481, 481, 481, 481, 481, 481, 481, 482, 482,
+ 482, 484, 483, 485, 483, 486, 486, 487, 487, 488,
+ 488, 489, 489, 490, 490, 490, 491, 491, 492, 493,
+ 493, 494, 494, 494, 494, 494, 494, 494, 494, 495,
+ 496, 497, 498, 496, 499, 499, 501, 500, 502, 500,
+ 503, 503, 504, 504, 505, 505, 506, 506, 507, 508,
+ 508, 509, 509, 510, 510, 512, 511, 513, 513, 514,
+ 514, 515, 515, 517, 516, 518, 516, 519, 516, 520,
+ 520, 521, 521, 522, 522, 523, 523, 523, 523, 523,
+ 524, 524, 525, 525, 525, 527, 526, 528, 529, 529,
+ 530, 530
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
static const yytype_uint8 yyr2[] =
{
0, 2, 1, 1, 3, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
- 3, 2, 2, 1, 1, 1, 2, 2, 2, 1,
- 2, 3, 2, 1, 1, 1, 1, 2, 2, 2,
- 1, 1, 1, 1, 1, 3, 3, 3, 1, 3,
- 3, 1, 3, 3, 1, 3, 3, 3, 3, 1,
- 3, 3, 1, 3, 1, 3, 1, 3, 1, 3,
- 1, 3, 1, 3, 1, 0, 6, 1, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
+ 1, 3, 2, 2, 1, 1, 1, 2, 2, 2,
+ 1, 2, 3, 2, 1, 1, 1, 1, 2, 2,
+ 2, 1, 1, 1, 1, 1, 3, 3, 3, 1,
+ 3, 3, 1, 3, 3, 1, 3, 3, 3, 3,
+ 1, 3, 3, 1, 3, 1, 3, 1, 3, 1,
+ 3, 1, 3, 1, 3, 1, 0, 6, 1, 3,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 2, 2, 4, 2, 3, 4, 2,
- 3, 4, 0, 6, 2, 3, 2, 1, 1, 2,
- 3, 3, 2, 3, 2, 1, 2, 1, 1, 1,
- 3, 4, 6, 5, 1, 2, 3, 5, 4, 1,
- 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 1, 3, 1, 3, 1, 1, 1, 2, 1,
+ 1, 1, 3, 1, 2, 2, 4, 2, 3, 4,
+ 2, 3, 4, 0, 6, 2, 3, 2, 1, 1,
+ 2, 3, 3, 2, 3, 2, 1, 2, 1, 1,
+ 1, 3, 4, 6, 5, 1, 2, 3, 5, 4,
+ 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 4, 1, 3, 1, 3, 1, 1, 1, 2,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 3, 2, 3,
- 2, 3, 3, 4, 1, 0, 3, 1, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 4, 1, 1, 3, 2, 3, 2, 3, 3,
+ 4, 1, 0, 3, 1, 3, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -3472,16 +3529,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,
- 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, 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
};
@@ -4164,250 +4221,260 @@
switch (yyn)
{
case 2:
-#line 352 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 357 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string);
}
-#line 4172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4229 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 3:
-#line 358 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 363 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 4180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4237 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 4:
-#line 361 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 366 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
(yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
-#line 4190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4247 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 5:
-#line 366 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 371 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
}
-#line 4198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4255 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 6:
-#line 369 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 374 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 4206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4263 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 7:
-#line 372 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 377 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 4215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4272 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 8:
-#line 376 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 381 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
-#line 4223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4280 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 9:
-#line 380 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 385 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true);
+ }
+#line 4288 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 10:
+#line 388 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 4232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4297 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 10:
-#line 384 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 11:
+#line 392 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 4241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4306 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 11:
-#line 388 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 12:
+#line 396 "glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true);
}
-#line 4250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4315 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 12:
-#line 392 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 13:
+#line 400 "glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true);
}
-#line 4259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4324 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 13:
-#line 396 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 14:
+#line 404 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 4268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4333 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 14:
-#line 400 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 15:
+#line 408 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 4277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 15:
-#line 404 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal");
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true);
- }
-#line 4286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4342 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 16:
-#line 408 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 412 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal");
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true);
+ }
+#line 4353 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 17:
+#line 418 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true);
}
-#line 4295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 17:
-#line 416 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
- }
-#line 4303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4362 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 18:
-#line 419 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
- }
-#line 4311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 19:
-#line 422 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 426 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 4319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4370 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 19:
+#line 429 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
+ }
+#line 4378 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 20:
-#line 425 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 432 "glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 4327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4386 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 21:
-#line 428 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 435 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
+ }
+#line 4394 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 22:
+#line 438 "glslang.y" /* yacc.c:1646 */
{
parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode));
}
-#line 4337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4404 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 22:
-#line 433 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 23:
+#line 443 "glslang.y" /* yacc.c:1646 */
{
parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode));
}
-#line 4347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4414 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 23:
-#line 441 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 24:
+#line 451 "glslang.y" /* yacc.c:1646 */
{
parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 4356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4423 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 24:
-#line 448 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 25:
+#line 458 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode);
delete (yyvsp[0].interm).function;
}
-#line 4365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 25:
-#line 455 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm) = (yyvsp[0].interm);
- }
-#line 4373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4432 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 26:
-#line 461 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm) = (yyvsp[-1].interm);
- (yyval.interm).loc = (yyvsp[0].lex).loc;
- }
-#line 4382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 27:
-#line 465 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm) = (yyvsp[-1].interm);
- (yyval.interm).loc = (yyvsp[0].lex).loc;
- }
-#line 4391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 28:
-#line 472 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm) = (yyvsp[-1].interm);
- }
-#line 4399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 29:
-#line 475 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 465 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 4407 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4440 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 27:
+#line 471 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm) = (yyvsp[-1].interm);
+ (yyval.interm).loc = (yyvsp[0].lex).loc;
+ }
+#line 4449 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 28:
+#line 475 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm) = (yyvsp[-1].interm);
+ (yyval.interm).loc = (yyvsp[0].lex).loc;
+ }
+#line 4458 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 29:
+#line 482 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm) = (yyvsp[-1].interm);
+ }
+#line 4466 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 30:
-#line 481 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 485 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm) = (yyvsp[0].interm);
+ }
+#line 4474 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 31:
+#line 491 "glslang.y" /* yacc.c:1646 */
{
TParameter param = { 0, new TType };
param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
@@ -4415,11 +4482,11 @@
(yyval.interm).function = (yyvsp[-1].interm).function;
(yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
}
-#line 4419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4486 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 31:
-#line 488 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 32:
+#line 498 "glslang.y" /* yacc.c:1646 */
{
TParameter param = { 0, new TType };
param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
@@ -4427,29 +4494,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 4431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 32:
-#line 498 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm) = (yyvsp[-1].interm);
- }
-#line 4439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4498 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 33:
-#line 506 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 508 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm) = (yyvsp[-1].interm);
+ }
+#line 4506 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 34:
+#line 516 "glslang.y" /* yacc.c:1646 */
{
// Constructor
(yyval.interm).intermNode = 0;
(yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
}
-#line 4449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4516 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 34:
-#line 511 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 35:
+#line 521 "glslang.y" /* yacc.c:1646 */
{
//
// Should be a method or subroutine call, but we haven't recognized the arguments yet.
@@ -4477,50 +4544,50 @@
(yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull);
}
}
-#line 4481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4548 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 35:
-#line 539 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 36:
+#line 549 "glslang.y" /* yacc.c:1646 */
{
// Constructor
(yyval.interm).intermNode = 0;
(yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
}
-#line 4491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4558 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 36:
-#line 548 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 37:
+#line 558 "glslang.y" /* yacc.c:1646 */
{
parseContext.variableCheck((yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode())
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
}
-#line 4502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4569 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 37:
-#line 554 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 38:
+#line 564 "glslang.y" /* yacc.c:1646 */
{
parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode));
}
-#line 4511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4578 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 38:
-#line 558 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 39:
+#line 568 "glslang.y" /* yacc.c:1646 */
{
parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode));
}
-#line 4520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4587 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 39:
-#line 562 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 40:
+#line 572 "glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-1].interm).op != EOpNull) {
char errorOp[2] = {0, 0};
@@ -4537,179 +4604,179 @@
(yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
}
-#line 4541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 40:
-#line 582 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
-#line 4547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4608 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 41:
-#line 583 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
-#line 4553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 592 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
+#line 4614 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 42:
-#line 584 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
-#line 4559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 593 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
+#line 4620 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 43:
-#line 585 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
- parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
-#line 4566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 594 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
+#line 4626 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 44:
-#line 591 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 595 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
+#line 4633 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 45:
-#line 592 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 601 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4639 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 46:
+#line 602 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4649 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 46:
-#line 597 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 47:
+#line 607 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4659 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 47:
-#line 602 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 48:
+#line 612 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 48:
-#line 611 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4670 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 49:
-#line 612 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 621 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4676 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 50:
+#line 622 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4686 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 50:
-#line 617 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 51:
+#line 627 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 51:
-#line 625 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4635 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4696 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 52:
-#line 626 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 635 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4702 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 53:
+#line 636 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4713 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 53:
-#line 632 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 54:
+#line 642 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4657 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 54:
-#line 641 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4724 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 55:
-#line 642 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 651 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4730 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 56:
+#line 652 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4740 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 56:
-#line 647 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 57:
+#line 657 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4750 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 57:
-#line 652 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 58:
+#line 662 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4760 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 58:
-#line 657 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 59:
+#line 667 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 59:
-#line 665 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4770 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 60:
-#line 666 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 675 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4776 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 61:
+#line 676 "glslang.y" /* yacc.c:1646 */
{
parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "==");
@@ -4719,11 +4786,11 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4790 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 61:
-#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 62:
+#line 685 "glslang.y" /* yacc.c:1646 */
{
parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!=");
@@ -4733,124 +4800,124 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 62:
-#line 687 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4804 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 63:
-#line 688 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 697 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4810 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 64:
+#line 698 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 64:
-#line 697 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4821 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 65:
-#line 698 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 707 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4827 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 66:
+#line 708 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 66:
-#line 707 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4838 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 67:
-#line 708 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 717 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4844 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 68:
+#line 718 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 68:
-#line 717 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4855 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 69:
-#line 718 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 727 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4861 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 70:
+#line 728 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 70:
-#line 726 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4871 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 71:
-#line 727 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 736 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4877 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 72:
+#line 737 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 72:
-#line 735 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4887 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 73:
-#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 745 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4893 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 74:
+#line 746 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 74:
-#line 744 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4903 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 75:
-#line 745 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- ++parseContext.controlFlowNestingLevel;
- }
-#line 4850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 754 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4909 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 76:
-#line 748 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 755 "glslang.y" /* yacc.c:1646 */
+ {
+ ++parseContext.controlFlowNestingLevel;
+ }
+#line 4917 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 77:
+#line 758 "glslang.y" /* yacc.c:1646 */
{
--parseContext.controlFlowNestingLevel;
parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode));
@@ -4863,17 +4930,17 @@
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
}
-#line 4867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 77:
-#line 763 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4934 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 78:
-#line 764 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 773 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4940 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 79:
+#line 774 "glslang.y" /* yacc.c:1646 */
{
parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment");
parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
@@ -4887,119 +4954,119 @@
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
}
-#line 4891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4958 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 79:
-#line 780 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 80:
+#line 790 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpAssign;
}
-#line 4900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4967 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 80:
-#line 784 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 81:
+#line 794 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpMulAssign;
}
-#line 4909 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4976 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 81:
-#line 788 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 82:
+#line 798 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpDivAssign;
}
-#line 4918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4985 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 82:
-#line 792 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 83:
+#line 802 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%=");
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpModAssign;
}
-#line 4928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4995 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 83:
-#line 797 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 84:
+#line 807 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpAddAssign;
}
-#line 4937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5004 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 84:
-#line 801 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 85:
+#line 811 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpSubAssign;
}
-#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5013 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 85:
-#line 805 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 86:
+#line 815 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
}
-#line 4955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5022 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 86:
-#line 809 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 87:
+#line 819 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
}
-#line 4964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5031 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 87:
-#line 813 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 88:
+#line 823 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
}
-#line 4973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5040 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 88:
-#line 817 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 89:
+#line 827 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
}
-#line 4982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5049 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 89:
-#line 821 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 90:
+#line 831 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
}
-#line 4991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 90:
-#line 828 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
- }
-#line 4999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5058 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 91:
-#line 831 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 838 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+ }
+#line 5066 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 92:
+#line 841 "glslang.y" /* yacc.c:1646 */
{
parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
@@ -5008,40 +5075,40 @@
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
}
-#line 5012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5079 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 92:
-#line 842 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 93:
+#line 852 "glslang.y" /* yacc.c:1646 */
{
parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5088 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 93:
-#line 849 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 94:
+#line 859 "glslang.y" /* yacc.c:1646 */
{
parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */);
(yyval.interm.intermNode) = 0;
// TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
}
-#line 5031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5098 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 94:
-#line 854 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 95:
+#line 864 "glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate())
(yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode;
}
-#line 5041 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5108 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 95:
-#line 859 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 96:
+#line 869 "glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement");
// lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope
@@ -5049,75 +5116,75 @@
parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
(yyval.interm.intermNode) = 0;
}
-#line 5053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5120 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 96:
-#line 866 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 97:
+#line 876 "glslang.y" /* yacc.c:1646 */
{
parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
(yyval.interm.intermNode) = 0;
}
-#line 5062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5129 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 97:
-#line 870 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 98:
+#line 880 "glslang.y" /* yacc.c:1646 */
{
parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
(yyval.interm.intermNode) = 0;
}
-#line 5071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5138 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 98:
-#line 874 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 99:
+#line 884 "glslang.y" /* yacc.c:1646 */
{
parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes);
(yyval.interm.intermNode) = 0;
}
-#line 5080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5147 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 99:
-#line 878 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 100:
+#line 888 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type));
(yyval.interm.intermNode) = 0;
}
-#line 5090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5157 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 100:
-#line 883 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 101:
+#line 893 "glslang.y" /* yacc.c:1646 */
{
parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers);
parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string);
(yyval.interm.intermNode) = 0;
}
-#line 5100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5167 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 101:
-#line 888 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 102:
+#line 898 "glslang.y" /* yacc.c:1646 */
{
parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers);
(yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string);
parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList));
(yyval.interm.intermNode) = 0;
}
-#line 5111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 102:
-#line 897 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
-#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5178 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 103:
-#line 897 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 907 "glslang.y" /* yacc.c:1646 */
+ { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
+#line 5184 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 104:
+#line 907 "glslang.y" /* yacc.c:1646 */
{
--parseContext.structNestingLevel;
parseContext.blockName = (yyvsp[-4].lex).string;
@@ -5127,54 +5194,54 @@
(yyval.interm).loc = (yyvsp[-5].interm.type).loc;
(yyval.interm).typeList = (yyvsp[-1].interm.typeList);
}
-#line 5131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5198 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 104:
-#line 908 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 105:
+#line 918 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.identifierList) = new TIdentifierList;
(yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
-#line 5140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5207 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 105:
-#line 912 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 106:
+#line 922 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
(yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
-#line 5149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5216 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 106:
-#line 919 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 107:
+#line 929 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).function = (yyvsp[-1].interm.function);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 5158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 107:
-#line 926 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.function) = (yyvsp[0].interm.function);
- }
-#line 5166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5225 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 108:
-#line 929 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 936 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.function) = (yyvsp[0].interm.function);
}
-#line 5174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5233 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 109:
-#line 936 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 939 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.function) = (yyvsp[0].interm.function);
+ }
+#line 5241 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 110:
+#line 946 "glslang.y" /* yacc.c:1646 */
{
// Add the parameter
(yyval.interm.function) = (yyvsp[-1].interm.function);
@@ -5183,11 +5250,11 @@
else
delete (yyvsp[0].interm).param.type;
}
-#line 5187 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5254 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 110:
-#line 944 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 111:
+#line 954 "glslang.y" /* yacc.c:1646 */
{
//
// Only first parameter of one-parameter functions can be void
@@ -5205,11 +5272,11 @@
(yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param);
}
}
-#line 5209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5276 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 111:
-#line 964 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 112:
+#line 974 "glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) {
parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return",
@@ -5229,11 +5296,11 @@
function = new TFunction((yyvsp[-1].lex).string, type);
(yyval.interm.function) = function;
}
-#line 5233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5300 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 112:
-#line 987 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 113:
+#line 997 "glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-1].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -5249,11 +5316,11 @@
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).param = param;
}
-#line 5253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5320 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 113:
-#line 1002 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 114:
+#line 1012 "glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -5273,11 +5340,11 @@
(yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).param = param;
}
-#line 5277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5344 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 114:
-#line 1027 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 115:
+#line 1037 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
@@ -5289,11 +5356,11 @@
parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
}
-#line 5293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5360 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 115:
-#line 1038 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 116:
+#line 1048 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
@@ -5301,11 +5368,11 @@
parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
}
-#line 5305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5372 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 116:
-#line 1048 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 117:
+#line 1058 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
@@ -5316,11 +5383,11 @@
parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type);
parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
}
-#line 5320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5387 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 117:
-#line 1058 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 118:
+#line 1068 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
@@ -5328,68 +5395,68 @@
parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
}
-#line 5332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5399 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 118:
-#line 1068 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 119:
+#line 1078 "glslang.y" /* yacc.c:1646 */
{
TParameter param = { 0, new TType((yyvsp[0].interm.type)) };
(yyval.interm).param = param;
if ((yyvsp[0].interm.type).arraySizes)
parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes);
}
-#line 5343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 119:
-#line 1077 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm) = (yyvsp[0].interm);
- }
-#line 5351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5410 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 120:
-#line 1080 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1087 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm) = (yyvsp[0].interm);
+ }
+#line 5418 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 121:
+#line 1090 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-2].interm);
parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
}
-#line 5360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5427 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 121:
-#line 1084 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 122:
+#line 1094 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-3].interm);
parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes);
}
-#line 5369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5436 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 122:
-#line 1088 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 123:
+#line 1098 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[-5].interm).type;
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
}
-#line 5379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5446 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 123:
-#line 1093 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 124:
+#line 1103 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[-4].interm).type;
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
}
-#line 5389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5456 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 124:
-#line 1101 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 125:
+#line 1111 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[0].interm.type);
(yyval.interm).intermNode = 0;
@@ -5397,51 +5464,51 @@
parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type);
}
-#line 5401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5468 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 125:
-#line 1108 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 126:
+#line 1118 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[-1].interm.type);
(yyval.interm).intermNode = 0;
parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type));
}
-#line 5411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5478 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 126:
-#line 1113 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 127:
+#line 1123 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[-2].interm.type);
(yyval.interm).intermNode = 0;
parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes);
}
-#line 5421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5488 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 127:
-#line 1118 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 128:
+#line 1128 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[-4].interm.type);
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
}
-#line 5431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5498 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 128:
-#line 1123 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 129:
+#line 1133 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[-3].interm.type);
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
}
-#line 5441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5508 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 129:
-#line 1132 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 130:
+#line 1142 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[0].interm.type);
@@ -5452,11 +5519,11 @@
}
parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier);
}
-#line 5456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5523 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 130:
-#line 1142 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 131:
+#line 1152 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type));
@@ -5481,22 +5548,22 @@
(parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
(yyval.interm.type).qualifier.smooth = true;
}
-#line 5485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5552 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 131:
-#line 1169 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 132:
+#line 1179 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "invariant");
parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.invariant = true;
}
-#line 5496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5563 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 132:
-#line 1178 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 133:
+#line 1188 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "smooth");
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth");
@@ -5504,11 +5571,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.smooth = true;
}
-#line 5508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5575 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 133:
-#line 1185 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 134:
+#line 1195 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "flat");
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat");
@@ -5516,11 +5583,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.flat = true;
}
-#line 5520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5587 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 134:
-#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 135:
+#line 1203 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective");
@@ -5528,11 +5595,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.nopersp = true;
}
-#line 5532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5599 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 135:
-#line 1200 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 136:
+#line 1210 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD");
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
@@ -5540,11 +5607,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.explicitInterp = true;
}
-#line 5544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5611 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 136:
-#line 1207 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 137:
+#line 1217 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV");
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric");
@@ -5553,11 +5620,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.pervertexNV = true;
}
-#line 5557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5624 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 137:
-#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 138:
+#line 1225 "glslang.y" /* yacc.c:1646 */
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV");
@@ -5568,11 +5635,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perPrimitiveNV = true;
}
-#line 5572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5639 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 138:
-#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 139:
+#line 1235 "glslang.y" /* yacc.c:1646 */
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV");
@@ -5580,11 +5647,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perViewNV = true;
}
-#line 5584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5651 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 139:
-#line 1232 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 140:
+#line 1242 "glslang.y" /* yacc.c:1646 */
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV");
@@ -5592,84 +5659,84 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perTaskNV = true;
}
-#line 5596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 140:
-#line 1243 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type) = (yyvsp[-1].interm.type);
- }
-#line 5604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5663 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 141:
-#line 1249 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1253 "glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type) = (yyvsp[0].interm.type);
+ (yyval.interm.type) = (yyvsp[-1].interm.type);
}
-#line 5612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5671 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 142:
-#line 1252 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1259 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5679 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 143:
+#line 1262 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[-2].interm.type);
(yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
}
-#line 5622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5689 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 143:
-#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 144:
+#line 1269 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string);
}
-#line 5631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5698 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 144:
-#line 1263 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 145:
+#line 1273 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[-2].lex).loc);
parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode));
}
-#line 5640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5707 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 145:
-#line 1267 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 146:
+#line 1277 "glslang.y" /* yacc.c:1646 */
{ // because "shared" is both an identifier and a keyword
(yyval.interm.type).init((yyvsp[0].lex).loc);
TString strShared("shared");
parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared);
}
-#line 5650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5717 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 146:
-#line 1276 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 147:
+#line 1286 "glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.noContraction = true;
}
-#line 5661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 147:
-#line 1286 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type) = (yyvsp[0].interm.type);
- }
-#line 5669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5728 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 148:
-#line 1289 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1296 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5736 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 149:
+#line 1299 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[-1].interm.type);
if ((yyval.interm.type).basicType == EbtVoid)
@@ -5678,112 +5745,112 @@
(yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
}
-#line 5682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 149:
-#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type) = (yyvsp[0].interm.type);
- }
-#line 5690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5749 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 150:
-#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1310 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 5698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5757 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 151:
-#line 1306 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1313 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5765 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 152:
+#line 1316 "glslang.y" /* yacc.c:1646 */
{
parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 5707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 152:
-#line 1310 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- // allow inheritance of storage qualifier from block declaration
- (yyval.interm.type) = (yyvsp[0].interm.type);
- }
-#line 5716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5774 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 153:
-#line 1314 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1320 "glslang.y" /* yacc.c:1646 */
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 5725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5783 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 154:
-#line 1319 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1324 "glslang.y" /* yacc.c:1646 */
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 5734 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5792 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 155:
-#line 1323 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1329 "glslang.y" /* yacc.c:1646 */
{
+ // allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 5742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5801 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 156:
-#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1333 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5809 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 157:
+#line 1340 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant
}
-#line 5751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5818 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 157:
-#line 1334 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 158:
+#line 1344 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "inout");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqInOut;
}
-#line 5761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5828 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 158:
-#line 1339 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 159:
+#line 1349 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "in");
(yyval.interm.type).init((yyvsp[0].lex).loc);
// whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later
(yyval.interm.type).qualifier.storage = EvqIn;
}
-#line 5772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5839 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 159:
-#line 1345 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 160:
+#line 1355 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "out");
(yyval.interm.type).init((yyvsp[0].lex).loc);
// whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later
(yyval.interm.type).qualifier.storage = EvqOut;
}
-#line 5783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5850 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 160:
-#line 1351 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 161:
+#line 1361 "glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid");
@@ -5791,21 +5858,21 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.centroid = true;
}
-#line 5795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5862 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 161:
-#line 1358 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 162:
+#line 1368 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "uniform");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqUniform;
}
-#line 5805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5872 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 162:
-#line 1364 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 163:
+#line 1373 "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");
@@ -5814,21 +5881,21 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqShared;
}
-#line 5818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5885 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 163:
-#line 1372 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 164:
+#line 1381 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "buffer");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqBuffer;
}
-#line 5828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5895 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 164:
-#line 1377 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 165:
+#line 1387 "glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute");
@@ -5841,11 +5908,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 5845 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5912 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 165:
-#line 1389 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 166:
+#line 1399 "glslang.y" /* yacc.c:1646 */
{
parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying");
@@ -5860,250 +5927,324 @@
else
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 5864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5931 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 166:
-#line 1403 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 167:
+#line 1413 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "patch");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.patch = true;
}
-#line 5875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5942 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 167:
-#line 1409 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 168:
+#line 1419 "glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "sample");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.sample = true;
}
-#line 5885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 168:
-#line 1414 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV");
- parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask
- | EShLangAnyHitNVMask), "hitAttributeNV");
- parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV");
- (yyval.interm.type).init((yyvsp[0].lex).loc);
- (yyval.interm.type).qualifier.storage = EvqHitAttrNV;
- }
-#line 5898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5952 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 169:
-#line 1422 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1424 "glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV");
- parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask |
- EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNV");
- parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV");
+ parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
+ | EShLangAnyHitMask), "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 = EvqPayloadNV;
+ (yyval.interm.type).qualifier.storage = EvqHitAttr;
}
-#line 5911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5965 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 170:
-#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1432 "glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV");
- parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitNVMask |
- EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNV");
- parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV");
+ parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
+ | EShLangAnyHitMask), "hitAttributeEXT");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "hitAttributeNV");
(yyval.interm.type).init((yyvsp[0].lex).loc);
- (yyval.interm.type).qualifier.storage = EvqPayloadInNV;
+ (yyval.interm.type).qualifier.storage = EvqHitAttr;
}
-#line 5924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5978 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 171:
-#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1440 "glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV");
- parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenNVMask |
- EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask), "callableDataNV");
- parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV");
+ parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
+ EShLangAnyHitMask | EShLangMissMask), "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 = EvqCallableDataNV;
+ (yyval.interm.type).qualifier.storage = EvqPayload;
}
-#line 5937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5991 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 172:
-#line 1446 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1448 "glslang.y" /* yacc.c:1646 */
{
- parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV");
- parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV");
- parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV");
+ parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
+ EShLangAnyHitMask | EShLangMissMask), "rayPayloadEXT");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadEXT");
(yyval.interm.type).init((yyvsp[0].lex).loc);
- (yyval.interm.type).qualifier.storage = EvqCallableDataInNV;
+ (yyval.interm.type).qualifier.storage = EvqPayload;
}
-#line 5949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6004 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 173:
-#line 1453 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1456 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask |
+ EShLangAnyHitMask | EShLangMissMask), "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 = EvqPayloadIn;
+ }
+#line 6017 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 174:
+#line 1464 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask |
+ EShLangAnyHitMask | EShLangMissMask), "rayPayloadInEXT");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadInEXT");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
+ (yyval.interm.type).qualifier.storage = EvqPayloadIn;
+ }
+#line 6030 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 175:
+#line 1472 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask |
+ EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "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 = EvqCallableData;
+ }
+#line 6043 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 176:
+#line 1480 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask |
+ EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataEXT");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataEXT");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
+ (yyval.interm.type).qualifier.storage = EvqCallableData;
+ }
+#line 6056 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 177:
+#line 1488 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
+ (yyval.interm.type).qualifier.storage = EvqCallableDataIn;
+ }
+#line 6068 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 178:
+#line 1495 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataInEXT");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
+ (yyval.interm.type).qualifier.storage = EvqCallableDataIn;
+ }
+#line 6080 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 179:
+#line 1502 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.coherent = true;
}
-#line 5958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6089 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 174:
-#line 1457 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 180:
+#line 1506 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent");
(yyval.interm.type).qualifier.devicecoherent = true;
}
-#line 5968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6099 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 175:
-#line 1462 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 181:
+#line 1511 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent");
(yyval.interm.type).qualifier.queuefamilycoherent = true;
}
-#line 5978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6109 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 176:
-#line 1467 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 182:
+#line 1516 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent");
(yyval.interm.type).qualifier.workgroupcoherent = true;
}
-#line 5988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6119 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 177:
-#line 1472 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 183:
+#line 1521 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent");
(yyval.interm.type).qualifier.subgroupcoherent = true;
}
-#line 5998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6129 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 178:
-#line 1477 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 184:
+#line 1526 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate");
(yyval.interm.type).qualifier.nonprivate = true;
}
-#line 6008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6139 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 179:
-#line 1482 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 185:
+#line 1531 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
+ parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent");
+ (yyval.interm.type).qualifier.shadercallcoherent = true;
+ }
+#line 6149 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 186:
+#line 1536 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.volatil = true;
}
-#line 6017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6158 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 180:
-#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 187:
+#line 1540 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.restrict = true;
}
-#line 6026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6167 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 181:
-#line 1490 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 188:
+#line 1544 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.readonly = true;
}
-#line 6035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6176 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 182:
-#line 1494 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 189:
+#line 1548 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.writeonly = true;
}
-#line 6044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6185 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 183:
-#line 1498 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 190:
+#line 1552 "glslang.y" /* yacc.c:1646 */
{
parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine");
parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine");
parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine");
(yyval.interm.type).init((yyvsp[0].lex).loc);
}
-#line 6055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6196 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 184:
-#line 1504 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 191:
+#line 1558 "glslang.y" /* yacc.c:1646 */
{
parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine");
parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine");
parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine");
(yyval.interm.type).init((yyvsp[-3].lex).loc);
}
-#line 6066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6207 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 185:
-#line 1515 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 192:
+#line 1569 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.nonUniform = true;
}
-#line 6075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6216 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 186:
-#line 1522 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 193:
+#line 1576 "glslang.y" /* yacc.c:1646 */
{
// TODO
}
-#line 6083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6224 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 187:
-#line 1525 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 194:
+#line 1579 "glslang.y" /* yacc.c:1646 */
{
// TODO: 4.0 semantics: subroutines
// 1) make sure each identifier is a type declared earlier with SUBROUTINE
// 2) save all of the identifiers for future comparison with the declared function
}
-#line 6093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6234 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 188:
-#line 1534 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 195:
+#line 1588 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[-1].interm.type);
(yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
(yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters);
}
-#line 6103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6244 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 189:
-#line 1539 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 196:
+#line 1593 "glslang.y" /* yacc.c:1646 */
{
parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes);
(yyval.interm.type) = (yyvsp[-2].interm.type);
@@ -6111,21 +6252,21 @@
(yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters);
(yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
}
-#line 6115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6256 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 190:
-#line 1549 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 197:
+#line 1603 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
(yyval.interm).arraySizes->addInnerSize();
}
-#line 6125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6266 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 191:
-#line 1554 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 198:
+#line 1608 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[-2].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
@@ -6134,20 +6275,20 @@
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 6138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6279 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 192:
-#line 1562 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 199:
+#line 1616 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-2].interm);
(yyval.interm).arraySizes->addInnerSize();
}
-#line 6147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6288 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 193:
-#line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 200:
+#line 1620 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-3].interm);
@@ -6155,35 +6296,35 @@
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 6159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6300 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 194:
-#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 201:
+#line 1630 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters);
}
-#line 6167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6308 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 195:
-#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 202:
+#line 1633 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeParameters) = 0;
}
-#line 6175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6316 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 196:
-#line 1585 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 203:
+#line 1639 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters);
}
-#line 6183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6324 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 197:
-#line 1591 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 204:
+#line 1645 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeParameters) = new TArraySizes;
@@ -6191,11 +6332,11 @@
parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
(yyval.interm.typeParameters)->addInnerSize(size);
}
-#line 6195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6336 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 198:
-#line 1598 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 205:
+#line 1652 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters);
@@ -6203,2927 +6344,2977 @@
parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
(yyval.interm.typeParameters)->addInnerSize(size);
}
-#line 6207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6348 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 199:
-#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 206:
+#line 1662 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtVoid;
}
-#line 6216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6357 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 200:
-#line 1612 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 207:
+#line 1666 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
}
-#line 6225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6366 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 201:
-#line 1616 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 208:
+#line 1670 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
}
-#line 6234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6375 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 202:
-#line 1620 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 209:
+#line 1674 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
}
-#line 6244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 203:
-#line 1625 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtBool;
- }
-#line 6253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 204:
-#line 1629 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setVector(2);
- }
-#line 6263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 205:
-#line 1634 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setVector(3);
- }
-#line 6273 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 206:
-#line 1639 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setVector(4);
- }
-#line 6283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 207:
-#line 1644 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtBool;
- (yyval.interm.type).setVector(2);
- }
-#line 6293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 208:
-#line 1649 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtBool;
- (yyval.interm.type).setVector(3);
- }
-#line 6303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 209:
-#line 1654 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtBool;
- (yyval.interm.type).setVector(4);
- }
-#line 6313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6385 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 210:
-#line 1659 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1679 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt;
- (yyval.interm.type).setVector(2);
+ (yyval.interm.type).basicType = EbtBool;
}
-#line 6323 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6394 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 211:
-#line 1664 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1683 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6404 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 212:
+#line 1688 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6414 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 213:
+#line 1693 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6424 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 214:
+#line 1698 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtBool;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6434 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 215:
+#line 1703 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtBool;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6444 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 216:
+#line 1708 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtBool;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6454 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 217:
+#line 1713 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6464 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 218:
+#line 1718 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(3);
}
-#line 6333 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6474 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 212:
-#line 1669 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 219:
+#line 1723 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(4);
}
-#line 6343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6484 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 213:
-#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 220:
+#line 1728 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(2);
}
-#line 6354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6495 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 214:
-#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 221:
+#line 1734 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(3);
}
-#line 6365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6506 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 215:
-#line 1686 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 222:
+#line 1740 "glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(4);
}
-#line 6376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6517 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 216:
-#line 1692 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 223:
+#line 1746 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 6386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6527 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 217:
-#line 1697 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 224:
+#line 1751 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 6396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6537 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 218:
-#line 1702 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 225:
+#line 1756 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 6406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6547 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 219:
-#line 1707 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 226:
+#line 1761 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 6416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6557 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 220:
-#line 1712 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 227:
+#line 1766 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 6426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6567 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 221:
-#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 228:
+#line 1771 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 6436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6577 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 222:
-#line 1722 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 229:
+#line 1776 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 6446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6587 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 223:
-#line 1727 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 230:
+#line 1781 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 6456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6597 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 224:
-#line 1732 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 231:
+#line 1786 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 6466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6607 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 225:
-#line 1737 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 232:
+#line 1791 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 6476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6617 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 226:
-#line 1742 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 233:
+#line 1796 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 6486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6627 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 227:
-#line 1747 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 234:
+#line 1801 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 6496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6637 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 228:
-#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 235:
+#line 1807 "glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double");
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
}
-#line 6506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6649 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 229:
-#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 236:
+#line 1814 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
}
-#line 6516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6659 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 230:
-#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 237:
+#line 1819 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
}
-#line 6526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6669 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 231:
-#line 1768 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 238:
+#line 1824 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
}
-#line 6536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6679 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 232:
-#line 1773 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 239:
+#line 1829 "glslang.y" /* yacc.c:1646 */
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt8;
}
-#line 6546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6689 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 233:
-#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 240:
+#line 1834 "glslang.y" /* yacc.c:1646 */
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint8;
}
-#line 6556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6699 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 234:
-#line 1783 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 241:
+#line 1839 "glslang.y" /* yacc.c:1646 */
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt16;
}
-#line 6566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6709 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 235:
-#line 1788 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 242:
+#line 1844 "glslang.y" /* yacc.c:1646 */
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint16;
}
-#line 6576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6719 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 236:
-#line 1793 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 243:
+#line 1849 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
}
-#line 6586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6729 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 237:
-#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 244:
+#line 1854 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
}
-#line 6596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6739 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 238:
-#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 245:
+#line 1859 "glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
}
-#line 6606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6749 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 239:
-#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 246:
+#line 1864 "glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
}
-#line 6616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 240:
-#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setVector(2);
- }
-#line 6627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 241:
-#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setVector(3);
- }
-#line 6638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 242:
-#line 1825 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setVector(4);
- }
-#line 6649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 243:
-#line 1831 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setVector(2);
- }
-#line 6660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 244:
-#line 1837 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setVector(3);
- }
-#line 6671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 245:
-#line 1843 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setVector(4);
- }
-#line 6682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 246:
-#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setVector(2);
- }
-#line 6693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6759 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 247:
-#line 1855 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1869 "glslang.y" /* yacc.c:1646 */
{
- parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
+ if (! 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 = EbtFloat;
- (yyval.interm.type).setVector(3);
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setVector(2);
}
-#line 6704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6772 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 248:
-#line 1861 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1877 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
+ if (! 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 = EbtDouble;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6785 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 249:
+#line 1885 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
+ if (! 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 = EbtDouble;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6798 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 250:
+#line 1893 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6809 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 251:
+#line 1899 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6820 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 252:
+#line 1905 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6831 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 253:
+#line 1911 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6842 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 254:
+#line 1917 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6853 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 255:
+#line 1923 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(4);
}
-#line 6715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 249:
-#line 1867 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setVector(2);
- }
-#line 6726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 250:
-#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setVector(3);
- }
-#line 6737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 251:
-#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setVector(4);
- }
-#line 6748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 252:
-#line 1885 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt8;
- (yyval.interm.type).setVector(2);
- }
-#line 6759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 253:
-#line 1891 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt8;
- (yyval.interm.type).setVector(3);
- }
-#line 6770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 254:
-#line 1897 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt8;
- (yyval.interm.type).setVector(4);
- }
-#line 6781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 255:
-#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt16;
- (yyval.interm.type).setVector(2);
- }
-#line 6792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6864 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 256:
-#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1929 "glslang.y" /* yacc.c:1646 */
{
- parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ 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 = EbtInt16;
- (yyval.interm.type).setVector(3);
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setVector(2);
}
-#line 6803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6875 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 257:
-#line 1915 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1935 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6886 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 258:
+#line 1941 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6897 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 259:
+#line 1947 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt8;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6908 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 260:
+#line 1953 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt8;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6919 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 261:
+#line 1959 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt8;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6930 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 262:
+#line 1965 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt16;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6941 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 263:
+#line 1971 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt16;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6952 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 264:
+#line 1977 "glslang.y" /* yacc.c:1646 */
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt16;
(yyval.interm.type).setVector(4);
}
-#line 6814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 258:
-#line 1921 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt;
- (yyval.interm.type).setVector(2);
- }
-#line 6825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 259:
-#line 1927 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt;
- (yyval.interm.type).setVector(3);
- }
-#line 6836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 260:
-#line 1933 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt;
- (yyval.interm.type).setVector(4);
- }
-#line 6847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 261:
-#line 1939 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt64;
- (yyval.interm.type).setVector(2);
- }
-#line 6858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 262:
-#line 1945 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt64;
- (yyval.interm.type).setVector(3);
- }
-#line 6869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 263:
-#line 1951 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt64;
- (yyval.interm.type).setVector(4);
- }
-#line 6880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 264:
-#line 1957 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint8;
- (yyval.interm.type).setVector(2);
- }
-#line 6891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6963 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 265:
-#line 1963 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1983 "glslang.y" /* yacc.c:1646 */
{
- parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-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 = EbtUint8;
- (yyval.interm.type).setVector(3);
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(2);
}
-#line 6902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6974 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 266:
-#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1989 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6985 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 267:
+#line 1995 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6996 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 268:
+#line 2001 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt64;
+ (yyval.interm.type).setVector(2);
+ }
+#line 7007 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 269:
+#line 2007 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt64;
+ (yyval.interm.type).setVector(3);
+ }
+#line 7018 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 270:
+#line 2013 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt64;
+ (yyval.interm.type).setVector(4);
+ }
+#line 7029 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 271:
+#line 2019 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint8;
+ (yyval.interm.type).setVector(2);
+ }
+#line 7040 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 272:
+#line 2025 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint8;
+ (yyval.interm.type).setVector(3);
+ }
+#line 7051 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 273:
+#line 2031 "glslang.y" /* yacc.c:1646 */
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint8;
(yyval.interm.type).setVector(4);
}
-#line 6913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 267:
-#line 1975 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint16;
- (yyval.interm.type).setVector(2);
- }
-#line 6924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 268:
-#line 1981 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint16;
- (yyval.interm.type).setVector(3);
- }
-#line 6935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 269:
-#line 1987 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint16;
- (yyval.interm.type).setVector(4);
- }
-#line 6946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 270:
-#line 1993 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint;
- (yyval.interm.type).setVector(2);
- }
-#line 6957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 271:
-#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint;
- (yyval.interm.type).setVector(3);
- }
-#line 6968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 272:
-#line 2005 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint;
- (yyval.interm.type).setVector(4);
- }
-#line 6979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 273:
-#line 2011 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint64;
- (yyval.interm.type).setVector(2);
- }
-#line 6990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7062 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 274:
-#line 2017 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2037 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint16;
+ (yyval.interm.type).setVector(2);
+ }
+#line 7073 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 275:
+#line 2043 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint16;
+ (yyval.interm.type).setVector(3);
+ }
+#line 7084 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 276:
+#line 2049 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint16;
+ (yyval.interm.type).setVector(4);
+ }
+#line 7095 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 277:
+#line 2055 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint;
+ (yyval.interm.type).setVector(2);
+ }
+#line 7106 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 278:
+#line 2061 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint;
+ (yyval.interm.type).setVector(3);
+ }
+#line 7117 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 279:
+#line 2067 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint;
+ (yyval.interm.type).setVector(4);
+ }
+#line 7128 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 280:
+#line 2073 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint64;
+ (yyval.interm.type).setVector(2);
+ }
+#line 7139 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 281:
+#line 2079 "glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(3);
}
-#line 7001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7150 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 275:
-#line 2023 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 282:
+#line 2085 "glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(4);
}
-#line 7012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 276:
-#line 2029 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(2, 2);
- }
-#line 7023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 277:
-#line 2035 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(3, 3);
- }
-#line 7034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 278:
-#line 2041 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(4, 4);
- }
-#line 7045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 279:
-#line 2047 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(2, 2);
- }
-#line 7056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 280:
-#line 2053 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(2, 3);
- }
-#line 7067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 281:
-#line 2059 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(2, 4);
- }
-#line 7078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 282:
-#line 2065 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(3, 2);
- }
-#line 7089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7161 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 283:
-#line 2071 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2091 "glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ 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);
+ (yyval.interm.type).setMatrix(2, 2);
}
-#line 7100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7174 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 284:
-#line 2077 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2099 "glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ 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);
+ (yyval.interm.type).setMatrix(3, 3);
}
-#line 7111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7187 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 285:
-#line 2083 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2107 "glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ 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);
+ (yyval.interm.type).setMatrix(4, 4);
}
-#line 7122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7200 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 286:
-#line 2089 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2115 "glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ 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);
+ (yyval.interm.type).setMatrix(2, 2);
}
-#line 7133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7213 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 287:
-#line 2095 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2123 "glslang.y" /* yacc.c:1646 */
{
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ 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);
+ (yyval.interm.type).setMatrix(2, 3);
}
-#line 7144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7226 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 288:
-#line 2101 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2131 "glslang.y" /* yacc.c:1646 */
{
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(2, 2);
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(2, 4);
}
-#line 7155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7239 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 289:
-#line 2107 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2139 "glslang.y" /* yacc.c:1646 */
{
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(3, 3);
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(3, 2);
}
-#line 7166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7252 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 290:
-#line 2113 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2147 "glslang.y" /* yacc.c:1646 */
{
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(4, 4);
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(3, 3);
}
-#line 7177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7265 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 291:
-#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2155 "glslang.y" /* yacc.c:1646 */
{
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(2, 2);
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(3, 4);
}
-#line 7188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7278 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 292:
-#line 2125 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2163 "glslang.y" /* yacc.c:1646 */
{
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(2, 3);
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(4, 2);
}
-#line 7199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7291 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 293:
-#line 2131 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2171 "glslang.y" /* yacc.c:1646 */
{
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(2, 4);
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(4, 3);
}
-#line 7210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7304 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 294:
-#line 2137 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2179 "glslang.y" /* yacc.c:1646 */
{
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
+ if (! parseContext.symbolTable.atBuiltInLevel())
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(3, 2);
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(4, 4);
}
-#line 7221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7317 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 295:
-#line 2143 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2187 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(3, 3);
+ (yyval.interm.type).setMatrix(2, 2);
}
-#line 7232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7328 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 296:
-#line 2149 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2193 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(3, 4);
+ (yyval.interm.type).setMatrix(3, 3);
}
-#line 7243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7339 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 297:
-#line 2155 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2199 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(4, 2);
+ (yyval.interm.type).setMatrix(4, 4);
}
-#line 7254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7350 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 298:
-#line 2161 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2205 "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);
+ (yyval.interm.type).setMatrix(2, 2);
}
-#line 7265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7361 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 299:
-#line 2167 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2211 "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 7372 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 300:
+#line 2217 "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 7383 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 301:
+#line 2223 "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 7394 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 302:
+#line 2229 "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 7405 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 303:
+#line 2235 "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 7416 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 304:
+#line 2241 "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 7427 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 305:
+#line 2247 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setMatrix(4, 3);
+ }
+#line 7438 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 306:
+#line 2253 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 7276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 300:
-#line 2173 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(2, 2);
- }
-#line 7287 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 301:
-#line 2179 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(3, 3);
- }
-#line 7298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 302:
-#line 2185 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(4, 4);
- }
-#line 7309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 303:
-#line 2191 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(2, 2);
- }
-#line 7320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 304:
-#line 2197 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(2, 3);
- }
-#line 7331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 305:
-#line 2203 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(2, 4);
- }
-#line 7342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 306:
-#line 2209 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(3, 2);
- }
-#line 7353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7449 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 307:
-#line 2215 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2259 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(2, 2);
+ }
+#line 7460 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 308:
+#line 2265 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 7364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7471 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 308:
-#line 2221 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 309:
+#line 2271 "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 7482 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 310:
+#line 2277 "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 7493 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 311:
+#line 2283 "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 7504 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 312:
+#line 2289 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(2, 4);
+ }
+#line 7515 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 313:
+#line 2295 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(3, 2);
+ }
+#line 7526 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 314:
+#line 2301 "glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(3, 3);
+ }
+#line 7537 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 315:
+#line 2307 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 7375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7548 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 309:
-#line 2227 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 316:
+#line 2313 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 7386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7559 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 310:
-#line 2233 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 317:
+#line 2319 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 7397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7570 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 311:
-#line 2239 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 318:
+#line 2325 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 7408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7581 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 312:
-#line 2245 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 319:
+#line 2331 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 7419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7592 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 313:
-#line 2251 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 320:
+#line 2337 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 7430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7603 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 314:
-#line 2257 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 321:
+#line 2343 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 7441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7614 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 315:
-#line 2263 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 322:
+#line 2349 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 7452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7625 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 316:
-#line 2269 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 323:
+#line 2355 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 7463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7636 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 317:
-#line 2275 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 324:
+#line 2361 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 7474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7647 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 318:
-#line 2281 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 325:
+#line 2367 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 7485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7658 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 319:
-#line 2287 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 326:
+#line 2373 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 7496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7669 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 320:
-#line 2293 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 327:
+#line 2379 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 7507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7680 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 321:
-#line 2299 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 328:
+#line 2385 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 7518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7691 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 322:
-#line 2305 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 329:
+#line 2391 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 7529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7702 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 323:
-#line 2311 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 330:
+#line 2397 "glslang.y" /* yacc.c:1646 */
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 7540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7713 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 324:
-#line 2317 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 331:
+#line 2403 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtAccStructNV;
+ (yyval.interm.type).basicType = EbtAccStruct;
}
-#line 7549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7722 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 325:
-#line 2321 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 332:
+#line 2407 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtAccStruct;
+ }
+#line 7731 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 333:
+#line 2411 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtRayQuery;
+ }
+#line 7740 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 334:
+#line 2415 "glslang.y" /* yacc.c:1646 */
{
parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtAtomicUint;
}
-#line 7559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7750 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 326:
-#line 2326 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 335:
+#line 2420 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D);
}
-#line 7569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7760 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 327:
-#line 2332 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 336:
+#line 2426 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
}
-#line 7579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7770 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 328:
-#line 2337 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 337:
+#line 2431 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd3D);
}
-#line 7589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7780 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 329:
-#line 2342 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 338:
+#line 2436 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube);
}
-#line 7599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7790 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 330:
-#line 2347 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 339:
+#line 2441 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
}
-#line 7609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7800 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 331:
-#line 2352 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 340:
+#line 2446 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
}
-#line 7619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7810 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 332:
-#line 2358 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true);
- }
-#line 7629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 333:
-#line 2363 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
- }
-#line 7639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 334:
-#line 2368 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true);
- }
-#line 7649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 335:
-#line 2374 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 341:
+#line 2451 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
}
-#line 7659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7820 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 336:
-#line 2379 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 342:
+#line 2456 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
}
-#line 7669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7830 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 337:
-#line 2384 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 343:
+#line 2462 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true);
+ }
+#line 7840 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 344:
+#line 2467 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
+ }
+#line 7850 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 345:
+#line 2472 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true);
+ }
+#line 7860 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 346:
+#line 2477 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, true);
}
-#line 7679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7870 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 338:
-#line 2389 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 347:
+#line 2482 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true);
}
-#line 7689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7880 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 339:
-#line 2395 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 348:
+#line 2487 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D);
}
-#line 7700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7891 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 340:
-#line 2401 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 349:
+#line 2493 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D);
}
-#line 7711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7902 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 341:
-#line 2407 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 350:
+#line 2499 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd3D);
}
-#line 7722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7913 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 342:
-#line 2413 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 351:
+#line 2505 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube);
}
-#line 7733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7924 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 343:
-#line 2419 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 352:
+#line 2511 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true);
}
-#line 7744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7935 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 344:
-#line 2425 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 353:
+#line 2517 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true);
}
-#line 7755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7946 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 345:
-#line 2431 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 354:
+#line 2523 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true);
}
-#line 7766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7957 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 346:
-#line 2437 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 355:
+#line 2529 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true);
}
-#line 7777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7968 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 347:
-#line 2443 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 356:
+#line 2535 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true);
}
-#line 7788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7979 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 348:
-#line 2449 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 357:
+#line 2541 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true);
}
-#line 7799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7990 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 349:
-#line 2455 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 358:
+#line 2547 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true);
}
-#line 7810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8001 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 350:
-#line 2461 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 359:
+#line 2553 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true);
}
-#line 7821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8012 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 351:
-#line 2467 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 360:
+#line 2559 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true);
}
-#line 7832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8023 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 352:
-#line 2473 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 361:
+#line 2565 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd1D);
}
-#line 7842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8033 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 353:
-#line 2479 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 362:
+#line 2571 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D);
}
-#line 7852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8043 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 354:
-#line 2484 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 363:
+#line 2576 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd3D);
}
-#line 7862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8053 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 355:
-#line 2489 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 364:
+#line 2581 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdCube);
}
-#line 7872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8063 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 356:
-#line 2495 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
- }
-#line 7882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 357:
-#line 2501 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 365:
+#line 2586 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
}
-#line 7892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8073 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 358:
-#line 2506 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
- }
-#line 7902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 359:
-#line 2512 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.set(EbtUint, Esd1D);
- }
-#line 7912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 360:
-#line 2518 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 366:
+#line 2591 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D);
}
-#line 7922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8083 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 361:
-#line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 367:
+#line 2596 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd3D);
}
-#line 7932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8093 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 362:
-#line 2528 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 368:
+#line 2601 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube);
}
-#line 7942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8103 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 363:
-#line 2534 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 369:
+#line 2607 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
+ }
+#line 8113 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 370:
+#line 2612 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
+ }
+#line 8123 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 371:
+#line 2617 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.set(EbtUint, Esd1D);
+ }
+#line 8133 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 372:
+#line 2622 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd1D, true);
}
-#line 7952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8143 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 364:
-#line 2540 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
- }
-#line 7962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 365:
-#line 2545 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 373:
+#line 2627 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube, true);
}
-#line 7972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8153 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 366:
-#line 2551 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 374:
+#line 2632 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true);
+ }
+#line 8163 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 375:
+#line 2637 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
+ }
+#line 8173 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 376:
+#line 2642 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
+ }
+#line 8183 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 377:
+#line 2648 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
+ }
+#line 8193 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 378:
+#line 2653 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
+ }
+#line 8203 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 379:
+#line 2658 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
+ }
+#line 8213 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 380:
+#line 2663 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
+ }
+#line 8223 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 381:
+#line 2668 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
+ }
+#line 8233 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 382:
+#line 2673 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
+ }
+#line 8243 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 383:
+#line 2678 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
+ }
+#line 8253 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 384:
+#line 2683 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
+ }
+#line 8263 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 385:
+#line 2688 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
+ }
+#line 8273 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 386:
+#line 2693 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
+ }
+#line 8283 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 387:
+#line 2698 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
+ }
+#line 8293 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 388:
+#line 2703 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
+ }
+#line 8303 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 389:
+#line 2708 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
+ }
+#line 8313 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 390:
+#line 2713 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setPureSampler(false);
+ }
+#line 8323 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 391:
+#line 2718 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtSampler;
+ (yyval.interm.type).sampler.setPureSampler(true);
+ }
+#line 8333 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 392:
+#line 2724 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect);
}
-#line 7982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8343 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 367:
-#line 2556 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 393:
+#line 2729 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true);
}
-#line 7992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8353 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 368:
-#line 2561 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 394:
+#line 2734 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdRect);
}
-#line 8003 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8364 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 369:
-#line 2567 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 395:
+#line 2740 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true);
}
-#line 8014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8375 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 370:
-#line 2573 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 396:
+#line 2746 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdRect);
}
-#line 8024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8385 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 371:
-#line 2578 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 397:
+#line 2751 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdRect);
}
-#line 8034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8395 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 372:
-#line 2583 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 398:
+#line 2756 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
}
-#line 8044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8405 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 373:
-#line 2588 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 399:
+#line 2761 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer);
}
-#line 8055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8416 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 374:
-#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 400:
+#line 2767 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
}
-#line 8065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8426 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 375:
-#line 2599 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 401:
+#line 2772 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
}
-#line 8075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8436 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 376:
-#line 2604 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 402:
+#line 2777 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true);
}
-#line 8085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8446 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 377:
-#line 2609 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 403:
+#line 2782 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true);
}
-#line 8096 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8457 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 378:
-#line 2615 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 404:
+#line 2788 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true);
}
-#line 8106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8467 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 379:
-#line 2620 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 405:
+#line 2793 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true);
}
-#line 8116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8477 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 380:
-#line 2625 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 406:
+#line 2798 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true);
}
-#line 8126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8487 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 381:
-#line 2630 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 407:
+#line 2803 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true);
}
-#line 8137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8498 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 382:
-#line 2636 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 408:
+#line 2809 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true);
}
-#line 8147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8508 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 383:
-#line 2641 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 409:
+#line 2814 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true);
}
-#line 8157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8518 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 384:
-#line 2646 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setPureSampler(false);
- }
-#line 8167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 385:
-#line 2651 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setPureSampler(true);
- }
-#line 8177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 386:
-#line 2656 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 410:
+#line 2819 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
}
-#line 8187 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8528 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 387:
-#line 2661 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 411:
+#line 2824 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D);
}
-#line 8198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8539 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 388:
-#line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
- }
-#line 8208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 389:
-#line 2672 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 412:
+#line 2830 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D);
}
-#line 8219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8550 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 390:
-#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, Esd3D);
- }
-#line 8229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 391:
-#line 2683 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 413:
+#line 2836 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D);
}
-#line 8240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8561 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 392:
-#line 2689 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
- }
-#line 8250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 393:
-#line 2694 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 414:
+#line 2842 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube);
}
-#line 8261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8572 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 394:
-#line 2700 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 415:
+#line 2848 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true);
}
-#line 8271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8582 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 395:
-#line 2705 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 416:
+#line 2853 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true);
}
-#line 8282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8593 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 396:
-#line 2711 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
- }
-#line 8292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 397:
-#line 2716 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 417:
+#line 2859 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true);
}
-#line 8303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8604 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 398:
-#line 2722 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true);
- }
-#line 8313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 399:
-#line 2727 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 418:
+#line 2865 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true);
}
-#line 8324 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8615 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 400:
-#line 2733 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 419:
+#line 2871 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
}
-#line 8334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8625 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 401:
-#line 2738 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
- }
-#line 8344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 402:
-#line 2743 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
- }
-#line 8354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 403:
-#line 2748 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
- }
-#line 8364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 404:
-#line 2753 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 420:
+#line 2876 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true);
}
-#line 8374 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8635 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 405:
-#line 2758 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
- }
-#line 8384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 406:
-#line 2763 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
- }
-#line 8394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 407:
-#line 2768 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 421:
+#line 2881 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
}
-#line 8404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8645 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 408:
-#line 2773 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
- }
-#line 8414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 409:
-#line 2778 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
- }
-#line 8424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 410:
-#line 2783 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
- }
-#line 8434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 411:
-#line 2788 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 422:
+#line 2886 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true);
}
-#line 8444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8655 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 412:
-#line 2793 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
- }
-#line 8454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 413:
-#line 2798 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtSampler;
- (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
- }
-#line 8464 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 414:
-#line 2803 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 423:
+#line 2891 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
}
-#line 8474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8665 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 415:
-#line 2808 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 424:
+#line 2896 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect);
}
-#line 8485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8676 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 416:
-#line 2814 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 425:
+#line 2902 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
}
-#line 8495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8686 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 417:
-#line 2819 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 426:
+#line 2907 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
}
-#line 8505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8696 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 418:
-#line 2824 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 427:
+#line 2912 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
}
-#line 8515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8706 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 419:
-#line 2829 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 428:
+#line 2917 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer);
}
-#line 8526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8717 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 420:
-#line 2835 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 429:
+#line 2923 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
}
-#line 8536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8727 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 421:
-#line 2840 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 430:
+#line 2928 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
}
-#line 8546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8737 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 422:
-#line 2845 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 431:
+#line 2933 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true);
}
-#line 8556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8747 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 423:
-#line 2850 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 432:
+#line 2938 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true);
}
-#line 8567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8758 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 424:
-#line 2856 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 433:
+#line 2944 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true);
}
-#line 8577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8768 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 425:
-#line 2861 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 434:
+#line 2949 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true);
}
-#line 8587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8778 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 426:
-#line 2866 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 435:
+#line 2954 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true);
}
-#line 8597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8788 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 427:
-#line 2871 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 436:
+#line 2959 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true);
}
-#line 8608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8799 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 428:
-#line 2877 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 437:
+#line 2965 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true);
}
-#line 8618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8809 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 429:
-#line 2882 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 438:
+#line 2970 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true);
}
-#line 8628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8819 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 430:
-#line 2887 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 439:
+#line 2975 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
}
-#line 8638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8829 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 431:
-#line 2892 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 440:
+#line 2980 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D);
}
-#line 8649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8840 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 432:
-#line 2898 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 441:
+#line 2986 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
}
-#line 8659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8850 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 433:
-#line 2903 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 442:
+#line 2991 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
}
-#line 8669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8860 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 434:
-#line 2908 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 443:
+#line 2996 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
}
-#line 8679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8870 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 435:
-#line 2913 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 444:
+#line 3001 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D);
}
-#line 8690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8881 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 436:
-#line 2919 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 445:
+#line 3007 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
}
-#line 8700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8891 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 437:
-#line 2924 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 446:
+#line 3012 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
}
-#line 8710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8901 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 438:
-#line 2929 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 447:
+#line 3017 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
}
-#line 8720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8911 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 439:
-#line 2934 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 448:
+#line 3022 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D);
}
-#line 8731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8922 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 440:
-#line 2940 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 449:
+#line 3028 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
}
-#line 8741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8932 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 441:
-#line 2945 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 450:
+#line 3033 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
}
-#line 8751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8942 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 442:
-#line 2950 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 451:
+#line 3038 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
}
-#line 8761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8952 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 443:
-#line 2955 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 452:
+#line 3043 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect);
}
-#line 8772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8963 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 444:
-#line 2961 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 453:
+#line 3049 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
}
-#line 8782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8973 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 445:
-#line 2966 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 454:
+#line 3054 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
}
-#line 8792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8983 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 446:
-#line 2971 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 455:
+#line 3059 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
}
-#line 8802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8993 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 447:
-#line 2976 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 456:
+#line 3064 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube);
}
-#line 8813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9004 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 448:
-#line 2982 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 457:
+#line 3070 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
}
-#line 8823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9014 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 449:
-#line 2987 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 458:
+#line 3075 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
}
-#line 8833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9024 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 450:
-#line 2992 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 459:
+#line 3080 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
}
-#line 8843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9034 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 451:
-#line 2997 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 460:
+#line 3085 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer);
}
-#line 8854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9045 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 452:
-#line 3003 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 461:
+#line 3091 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
}
-#line 8864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9055 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 453:
-#line 3008 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 462:
+#line 3096 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
}
-#line 8874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9065 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 454:
-#line 3013 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 463:
+#line 3101 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true);
}
-#line 8884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9075 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 455:
-#line 3018 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 464:
+#line 3106 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true);
}
-#line 8895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9086 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 456:
-#line 3024 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 465:
+#line 3112 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true);
}
-#line 8905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9096 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 457:
-#line 3029 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 466:
+#line 3117 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true);
}
-#line 8915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9106 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 458:
-#line 3034 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 467:
+#line 3122 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true);
}
-#line 8925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9116 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 459:
-#line 3039 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 468:
+#line 3127 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true);
}
-#line 8936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9127 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 460:
-#line 3045 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 469:
+#line 3133 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true);
}
-#line 8946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9137 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 461:
-#line 3050 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 470:
+#line 3138 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true);
}
-#line 8956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9147 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 462:
-#line 3055 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 471:
+#line 3143 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true);
}
-#line 8966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9157 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 463:
-#line 3060 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 472:
+#line 3148 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true);
}
-#line 8977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9168 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 464:
-#line 3066 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 473:
+#line 3154 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true);
}
-#line 8987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9178 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 465:
-#line 3071 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 474:
+#line 3159 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true);
}
-#line 8997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9188 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 466:
-#line 3076 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 475:
+#line 3164 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true);
}
-#line 9007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9198 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 467:
-#line 3081 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 476:
+#line 3169 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true);
}
-#line 9018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9209 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 468:
-#line 3087 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 477:
+#line 3175 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true);
}
-#line 9028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9219 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 469:
-#line 3092 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 478:
+#line 3180 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true);
}
-#line 9038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9229 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 470:
-#line 3097 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 479:
+#line 3185 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true);
}
-#line 9048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9239 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 471:
-#line 3102 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 480:
+#line 3190 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true);
}
-#line 9059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9250 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 472:
-#line 3108 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 481:
+#line 3196 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true);
}
-#line 9069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9260 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 473:
-#line 3113 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 482:
+#line 3201 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true);
}
-#line 9079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9270 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 474:
-#line 3118 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 483:
+#line 3206 "glslang.y" /* yacc.c:1646 */
{ // GL_OES_EGL_image_external
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
(yyval.interm.type).sampler.external = true;
}
-#line 9090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9281 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 475:
-#line 3124 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 484:
+#line 3212 "glslang.y" /* yacc.c:1646 */
{ // GL_EXT_YUV_target
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
(yyval.interm.type).sampler.yuv = true;
}
-#line 9101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9292 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 476:
-#line 3130 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 485:
+#line 3218 "glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat);
}
-#line 9112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9303 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 477:
-#line 3136 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 486:
+#line 3224 "glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat, true);
}
-#line 9123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9314 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 478:
-#line 3142 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 487:
+#line 3230 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
@@ -9131,11 +9322,11 @@
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat16);
}
-#line 9135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9326 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 479:
-#line 3149 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 488:
+#line 3237 "glslang.y" /* yacc.c:1646 */
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
@@ -9143,98 +9334,98 @@
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat16, true);
}
-#line 9147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9338 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 480:
-#line 3156 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 489:
+#line 3244 "glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtInt);
}
-#line 9158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9349 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 481:
-#line 3162 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 490:
+#line 3250 "glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtInt, true);
}
-#line 9169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9360 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 482:
-#line 3168 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 491:
+#line 3256 "glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtUint);
}
-#line 9180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9371 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 483:
-#line 3174 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 492:
+#line 3262 "glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtUint, true);
}
-#line 9191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9382 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 484:
-#line 3180 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 493:
+#line 3268 "glslang.y" /* yacc.c:1646 */
{
parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).coopmat = true;
}
-#line 9202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9393 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 485:
-#line 3186 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 494:
+#line 3274 "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 */
+#line 9404 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 486:
-#line 3192 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 495:
+#line 3280 "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 */
+#line 9415 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 487:
-#line 3199 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 496:
+#line 3287 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[0].interm.type);
(yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type));
}
-#line 9234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9425 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 488:
-#line 3204 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 497:
+#line 3292 "glslang.y" /* yacc.c:1646 */
{
//
// This is for user defined type names. The lexical phase looked up the
@@ -9248,47 +9439,47 @@
} else
parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
}
-#line 9252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9443 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 489:
-#line 3220 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 498:
+#line 3308 "glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
}
-#line 9262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9453 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 490:
-#line 3225 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 499:
+#line 3313 "glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
}
-#line 9272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9463 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 491:
-#line 3230 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 500:
+#line 3318 "glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow);
}
-#line 9282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9473 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 492:
-#line 3238 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 501:
+#line 3326 "glslang.y" /* yacc.c:1646 */
{ parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 9288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9479 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 493:
-#line 3238 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 502:
+#line 3326 "glslang.y" /* yacc.c:1646 */
{
TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure);
@@ -9300,17 +9491,17 @@
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 9304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9495 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 494:
-#line 3249 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 503:
+#line 3337 "glslang.y" /* yacc.c:1646 */
{ parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 9310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9501 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 495:
-#line 3249 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 504:
+#line 3337 "glslang.y" /* yacc.c:1646 */
{
TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
(yyval.interm.type).init((yyvsp[-4].lex).loc);
@@ -9318,19 +9509,19 @@
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 9322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9513 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 496:
-#line 3259 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 505:
+#line 3347 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList) = (yyvsp[0].interm.typeList);
}
-#line 9330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9521 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 497:
-#line 3262 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 506:
+#line 3350 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
@@ -9341,11 +9532,11 @@
(yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
}
}
-#line 9345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9536 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 498:
-#line 3275 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 507:
+#line 3363 "glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -9368,11 +9559,11 @@
(*(yyval.interm.typeList))[i].type->shallowCopy(type);
}
}
-#line 9372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9563 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 499:
-#line 3297 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 508:
+#line 3385 "glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -9397,38 +9588,38 @@
(*(yyval.interm.typeList))[i].type->shallowCopy(type);
}
}
-#line 9401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9592 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 500:
-#line 3324 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 509:
+#line 3412 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList) = new TTypeList;
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 9410 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9601 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 501:
-#line 3328 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 510:
+#line 3416 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 9418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9609 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 502:
-#line 3334 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 511:
+#line 3422 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeLine).type = new TType(EbtVoid);
(yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
}
-#line 9428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9619 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 503:
-#line 3339 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 512:
+#line 3427 "glslang.y" /* yacc.c:1646 */
{
parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes);
@@ -9437,235 +9628,235 @@
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
(yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes);
}
-#line 9441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9632 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 504:
-#line 3350 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 513:
+#line 3438 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 9449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9640 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 505:
-#line 3354 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 514:
+#line 3442 "glslang.y" /* yacc.c:1646 */
{
const char* initFeature = "{ } style initializers";
parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature);
parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
(yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
}
-#line 9460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9651 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 506:
-#line 3360 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 515:
+#line 3448 "glslang.y" /* yacc.c:1646 */
{
const char* initFeature = "{ } style initializers";
parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature);
parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 9471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 507:
-#line 3371 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
- }
-#line 9479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 508:
-#line 3374 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
- }
-#line 9487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 509:
-#line 3381 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 510:
-#line 3385 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 511:
-#line 3386 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 512:
-#line 3392 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 513:
-#line 3393 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 514:
-#line 3394 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 515:
-#line 3395 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9662 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 516:
-#line 3396 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 3459 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
+ }
+#line 9670 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 517:
-#line 3397 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 3462 "glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+ }
+#line 9678 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 518:
-#line 3398 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3469 "glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9684 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 519:
-#line 3400 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3473 "glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9690 "glslang_tab.cpp" /* yacc.c:1646 */
break;
case 520:
-#line 3406 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3474 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9696 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 521:
+#line 3480 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9702 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 522:
+#line 3481 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9708 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 523:
+#line 3482 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9714 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 524:
+#line 3483 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9720 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 525:
+#line 3484 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9726 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 526:
+#line 3485 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9732 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 527:
+#line 3486 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9738 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 528:
+#line 3488 "glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 9744 "glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 529:
+#line 3494 "glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote");
parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc);
}
-#line 9563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9754 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 521:
-#line 3415 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 530:
+#line 3503 "glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = 0; }
-#line 9569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9760 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 522:
-#line 3416 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 531:
+#line 3504 "glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
}
-#line 9578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9769 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 523:
-#line 3420 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 532:
+#line 3508 "glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
}
-#line 9587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9778 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 524:
-#line 3424 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 533:
+#line 3512 "glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
(yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
}
-#line 9597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9788 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 525:
-#line 3432 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 534:
+#line 3520 "glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9794 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 526:
-#line 3433 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 535:
+#line 3521 "glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9800 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 527:
-#line 3437 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 536:
+#line 3525 "glslang.y" /* yacc.c:1646 */
{
++parseContext.controlFlowNestingLevel;
}
-#line 9617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9808 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 528:
-#line 3440 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 537:
+#line 3528 "glslang.y" /* yacc.c:1646 */
{
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9817 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 529:
-#line 3444 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 538:
+#line 3532 "glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 9636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9827 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 530:
-#line 3449 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 539:
+#line 3537 "glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9838 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 531:
-#line 3458 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 540:
+#line 3546 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
}
-#line 9655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9846 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 532:
-#line 3461 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 541:
+#line 3549 "glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
(yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
}
-#line 9665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9856 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 533:
-#line 3469 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 542:
+#line 3557 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
@@ -9674,11 +9865,11 @@
(yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case
}
}
-#line 9678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9869 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 534:
-#line 3477 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 543:
+#line 3565 "glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
(yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
@@ -9687,76 +9878,76 @@
} else
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 9691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9882 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 535:
-#line 3488 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 544:
+#line 3576 "glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = 0; }
-#line 9697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9888 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 536:
-#line 3489 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 545:
+#line 3577 "glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 9703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9894 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 537:
-#line 3493 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 546:
+#line 3581 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9902 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 538:
-#line 3497 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 547:
+#line 3585 "glslang.y" /* yacc.c:1646 */
{
parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9911 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 539:
-#line 3504 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 548:
+#line 3592 "glslang.y" /* yacc.c:1646 */
{
parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode));
(yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc);
}
-#line 9729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9920 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 540:
-#line 3511 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 549:
+#line 3599 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
}
-#line 9738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9929 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 541:
-#line 3515 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 550:
+#line 3603 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 9747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9938 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 542:
-#line 3523 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 551:
+#line 3611 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
}
-#line 9756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9947 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 543:
-#line 3527 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 552:
+#line 3615 "glslang.y" /* yacc.c:1646 */
{
parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
@@ -9767,28 +9958,28 @@
else
(yyval.interm.intermTypedNode) = 0;
}
-#line 9771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9962 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 544:
-#line 3540 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 553:
+#line 3628 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9970 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 545:
-#line 3544 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 554:
+#line 3632 "glslang.y" /* yacc.c:1646 */
{
parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9979 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 546:
-#line 3551 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 555:
+#line 3639 "glslang.y" /* yacc.c:1646 */
{
// start new switch sequence on the switch stack
++parseContext.controlFlowNestingLevel;
@@ -9797,11 +9988,11 @@
parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
parseContext.symbolTable.push();
}
-#line 9801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9992 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 547:
-#line 3559 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 556:
+#line 3647 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
delete parseContext.switchSequenceStack.back();
@@ -9811,27 +10002,27 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 9815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10006 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 548:
-#line 3571 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 557:
+#line 3659 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
}
-#line 9823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10014 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 549:
-#line 3574 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 558:
+#line 3662 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10022 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 550:
-#line 3580 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 559:
+#line 3668 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -9844,11 +10035,11 @@
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
}
}
-#line 9848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10039 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 551:
-#line 3592 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 560:
+#line 3680 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -9858,28 +10049,28 @@
else
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
}
-#line 9862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10053 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 552:
-#line 3604 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 561:
+#line 3692 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10061 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 553:
-#line 3608 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 562:
+#line 3696 "glslang.y" /* yacc.c:1646 */
{
parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10070 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 554:
-#line 3615 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 563:
+#line 3703 "glslang.y" /* yacc.c:1646 */
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
@@ -9888,11 +10079,11 @@
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 9892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10083 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 555:
-#line 3623 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 564:
+#line 3711 "glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
@@ -9900,21 +10091,21 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 9904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10095 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 556:
-#line 3630 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 565:
+#line 3718 "glslang.y" /* yacc.c:1646 */
{
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 9914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10105 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 557:
-#line 3635 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 566:
+#line 3723 "glslang.y" /* yacc.c:1646 */
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
@@ -9926,22 +10117,22 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 9930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10121 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 558:
-#line 3646 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 567:
+#line 3734 "glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 9941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10132 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 559:
-#line 3652 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 568:
+#line 3740 "glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
@@ -9954,81 +10145,81 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 9958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10149 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 560:
-#line 3667 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 569:
+#line 3755 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10157 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 561:
-#line 3670 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 570:
+#line 3758 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10165 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 562:
-#line 3676 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 571:
+#line 3764 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 9982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10173 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 563:
-#line 3679 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 572:
+#line 3767 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = 0;
}
-#line 9990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10181 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 564:
-#line 3685 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 573:
+#line 3773 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 9999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10190 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 565:
-#line 3689 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 574:
+#line 3777 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
}
-#line 10008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10199 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 566:
-#line 3696 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 575:
+#line 3784 "glslang.y" /* yacc.c:1646 */
{
if (parseContext.loopNestingLevel <= 0)
parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
}
-#line 10018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10209 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 567:
-#line 3701 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 576:
+#line 3789 "glslang.y" /* yacc.c:1646 */
{
if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
}
-#line 10028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10219 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 568:
-#line 3706 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 577:
+#line 3794 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
@@ -10036,83 +10227,83 @@
if (parseContext.inMain)
parseContext.postEntryPointReturn = true;
}
-#line 10040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10231 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 569:
-#line 3713 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 578:
+#line 3801 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
}
-#line 10048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10239 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 570:
-#line 3716 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 579:
+#line 3804 "glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
}
-#line 10057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10248 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 571:
-#line 3725 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 580:
+#line 3813 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
-#line 10066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10257 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 572:
-#line 3729 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 581:
+#line 3817 "glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[0].interm.intermNode) != nullptr) {
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
}
-#line 10077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10268 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 573:
-#line 3738 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 582:
+#line 3826 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 10085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10276 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 574:
-#line 3741 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 583:
+#line 3829 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 10093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10284 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 575:
-#line 3745 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 584:
+#line 3833 "glslang.y" /* yacc.c:1646 */
{
parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon");
parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon");
(yyval.interm.intermNode) = nullptr;
}
-#line 10103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10294 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 576:
-#line 3754 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 585:
+#line 3842 "glslang.y" /* yacc.c:1646 */
{
(yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
(yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
}
-#line 10112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10303 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 577:
-#line 3758 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 586:
+#line 3846 "glslang.y" /* yacc.c:1646 */
{
// May be best done as post process phase on intermediate code
if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
@@ -10128,52 +10319,52 @@
(yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
(yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
}
-#line 10132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10323 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 578:
-#line 3777 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 587:
+#line 3865 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = (yyvsp[-2].interm.attributes);
parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute");
}
-#line 10141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10332 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 579:
-#line 3783 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 588:
+#line 3871 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = (yyvsp[0].interm.attributes);
}
-#line 10149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10340 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 580:
-#line 3786 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 589:
+#line 3874 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes));
}
-#line 10157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10348 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 581:
-#line 3791 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 590:
+#line 3879 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string);
}
-#line 10165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10356 "glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 582:
-#line 3794 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 591:
+#line 3882 "glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode));
}
-#line 10173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10364 "glslang_tab.cpp" /* yacc.c:1646 */
break;
-#line 10177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10368 "glslang_tab.cpp" /* yacc.c:1646 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -10401,5 +10592,6 @@
#endif
return yyresult;
}
-#line 3799 "MachineIndependent/glslang.y" /* yacc.c:1906 */
+#line 3887 "glslang.y" /* yacc.c:1906 */
+
diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h
index f3f0251..31c8f90 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp.h
+++ b/glslang/MachineIndependent/glslang_tab.cpp.h
@@ -30,8 +30,8 @@
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
-#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
-# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
+#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
+# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 1
@@ -89,370 +89,379 @@
USAMPLER3D = 299,
USAMPLERCUBE = 300,
USAMPLER2DARRAY = 301,
- SAMPLERCUBEARRAY = 302,
- SAMPLERCUBEARRAYSHADOW = 303,
- ISAMPLERCUBEARRAY = 304,
- USAMPLERCUBEARRAY = 305,
- ATTRIBUTE = 306,
- VARYING = 307,
- FLOAT16_T = 308,
- FLOAT32_T = 309,
- DOUBLE = 310,
- FLOAT64_T = 311,
- INT64_T = 312,
- UINT64_T = 313,
- INT32_T = 314,
- UINT32_T = 315,
- INT16_T = 316,
- UINT16_T = 317,
- INT8_T = 318,
- UINT8_T = 319,
- I64VEC2 = 320,
- I64VEC3 = 321,
- I64VEC4 = 322,
- U64VEC2 = 323,
- U64VEC3 = 324,
- U64VEC4 = 325,
- I32VEC2 = 326,
- I32VEC3 = 327,
- I32VEC4 = 328,
- U32VEC2 = 329,
- U32VEC3 = 330,
- U32VEC4 = 331,
- I16VEC2 = 332,
- I16VEC3 = 333,
- I16VEC4 = 334,
- U16VEC2 = 335,
- U16VEC3 = 336,
- U16VEC4 = 337,
- I8VEC2 = 338,
- I8VEC3 = 339,
- I8VEC4 = 340,
- U8VEC2 = 341,
- U8VEC3 = 342,
- U8VEC4 = 343,
- DVEC2 = 344,
- DVEC3 = 345,
- DVEC4 = 346,
- DMAT2 = 347,
- DMAT3 = 348,
- DMAT4 = 349,
- F16VEC2 = 350,
- F16VEC3 = 351,
- F16VEC4 = 352,
- F16MAT2 = 353,
- F16MAT3 = 354,
- F16MAT4 = 355,
- F32VEC2 = 356,
- F32VEC3 = 357,
- F32VEC4 = 358,
- F32MAT2 = 359,
- F32MAT3 = 360,
- F32MAT4 = 361,
- F64VEC2 = 362,
- F64VEC3 = 363,
- F64VEC4 = 364,
- F64MAT2 = 365,
- F64MAT3 = 366,
- F64MAT4 = 367,
- DMAT2X2 = 368,
- DMAT2X3 = 369,
- DMAT2X4 = 370,
- DMAT3X2 = 371,
- DMAT3X3 = 372,
- DMAT3X4 = 373,
- DMAT4X2 = 374,
- DMAT4X3 = 375,
- DMAT4X4 = 376,
- F16MAT2X2 = 377,
- F16MAT2X3 = 378,
- F16MAT2X4 = 379,
- F16MAT3X2 = 380,
- F16MAT3X3 = 381,
- F16MAT3X4 = 382,
- F16MAT4X2 = 383,
- F16MAT4X3 = 384,
- F16MAT4X4 = 385,
- F32MAT2X2 = 386,
- F32MAT2X3 = 387,
- F32MAT2X4 = 388,
- F32MAT3X2 = 389,
- F32MAT3X3 = 390,
- F32MAT3X4 = 391,
- F32MAT4X2 = 392,
- F32MAT4X3 = 393,
- F32MAT4X4 = 394,
- F64MAT2X2 = 395,
- F64MAT2X3 = 396,
- F64MAT2X4 = 397,
- F64MAT3X2 = 398,
- F64MAT3X3 = 399,
- F64MAT3X4 = 400,
- F64MAT4X2 = 401,
- F64MAT4X3 = 402,
- F64MAT4X4 = 403,
- ATOMIC_UINT = 404,
- ACCSTRUCTNV = 405,
- FCOOPMATNV = 406,
- ICOOPMATNV = 407,
- UCOOPMATNV = 408,
- SAMPLER1D = 409,
- SAMPLER1DARRAY = 410,
- SAMPLER1DARRAYSHADOW = 411,
- ISAMPLER1D = 412,
- SAMPLER1DSHADOW = 413,
- SAMPLER2DRECT = 414,
- SAMPLER2DRECTSHADOW = 415,
- ISAMPLER2DRECT = 416,
- USAMPLER2DRECT = 417,
- SAMPLERBUFFER = 418,
- ISAMPLERBUFFER = 419,
- USAMPLERBUFFER = 420,
- SAMPLER2DMS = 421,
- ISAMPLER2DMS = 422,
- USAMPLER2DMS = 423,
- SAMPLER2DMSARRAY = 424,
- ISAMPLER2DMSARRAY = 425,
- USAMPLER2DMSARRAY = 426,
- SAMPLEREXTERNALOES = 427,
- SAMPLEREXTERNAL2DY2YEXT = 428,
- ISAMPLER1DARRAY = 429,
- USAMPLER1D = 430,
- USAMPLER1DARRAY = 431,
- F16SAMPLER1D = 432,
- F16SAMPLER2D = 433,
- F16SAMPLER3D = 434,
- F16SAMPLER2DRECT = 435,
- F16SAMPLERCUBE = 436,
- F16SAMPLER1DARRAY = 437,
- F16SAMPLER2DARRAY = 438,
- F16SAMPLERCUBEARRAY = 439,
- F16SAMPLERBUFFER = 440,
- F16SAMPLER2DMS = 441,
- F16SAMPLER2DMSARRAY = 442,
- F16SAMPLER1DSHADOW = 443,
- F16SAMPLER2DSHADOW = 444,
- F16SAMPLER1DARRAYSHADOW = 445,
- F16SAMPLER2DARRAYSHADOW = 446,
- F16SAMPLER2DRECTSHADOW = 447,
- F16SAMPLERCUBESHADOW = 448,
- F16SAMPLERCUBEARRAYSHADOW = 449,
- IMAGE1D = 450,
- IIMAGE1D = 451,
- UIMAGE1D = 452,
- IMAGE2D = 453,
- IIMAGE2D = 454,
- UIMAGE2D = 455,
- IMAGE3D = 456,
- IIMAGE3D = 457,
- UIMAGE3D = 458,
- IMAGE2DRECT = 459,
- IIMAGE2DRECT = 460,
- UIMAGE2DRECT = 461,
- IMAGECUBE = 462,
- IIMAGECUBE = 463,
- UIMAGECUBE = 464,
- IMAGEBUFFER = 465,
- IIMAGEBUFFER = 466,
- UIMAGEBUFFER = 467,
- IMAGE1DARRAY = 468,
- IIMAGE1DARRAY = 469,
- UIMAGE1DARRAY = 470,
- IMAGE2DARRAY = 471,
- IIMAGE2DARRAY = 472,
- UIMAGE2DARRAY = 473,
- IMAGECUBEARRAY = 474,
- IIMAGECUBEARRAY = 475,
- UIMAGECUBEARRAY = 476,
- IMAGE2DMS = 477,
- IIMAGE2DMS = 478,
- UIMAGE2DMS = 479,
- IMAGE2DMSARRAY = 480,
- IIMAGE2DMSARRAY = 481,
- UIMAGE2DMSARRAY = 482,
- F16IMAGE1D = 483,
- F16IMAGE2D = 484,
- F16IMAGE3D = 485,
- F16IMAGE2DRECT = 486,
- F16IMAGECUBE = 487,
- F16IMAGE1DARRAY = 488,
- F16IMAGE2DARRAY = 489,
- F16IMAGECUBEARRAY = 490,
- F16IMAGEBUFFER = 491,
- F16IMAGE2DMS = 492,
- F16IMAGE2DMSARRAY = 493,
- SAMPLER = 494,
- SAMPLERSHADOW = 495,
- TEXTURE1D = 496,
- TEXTURE2D = 497,
- TEXTURE3D = 498,
- TEXTURECUBE = 499,
- TEXTURE1DARRAY = 500,
- TEXTURE2DARRAY = 501,
- ITEXTURE1D = 502,
- ITEXTURE2D = 503,
- ITEXTURE3D = 504,
- ITEXTURECUBE = 505,
- ITEXTURE1DARRAY = 506,
- ITEXTURE2DARRAY = 507,
- UTEXTURE1D = 508,
- UTEXTURE2D = 509,
- UTEXTURE3D = 510,
- UTEXTURECUBE = 511,
- UTEXTURE1DARRAY = 512,
- UTEXTURE2DARRAY = 513,
- TEXTURE2DRECT = 514,
- ITEXTURE2DRECT = 515,
- UTEXTURE2DRECT = 516,
- TEXTUREBUFFER = 517,
- ITEXTUREBUFFER = 518,
- UTEXTUREBUFFER = 519,
- TEXTURECUBEARRAY = 520,
- ITEXTURECUBEARRAY = 521,
- UTEXTURECUBEARRAY = 522,
- TEXTURE2DMS = 523,
- ITEXTURE2DMS = 524,
- UTEXTURE2DMS = 525,
- TEXTURE2DMSARRAY = 526,
- ITEXTURE2DMSARRAY = 527,
- UTEXTURE2DMSARRAY = 528,
- F16TEXTURE1D = 529,
- F16TEXTURE2D = 530,
- F16TEXTURE3D = 531,
- F16TEXTURE2DRECT = 532,
- F16TEXTURECUBE = 533,
- F16TEXTURE1DARRAY = 534,
- F16TEXTURE2DARRAY = 535,
- F16TEXTURECUBEARRAY = 536,
- F16TEXTUREBUFFER = 537,
- F16TEXTURE2DMS = 538,
- F16TEXTURE2DMSARRAY = 539,
- SUBPASSINPUT = 540,
- SUBPASSINPUTMS = 541,
- ISUBPASSINPUT = 542,
- ISUBPASSINPUTMS = 543,
- USUBPASSINPUT = 544,
- USUBPASSINPUTMS = 545,
- F16SUBPASSINPUT = 546,
- F16SUBPASSINPUTMS = 547,
- LEFT_OP = 548,
- RIGHT_OP = 549,
- INC_OP = 550,
- DEC_OP = 551,
- LE_OP = 552,
- GE_OP = 553,
- EQ_OP = 554,
- NE_OP = 555,
- AND_OP = 556,
- OR_OP = 557,
- XOR_OP = 558,
- MUL_ASSIGN = 559,
- DIV_ASSIGN = 560,
- ADD_ASSIGN = 561,
- MOD_ASSIGN = 562,
- LEFT_ASSIGN = 563,
- RIGHT_ASSIGN = 564,
- AND_ASSIGN = 565,
- XOR_ASSIGN = 566,
- OR_ASSIGN = 567,
- SUB_ASSIGN = 568,
- LEFT_PAREN = 569,
- RIGHT_PAREN = 570,
- LEFT_BRACKET = 571,
- RIGHT_BRACKET = 572,
- LEFT_BRACE = 573,
- RIGHT_BRACE = 574,
- DOT = 575,
- COMMA = 576,
- COLON = 577,
- EQUAL = 578,
- SEMICOLON = 579,
- BANG = 580,
- DASH = 581,
- TILDE = 582,
- PLUS = 583,
- STAR = 584,
- SLASH = 585,
- PERCENT = 586,
- LEFT_ANGLE = 587,
- RIGHT_ANGLE = 588,
- VERTICAL_BAR = 589,
- CARET = 590,
- AMPERSAND = 591,
- QUESTION = 592,
- INVARIANT = 593,
- HIGH_PRECISION = 594,
- MEDIUM_PRECISION = 595,
- LOW_PRECISION = 596,
- PRECISION = 597,
- PACKED = 598,
- RESOURCE = 599,
- SUPERP = 600,
- FLOATCONSTANT = 601,
- INTCONSTANT = 602,
- UINTCONSTANT = 603,
- BOOLCONSTANT = 604,
- IDENTIFIER = 605,
- TYPE_NAME = 606,
- CENTROID = 607,
- IN = 608,
- OUT = 609,
- INOUT = 610,
- STRUCT = 611,
- VOID = 612,
- WHILE = 613,
- BREAK = 614,
- CONTINUE = 615,
- DO = 616,
- ELSE = 617,
- FOR = 618,
- IF = 619,
- DISCARD = 620,
- RETURN = 621,
- SWITCH = 622,
- CASE = 623,
- DEFAULT = 624,
- UNIFORM = 625,
- SHARED = 626,
- FLAT = 627,
- SMOOTH = 628,
- LAYOUT = 629,
- DOUBLECONSTANT = 630,
- INT16CONSTANT = 631,
- UINT16CONSTANT = 632,
- FLOAT16CONSTANT = 633,
- INT32CONSTANT = 634,
- UINT32CONSTANT = 635,
- INT64CONSTANT = 636,
- UINT64CONSTANT = 637,
- SUBROUTINE = 638,
- DEMOTE = 639,
- PAYLOADNV = 640,
- PAYLOADINNV = 641,
- HITATTRNV = 642,
- CALLDATANV = 643,
- CALLDATAINNV = 644,
- PATCH = 645,
- SAMPLE = 646,
- BUFFER = 647,
- NONUNIFORM = 648,
- COHERENT = 649,
- VOLATILE = 650,
- RESTRICT = 651,
- READONLY = 652,
- WRITEONLY = 653,
- DEVICECOHERENT = 654,
- QUEUEFAMILYCOHERENT = 655,
- WORKGROUPCOHERENT = 656,
- SUBGROUPCOHERENT = 657,
- NONPRIVATE = 658,
- NOPERSPECTIVE = 659,
- EXPLICITINTERPAMD = 660,
- PERVERTEXNV = 661,
- PERPRIMITIVENV = 662,
- PERVIEWNV = 663,
- PERTASKNV = 664,
- PRECISE = 665
+ SAMPLER = 302,
+ SAMPLERSHADOW = 303,
+ TEXTURE2D = 304,
+ TEXTURE3D = 305,
+ TEXTURECUBE = 306,
+ TEXTURE2DARRAY = 307,
+ ITEXTURE2D = 308,
+ ITEXTURE3D = 309,
+ ITEXTURECUBE = 310,
+ ITEXTURE2DARRAY = 311,
+ UTEXTURE2D = 312,
+ UTEXTURE3D = 313,
+ UTEXTURECUBE = 314,
+ UTEXTURE2DARRAY = 315,
+ ATTRIBUTE = 316,
+ VARYING = 317,
+ FLOAT16_T = 318,
+ FLOAT32_T = 319,
+ DOUBLE = 320,
+ FLOAT64_T = 321,
+ INT64_T = 322,
+ UINT64_T = 323,
+ INT32_T = 324,
+ UINT32_T = 325,
+ INT16_T = 326,
+ UINT16_T = 327,
+ INT8_T = 328,
+ UINT8_T = 329,
+ I64VEC2 = 330,
+ I64VEC3 = 331,
+ I64VEC4 = 332,
+ U64VEC2 = 333,
+ U64VEC3 = 334,
+ U64VEC4 = 335,
+ I32VEC2 = 336,
+ I32VEC3 = 337,
+ I32VEC4 = 338,
+ U32VEC2 = 339,
+ U32VEC3 = 340,
+ U32VEC4 = 341,
+ I16VEC2 = 342,
+ I16VEC3 = 343,
+ I16VEC4 = 344,
+ U16VEC2 = 345,
+ U16VEC3 = 346,
+ U16VEC4 = 347,
+ I8VEC2 = 348,
+ I8VEC3 = 349,
+ I8VEC4 = 350,
+ U8VEC2 = 351,
+ U8VEC3 = 352,
+ U8VEC4 = 353,
+ DVEC2 = 354,
+ DVEC3 = 355,
+ DVEC4 = 356,
+ DMAT2 = 357,
+ DMAT3 = 358,
+ DMAT4 = 359,
+ F16VEC2 = 360,
+ F16VEC3 = 361,
+ F16VEC4 = 362,
+ F16MAT2 = 363,
+ F16MAT3 = 364,
+ F16MAT4 = 365,
+ F32VEC2 = 366,
+ F32VEC3 = 367,
+ F32VEC4 = 368,
+ F32MAT2 = 369,
+ F32MAT3 = 370,
+ F32MAT4 = 371,
+ F64VEC2 = 372,
+ F64VEC3 = 373,
+ F64VEC4 = 374,
+ F64MAT2 = 375,
+ F64MAT3 = 376,
+ F64MAT4 = 377,
+ DMAT2X2 = 378,
+ DMAT2X3 = 379,
+ DMAT2X4 = 380,
+ DMAT3X2 = 381,
+ DMAT3X3 = 382,
+ DMAT3X4 = 383,
+ DMAT4X2 = 384,
+ DMAT4X3 = 385,
+ DMAT4X4 = 386,
+ F16MAT2X2 = 387,
+ F16MAT2X3 = 388,
+ F16MAT2X4 = 389,
+ F16MAT3X2 = 390,
+ F16MAT3X3 = 391,
+ F16MAT3X4 = 392,
+ F16MAT4X2 = 393,
+ F16MAT4X3 = 394,
+ F16MAT4X4 = 395,
+ F32MAT2X2 = 396,
+ F32MAT2X3 = 397,
+ F32MAT2X4 = 398,
+ F32MAT3X2 = 399,
+ F32MAT3X3 = 400,
+ F32MAT3X4 = 401,
+ F32MAT4X2 = 402,
+ F32MAT4X3 = 403,
+ F32MAT4X4 = 404,
+ F64MAT2X2 = 405,
+ F64MAT2X3 = 406,
+ F64MAT2X4 = 407,
+ F64MAT3X2 = 408,
+ F64MAT3X3 = 409,
+ F64MAT3X4 = 410,
+ F64MAT4X2 = 411,
+ F64MAT4X3 = 412,
+ F64MAT4X4 = 413,
+ ATOMIC_UINT = 414,
+ ACCSTRUCTNV = 415,
+ ACCSTRUCTEXT = 416,
+ RAYQUERYEXT = 417,
+ FCOOPMATNV = 418,
+ ICOOPMATNV = 419,
+ UCOOPMATNV = 420,
+ SAMPLERCUBEARRAY = 421,
+ SAMPLERCUBEARRAYSHADOW = 422,
+ ISAMPLERCUBEARRAY = 423,
+ USAMPLERCUBEARRAY = 424,
+ SAMPLER1D = 425,
+ SAMPLER1DARRAY = 426,
+ SAMPLER1DARRAYSHADOW = 427,
+ ISAMPLER1D = 428,
+ SAMPLER1DSHADOW = 429,
+ SAMPLER2DRECT = 430,
+ SAMPLER2DRECTSHADOW = 431,
+ ISAMPLER2DRECT = 432,
+ USAMPLER2DRECT = 433,
+ SAMPLERBUFFER = 434,
+ ISAMPLERBUFFER = 435,
+ USAMPLERBUFFER = 436,
+ SAMPLER2DMS = 437,
+ ISAMPLER2DMS = 438,
+ USAMPLER2DMS = 439,
+ SAMPLER2DMSARRAY = 440,
+ ISAMPLER2DMSARRAY = 441,
+ USAMPLER2DMSARRAY = 442,
+ SAMPLEREXTERNALOES = 443,
+ SAMPLEREXTERNAL2DY2YEXT = 444,
+ ISAMPLER1DARRAY = 445,
+ USAMPLER1D = 446,
+ USAMPLER1DARRAY = 447,
+ F16SAMPLER1D = 448,
+ F16SAMPLER2D = 449,
+ F16SAMPLER3D = 450,
+ F16SAMPLER2DRECT = 451,
+ F16SAMPLERCUBE = 452,
+ F16SAMPLER1DARRAY = 453,
+ F16SAMPLER2DARRAY = 454,
+ F16SAMPLERCUBEARRAY = 455,
+ F16SAMPLERBUFFER = 456,
+ F16SAMPLER2DMS = 457,
+ F16SAMPLER2DMSARRAY = 458,
+ F16SAMPLER1DSHADOW = 459,
+ F16SAMPLER2DSHADOW = 460,
+ F16SAMPLER1DARRAYSHADOW = 461,
+ F16SAMPLER2DARRAYSHADOW = 462,
+ F16SAMPLER2DRECTSHADOW = 463,
+ F16SAMPLERCUBESHADOW = 464,
+ F16SAMPLERCUBEARRAYSHADOW = 465,
+ IMAGE1D = 466,
+ IIMAGE1D = 467,
+ UIMAGE1D = 468,
+ IMAGE2D = 469,
+ IIMAGE2D = 470,
+ UIMAGE2D = 471,
+ IMAGE3D = 472,
+ IIMAGE3D = 473,
+ UIMAGE3D = 474,
+ IMAGE2DRECT = 475,
+ IIMAGE2DRECT = 476,
+ UIMAGE2DRECT = 477,
+ IMAGECUBE = 478,
+ IIMAGECUBE = 479,
+ UIMAGECUBE = 480,
+ IMAGEBUFFER = 481,
+ IIMAGEBUFFER = 482,
+ UIMAGEBUFFER = 483,
+ IMAGE1DARRAY = 484,
+ IIMAGE1DARRAY = 485,
+ UIMAGE1DARRAY = 486,
+ IMAGE2DARRAY = 487,
+ IIMAGE2DARRAY = 488,
+ UIMAGE2DARRAY = 489,
+ IMAGECUBEARRAY = 490,
+ IIMAGECUBEARRAY = 491,
+ UIMAGECUBEARRAY = 492,
+ IMAGE2DMS = 493,
+ IIMAGE2DMS = 494,
+ UIMAGE2DMS = 495,
+ IMAGE2DMSARRAY = 496,
+ IIMAGE2DMSARRAY = 497,
+ UIMAGE2DMSARRAY = 498,
+ F16IMAGE1D = 499,
+ F16IMAGE2D = 500,
+ F16IMAGE3D = 501,
+ F16IMAGE2DRECT = 502,
+ F16IMAGECUBE = 503,
+ F16IMAGE1DARRAY = 504,
+ F16IMAGE2DARRAY = 505,
+ F16IMAGECUBEARRAY = 506,
+ F16IMAGEBUFFER = 507,
+ F16IMAGE2DMS = 508,
+ F16IMAGE2DMSARRAY = 509,
+ TEXTURECUBEARRAY = 510,
+ ITEXTURECUBEARRAY = 511,
+ UTEXTURECUBEARRAY = 512,
+ TEXTURE1D = 513,
+ ITEXTURE1D = 514,
+ UTEXTURE1D = 515,
+ TEXTURE1DARRAY = 516,
+ ITEXTURE1DARRAY = 517,
+ UTEXTURE1DARRAY = 518,
+ TEXTURE2DRECT = 519,
+ ITEXTURE2DRECT = 520,
+ UTEXTURE2DRECT = 521,
+ TEXTUREBUFFER = 522,
+ ITEXTUREBUFFER = 523,
+ UTEXTUREBUFFER = 524,
+ TEXTURE2DMS = 525,
+ ITEXTURE2DMS = 526,
+ UTEXTURE2DMS = 527,
+ TEXTURE2DMSARRAY = 528,
+ ITEXTURE2DMSARRAY = 529,
+ UTEXTURE2DMSARRAY = 530,
+ F16TEXTURE1D = 531,
+ F16TEXTURE2D = 532,
+ F16TEXTURE3D = 533,
+ F16TEXTURE2DRECT = 534,
+ F16TEXTURECUBE = 535,
+ F16TEXTURE1DARRAY = 536,
+ F16TEXTURE2DARRAY = 537,
+ F16TEXTURECUBEARRAY = 538,
+ F16TEXTUREBUFFER = 539,
+ F16TEXTURE2DMS = 540,
+ F16TEXTURE2DMSARRAY = 541,
+ SUBPASSINPUT = 542,
+ SUBPASSINPUTMS = 543,
+ ISUBPASSINPUT = 544,
+ ISUBPASSINPUTMS = 545,
+ USUBPASSINPUT = 546,
+ USUBPASSINPUTMS = 547,
+ F16SUBPASSINPUT = 548,
+ F16SUBPASSINPUTMS = 549,
+ LEFT_OP = 550,
+ RIGHT_OP = 551,
+ INC_OP = 552,
+ DEC_OP = 553,
+ LE_OP = 554,
+ GE_OP = 555,
+ EQ_OP = 556,
+ NE_OP = 557,
+ AND_OP = 558,
+ OR_OP = 559,
+ XOR_OP = 560,
+ MUL_ASSIGN = 561,
+ DIV_ASSIGN = 562,
+ ADD_ASSIGN = 563,
+ MOD_ASSIGN = 564,
+ LEFT_ASSIGN = 565,
+ RIGHT_ASSIGN = 566,
+ AND_ASSIGN = 567,
+ XOR_ASSIGN = 568,
+ OR_ASSIGN = 569,
+ SUB_ASSIGN = 570,
+ STRING_LITERAL = 571,
+ LEFT_PAREN = 572,
+ RIGHT_PAREN = 573,
+ LEFT_BRACKET = 574,
+ RIGHT_BRACKET = 575,
+ LEFT_BRACE = 576,
+ RIGHT_BRACE = 577,
+ DOT = 578,
+ COMMA = 579,
+ COLON = 580,
+ EQUAL = 581,
+ SEMICOLON = 582,
+ BANG = 583,
+ DASH = 584,
+ TILDE = 585,
+ PLUS = 586,
+ STAR = 587,
+ SLASH = 588,
+ PERCENT = 589,
+ LEFT_ANGLE = 590,
+ RIGHT_ANGLE = 591,
+ VERTICAL_BAR = 592,
+ CARET = 593,
+ AMPERSAND = 594,
+ QUESTION = 595,
+ INVARIANT = 596,
+ HIGH_PRECISION = 597,
+ MEDIUM_PRECISION = 598,
+ LOW_PRECISION = 599,
+ PRECISION = 600,
+ PACKED = 601,
+ RESOURCE = 602,
+ SUPERP = 603,
+ FLOATCONSTANT = 604,
+ INTCONSTANT = 605,
+ UINTCONSTANT = 606,
+ BOOLCONSTANT = 607,
+ IDENTIFIER = 608,
+ TYPE_NAME = 609,
+ CENTROID = 610,
+ IN = 611,
+ OUT = 612,
+ INOUT = 613,
+ STRUCT = 614,
+ VOID = 615,
+ WHILE = 616,
+ BREAK = 617,
+ CONTINUE = 618,
+ DO = 619,
+ ELSE = 620,
+ FOR = 621,
+ IF = 622,
+ DISCARD = 623,
+ RETURN = 624,
+ SWITCH = 625,
+ CASE = 626,
+ DEFAULT = 627,
+ UNIFORM = 628,
+ SHARED = 629,
+ BUFFER = 630,
+ FLAT = 631,
+ SMOOTH = 632,
+ LAYOUT = 633,
+ DOUBLECONSTANT = 634,
+ INT16CONSTANT = 635,
+ UINT16CONSTANT = 636,
+ FLOAT16CONSTANT = 637,
+ INT32CONSTANT = 638,
+ UINT32CONSTANT = 639,
+ INT64CONSTANT = 640,
+ UINT64CONSTANT = 641,
+ SUBROUTINE = 642,
+ DEMOTE = 643,
+ PAYLOADNV = 644,
+ PAYLOADINNV = 645,
+ HITATTRNV = 646,
+ CALLDATANV = 647,
+ CALLDATAINNV = 648,
+ PAYLOADEXT = 649,
+ PAYLOADINEXT = 650,
+ HITATTREXT = 651,
+ CALLDATAEXT = 652,
+ CALLDATAINEXT = 653,
+ PATCH = 654,
+ SAMPLE = 655,
+ NONUNIFORM = 656,
+ COHERENT = 657,
+ VOLATILE = 658,
+ RESTRICT = 659,
+ READONLY = 660,
+ WRITEONLY = 661,
+ DEVICECOHERENT = 662,
+ QUEUEFAMILYCOHERENT = 663,
+ WORKGROUPCOHERENT = 664,
+ SUBGROUPCOHERENT = 665,
+ NONPRIVATE = 666,
+ SHADERCALLCOHERENT = 667,
+ NOPERSPECTIVE = 668,
+ EXPLICITINTERPAMD = 669,
+ PERVERTEXNV = 670,
+ PERPRIMITIVENV = 671,
+ PERVIEWNV = 672,
+ PERTASKNV = 673,
+ PRECISE = 674
};
#endif
@@ -461,7 +470,7 @@
union YYSTYPE
{
-#line 96 "MachineIndependent/glslang.y" /* yacc.c:1909 */
+#line 97 "glslang.y" /* yacc.c:1909 */
struct {
glslang::TSourceLoc loc;
@@ -497,7 +506,7 @@
glslang::TArraySizes* typeParameters;
} interm;
-#line 501 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */
+#line 510 "glslang_tab.cpp.h" /* yacc.c:1909 */
};
typedef union YYSTYPE YYSTYPE;
@@ -509,4 +518,4 @@
int yyparse (glslang::TParseContext* pParseContext);
-#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */
+#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED */
diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp
index fbfede0..86edcfe 100644
--- a/glslang/MachineIndependent/intermOut.cpp
+++ b/glslang/MachineIndependent/intermOut.cpp
@@ -2,6 +2,7 @@
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2016 LunarG, Inc.
// Copyright (C) 2017 ARM Limited.
+// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
//
// All rights reserved.
//
@@ -213,6 +214,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 << "<unknown op>";
}
@@ -557,6 +565,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;
@@ -1068,18 +1079,43 @@
case EOpSubpassLoad: out.debug << "subpassLoad"; break;
case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break;
- 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 EOpTrace: out.debug << "traceNV"; break;
+ case EOpReportIntersection: out.debug << "reportIntersectionNV"; break;
+ case EOpIgnoreIntersection: out.debug << "ignoreIntersectionNV"; break;
+ case EOpTerminateRay: out.debug << "terminateRayNV"; break;
+ case EOpExecuteCallable: out.debug << "executeCallableNV"; break;
case EOpWritePackedPrimitiveIndices4x8NV: out.debug << "writePackedPrimitiveIndices4x8NV"; break;
+ case EOpRayQueryInitialize: out.debug << "rayQueryInitializeEXT"; break;
+ case EOpRayQueryTerminate: out.debug << "rayQueryTerminateEXT"; break;
+ case EOpRayQueryGenerateIntersection: out.debug << "rayQueryGenerateIntersectionEXT"; break;
+ case EOpRayQueryConfirmIntersection: out.debug << "rayQueryConfirmIntersectionEXT"; break;
+ case EOpRayQueryProceed: out.debug << "rayQueryProceedEXT"; break;
+ case EOpRayQueryGetIntersectionType: out.debug << "rayQueryGetIntersectionTypeEXT"; break;
+ case EOpRayQueryGetRayTMin: out.debug << "rayQueryGetRayTMinEXT"; break;
+ case EOpRayQueryGetRayFlags: out.debug << "rayQueryGetRayFlagsEXT"; break;
+ case EOpRayQueryGetIntersectionT: out.debug << "rayQueryGetIntersectionTEXT"; break;
+ case EOpRayQueryGetIntersectionInstanceCustomIndex: out.debug << "rayQueryGetIntersectionInstanceCustomIndexEXT"; break;
+ case EOpRayQueryGetIntersectionInstanceId: out.debug << "rayQueryGetIntersectionInstanceIdEXT"; break;
+ case EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset: out.debug << "rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT"; break;
+ case EOpRayQueryGetIntersectionGeometryIndex: out.debug << "rayQueryGetIntersectionGeometryIndexEXT"; break;
+ case EOpRayQueryGetIntersectionPrimitiveIndex: out.debug << "rayQueryGetIntersectionPrimitiveIndexEXT"; break;
+ case EOpRayQueryGetIntersectionBarycentrics: out.debug << "rayQueryGetIntersectionBarycentricsEXT"; break;
+ case EOpRayQueryGetIntersectionFrontFace: out.debug << "rayQueryGetIntersectionFrontFaceEXT"; break;
+ case EOpRayQueryGetIntersectionCandidateAABBOpaque: out.debug << "rayQueryGetIntersectionCandidateAABBOpaqueEXT"; break;
+ case EOpRayQueryGetIntersectionObjectRayDirection: out.debug << "rayQueryGetIntersectionObjectRayDirectionEXT"; break;
+ case EOpRayQueryGetIntersectionObjectRayOrigin: out.debug << "rayQueryGetIntersectionObjectRayOriginEXT"; break;
+ case EOpRayQueryGetWorldRayDirection: out.debug << "rayQueryGetWorldRayDirectionEXT"; break;
+ case EOpRayQueryGetWorldRayOrigin: out.debug << "rayQueryGetWorldRayOriginEXT"; break;
+ case EOpRayQueryGetIntersectionObjectToWorld: out.debug << "rayQueryGetIntersectionObjectToWorldEXT"; break;
+ case EOpRayQueryGetIntersectionWorldToObject: out.debug << "rayQueryGetIntersectionWorldToObjectEXT"; break;
+
case EOpCooperativeMatrixLoad: out.debug << "Load cooperative matrix"; break;
case EOpCooperativeMatrixStore: out.debug << "Store cooperative matrix"; break;
case EOpCooperativeMatrixMulAdd: out.debug << "MulAdd cooperative matrices"; break;
case EOpIsHelperInvocation: out.debug << "IsHelperInvocation"; break;
+ case EOpDebugPrintf: out.debug << "Debug printf"; break;
default: out.debug.message(EPrefixError, "Bad aggregation op");
}
@@ -1430,7 +1466,7 @@
infoSink.debug << "Shader version: " << version << "\n";
if (requestedExtensions.size() > 0) {
for (auto extIt = requestedExtensions.begin(); extIt != requestedExtensions.end(); ++extIt)
- infoSink.debug << "Requested " << *extIt << "\n";
+ infoSink.debug << "Requested " << extIt->first << "\n";
}
if (xfbMode)
@@ -1526,4 +1562,4 @@
} // end namespace glslang
-#endif // not GLSLANG_WEB
\ No newline at end of file
+#endif // not GLSLANG_WEB
diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp
index 3262c0a..9dc1da2 100644
--- a/glslang/MachineIndependent/iomapper.cpp
+++ b/glslang/MachineIndependent/iomapper.cpp
@@ -161,7 +161,7 @@
}
private:
- TNotifyUniformAdaptor& operator=(TNotifyUniformAdaptor&);
+ TNotifyUniformAdaptor& operator=(TNotifyUniformAdaptor&) = delete;
};
struct TNotifyInOutAdaptor
@@ -180,7 +180,7 @@
}
private:
- TNotifyInOutAdaptor& operator=(TNotifyInOutAdaptor&);
+ TNotifyInOutAdaptor& operator=(TNotifyInOutAdaptor&) = delete;
};
struct TResolverUniformAdaptor {
@@ -236,7 +236,7 @@
bool& error;
private:
- TResolverUniformAdaptor& operator=(TResolverUniformAdaptor&);
+ TResolverUniformAdaptor& operator=(TResolverUniformAdaptor&) = delete;
};
struct TResolverInOutAdaptor {
@@ -283,7 +283,7 @@
bool& error;
private:
- TResolverInOutAdaptor& operator=(TResolverInOutAdaptor&);
+ TResolverInOutAdaptor& operator=(TResolverInOutAdaptor&) = delete;
};
// The class is used for reserving explicit uniform locations and ubo/ssbo/opaque bindings
@@ -384,7 +384,7 @@
bool& hadError;
private:
- TSymbolValidater& operator=(TSymbolValidater&);
+ TSymbolValidater& operator=(TSymbolValidater&) = delete;
};
struct TSlotCollector {
@@ -398,7 +398,7 @@
TInfoSink& infoSink;
private:
- TSlotCollector& operator=(TSlotCollector&);
+ TSlotCollector& operator=(TSlotCollector&) = delete;
};
TDefaultIoResolverBase::TDefaultIoResolverBase(const TIntermediate& intermediate)
@@ -579,7 +579,10 @@
int TDefaultGlslIoResolver::resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) {
const TType& type = ent.symbol->getType();
- const TString& name = ent.symbol->getName();
+ const TString& name = IsAnonymous(ent.symbol->getName()) ?
+ ent.symbol->getType().getTypeName()
+ :
+ ent.symbol->getName();
if (currentStage != stage) {
preStage = currentStage;
currentStage = stage;
@@ -663,7 +666,10 @@
int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) {
const TType& type = ent.symbol->getType();
- const TString& name = ent.symbol->getName();
+ const TString& name = IsAnonymous(ent.symbol->getName()) ?
+ ent.symbol->getType().getTypeName()
+ :
+ ent.symbol->getName();
// kick out of not doing this
if (! doAutoLocationMapping()) {
return ent.newLocation = -1;
@@ -734,7 +740,10 @@
int TDefaultGlslIoResolver::resolveBinding(EShLanguage /*stage*/, TVarEntryInfo& ent) {
const TType& type = ent.symbol->getType();
- const TString& name = ent.symbol->getName();
+ const TString& name = IsAnonymous(ent.symbol->getName()) ?
+ ent.symbol->getType().getTypeName()
+ :
+ ent.symbol->getName();
// On OpenGL arrays of opaque types take a seperate binding for each element
int numBindings = intermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1;
TResourceType resource = getResourceType(type);
@@ -809,7 +818,10 @@
void TDefaultGlslIoResolver::reserverStorageSlot(TVarEntryInfo& ent, TInfoSink& infoSink) {
const TType& type = ent.symbol->getType();
- const TString& name = ent.symbol->getName();
+ const TString& name = IsAnonymous(ent.symbol->getName()) ?
+ ent.symbol->getType().getTypeName()
+ :
+ ent.symbol->getName();
TStorageQualifier storage = type.getQualifier().storage;
EShLanguage stage(EShLangCount);
switch (storage) {
@@ -831,6 +843,7 @@
if (iter->second != location) {
TString errorMsg = "Invalid location: " + name;
infoSink.info.message(EPrefixInternalError, errorMsg.c_str());
+ hasError = true;
}
}
}
@@ -856,6 +869,7 @@
if (iter->second != location) {
TString errorMsg = "Invalid location: " + name;
infoSink.info.message(EPrefixInternalError, errorMsg.c_str());
+ hasError = true;
}
}
}
@@ -867,7 +881,10 @@
void TDefaultGlslIoResolver::reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& infoSink) {
const TType& type = ent.symbol->getType();
- const TString& name = ent.symbol->getName();
+ const TString& name = IsAnonymous(ent.symbol->getName()) ?
+ ent.symbol->getType().getTypeName()
+ :
+ ent.symbol->getName();
int resource = getResourceType(type);
if (type.getQualifier().hasBinding()) {
TVarSlotMap& varSlotMap = resourceSlotMap[resource];
@@ -884,6 +901,7 @@
if (iter->second != binding) {
TString errorMsg = "Invalid binding: " + name;
infoSink.info.message(EPrefixInternalError, errorMsg.c_str());
+ hasError = true;
}
}
}
@@ -1158,7 +1176,7 @@
resolver = &defaultResolver;
}
resolver->addStage(stage);
- inVarMaps[stage] = new TVarLiveMap, outVarMaps[stage] = new TVarLiveMap(), uniformVarMap[stage] = new TVarLiveMap();
+ inVarMaps[stage] = new TVarLiveMap(); outVarMaps[stage] = new TVarLiveMap(); uniformVarMap[stage] = new TVarLiveMap();
TVarGatherTraverser iter_binding_all(intermediate, true, *inVarMaps[stage], *outVarMaps[stage],
*uniformVarMap[stage]);
TVarGatherTraverser iter_binding_live(intermediate, false, *inVarMaps[stage], *outVarMaps[stage],
diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h
index 01afc5a..e91a150 100644
--- a/glslang/MachineIndependent/iomapper.h
+++ b/glslang/MachineIndependent/iomapper.h
@@ -114,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;
@@ -125,10 +125,11 @@
void addStage(EShLanguage stage) override {
if (stage < EShLangCount)
stageMask[stage] = true;
- };
+ }
uint32_t computeTypeLocationSize(const TType& type, EShLanguage stage);
TSlotSetMap slots;
+ bool hasError = false;
protected:
TDefaultIoResolverBase(TDefaultIoResolverBase&);
@@ -191,7 +192,7 @@
typedef std::map<TString, int> TVarSlotMap; // <resourceName, location/binding>
typedef std::map<int, TVarSlotMap> TSlotMap; // <resourceKey, TVarSlotMap>
TDefaultGlslIoResolver(const TIntermediate& intermediate);
- bool validateBinding(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; };
+ bool validateBinding(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; }
TResourceType getResourceType(const glslang::TType& type) override;
int resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) override;
int resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) override;
@@ -209,7 +210,7 @@
int buildStorageKey(EShLanguage stage, TStorageQualifier type) {
assert(static_cast<uint32_t>(stage) <= 0x0000ffff && static_cast<uint32_t>(type) <= 0x0000ffff);
return (stage << 16) | type;
- };
+ }
protected:
// Use for mark pre stage, to get more interface symbol information.
@@ -237,12 +238,13 @@
// In the future, if the vc++ compiler can handle such a situation,
// this part of the code will be removed.
struct TVarLivePair : std::pair<const TString, TVarEntryInfo> {
- TVarLivePair(std::pair<const TString, TVarEntryInfo>& _Right) : pair(_Right.first, _Right.second) {}
+ TVarLivePair(const std::pair<const TString, TVarEntryInfo>& _Right) : pair(_Right.first, _Right.second) {}
TVarLivePair& operator=(const TVarLivePair& _Right) {
const_cast<TString&>(first) = _Right.first;
second = _Right.second;
return (*this);
- };
+ }
+ TVarLivePair(const TVarLivePair& src) { *this = src; }
};
typedef std::vector<TVarLivePair> TVarLiveVector;
@@ -253,17 +255,17 @@
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
class TGlslIoMapper : public TIoMapper {
public:
TGlslIoMapper() {
- memset(inVarMaps, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1));
- memset(outVarMaps, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1));
- memset(uniformVarMap, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1));
- memset(intermediates, 0, sizeof(TIntermediate*) * (EShLangCount + 1));
+ memset(inVarMaps, 0, sizeof(TVarLiveMap*) * EShLangCount);
+ memset(outVarMaps, 0, sizeof(TVarLiveMap*) * EShLangCount);
+ memset(uniformVarMap, 0, sizeof(TVarLiveMap*) * EShLangCount);
+ memset(intermediates, 0, sizeof(TIntermediate*) * EShLangCount);
}
virtual ~TGlslIoMapper() {
for (size_t stage = 0; stage < EShLangCount; stage++) {
diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp
old mode 100644
new mode 100755
index 5b920f2..dcb1cc8
--- a/glslang/MachineIndependent/linkValidate.cpp
+++ b/glslang/MachineIndependent/linkValidate.cpp
@@ -138,7 +138,11 @@
MERGE_MAX(spvVersion.openGl);
numErrors += unit.getNumErrors();
- numPushConstants += unit.numPushConstants;
+ // Only one push_constant is allowed, mergeLinkerObjects() will ensure the push_constant
+ // is the same for all units.
+ if (numPushConstants > 1 || unit.numPushConstants > 1)
+ error(infoSink, "Only one push_constant block is allowed per stage");
+ numPushConstants = std::min(numPushConstants + unit.numPushConstants, 1);
if (unit.invocations != TQualifier::layoutNotSet) {
if (invocations == TQualifier::layoutNotSet)
@@ -192,12 +196,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");
@@ -284,7 +290,7 @@
}
// Getting this far means we have two existing trees to merge...
- numShaderRecordNVBlocks += unit.numShaderRecordNVBlocks;
+ numShaderRecordBlocks += unit.numShaderRecordBlocks;
numTaskNVBlocks += unit.numTaskNVBlocks;
// Get the top-level globals of each unit
@@ -297,10 +303,10 @@
// Map by global name to unique ID to rationalize the same object having
// differing IDs in different trees.
- TMap<TString, int> idMap;
+ TIdMaps idMaps;
int maxId;
- seedIdMap(idMap, maxId);
- remapIds(idMap, maxId + 1, unit);
+ seedIdMap(idMaps, maxId);
+ remapIds(idMaps, maxId + 1, unit);
mergeBodies(infoSink, globals, unitGlobals);
mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects);
@@ -309,27 +315,40 @@
#endif
+static const TString& getNameForIdMap(TIntermSymbol* symbol)
+{
+ TShaderInterface si = symbol->getType().getShaderInterface();
+ if (si == EsiNone)
+ return symbol->getName();
+ else
+ return symbol->getType().getTypeName();
+}
+
+
+
// 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
// on having no bodies for the copy-constructor/operator=.)
class TBuiltInIdTraverser : public TIntermTraverser {
public:
- TBuiltInIdTraverser(TMap<TString, int>& idMap) : idMap(idMap), maxId(0) { }
+ TBuiltInIdTraverser(TIdMaps& idMaps) : idMaps(idMaps), maxId(0) { }
// If it's a built in, add it to the map.
// Track the max ID.
virtual void visitSymbol(TIntermSymbol* symbol)
{
const TQualifier& qualifier = symbol->getType().getQualifier();
- if (qualifier.builtIn != EbvNone)
- idMap[symbol->getName()] = symbol->getId();
+ if (qualifier.builtIn != EbvNone) {
+ TShaderInterface si = symbol->getType().getShaderInterface();
+ idMaps[si][getNameForIdMap(symbol)] = symbol->getId();
+ }
maxId = std::max(maxId, symbol->getId());
}
int getMaxId() const { return maxId; }
protected:
TBuiltInIdTraverser(TBuiltInIdTraverser&);
TBuiltInIdTraverser& operator=(TBuiltInIdTraverser&);
- TMap<TString, int>& idMap;
+ TIdMaps& idMaps;
int maxId;
};
@@ -338,31 +357,33 @@
// on having no bodies for the copy-constructor/operator=.)
class TUserIdTraverser : public TIntermTraverser {
public:
- TUserIdTraverser(TMap<TString, int>& idMap) : idMap(idMap) { }
+ TUserIdTraverser(TIdMaps& idMaps) : idMaps(idMaps) { }
// If its a non-built-in global, add it to the map.
virtual void visitSymbol(TIntermSymbol* symbol)
{
const TQualifier& qualifier = symbol->getType().getQualifier();
- if (qualifier.builtIn == EbvNone)
- idMap[symbol->getName()] = symbol->getId();
+ if (qualifier.builtIn == EbvNone) {
+ TShaderInterface si = symbol->getType().getShaderInterface();
+ idMaps[si][getNameForIdMap(symbol)] = symbol->getId();
+ }
}
protected:
TUserIdTraverser(TUserIdTraverser&);
TUserIdTraverser& operator=(TUserIdTraverser&);
- TMap<TString, int>& idMap; // over biggest id
+ TIdMaps& idMaps; // over biggest id
};
// Initialize the the ID map with what we know of 'this' AST.
-void TIntermediate::seedIdMap(TMap<TString, int>& idMap, int& maxId)
+void TIntermediate::seedIdMap(TIdMaps& idMaps, int& maxId)
{
// all built-ins everywhere need to align on IDs and contribute to the max ID
- TBuiltInIdTraverser builtInIdTraverser(idMap);
+ TBuiltInIdTraverser builtInIdTraverser(idMaps);
treeRoot->traverse(&builtInIdTraverser);
maxId = builtInIdTraverser.getMaxId();
// user variables in the linker object list need to align on ids
- TUserIdTraverser userIdTraverser(idMap);
+ TUserIdTraverser userIdTraverser(idMaps);
findLinkerObjects()->traverse(&userIdTraverser);
}
@@ -371,7 +392,7 @@
// on having no bodies for the copy-constructor/operator=.)
class TRemapIdTraverser : public TIntermTraverser {
public:
- TRemapIdTraverser(const TMap<TString, int>& idMap, int idShift) : idMap(idMap), idShift(idShift) { }
+ TRemapIdTraverser(const TIdMaps& idMaps, int idShift) : idMaps(idMaps), idShift(idShift) { }
// Do the mapping:
// - if the same symbol, adopt the 'this' ID
// - otherwise, ensure a unique ID by shifting to a new space
@@ -380,8 +401,9 @@
const TQualifier& qualifier = symbol->getType().getQualifier();
bool remapped = false;
if (qualifier.isLinkable() || qualifier.builtIn != EbvNone) {
- auto it = idMap.find(symbol->getName());
- if (it != idMap.end()) {
+ TShaderInterface si = symbol->getType().getShaderInterface();
+ auto it = idMaps[si].find(getNameForIdMap(symbol));
+ if (it != idMaps[si].end()) {
symbol->changeId(it->second);
remapped = true;
}
@@ -392,14 +414,14 @@
protected:
TRemapIdTraverser(TRemapIdTraverser&);
TRemapIdTraverser& operator=(TRemapIdTraverser&);
- const TMap<TString, int>& idMap;
+ const TIdMaps& idMaps;
int idShift;
};
-void TIntermediate::remapIds(const TMap<TString, int>& idMap, int idShift, TIntermediate& unit)
+void TIntermediate::remapIds(const TIdMaps& idMaps, int idShift, TIntermediate& unit)
{
// Remap all IDs to either share or be unique, as dictated by the idMap and idShift.
- TRemapIdTraverser idTraverser(idMap, idShift);
+ TRemapIdTraverser idTraverser(idMaps, idShift);
unit.getTreeRoot()->traverse(&idTraverser);
}
@@ -441,7 +463,19 @@
TIntermSymbol* symbol = linkerObjects[linkObj]->getAsSymbolNode();
TIntermSymbol* unitSymbol = unitLinkerObjects[unitLinkObj]->getAsSymbolNode();
assert(symbol && unitSymbol);
- if (symbol->getName() == unitSymbol->getName()) {
+
+ bool isSameSymbol = false;
+ // If they are both blocks in the same shader interface,
+ // match by the block-name, not the identifier name.
+ if (symbol->getType().getBasicType() == EbtBlock && unitSymbol->getType().getBasicType() == EbtBlock) {
+ if (symbol->getType().getShaderInterface() == unitSymbol->getType().getShaderInterface()) {
+ isSameSymbol = symbol->getType().getTypeName() == unitSymbol->getType().getTypeName();
+ }
+ }
+ else if (symbol->getName() == unitSymbol->getName())
+ isSameSymbol = true;
+
+ if (isSameSymbol) {
// filter out copy
merge = false;
@@ -460,6 +494,9 @@
// Check for consistent types/qualification/initializers etc.
mergeErrorCheck(infoSink, *symbol, *unitSymbol, false);
}
+ // If different symbols, verify they arn't push_constant since there can only be one per stage
+ else if (symbol->getQualifier().isPushConstant() && unitSymbol->getQualifier().isPushConstant())
+ error(infoSink, "Only one push_constant block is allowed per stage");
}
if (merge)
linkerObjects.push_back(unitLinkerObjects[unitLinkObj]);
@@ -496,6 +533,7 @@
//
void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, bool crossStage)
{
+#ifndef GLSLANG_WEB
bool writeTypeComparison = false;
// Types have to match
@@ -517,6 +555,22 @@
writeTypeComparison = true;
}
+ // Uniform and buffer blocks must either both have an instance name, or
+ // must both be anonymous. The names don't need to match though.
+ if (symbol.getQualifier().isUniformOrBuffer() &&
+ (IsAnonymous(symbol.getName()) != IsAnonymous(unitSymbol.getName()))) {
+ error(infoSink, "Matched Uniform or Storage blocks must all be anonymous,"
+ " or all be named:");
+ writeTypeComparison = true;
+ }
+
+ if (symbol.getQualifier().storage == unitSymbol.getQualifier().storage &&
+ (IsAnonymous(symbol.getName()) != IsAnonymous(unitSymbol.getName()) ||
+ (!IsAnonymous(symbol.getName()) && symbol.getName() != unitSymbol.getName()))) {
+ warn(infoSink, "Matched shader interfaces are using different instance names.");
+ writeTypeComparison = true;
+ }
+
// Precision...
if (symbol.getQualifier().precision != unitSymbol.getQualifier().precision) {
error(infoSink, "Precision qualifiers must match:");
@@ -546,13 +600,13 @@
writeTypeComparison = true;
}
-#ifndef GLSLANG_WEB
// Memory...
if (symbol.getQualifier().coherent != unitSymbol.getQualifier().coherent ||
symbol.getQualifier().devicecoherent != unitSymbol.getQualifier().devicecoherent ||
symbol.getQualifier().queuefamilycoherent != unitSymbol.getQualifier().queuefamilycoherent ||
symbol.getQualifier().workgroupcoherent != unitSymbol.getQualifier().workgroupcoherent ||
symbol.getQualifier().subgroupcoherent != unitSymbol.getQualifier().subgroupcoherent ||
+ symbol.getQualifier().shadercallcoherent!= unitSymbol.getQualifier().shadercallcoherent ||
symbol.getQualifier().nonprivate != unitSymbol.getQualifier().nonprivate ||
symbol.getQualifier().volatil != unitSymbol.getQualifier().volatil ||
symbol.getQualifier().restrict != unitSymbol.getQualifier().restrict ||
@@ -561,7 +615,6 @@
error(infoSink, "Memory qualifiers must match:");
writeTypeComparison = true;
}
-#endif
// Layouts...
// TODO: 4.4 enhanced layouts: Generalize to include offset/align: current spec
@@ -588,9 +641,14 @@
}
}
- if (writeTypeComparison)
- infoSink.info << " " << symbol.getName() << ": \"" << symbol.getType().getCompleteString() << "\" versus \"" <<
- unitSymbol.getType().getCompleteString() << "\"\n";
+ if (writeTypeComparison) {
+ infoSink.info << " " << symbol.getName() << ": \"" << symbol.getType().getCompleteString() << "\" versus ";
+ if (symbol.getName() != unitSymbol.getName())
+ infoSink.info << unitSymbol.getName() << ": ";
+
+ infoSink.info << "\"" << unitSymbol.getType().getCompleteString() << "\"\n";
+ }
+#endif
}
//
@@ -719,13 +777,13 @@
break;
case EShLangCompute:
break;
- case EShLangRayGenNV:
- case EShLangIntersectNV:
- case EShLangAnyHitNV:
- case EShLangClosestHitNV:
- case EShLangMissNV:
- case EShLangCallableNV:
- if (numShaderRecordNVBlocks > 1)
+ case EShLangRayGen:
+ case EShLangIntersect:
+ case EShLangAnyHit:
+ case EShLangClosestHit:
+ case EShLangMiss:
+ case EShLangCallable:
+ if (numShaderRecordBlocks > 1)
error(infoSink, "Only one shaderRecordNV buffer block is allowed per stage");
break;
case EShLangMeshNV:
@@ -1095,7 +1153,7 @@
}
// combine location and component ranges
- TIoRange range(locationRange, componentRange, type.getBasicType(), qualifier.hasIndex() ? qualifier.layoutIndex : 0);
+ TIoRange range(locationRange, componentRange, type.getBasicType(), qualifier.hasIndex() ? qualifier.getIndex() : 0);
// check for collisions, except for vertex inputs on desktop targeting OpenGL
if (! (!isEsProfile() && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0)
diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h
index 10f9947..996e347 100644
--- a/glslang/MachineIndependent/localintermediate.h
+++ b/glslang/MachineIndependent/localintermediate.h
@@ -147,6 +147,7 @@
TRange offset;
};
+#ifndef GLSLANG_WEB
// Things that need to be tracked per xfb buffer.
struct TXfbBuffer {
TXfbBuffer() : stride(TQualifier::layoutXfbStrideEnd), implicitStride(0), contains64BitType(false),
@@ -158,9 +159,13 @@
bool contains32BitType;
bool contains16BitType;
};
+#endif
// Track a set of strings describing how the module was processed.
-// Using the form:
+// This includes command line options, transforms, etc., ideally inclusive enough
+// to reproduce the steps used to transform the input source to the output.
+// E.g., see SPIR-V OpModuleProcessed.
+// Each "process" or "transform" uses is expressed in the form:
// process arg0 arg1 arg2 ...
// process arg0 arg1 arg2 ...
// where everything is textual, and there can be zero or more arguments
@@ -220,6 +225,15 @@
LayoutDerivativeGroupLinear, // derivative_group_linearNV
};
+class TIdMaps {
+public:
+ TMap<TString, int>& operator[](int i) { return maps[i]; }
+ const TMap<TString, int>& operator[](int i) const { return maps[i]; }
+private:
+ TMap<TString, int> maps[EsiCount];
+};
+
+
//
// Set of helper functions to help parse and build the tree.
//
@@ -227,10 +241,6 @@
public:
explicit TIntermediate(EShLanguage l, int v = 0, EProfile p = ENoProfile) :
language(l),
-#ifdef ENABLE_HLSL
- implicitThisName("@this"), implicitCounterName("@count"),
- source(EShSourceNone),
-#endif
profile(p), version(v), treeRoot(0),
numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false),
invertY(false),
@@ -239,17 +249,19 @@
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),
+ postDepthCoverage(false), depthLayout(EldNone),
hlslFunctionality1(false),
blendEquations(0), xfbMode(false), multiStream(false),
layoutOverrideCoverage(false),
geoPassthroughEXT(false),
- numShaderRecordNVBlocks(0),
+ numShaderRecordBlocks(0),
computeDerivativeMode(LayoutDerivativeNone),
primitives(TQualifier::layoutNotSet),
numTaskNVBlocks(0),
@@ -267,7 +279,6 @@
uniformLocationBase(0)
#endif
{
-#ifndef GLSLANG_WEB
localSize[0] = 1;
localSize[1] = 1;
localSize[2] = 1;
@@ -277,6 +288,7 @@
localSizeSpecId[0] = TQualifier::layoutNotSet;
localSizeSpecId[1] = TQualifier::layoutNotSet;
localSizeSpecId[2] = TQualifier::layoutNotSet;
+#ifndef GLSLANG_WEB
xfbBuffers.resize(TQualifier::layoutXfbBufferEnd);
shiftBinding.fill(0);
#endif
@@ -332,6 +344,9 @@
case EShTargetVulkan_1_1:
processes.addProcess("target-env vulkan1.1");
break;
+ case EShTargetVulkan_1_2:
+ processes.addProcess("target-env vulkan1.2");
+ break;
default:
processes.addProcess("target-env vulkanUnknown");
break;
@@ -341,8 +356,15 @@
}
const SpvVersion& getSpv() const { return spvVersion; }
EShLanguage getStage() const { return language; }
- void addRequestedExtension(const char* extension) { requestedExtensions.insert(extension); }
- const std::set<std::string>& getRequestedExtensions() const { return requestedExtensions; }
+ void updateRequestedExtension(const char* extension, TExtensionBehavior behavior) {
+ if(requestedExtensions.find(extension) != requestedExtensions.end()) {
+ requestedExtensions[extension] = behavior;
+ } else {
+ requestedExtensions.insert(std::make_pair(extension, behavior));
+ }
+ }
+
+ const std::map<std::string, TExtensionBehavior>& getRequestedExtensions() const { return requestedExtensions; }
void setTreeRoot(TIntermNode* r) { treeRoot = r; }
TIntermNode* getTreeRoot() const { return treeRoot; }
@@ -465,7 +487,23 @@
bool usingStorageBuffer() const { return useStorageBuffer; }
void setDepthReplacing() { depthReplacing = true; }
bool isDepthReplacing() const { return depthReplacing; }
-
+ bool setLocalSize(int dim, int size)
+ {
+ if (localSizeNotDefault[dim])
+ return size == localSize[dim];
+ localSizeNotDefault[dim] = true;
+ localSize[dim] = size;
+ return true;
+ }
+ unsigned int getLocalSize(int dim) const { return localSize[dim]; }
+ bool setLocalSizeSpecId(int dim, int id)
+ {
+ if (localSizeSpecId[dim] != TQualifier::layoutNotSet)
+ return id == localSizeSpecId[dim];
+ localSizeSpecId[dim] = id;
+ return true;
+ }
+ int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; }
#ifdef GLSLANG_WEB
void output(TInfoSink&, bool tree) { }
@@ -484,7 +522,7 @@
bool getAutoMapBindings() const { return false; }
bool getAutoMapLocations() const { return false; }
int getNumPushConstants() const { return 0; }
- void addShaderRecordNVCount() { }
+ void addShaderRecordCount() { }
void addTaskNVCount() { }
void setUseVulkanMemoryModel() { }
bool usingVulkanMemoryModel() const { return false; }
@@ -492,6 +530,7 @@
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);
@@ -563,7 +602,7 @@
processes.addProcess("flatten-uniform-arrays");
}
bool getFlattenUniformArrays() const { return flattenUniformArrays; }
-#endif
+#endif
void setNoStorageFormat(bool b)
{
useUnknownFormat = b;
@@ -600,7 +639,7 @@
void setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { textureSamplerTransformMode = mode; }
int getNumPushConstants() const { return numPushConstants; }
- void addShaderRecordNVCount() { ++numShaderRecordNVBlocks; }
+ void addShaderRecordCount() { ++numShaderRecordBlocks; }
void addTaskNVCount() { ++numTaskNVBlocks; }
bool setInvocations(int i)
@@ -655,24 +694,6 @@
}
TInterlockOrdering getInterlockOrdering() const { return interlockOrdering; }
- bool setLocalSize(int dim, int size)
- {
- if (localSizeNotDefault[dim])
- return size == localSize[dim];
- localSizeNotDefault[dim] = true;
- localSize[dim] = size;
- return true;
- }
- unsigned int getLocalSize(int dim) const { return localSize[dim]; }
-
- bool setLocalSizeSpecId(int dim, int id)
- {
- if (localSizeSpecId[dim] != TQualifier::layoutNotSet)
- return id == localSizeSpecId[dim];
- localSizeSpecId[dim] = id;
- return true;
- }
- int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; }
void setXfbMode() { xfbMode = true; }
bool getXfbMode() const { return xfbMode; }
void setMultiStream() { multiStream = true; }
@@ -757,7 +778,7 @@
void setBinaryDoubleOutput() { binaryDoubleOutput = true; }
bool getBinaryDoubleOutput() { return binaryDoubleOutput; }
-#endif
+#endif // GLSLANG_WEB
#ifdef ENABLE_HLSL
void setHlslFunctionality1() { hlslFunctionality1 = true; }
@@ -786,6 +807,9 @@
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(); }
@@ -854,8 +878,8 @@
void mergeCallGraphs(TInfoSink&, TIntermediate&);
void mergeModes(TInfoSink&, TIntermediate&);
void mergeTrees(TInfoSink&, TIntermediate&);
- void seedIdMap(TMap<TString, int>& idMap, int& maxId);
- void remapIds(const TMap<TString, int>& idMap, int idShift, TIntermediate&);
+ void seedIdMap(TIdMaps& idMaps, int& maxId);
+ void remapIds(const TIdMaps& idMaps, int idShift, TIntermediate&);
void mergeBodies(TInfoSink&, TIntermSequence& globals, const TIntermSequence& unitGlobals);
void mergeLinkerObjects(TInfoSink&, TIntermSequence& linkerObjects, const TIntermSequence& unitLinkerObjects);
void mergeImplicitArraySizes(TType&, const TType&);
@@ -876,7 +900,6 @@
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<TBasicType, TBasicType> getConversionDestinatonType(TBasicType type0, TBasicType type1, TOperator op) const;
// JohnK: I think this function should go away.
@@ -886,19 +909,18 @@
#ifdef GLSLANG_WEB
bool extensionRequested(const char *extension) const { return false; }
#else
- bool extensionRequested(const char *extension) const {return requestedExtensions.find(extension) != requestedExtensions.end();}
+ bool extensionRequested(const char *extension) const {
+ auto it = requestedExtensions.find(extension);
+ if (it != requestedExtensions.end()) {
+ return (it->second == EBhDisable) ? false : true;
+ }
+ return false;
+ }
#endif
static const char* getResourceName(TResourceType);
const EShLanguage language; // stage, known at construction time
-#ifdef ENABLE_HLSL
-public:
- const char* const implicitThisName;
- const char* const implicitCounterName;
-protected:
- EShSource source; // source language, known a bit later
-#endif
std::string entryPointName;
std::string entryPointMangledName;
typedef std::list<TCall> TGraph;
@@ -908,7 +930,7 @@
int version; // source version
SpvVersion spvVersion;
TIntermNode* treeRoot;
- std::set<std::string> requestedExtensions; // cumulation of all enabled or required extensions; not connected to what subset of the shader used them
+ std::map<std::string, TExtensionBehavior> requestedExtensions; // cumulation of all enabled or required extensions; not connected to what subset of the shader used them
TBuiltInResource resources;
int numEntryPoints;
int numErrors;
@@ -918,7 +940,15 @@
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;
@@ -930,9 +960,6 @@
TVertexOrder vertexOrder;
TInterlockOrdering interlockOrdering;
bool pointMode;
- int localSize[3];
- bool localSizeNotDefault[3];
- int localSizeSpecId[3];
bool earlyFragmentTests;
bool postDepthCoverage;
TLayoutDepth depthLayout;
@@ -943,7 +970,7 @@
bool multiStream;
bool layoutOverrideCoverage;
bool geoPassthroughEXT;
- int numShaderRecordNVBlocks;
+ int numShaderRecordBlocks;
ComputeDerivativeMode computeDerivativeMode;
int primitives;
int numTaskNVBlocks;
diff --git a/glslang/MachineIndependent/parseConst.cpp b/glslang/MachineIndependent/parseConst.cpp
index 1a8e6d9..7c04743 100644
--- a/glslang/MachineIndependent/parseConst.cpp
+++ b/glslang/MachineIndependent/parseConst.cpp
@@ -165,17 +165,27 @@
}
}
} else {
- // matrix from vector
+ // matrix from vector or scalar
int count = 0;
const int startIndex = index;
int nodeComps = node->getType().computeNumComponents();
for (int i = startIndex; i < endIndex; i++) {
if (i >= instanceSize)
return;
- if (i == startIndex || (i - startIndex) % (matrixRows + 1) == 0 )
+ if (nodeComps == 1) {
+ // If there is a single scalar parameter to a matrix
+ // constructor, it is used to initialize all the
+ // components on the matrix's diagonal, with the
+ // remaining components initialized to 0.0.
+ if (i == startIndex || (i - startIndex) % (matrixRows + 1) == 0 )
+ leftUnionArray[i] = rightUnionArray[count];
+ else
+ leftUnionArray[i].setDConst(0.0);
+ } else {
+ // construct the matrix in column-major order, from
+ // the components provided, in order
leftUnionArray[i] = rightUnionArray[count];
- else
- leftUnionArray[i].setDConst(0.0);
+ }
index++;
diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp
old mode 100755
new mode 100644
index d7ff485..ec39356
--- a/glslang/MachineIndependent/preprocessor/Pp.cpp
+++ b/glslang/MachineIndependent/preprocessor/Pp.cpp
@@ -621,14 +621,25 @@
{
const TSourceLoc directiveLoc = ppToken->loc;
bool startWithLocalSearch = true; // to additionally include the extra "" paths
- int token = scanToken(ppToken);
+ int token;
- // handle <header-name>-style #include
- if (token == '<') {
+ // Find the first non-whitespace char after #include
+ int ch = getChar();
+ while (ch == ' ' || ch == '\t') {
+ ch = getChar();
+ }
+ if (ch == '<') {
+ // <header-name> style
startWithLocalSearch = false;
token = scanHeaderName(ppToken, '>');
+ } else if (ch == '"') {
+ // "header-name" style
+ token = scanHeaderName(ppToken, '"');
+ } else {
+ // unexpected, get the full token to generate the error
+ ungetChar();
+ token = scanToken(ppToken);
}
- // otherwise ppToken already has the header name and it was "header-name" style
if (token != PpAtomConstString) {
parseContext.ppError(directiveLoc, "must be followed by a header name", "#include", "");
@@ -711,7 +722,9 @@
const char* sourceName = nullptr; // Optional source file name.
bool lineErr = false;
bool fileErr = false;
+ disableEscapeSequences = true;
token = eval(token, MIN_PRECEDENCE, false, lineRes, lineErr, ppToken);
+ disableEscapeSequences = false;
if (! lineErr) {
lineToken = lineRes;
if (token == '\n')
@@ -754,7 +767,9 @@
// Handle #error
int TPpContext::CPPerror(TPpToken* ppToken)
{
+ disableEscapeSequences = true;
int token = scanToken(ppToken);
+ disableEscapeSequences = false;
std::string message;
TSourceLoc loc = ppToken->loc;
diff --git a/glslang/MachineIndependent/preprocessor/PpContext.cpp b/glslang/MachineIndependent/preprocessor/PpContext.cpp
old mode 100755
new mode 100644
index cc003a8..1363ce2
--- a/glslang/MachineIndependent/preprocessor/PpContext.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpContext.cpp
@@ -87,7 +87,8 @@
TPpContext::TPpContext(TParseContextBase& pc, const std::string& rootFileName, TShader::Includer& inclr) :
preamble(0), strings(0), previous_token('\n'), parseContext(pc), includer(inclr), inComment(false),
rootFileName(rootFileName),
- currentSourceFile(rootFileName)
+ currentSourceFile(rootFileName),
+ disableEscapeSequences(false)
{
ifdepth = 0;
for (elsetracker = 0; elsetracker < maxIfNesting; elsetracker++)
diff --git a/glslang/MachineIndependent/preprocessor/PpContext.h b/glslang/MachineIndependent/preprocessor/PpContext.h
index 8470e17..714b5ea 100644
--- a/glslang/MachineIndependent/preprocessor/PpContext.h
+++ b/glslang/MachineIndependent/preprocessor/PpContext.h
@@ -105,13 +105,13 @@
}
// Used for comparing macro definitions, so checks what is relevant for that.
- bool operator==(const TPpToken& right)
+ bool operator==(const TPpToken& right) const
{
return space == right.space &&
ival == right.ival && dval == right.dval && i64val == right.i64val &&
strncmp(name, right.name, MaxTokenLength) == 0;
}
- bool operator!=(const TPpToken& right) { return ! operator==(right); }
+ bool operator!=(const TPpToken& right) const { return ! operator==(right); }
TSourceLoc loc;
// True if a space (for white space or a removed comment) should also be
@@ -695,6 +695,7 @@
std::string currentSourceFile;
std::istringstream strtodStream;
+ bool disableEscapeSequences;
};
} // end namespace glslang
diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
old mode 100755
new mode 100644
index c293af3..e0f44f8
--- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
@@ -1026,12 +1026,80 @@
case '\'':
return pp->characterLiteral(ppToken);
case '"':
- // TODO: If this gets enhanced to handle escape sequences, or
- // anything that is different than what #include needs, then
- // #include needs to use scanHeaderName() for this.
+ // #include uses scanHeaderName() to ignore these escape sequences.
ch = getch();
while (ch != '"' && ch != '\n' && ch != EndOfInput) {
if (len < MaxTokenLength) {
+ if (ch == '\\' && !pp->disableEscapeSequences) {
+ int nextCh = getch();
+ switch (nextCh) {
+ case '\'': ch = 0x27; break;
+ case '"': ch = 0x22; break;
+ case '?': ch = 0x3f; break;
+ case '\\': ch = 0x5c; break;
+ case 'a': ch = 0x07; break;
+ case 'b': ch = 0x08; break;
+ case 'f': ch = 0x0c; break;
+ case 'n': ch = 0x0a; break;
+ case 'r': ch = 0x0d; break;
+ case 't': ch = 0x09; break;
+ case 'v': ch = 0x0b; break;
+ case 'x':
+ // Hex value, arbitrary number of characters. Terminated by the first
+ // non-hex digit
+ {
+ int numDigits = 0;
+ ch = 0;
+ while (true) {
+ nextCh = getch();
+ if (nextCh >= '0' && nextCh <= '9')
+ nextCh -= '0';
+ else if (nextCh >= 'A' && nextCh <= 'F')
+ nextCh -= 'A' - 10;
+ else if (nextCh >= 'a' && nextCh <= 'f')
+ nextCh -= 'a' - 10;
+ else {
+ ungetch();
+ break;
+ }
+ numDigits++;
+ ch = ch * 0x10 + nextCh;
+ }
+ if (numDigits == 0) {
+ pp->parseContext.ppError(ppToken->loc, "Expected hex value in escape sequence", "string", "");
+ }
+ break;
+ }
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ // Octal value, up to three octal digits
+ {
+ int numDigits = 1;
+ ch = nextCh - '0';
+ while (numDigits < 3) {
+ nextCh = getch();
+ if (nextCh >= '0' && nextCh <= '7')
+ nextCh -= '0';
+ else {
+ ungetch();
+ break;
+ }
+ numDigits++;
+ ch = ch * 8 + nextCh;
+ }
+ break;
+ }
+ default:
+ pp->parseContext.ppError(ppToken->loc, "Invalid escape sequence", "string", "");
+ break;
+ }
+ }
ppToken->name[len] = (char)ch;
len++;
ch = getch();
@@ -1120,10 +1188,12 @@
continue;
break;
case PpAtomConstString:
+ // HLSL allows string literals.
+ // GLSL allows string literals with GL_EXT_debug_printf.
if (ifdepth == 0 && parseContext.intermediate.getSource() != EShSourceHlsl) {
- // HLSL allows string literals.
- parseContext.ppError(ppToken.loc, "string literals not supported", "\"\"", "");
- continue;
+ parseContext.requireExtensions(ppToken.loc, 1, &E_GL_EXT_debug_printf, "string literal");
+ if (!parseContext.extensionTurnedOn(E_GL_EXT_debug_printf))
+ continue;
}
break;
case '\'':
diff --git a/glslang/MachineIndependent/propagateNoContraction.cpp b/glslang/MachineIndependent/propagateNoContraction.cpp
index 83a3230..9def592 100644
--- a/glslang/MachineIndependent/propagateNoContraction.cpp
+++ b/glslang/MachineIndependent/propagateNoContraction.cpp
@@ -867,4 +867,4 @@
}
};
-#endif // GLSLANG_WEB
\ No newline at end of file
+#endif // GLSLANG_WEB
diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp
index 9f1089d..2876933 100644
--- a/glslang/MachineIndependent/reflection.cpp
+++ b/glslang/MachineIndependent/reflection.cpp
@@ -137,7 +137,7 @@
if (it == ioMapper.end()) {
// seperate pipe i/o params from uniforms and blocks
// in is only for input in first stage as out is only for last stage. check traverse in call stack.
- ioMapper[name.c_str()] = ioItems.size();
+ ioMapper[name.c_str()] = static_cast<int>(ioItems.size());
ioItems.push_back(
TObjectReflection(name.c_str(), type, 0, mapToGlType(type), mapToGlArraySize(type), 0));
EShLanguageMask& stages = ioItems.back().stages;
@@ -1188,7 +1188,7 @@
for (int dim=0; dim<3; ++dim)
if (getLocalSize(dim) > 1)
- printf("Local size %s: %d\n", axis[dim], getLocalSize(dim));
+ printf("Local size %s: %u\n", axis[dim], getLocalSize(dim));
printf("\n");
}
diff --git a/glslang/MachineIndependent/reflection.h b/glslang/MachineIndependent/reflection.h
index efdc893..0c33de4 100644
--- a/glslang/MachineIndependent/reflection.h
+++ b/glslang/MachineIndependent/reflection.h
@@ -220,4 +220,4 @@
#endif // _REFLECTION_INCLUDED
-#endif // GLSLANG_WEB
\ No newline at end of file
+#endif // GLSLANG_WEB
diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt
index e652f45..9994314 100644
--- a/glslang/OSDependent/Unix/CMakeLists.txt
+++ b/glslang/OSDependent/Unix/CMakeLists.txt
@@ -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 --git a/glslang/OSDependent/Web/CMakeLists.txt b/glslang/OSDependent/Web/CMakeLists.txt
index e8238c3..697b0b7 100644
--- a/glslang/OSDependent/Web/CMakeLists.txt
+++ b/glslang/OSDependent/Web/CMakeLists.txt
@@ -1,24 +1,38 @@
-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")
+if(ENABLE_GLSLANG_JS)
+ add_executable(glslang.js "glslang.js.cpp")
+ glslang_set_link_args(glslang.js)
+ target_link_libraries(glslang.js glslang SPIRV)
- 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()
+ # Link library names that start with "-" are treated as link flags.
+ # "-Os" should be OK in MSVC; don't use /Os because CMake won't
+ # treat it as a link flag.
+ target_link_libraries(glslang.js "-Os")
- 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)
+ 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_libraries(glslang.js "--llvm-lto 1")
+ target_link_libraries(glslang.js "--closure 1")
+ target_link_libraries(glslang.js "-s MODULARIZE=1")
+ target_link_libraries(glslang.js "-s ALLOW_MEMORY_GROWTH=1")
+ target_link_libraries(glslang.js "-s FILESYSTEM=0")
+
+ if(ENABLE_EMSCRIPTEN_SINGLE_FILE)
+ target_link_libraries(glslang.js "-s SINGLE_FILE=1")
+ endif(ENABLE_EMSCRIPTEN_SINGLE_FILE)
+
+ if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE)
+ target_link_libraries(glslang.js "-s ENVIRONMENT=node -s BINARYEN_ASYNC_COMPILATION=0")
+ else()
+ target_link_libraries(glslang.js "-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)
+endif(ENABLE_GLSLANG_JS)
diff --git a/glslang/OSDependent/Web/glslang.js.cpp b/glslang/OSDependent/Web/glslang.js.cpp
index 6cb93fe..f2306a6 100644
--- a/glslang/OSDependent/Web/glslang.js.cpp
+++ b/glslang/OSDependent/Web/glslang.js.cpp
@@ -141,6 +141,7 @@
/* .maxTaskWorkGroupSizeY_NV = */ 1,
/* .maxTaskWorkGroupSizeZ_NV = */ 1,
/* .maxMeshViewCountNV = */ 4,
+ /* .maxDualSourceDrawBuffersEXT = */ 1,
/* .limits = */ {
/* .nonInductiveForLoops = */ 1,
@@ -176,7 +177,12 @@
* 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)
+void* convert_glsl_to_spirv(const char* glsl,
+ int stage_int,
+ bool gen_debug,
+ glslang::EShTargetLanguageVersion spirv_version,
+ uint32_t** spirv,
+ size_t* spirv_len)
{
if (glsl == nullptr) {
fprintf(stderr, "Input pointer null\n");
@@ -194,6 +200,18 @@
return nullptr;
}
EShLanguage stage = static_cast<EShLanguage>(stage_int);
+ switch (spirv_version) {
+ case glslang::EShTargetSpv_1_0:
+ case glslang::EShTargetSpv_1_1:
+ case glslang::EShTargetSpv_1_2:
+ case glslang::EShTargetSpv_1_3:
+ case glslang::EShTargetSpv_1_4:
+ case glslang::EShTargetSpv_1_5:
+ break;
+ default:
+ fprintf(stderr, "Invalid SPIR-V version number\n");
+ return nullptr;
+ }
if (!initialized) {
glslang::InitializeProcess();
@@ -203,8 +221,8 @@
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);
+ shader.setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_0);
+ shader.setEnvTarget(glslang::EShTargetSpv, spirv_version);
if (!shader.parse(&DefaultTBuiltInResource, 100, true, EShMsgDefault)) {
fprintf(stderr, "Parse failed\n");
fprintf(stderr, "%s\n", shader.getInfoLog());
@@ -260,7 +278,7 @@
uint32_t* output;
size_t output_len;
- void* id = convert_glsl_to_spirv(input, 4, false, &output, &output_len);
+ void* id = convert_glsl_to_spirv(input, 4, false, glslang::EShTargetSpv_1_0, &output, &output_len);
assert(output != nullptr);
assert(output_len != 0);
destroy_output_buffer(id);
diff --git a/glslang/OSDependent/Web/glslang.pre.js b/glslang/OSDependent/Web/glslang.pre.js
index dd7100b..46a5695 100644
--- a/glslang/OSDependent/Web/glslang.pre.js
+++ b/glslang/OSDependent/Web/glslang.pre.js
@@ -1,23 +1,34 @@
-Module['compileGLSLZeroCopy'] = function(glsl, shader_stage, gen_debug) {
+Module['compileGLSLZeroCopy'] = function(glsl, shader_stage, gen_debug, spirv_version) {
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 shader_stage_int; // EShLanguage
+ switch (shader_stage) {
+ case 'vertex': shader_stage_int = 0; break;
+ case 'fragment': shader_stage_int = 4; break;
+ case 'compute': shader_stage_int = 5; break;
+ default:
+ throw new Error("shader_stage must be 'vertex', 'fragment', or 'compute'.");
+ }
+
+ spirv_version = spirv_version || '1.0';
+ var spirv_version_int; // EShTargetLanguageVersion
+ switch (spirv_version) {
+ case '1.0': spirv_version_int = (1 << 16) | (0 << 8); break;
+ case '1.1': spirv_version_int = (1 << 16) | (1 << 8); break;
+ case '1.2': spirv_version_int = (1 << 16) | (2 << 8); break;
+ case '1.3': spirv_version_int = (1 << 16) | (3 << 8); break;
+ case '1.4': spirv_version_int = (1 << 16) | (4 << 8); break;
+ case '1.5': spirv_version_int = (1 << 16) | (5 << 8); break;
+ default:
+ throw new Error("spirv_version must be '1.0' ~ '1.5'.");
}
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]);
+ ['string', 'number', 'boolean', 'number', 'number', 'number'],
+ [glsl, shader_stage_int, gen_debug, spirv_version_int, p_output, p_output_len]);
var output = getValue(p_output, 'i32');
var output_len = getValue(p_output_len, 'i32');
Module['_free'](p_output);
@@ -29,17 +40,17 @@
var ret = {};
var outputIndexU32 = output / 4;
- ret.data = Module['HEAPU32'].subarray(outputIndexU32, outputIndexU32 + output_len);
- ret.free = function() {
+ ret['data'] = Module['HEAPU32'].subarray(outputIndexU32, outputIndexU32 + output_len);
+ ret['free'] = function() {
Module['_destroy_output_buffer'](id);
};
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();
+Module['compileGLSL'] = function(glsl, shader_stage, gen_debug, spirv_version) {
+ var compiled = Module['compileGLSLZeroCopy'](glsl, shader_stage, gen_debug, spirv_version);
+ var ret = compiled['data'].slice()
+ compiled['free']();
return ret;
};
diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt
index f257418..c050ef6 100644
--- a/glslang/OSDependent/Windows/CMakeLists.txt
+++ b/glslang/OSDependent/Windows/CMakeLists.txt
@@ -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 --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h
index bb06acc..acb2a07 100755
--- a/glslang/Public/ShaderLang.h
+++ b/glslang/Public/ShaderLang.h
@@ -92,15 +92,21 @@
EShLangGeometry,
EShLangFragment,
EShLangCompute,
- EShLangRayGenNV,
- EShLangIntersectNV,
- EShLangAnyHitNV,
- EShLangClosestHitNV,
- EShLangMissNV,
- EShLangCallableNV,
+ EShLangRayGen,
+ EShLangRayGenNV = EShLangRayGen,
+ EShLangIntersect,
+ EShLangIntersectNV = EShLangIntersect,
+ EShLangAnyHit,
+ EShLangAnyHitNV = EShLangAnyHit,
+ EShLangClosestHit,
+ EShLangClosestHitNV = EShLangClosestHit,
+ EShLangMiss,
+ EShLangMissNV = EShLangMiss,
+ EShLangCallable,
+ EShLangCallableNV = EShLangCallable,
EShLangTaskNV,
EShLangMeshNV,
- EShLangCount,
+ LAST_ELEMENT_MARKER(EShLangCount),
} EShLanguage; // would be better as stage, but this is ancient now
typedef enum {
@@ -110,14 +116,21 @@
EShLangGeometryMask = (1 << EShLangGeometry),
EShLangFragmentMask = (1 << EShLangFragment),
EShLangComputeMask = (1 << EShLangCompute),
- EShLangRayGenNVMask = (1 << EShLangRayGenNV),
- EShLangIntersectNVMask = (1 << EShLangIntersectNV),
- EShLangAnyHitNVMask = (1 << EShLangAnyHitNV),
- EShLangClosestHitNVMask = (1 << EShLangClosestHitNV),
- EShLangMissNVMask = (1 << EShLangMissNV),
- EShLangCallableNVMask = (1 << EShLangCallableNV),
+ EShLangRayGenMask = (1 << EShLangRayGen),
+ EShLangRayGenNVMask = EShLangRayGenMask,
+ EShLangIntersectMask = (1 << EShLangIntersect),
+ EShLangIntersectNVMask = EShLangIntersectMask,
+ EShLangAnyHitMask = (1 << EShLangAnyHit),
+ EShLangAnyHitNVMask = EShLangAnyHitMask,
+ EShLangClosestHitMask = (1 << EShLangClosestHit),
+ EShLangClosestHitNVMask = EShLangClosestHitMask,
+ EShLangMissMask = (1 << EShLangMiss),
+ EShLangMissNVMask = EShLangMissMask,
+ EShLangCallableMask = (1 << EShLangCallable),
+ EShLangCallableNVMask = EShLangCallableMask,
EShLangTaskNVMask = (1 << EShLangTaskNV),
EShLangMeshNVMask = (1 << EShLangMeshNV),
+ LAST_ELEMENT_MARKER(EShLanguageMaskCount),
} EShLanguageMask;
namespace glslang {
@@ -128,24 +141,29 @@
EShSourceNone,
EShSourceGlsl, // GLSL, includes ESSL (OpenGL ES GLSL)
EShSourceHlsl, // HLSL
+ LAST_ELEMENT_MARKER(EShSourceCount),
} EShSource; // if EShLanguage were EShStage, this could be EShLanguage instead
typedef enum {
EShClientNone, // use when there is no client, e.g. for validation
EShClientVulkan,
EShClientOpenGL,
+ LAST_ELEMENT_MARKER(EShClientCount),
} EShClient;
typedef enum {
EShTargetNone,
EShTargetSpv, // SPIR-V (preferred spelling)
EshTargetSpv = EShTargetSpv, // legacy spelling
+ LAST_ELEMENT_MARKER(EShTargetCount),
} EShTargetLanguage;
typedef enum {
EShTargetVulkan_1_0 = (1 << 22), // Vulkan 1.0
EShTargetVulkan_1_1 = (1 << 22) | (1 << 12), // Vulkan 1.1
+ EShTargetVulkan_1_2 = (1 << 22) | (2 << 12), // Vulkan 1.2
EShTargetOpenGL_450 = 450, // OpenGL
+ LAST_ELEMENT_MARKER(EShTargetClientVersionCount),
} EShTargetClientVersion;
typedef EShTargetClientVersion EshTargetClientVersion;
@@ -157,6 +175,7 @@
EShTargetSpv_1_3 = (1 << 16) | (3 << 8), // SPIR-V 1.3
EShTargetSpv_1_4 = (1 << 16) | (4 << 8), // SPIR-V 1.4
EShTargetSpv_1_5 = (1 << 16) | (5 << 8), // SPIR-V 1.5
+ LAST_ELEMENT_MARKER(EShTargetLanguageVersionCount),
} EShTargetLanguageVersion;
struct TInputLanguage {
@@ -206,6 +225,7 @@
EShOptNone,
EShOptSimple, // Optimizations that can be done quickly
EShOptFull, // Optimizations that will take more time
+ LAST_ELEMENT_MARKER(EshOptLevelCount),
} EShOptimizationLevel;
//
@@ -214,6 +234,7 @@
typedef enum {
EShTexSampTransKeep, // keep textures and samplers as is (default)
EShTexSampTransUpgradeTextureRemoveSampler, // change texture w/o embeded sampler into sampled texture and throw away all samplers
+ LAST_ELEMENT_MARKER(EShTexSampTransCount),
} EShTextureSamplerTransformMode;
//
@@ -236,6 +257,7 @@
EShMsgHlslLegalization = (1 << 12), // enable HLSL Legalization messages
EShMsgHlslDX9Compatible = (1 << 13), // enable HLSL DX9 compatible mode (right now only for samplers)
EShMsgBuiltinSymbolTable = (1 << 14), // print the builtin symbol table
+ LAST_ELEMENT_MARKER(EShMsgCount),
};
//
@@ -249,6 +271,7 @@
EShReflectionSeparateBuffers = (1 << 3), // buffer variables and buffer blocks are reflected separately
EShReflectionAllBlockVariables = (1 << 4), // reflect all variables in blocks, even if they are inactive
EShReflectionUnwrapIOBlocks = (1 << 5), // unwrap input/output blocks the same as with uniform blocks
+ LAST_ELEMENT_MARKER(EShReflectionCount),
} EShReflectionOptions;
//
@@ -394,6 +417,8 @@
// - optionally call setEnv*(), see below for more detail
// - optionally use setPreamble() to set a special shader string that will be
// processed before all others but won't affect the validity of #version
+// - optionally call addProcesses() for each setting/transform,
+// see comment for class TProcesses
// - call parse(): source language and target environment must be selected
// either by correct setting of EShMessages sent to parse(), or by
// explicitly calling setEnv*()
@@ -487,6 +512,8 @@
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; }
@@ -626,11 +653,11 @@
// stringNames is the optional names for all the strings. If stringNames
// is null, then none of the strings has name. If a certain element in
// stringNames is null, then the corresponding string does not have name.
- const char* const* strings;
+ const char* const* strings; // explicit code to compile, see previous comment
const int* lengths;
const char* const* stringNames;
- const char* preamble;
- int numStrings;
+ int numStrings; // size of the above arrays
+ const char* preamble; // string of implicit code to compile before the explicitly provided code
// a function in the source string can be renamed FROM this TO the name given in setEntryPoint.
std::string sourceEntryPointName;
@@ -773,7 +800,7 @@
TProgram();
virtual ~TProgram();
void addShader(TShader* shader) { stages[shader->stage].push_back(shader); }
-
+ std::list<TShader*>& getShaders(EShLanguage stage) { return stages[stage]; }
// Link Validation interface
bool link(EShMessages);
const char* getInfoLog();
diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt
index f678cb6..dc53f5c 100644
--- a/gtests/CMakeLists.txt
+++ b/gtests/CMakeLists.txt
@@ -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 --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp
index 59c687d..f483536 100755
--- a/gtests/Hlsl.FromFile.cpp
+++ b/gtests/Hlsl.FromFile.cpp
@@ -350,6 +350,7 @@
{"hlsl.semicolons.frag", "main"},
{"hlsl.shapeConv.frag", "main"},
{"hlsl.shapeConvRet.frag", "main"},
+ {"hlsl.singleArgIntPromo.vert", "main"},
{"hlsl.self_cast.frag", "main"},
{"hlsl.snorm.uav.comp", "main"},
{"hlsl.specConstant.frag", "main"},
diff --git a/gtests/Link.FromFile.Vk.cpp b/gtests/Link.FromFile.Vk.cpp
old mode 100644
new mode 100755
index fe96bd9..a43edcf
--- a/gtests/Link.FromFile.Vk.cpp
+++ b/gtests/Link.FromFile.Vk.cpp
@@ -50,6 +50,7 @@
const size_t fileCount = fileNames.size();
const EShMessages controls = DeriveOptions(Source::GLSL, Semantics::Vulkan, Target::AST);
GlslangResult result;
+ result.validationResult = false;
// Compile each input shader file.
bool success = true;
@@ -108,6 +109,16 @@
::testing::ValuesIn(std::vector<std::vector<std::string>>({
{"link1.vk.frag", "link2.vk.frag"},
{"spv.unit1.frag", "spv.unit2.frag", "spv.unit3.frag"},
+ {"link.vk.matchingPC.0.0.frag", "link.vk.matchingPC.0.1.frag",
+ "link.vk.matchingPC.0.2.frag"},
+ {"link.vk.differentPC.0.0.frag", "link.vk.differentPC.0.1.frag",
+ "link.vk.differentPC.0.2.frag"},
+ {"link.vk.differentPC.1.0.frag", "link.vk.differentPC.1.1.frag",
+ "link.vk.differentPC.1.2.frag"},
+ {"link.vk.pcNamingValid.0.0.vert", "link.vk.pcNamingValid.0.1.vert"},
+ {"link.vk.pcNamingInvalid.0.0.vert", "link.vk.pcNamingInvalid.0.1.vert"},
+ {"link.vk.multiBlocksValid.0.0.vert", "link.vk.multiBlocksValid.0.1.vert"},
+ {"link.vk.multiBlocksValid.1.0.geom", "link.vk.multiBlocksValid.1.1.geom"},
}))
);
// clang-format on
diff --git a/gtests/Link.FromFile.cpp b/gtests/Link.FromFile.cpp
old mode 100644
new mode 100755
index abc33a9..dc9bb76
--- a/gtests/Link.FromFile.cpp
+++ b/gtests/Link.FromFile.cpp
@@ -100,7 +100,11 @@
{"150.tesc", "150.tese", "400.tesc", "400.tese", "410.tesc", "420.tesc", "420.tese"},
{"max_vertices_0.geom"},
{"es-link1.frag", "es-link2.frag"},
- {"missingBodies.vert"}
+ {"missingBodies.vert"},
+ {"link.multiAnonBlocksInvalid.0.0.vert", "link.multiAnonBlocksInvalid.0.1.vert"},
+ {"link.multiAnonBlocksValid.0.0.vert", "link.multiAnonBlocksValid.0.1.vert"},
+ {"link.multiBlocksInvalid.0.0.vert", "link.multiBlocksInvalid.0.1.vert"},
+ {"link.multiBlocksValid.1.0.vert", "link.multiBlocksValid.1.1.vert"},
}))
);
// clang-format on
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index d0c0751..1d061fb 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -1,5 +1,6 @@
//
// Copyright (C) 2016 Google, Inc.
+// Copyright (C) 2019 ARM Limited.
//
// All rights reserved.
//
@@ -63,6 +64,7 @@
}
using CompileVulkanToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
+using CompileVulkanToSpirvDeadCodeElimTest = GlslangTest<::testing::TestWithParam<std::string>>;
using CompileVulkanToDebugSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
using CompileVulkan1_1ToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
using CompileToSpirv14Test = GlslangTest<::testing::TestWithParam<std::string>>;
@@ -85,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)
@@ -96,6 +105,7 @@
"/baseResults/", false, true);
}
+
TEST_P(CompileVulkan1_1ToSpirvTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
@@ -220,6 +230,14 @@
"spv.while-continue-break.vert",
"spv.while-simple.vert",
// vulkan-specific tests
+ "rayQuery.rgen",
+ "rayQuery-no-cse.rgen",
+ "rayQuery-initialize.rgen",
+ "rayQuery-allOps.rgen",
+ "rayQuery-allOps.Error.rgen",
+ "rayQuery-committed.Error.rgen",
+ "rayQuery-allOps.comp",
+ "rayQuery-allOps.frag",
"spv.set.vert",
"spv.double.comp",
"spv.100ops.frag",
@@ -255,12 +273,14 @@
"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",
"spv.always-discard2.frag",
"spv.arbPostDepthCoverage.frag",
"spv.arbPostDepthCoverage_Error.frag",
+ "spv.atomicCounter.comp",
"spv.bitCast.frag",
"spv.bool.vert",
"spv.boolInBlock.frag",
@@ -299,6 +319,8 @@
"spv.dataOut.frag",
"spv.dataOutIndirect.frag",
"spv.dataOutIndirect.vert",
+ "spv.debugPrintf.frag",
+ "spv.debugPrintf_Error.frag",
"spv.demoteDisabled.frag",
"spv.deepRvalue.frag",
"spv.depthOut.frag",
@@ -307,6 +329,20 @@
"spv.earlyReturnDiscard.frag",
"spv.extPostDepthCoverage.frag",
"spv.extPostDepthCoverage_Error.frag",
+ "spv.ext.AnyHitShader.rahit",
+ "spv.ext.AnyHitShader_Errors.rahit",
+ "spv.ext.ClosestHitShader.rchit",
+ "spv.ext.ClosestHitShader_Errors.rchit",
+ "spv.ext.IntersectShader.rint",
+ "spv.ext.IntersectShader_Errors.rint",
+ "spv.ext.MissShader.rmiss",
+ "spv.ext.MissShader_Errors.rmiss",
+ "spv.ext.RayCallable.rcall",
+ "spv.ext.RayCallable_Errors.rcall",
+ "spv.ext.RayConstants.rgen",
+ "spv.ext.RayGenShader.rgen",
+ "spv.ext.RayGenShader11.rgen",
+ "spv.ext.RayGenShaderArray.rgen",
"spv.float16convertonlyarith.comp",
"spv.float16convertonlystorage.comp",
"spv.flowControl.frag",
@@ -345,6 +381,9 @@
"spv.nonSquare.vert",
"spv.nonuniform.frag",
"spv.nonuniform2.frag",
+ "spv.nonuniform3.frag",
+ "spv.nonuniform4.frag",
+ "spv.nonuniform5.frag",
"spv.noWorkgroup.comp",
"spv.offsets.frag",
"spv.Operations.frag",
@@ -404,6 +443,7 @@
"spv.storageBuffer.vert",
"spv.precise.tese",
"spv.precise.tesc",
+ "spv.volatileAtomic.comp",
"spv.vulkan100.subgroupArithmetic.comp",
"spv.vulkan100.subgroupPartitioned.comp",
"spv.xfb.vert",
@@ -416,6 +456,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<std::string>({
+ "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,
@@ -541,6 +598,7 @@
"spv.glFragColor.frag",
"spv.rankShift.comp",
"spv.specConst.vert",
+ "spv.specTexture.frag",
"spv.OVR_multiview.vert",
"spv.xfbOffsetOnBlockMembersAssignment.vert",
"spv.xfbOffsetOnStructMembersAssignment.vert",
diff --git a/gtests/TestFixture.cpp b/gtests/TestFixture.cpp
index baf4d16..ced6fcc 100644
--- a/gtests/TestFixture.cpp
+++ b/gtests/TestFixture.cpp
@@ -61,17 +61,17 @@
} else if (stage == "comp") {
return EShLangCompute;
} else if (stage == "rgen") {
- return EShLangRayGenNV;
+ return EShLangRayGen;
} else if (stage == "rint") {
- return EShLangIntersectNV;
+ return EShLangIntersect;
} else if (stage == "rahit") {
- return EShLangAnyHitNV;
+ return EShLangAnyHit;
} else if (stage == "rchit") {
- return EShLangClosestHitNV;
+ return EShLangClosestHit;
} else if (stage == "rmiss") {
- return EShLangMissNV;
+ return EShLangMiss;
} else if (stage == "rcall") {
- return EShLangCallableNV;
+ return EShLangCallable;
} else if (stage == "task") {
return EShLangTaskNV;
} else if (stage == "mesh") {
diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h
index 61a8f23..8d2ebd9 100755
--- a/gtests/TestFixture.h
+++ b/gtests/TestFixture.h
@@ -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,
@@ -693,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 --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt
index 7436dde..ae0d4d4 100644
--- a/hlsl/CMakeLists.txt
+++ b/hlsl/CMakeLists.txt
@@ -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 --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp
index 8ab1a90..47ced29 100644
--- a/hlsl/hlslGrammar.cpp
+++ b/hlsl/hlslGrammar.cpp
@@ -2516,6 +2516,8 @@
//
bool HlslGrammar::acceptFunctionParameters(TFunction& function)
{
+ parseContext.beginParameterParsing(function);
+
// LEFT_PAREN
if (! acceptTokenClass(EHTokLeftParen))
return false;
diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp
index be665ac..2dc173f 100755
--- a/hlsl/hlslParseHelper.cpp
+++ b/hlsl/hlslParseHelper.cpp
@@ -69,7 +69,8 @@
clipDistanceOutput(nullptr),
cullDistanceOutput(nullptr),
clipDistanceInput(nullptr),
- cullDistanceInput(nullptr)
+ cullDistanceInput(nullptr),
+ parsingEntrypointParameters(false)
{
globalUniformDefaults.clear();
globalUniformDefaults.layoutMatrix = ElmRowMajor;
@@ -756,9 +757,6 @@
// indexStructBufferContent returns nullptr if it isn't a structuredbuffer (SSBO).
TIntermTyped* sbArray = indexStructBufferContent(loc, base);
if (sbArray != nullptr) {
- if (sbArray == nullptr)
- return nullptr;
-
// Now we'll apply the [] index to that array
const TOperator idxOp = (index->getQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect;
@@ -2049,7 +2047,7 @@
};
// if we aren't in the entry point, fix the IO as such and exit
- if (userFunction.getName().compare(intermediate.getEntryPointName().c_str()) != 0) {
+ if (! isEntrypointName(userFunction.getName())) {
remapNonEntryPointIO(userFunction);
return nullptr;
}
@@ -7571,7 +7569,7 @@
if (args->getAsAggregate()) {
// Handle aggregates: put all args into the new function call
- for (int arg=0; arg<int(args->getAsAggregate()->getSequence().size()); ++arg) {
+ for (int arg = 0; arg < int(args->getAsAggregate()->getSequence().size()); ++arg) {
// TODO: But for constness, we could avoid the new & shallowCopy, and use the pointer directly.
TParameter param = { 0, new TType, nullptr };
param.type->shallowCopy(args->getAsAggregate()->getSequence()[arg]->getAsTyped()->getType());
@@ -8884,6 +8882,10 @@
//
bool HlslParseContext::handleInputGeometry(const TSourceLoc& loc, const TLayoutGeometry& geometry)
{
+ // these can be declared on non-entry-points, in which case they lose their meaning
+ if (! parsingEntrypointParameters)
+ return true;
+
switch (geometry) {
case ElgPoints: // fall through
case ElgLines: // ...
@@ -8914,6 +8916,10 @@
if (language != EShLangGeometry)
return true;
+ // these can be declared on non-entry-points, in which case they lose their meaning
+ if (! parsingEntrypointParameters)
+ return true;
+
switch (geometry) {
case ElgPoints:
case ElgLineStrip:
diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h
index 822de89..6f41661 100644
--- a/hlsl/hlslParseHelper.h
+++ b/hlsl/hlslParseHelper.h
@@ -183,6 +183,11 @@
void getFullNamespaceName(TString*&) const;
void addScopeMangler(TString&);
+ void beginParameterParsing(TFunction& function)
+ {
+ parsingEntrypointParameters = isEntrypointName(function.getName());
+ }
+
void pushSwitchSequence(TIntermSequence* sequence) { switchSequenceStack.push_back(sequence); }
void popSwitchSequence() { switchSequenceStack.pop_back(); }
@@ -241,6 +246,7 @@
TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer, TIntermTyped* scalarInit);
bool isScalarConstructor(const TIntermNode*);
TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage);
+ bool isEntrypointName(const TString& name) { return name.compare(intermediate.getEntryPointName().c_str()) == 0; }
// Return true if this node requires L-value conversion (e.g, to an imageStore).
bool shouldConvertLValue(const TIntermNode*) const;
@@ -494,6 +500,7 @@
};
TMap<int, tShadowTextureSymbols*> textureShadowVariant;
+ bool parsingEntrypointParameters;
};
// This is the prefix we use for built-in methods to avoid namespace collisions with
diff --git a/known_good.json b/known_good.json
index 6a13907..9cc8c44 100644
--- a/known_good.json
+++ b/known_good.json
@@ -5,14 +5,14 @@
"site" : "github",
"subrepo" : "KhronosGroup/SPIRV-Tools",
"subdir" : "External/spirv-tools",
- "commit" : "bbb29870b510f83f99994358179c9ea6838c3100"
+ "commit" : "fd8e130510a6b002b28eee5885a9505040a9bdc9"
},
{
"name" : "spirv-tools/external/spirv-headers",
"site" : "github",
"subrepo" : "KhronosGroup/SPIRV-Headers",
"subdir" : "External/spirv-tools/external/spirv-headers",
- "commit" : "601d738723ac381741311c6c98c36d6170be14a2"
+ "commit" : "f8bf11a0253a32375c32cad92c841237b96696c0"
}
]
}
diff --git a/kokoro/linux-clang-release-bazel/build.sh b/kokoro/linux-clang-release-bazel/build.sh
new file mode 100644
index 0000000..f73162f
--- /dev/null
+++ b/kokoro/linux-clang-release-bazel/build.sh
@@ -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 --git a/kokoro/linux-clang-release-bazel/continuous.cfg b/kokoro/linux-clang-release-bazel/continuous.cfg
new file mode 100644
index 0000000..767556d
--- /dev/null
+++ b/kokoro/linux-clang-release-bazel/continuous.cfg
@@ -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 --git a/kokoro/linux-clang-release-bazel/presubmit.cfg b/kokoro/linux-clang-release-bazel/presubmit.cfg
new file mode 100644
index 0000000..669491f
--- /dev/null
+++ b/kokoro/linux-clang-release-bazel/presubmit.cfg
@@ -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 --git a/kokoro/macos-clang-release-bazel/build.sh b/kokoro/macos-clang-release-bazel/build.sh
new file mode 100644
index 0000000..cc51fad
--- /dev/null
+++ b/kokoro/macos-clang-release-bazel/build.sh
@@ -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 --git a/kokoro/macos-clang-release-bazel/continuous.cfg b/kokoro/macos-clang-release-bazel/continuous.cfg
new file mode 100644
index 0000000..f198079
--- /dev/null
+++ b/kokoro/macos-clang-release-bazel/continuous.cfg
@@ -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 --git a/kokoro/macos-clang-release-bazel/presubmit.cfg b/kokoro/macos-clang-release-bazel/presubmit.cfg
new file mode 100644
index 0000000..daa30be
--- /dev/null
+++ b/kokoro/macos-clang-release-bazel/presubmit.cfg
@@ -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 --git a/kokoro/windows-msvc-2015-release-bazel/build.bat b/kokoro/windows-msvc-2015-release-bazel/build.bat
new file mode 100644
index 0000000..1a1557c
--- /dev/null
+++ b/kokoro/windows-msvc-2015-release-bazel/build.bat
@@ -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 --git a/kokoro/windows-msvc-2015-release-bazel/continuous.cfg b/kokoro/windows-msvc-2015-release-bazel/continuous.cfg
new file mode 100644
index 0000000..554d29d
--- /dev/null
+++ b/kokoro/windows-msvc-2015-release-bazel/continuous.cfg
@@ -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 --git a/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg b/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg
new file mode 100644
index 0000000..4980bb6
--- /dev/null
+++ b/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg
@@ -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"