Merge remote-tracking branch 'upstream/sdk-1.3.231' into main
Bug: 112606
Change-Id: Icbf28c5b65557e9087e32c85b2b5a4aa55ab484e
diff --git a/.appveyor.yml b/.appveyor.yml
index bf8c572..b08c47b 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -98,7 +98,7 @@
auth_token:
secure: YglcSYdl0TylEa59H4K6lylBEDr586NAt2EMgZquSo+iuPrwgZQuJLPCoihSm9y6
release: master-tot
- description: "Continuous build of the latest master branch by Appveyor and Travis CI"
+ description: "Continuous build of the latest master branch by Appveyor and Github"
artifact: artifacts-zip
draft: false
prerelease: false
diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml
new file mode 100644
index 0000000..c375ac4
--- /dev/null
+++ b/.github/workflows/continuous_deployment.yml
@@ -0,0 +1,170 @@
+# NOTE: This workflow was ported from Travis.
+# Travis was using Ubuntu 14.04. Ubuntu 14.04 is not supportted by GitHub workflows. Ubuntu 20.04 is recommended.
+# Travis was using Clang 3.6. The earliest version support by Ubuntu 20.04 is Clang 6.0.
+# Travis was caching the clang package. APT package caching is not natively supported by GitHub actions/cache.
+# Travis was using Mac OS X 10.13.6 / Xcode 9.4.1 / LLVM 9.1.0
+
+# NOTE: The following documentation may be useful to maintainers of this workflow.
+# Github actions: https://docs.github.com/en/actions
+# Github github-script action: https://github.com/actions/github-script
+# GitHub REST API: https://docs.github.com/en/rest
+# Octokit front-end to the GitHub REST API: https://octokit.github.io/rest.js/v18
+# Octokit endpoint methods: https://github.com/octokit/plugin-rest-endpoint-methods.js/tree/master/docs/repos
+
+# TODO: Use actions/upload-artifact and actions/download-artifact to simplify deployment.
+# TODO: Use composite actions to refactor redundant code.
+
+name: Continuous Deployment
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - master
+
+jobs:
+ linux:
+ runs-on: ${{matrix.os.genus}}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [{genus: ubuntu-20.04, family: linux}]
+ compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}]
+ cmake_build_type: [Debug, Release]
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.7'
+ - name: Install Ubuntu Package Dependencies
+ run: |
+ sudo apt-get -qq update
+ sudo apt-get install -y clang-6.0
+ - name: Install GoogleTest
+ run: |
+ # check out pre-breakage version of googletest; can be deleted when
+ # issue 3128 is fixed
+ # git clone --depth=1 https://github.com/google/googletest.git External/googletest
+ mkdir -p External/googletest
+ cd External/googletest
+ git init
+ git remote add origin https://github.com/google/googletest.git
+ git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725
+ git reset --hard FETCH_HEAD
+ cd ../..
+ - name: Update Glslang Sources
+ run: |
+ ./update_glslang_sources.py
+ - name: Build
+ env:
+ CC: ${{matrix.compiler.cc}}
+ CXX: ${{matrix.compiler.cxx}}
+ run: |
+ mkdir build && cd build
+ cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
+ make -j4 install
+ - name: Test
+ run: |
+ cd build
+ ctest --output-on-failure &&
+ cd ../Test && ./runtests
+ - name: Zip
+ if: ${{ matrix.compiler.cc == 'clang' }}
+ env:
+ ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
+ run: |
+ cd build/install
+ zip ${ARCHIVE} \
+ bin/glslangValidator \
+ include/glslang/* \
+ include/glslang/**/* \
+ lib/libGenericCodeGen.a \
+ lib/libglslang.a \
+ lib/libglslang-default-resource-limits.a \
+ lib/libHLSL.a \
+ lib/libMachineIndependent.a \
+ lib/libOGLCompiler.a \
+ lib/libOSDependent.a \
+ lib/libSPIRV.a \
+ lib/libSPVRemapper.a \
+ lib/libSPIRV-Tools.a \
+ lib/libSPIRV-Tools-opt.a
+ - name: Deploy
+ if: ${{ matrix.compiler.cc == 'clang' }}
+ env:
+ ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
+ uses: actions/github-script@v5
+ with:
+ script: |
+ const script = require('.github/workflows/deploy.js')
+ await script({github, context, core})
+
+ macos:
+ runs-on: ${{matrix.os.genus}}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [{genus: macos-11, family: osx}]
+ compiler: [{cc: clang, cxx: clang++}]
+ cmake_build_type: [Debug, Release]
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.7'
+ - name: Install GoogleTest
+ run: |
+ # check out pre-breakage version of googletest; can be deleted when
+ # issue 3128 is fixed
+ # git clone --depth=1 https://github.com/google/googletest.git External/googletest
+ mkdir -p External/googletest
+ cd External/googletest
+ git init
+ git remote add origin https://github.com/google/googletest.git
+ git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725
+ git reset --hard FETCH_HEAD
+ cd ../..
+ - name: Update Glslang Sources
+ run: |
+ ./update_glslang_sources.py
+ - name: Build
+ env:
+ CC: ${{matrix.compiler.cc}}
+ CXX: ${{matrix.compiler.cxx}}
+ run: |
+ mkdir build && cd build
+ cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
+ make -j4 install
+ - name: Test
+ run: |
+ cd build
+ ctest --output-on-failure &&
+ cd ../Test && ./runtests
+ - name: Zip
+ env:
+ ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
+ run: |
+ cd build/install
+ zip ${ARCHIVE} \
+ bin/glslangValidator \
+ include/glslang/* \
+ include/glslang/**/* \
+ lib/libGenericCodeGen.a \
+ lib/libglslang.a \
+ lib/libglslang-default-resource-limits.a \
+ lib/libHLSL.a \
+ lib/libMachineIndependent.a \
+ lib/libOGLCompiler.a \
+ lib/libOSDependent.a \
+ lib/libSPIRV.a \
+ lib/libSPVRemapper.a \
+ lib/libSPIRV-Tools.a \
+ lib/libSPIRV-Tools-opt.a
+ - name: Deploy
+ env:
+ ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip
+ uses: actions/github-script@v5
+ with:
+ script: |
+ const script = require('.github/workflows/deploy.js')
+ await script({github, context, core})
diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml
new file mode 100644
index 0000000..7c36c68
--- /dev/null
+++ b/.github/workflows/continuous_integration.yml
@@ -0,0 +1,157 @@
+# NOTE: This workflow was ported from Travis.
+# Travis was using Ubuntu 14.04. Ubuntu 14.04 is not supportted by GitHub workflows. Ubuntu 20.04 is recommended.
+# Travis was using Clang 3.6. The earliest version support by Ubuntu 20.04 is Clang 6.0.
+# Travis was caching the clang package. APT package caching is not natively supported by GitHub actions/cache.
+# Travis was using Mac OS X 10.13.6 / Xcode 9.4.1 / LLVM 9.1.0
+#
+name: Continuous Integration
+
+on:
+ workflow_dispatch:
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ linux:
+ runs-on: ${{matrix.os}}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-20.04]
+ compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}]
+ cmake_build_type: [Debug, Release]
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.7'
+ - name: Install Ubuntu Package Dependencies
+ run: |
+ sudo apt-get -qq update
+ sudo apt-get install -y clang-6.0
+ - name: Install GoogleTest
+ run: |
+ # check out pre-breakage version of googletest; can be deleted when
+ # issue 3128 is fixed
+ # git clone --depth=1 https://github.com/google/googletest.git External/googletest
+ mkdir -p External/googletest
+ cd External/googletest
+ git init
+ git remote add origin https://github.com/google/googletest.git
+ git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725
+ git reset --hard FETCH_HEAD
+ cd ../..
+ - name: Update Glslang Sources
+ run: |
+ ./update_glslang_sources.py
+ - name: Build
+ env:
+ CC: ${{matrix.compiler.cc}}
+ CXX: ${{matrix.compiler.cxx}}
+ run: |
+ mkdir build && cd build
+ cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
+ make -j4 install
+ - name: Test
+ run: |
+ cd build
+ ctest --output-on-failure &&
+ cd ../Test && ./runtests
+
+ macos:
+ runs-on: ${{matrix.os}}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [macos-11]
+ compiler: [{cc: clang, cxx: clang++}]
+ cmake_build_type: [Debug, Release]
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.7'
+ - name: Install GoogleTest
+ run: |
+ # check out pre-breakage version of googletest; can be deleted when
+ # issue 3128 is fixed
+ # git clone --depth=1 https://github.com/google/googletest.git External/googletest
+ mkdir -p External/googletest
+ cd External/googletest
+ git init
+ git remote add origin https://github.com/google/googletest.git
+ git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725
+ git reset --hard FETCH_HEAD
+ cd ../..
+ - name: Update Glslang Sources
+ run: |
+ ./update_glslang_sources.py
+ - name: Build
+ env:
+ CC: ${{matrix.compiler.cc}}
+ CXX: ${{matrix.compiler.cxx}}
+ run: |
+ mkdir build && cd build
+ cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
+ make -j4 install
+ - name: Test
+ run: |
+ cd build
+ ctest --output-on-failure &&
+ cd ../Test && ./runtests
+
+ android:
+ runs-on: ${{matrix.os}}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-20.04]
+ compiler: [{cc: clang, cxx: clang++}]
+ cmake_build_type: [Release]
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ with:
+ python-version: '3.7'
+ - name: Install Ubuntu Package Dependencies
+ if: ${{matrix.os == 'ubuntu-20.04'}}
+ run: |
+ sudo apt-get -qq update
+ sudo apt-get install -y clang-6.0
+ - name: Install Android NDK
+ run: |
+ export ANDROID_NDK=$HOME/android-ndk
+ git init $ANDROID_NDK
+ pushd $ANDROID_NDK
+ git remote add dneto0 https://github.com/dneto0/android-ndk.git
+ git fetch --depth=1 dneto0 r17b-strip
+ git checkout FETCH_HEAD
+ popd
+ - name: Install GoogleTest
+ run: |
+ # check out pre-breakage version of googletest; can be deleted when
+ # issue 3128 is fixed
+ # git clone --depth=1 https://github.com/google/googletest.git External/googletest
+ mkdir -p External/googletest
+ cd External/googletest
+ git init
+ git remote add origin https://github.com/google/googletest.git
+ git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725
+ git reset --hard FETCH_HEAD
+ cd ../..
+ - name: Update Glslang Sources
+ run: |
+ ./update_glslang_sources.py
+ - name: Build
+ env:
+ CC: ${{matrix.compiler.cc}}
+ CXX: ${{matrix.compiler.cxx}}
+ run: |
+ export ANDROID_NDK=$HOME/android-ndk
+ export TOOLCHAIN_PATH=$ANDROID_NDK/build/cmake/android.toolchain.cmake
+ echo $ANDROID_NDK
+ echo $TOOLCHAIN_PATH
+ mkdir build && cd build
+ cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH} -DANDROID_NATIVE_API_LEVEL=android-14 -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DANDROID_ABI="armeabi-v7a with NEON" -DBUILD_TESTING=OFF ..
+ make -j4
diff --git a/.github/workflows/deploy.js b/.github/workflows/deploy.js
new file mode 100644
index 0000000..9f8d242
--- /dev/null
+++ b/.github/workflows/deploy.js
@@ -0,0 +1,73 @@
+module.exports = async ({github, context, core}) => {
+ try {
+ await github.rest.git.updateRef({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ ref: 'tags/master-tot',
+ sha: context.sha
+ })
+ } catch (error) {
+ core.setFailed(`upload master-tot tag; ${error.name}; ${error.message}`)
+ }
+
+ let release
+ try {
+ release = await github.rest.repos.getReleaseByTag({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ tag: 'master-tot'
+ })
+ } catch (error) {
+ core.setFailed(`get the master release; ${error.name}; ${error.message}`)
+ }
+
+ try {
+ await github.rest.repos.updateRelease({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ release_id: release.data.id
+ })
+ } catch (error) {
+ core.setFailed(`update the master release; ${error.name}; ${error.message}`)
+ }
+
+ let release_assets
+ try {
+ release_assets = await github.rest.repos.listReleaseAssets({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ release_id: release.data.id
+ })
+ } catch (error) {
+ core.setFailed(`list release assets; ${error.name}; ${error.message}`)
+ }
+
+ const { ARCHIVE } = process.env
+ for (const release_asset of release_assets.data) {
+ if (release_asset.name === `${ ARCHIVE }`) {
+ try {
+ await github.rest.repos.deleteReleaseAsset({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ asset_id: release_asset.id
+ })
+ } catch (error) {
+ core.setFailed(`delete ${ ARCHIVE }; ${error.name}; ${error.message}`)
+ }
+ }
+ }
+
+ try {
+ const asset_path = `./build/install/${ ARCHIVE }`
+ const fs = require("fs")
+ await github.rest.repos.uploadReleaseAsset({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ release_id: release.data.id,
+ name: `${ ARCHIVE }`,
+ data: fs.readFileSync(asset_path)
+ })
+ } catch (error) {
+ core.setFailed(`upload ${ ARCHIVE }; ${error.name}; ${error.message}`)
+ }
+}
diff --git a/.gitignore b/.gitignore
index ab25cec..333fb76 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,3 +18,7 @@
third_party/
buildtools/
tools/
+
+# Random OS stuff
+.DS_Store
+._*
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index cb0392e..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,141 +0,0 @@
-# Linux and Mac Build Configuration for Travis
-
-language: cpp
-
-os:
- - linux
- - osx
-
-# Use Ubuntu 14.04 LTS (Trusty) as the Linux testing environment.
-sudo: false
-dist: trusty
-
-env:
- global:
- - secure: aGFrgzyKp+84hKrGkxVWg8cHV61uqrKEHT38gfSQK6+WS4GfLOyH83p7WnsEBb7AMhzU7LMNFdvOFr6+NaMpVnqRvc40CEG1Q+lNg9Pq9mhIZLowvDrfqTL9kQ+8Nbw5Q6/dg6CTvY7fvRfpfCEmKIUZBRkoKUuHeuM1uy3IupFcdNuL5bSYn3Beo+apSJginh9DI4BLDXFUgBzTRSLLyCX5g3cpaeGGOCr8quJlYx75W6HRck5g9SZuLtUoH9GFEV3l+ZEWB8noErW+J56L03bwNwFuuAh321evw++oQk5KFa8rlDvar3SJ3b1RHB8u/eq5DBYMyaK/fS8+Q7QbGr8diF/wDe68bKO7U9IhpNfExXmczCpExjHomW5TQv4rYdGhygPMfW97aIsPRYyNKcl4fkmb7NDrM8w0Jscdq2g5c2Kz0ItyZoBri/NXLwFQQjaVCs7Pf97TjuMA7mK0GJmDTRzi6SrDYlWMt5BQL3y0CCojyfLIRcTh0CQjQI29s97bLfQrYAxt9GNNFR+HTXRLLrkaAlJkPGEPwUywlSfEThnvHLesNxYqemolAYpQT4ithoL4GehGIHmaxsW295aKVhuRf8K9eBODNqrfblvM42UHhjntT+92ZnQ/Gkq80GqaMxnxi4PO5FyPIxt0r981b54YBkWi8YA4P7w5pNI=
- matrix:
- - GLSLANG_BUILD_TYPE=Release
- - GLSLANG_BUILD_TYPE=Debug
-
-compiler:
- - clang
- - gcc
-
-matrix:
- fast_finish: true # Show final status immediately if a test fails.
- exclude:
- # Skip GCC builds on Mac OS X.
- - os: osx
- compiler: gcc
- include:
- # Additional build using Android NDK.
- - env: BUILD_NDK=ON
-
-cache:
- apt: true
-
-branches:
- only:
- - master
-
-addons:
- apt:
- packages:
- - clang-3.6
-
-install:
- # Make sure that clang-3.6 is selected on Linux.
- - if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "clang" ]]; then
- export CC=clang-3.6 CXX=clang++-3.6;
- fi
- # Download a recent Android NDK and use its android.toolchain.cmake file.
- - if [[ "$BUILD_NDK" == "ON" ]]; then
- export ANDROID_NDK=$HOME/android-ndk;
- git init $ANDROID_NDK;
- pushd $ANDROID_NDK;
- git remote add dneto0 https://github.com/dneto0/android-ndk.git;
- git fetch --depth=1 dneto0 r17b-strip;
- git checkout FETCH_HEAD;
- popd;
- export TOOLCHAIN_PATH=$ANDROID_NDK/build/cmake/android.toolchain.cmake;
- fi
-
-before_script:
- # check out pre-breakage version of googletest; can be deleted when
- # issue 3128 is fixed
- # git clone --depth=1 https://github.com/google/googletest.git External/googletest
- - mkdir -p External/googletest
- - cd External/googletest
- - git init
- - git remote add origin https://github.com/google/googletest.git
- - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725
- - git reset --hard FETCH_HEAD
- - cd ../..
- # get spirv-tools and spirv-headers
- - ./update_glslang_sources.py
-
-script:
- - mkdir build && cd build
- # For Android, do release building using NDK without testing.
- # Use android-14, the oldest native API level supporeted by NDK r17b.
- # We can use newer API levels if we want.
- # For Linux and macOS, do debug/release building with testing.
- - if [[ "$BUILD_NDK" == "ON" ]]; then
- cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH}
- -DANDROID_NATIVE_API_LEVEL=android-14
- -DCMAKE_BUILD_TYPE=Release
- -DANDROID_ABI="armeabi-v7a with NEON"
- -DBUILD_TESTING=OFF ..;
- make -j4;
- else
- cmake -DCMAKE_BUILD_TYPE=${GLSLANG_BUILD_TYPE}
- -DCMAKE_INSTALL_PREFIX=`pwd`/install ..;
- make -j4 install;
- ctest --output-on-failure &&
- cd ../Test && ./runtests;
- fi
-
-after_success:
- # For debug build, the generated dll has a postfix "d" in its name.
- - if [[ "${GLSLANG_BUILD_TYPE}" == "Debug" ]]; then
- export SUFFIX="d";
- else
- export SUFFIX="";
- fi
- # Create tarball for deployment
- - if [[ ${CC} == clang* && "${BUILD_NDK}" != "ON" ]]; then
- cd ../build/install;
- export TARBALL=glslang-master-${TRAVIS_OS_NAME}-${GLSLANG_BUILD_TYPE}.zip;
- zip ${TARBALL}
- bin/glslangValidator
- include/glslang/*
- lib/libGenericCodeGen${SUFFIX}.a
- lib/libglslang${SUFFIX}.a
- lib/libglslang-default-resource-limits${SUFFIX}.a
- lib/libHLSL${SUFFIX}.a
- lib/libMachineIndependent${SUFFIX}.a
- lib/libOGLCompiler${SUFFIX}.a
- lib/libOSDependent${SUFFIX}.a
- lib/libSPIRV${SUFFIX}.a
- lib/libSPVRemapper${SUFFIX}.a
- lib/libSPIRV-Tools${SUFFIX}.a
- lib/libSPIRV-Tools-opt${SUFFIX}.a;
- fi
-
-before_deploy:
- # Tag the current top of the tree as "master-tot".
- # Travis CI replies on the tag name to properly push to GitHub Releases.
- - git config --global user.name "Travis CI"
- - git config --global user.email "builds@travis-ci.org"
- - git tag -f master-tot
- - git push -q -f https://${glslangtoken}@github.com/KhronosGroup/glslang --tags
-
-deploy:
- provider: releases
- api_key: ${glslangtoken}
- on:
- branch: master
- condition: ${CC} == clang* && ${BUILD_NDK} != ON
- file: ${TARBALL}
- skip_cleanup: true
- overwrite: true
diff --git a/Android.mk b/Android.mk
index c9b221f..40cddb7 100644
--- a/Android.mk
+++ b/Android.mk
@@ -96,6 +96,7 @@
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES)
LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)
LOCAL_SRC_FILES:= \
+ glslang/CInterface/glslang_c_interface.cpp \
glslang/GenericCodeGen/CodeGen.cpp \
glslang/GenericCodeGen/Link.cpp \
glslang/HLSL/hlslAttributes.cpp \
@@ -149,6 +150,7 @@
LOCAL_MODULE:=SPIRV
LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES)
LOCAL_SRC_FILES:= \
+ SPIRV/CInterface/spirv_c_interface.cpp \
SPIRV/GlslangToSpv.cpp \
SPIRV/InReadableOrder.cpp \
SPIRV/Logger.cpp \
diff --git a/BUILD.bazel b/BUILD.bazel
index 1115b7d..12168fa 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -146,6 +146,7 @@
"SPIRV/GLSL.ext.NV.h",
"SPIRV/GLSL.std.450.h",
"SPIRV/NonSemanticDebugPrintf.h",
+ "SPIRV/NonSemanticShaderDebugInfo100.h",
"SPIRV/spirv.hpp",
],
outs = [
@@ -155,6 +156,7 @@
"include/SPIRV/GLSL.ext.NV.h",
"include/SPIRV/GLSL.std.450.h",
"include/SPIRV/NonSemanticDebugPrintf.h",
+ "include/SPIRV/NonSemanticShaderDebugInfo100.h",
"include/SPIRV/spirv.hpp",
],
cmd_bash = "mkdir -p $(@D)/include/SPIRV && cp $(SRCS) $(@D)/include/SPIRV/",
diff --git a/BUILD.gn b/BUILD.gn
index 70e1068..928fad6 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -136,6 +136,7 @@
"SPIRV/Logger.cpp",
"SPIRV/Logger.h",
"SPIRV/NonSemanticDebugPrintf.h",
+ "SPIRV/NonSemanticShaderDebugInfo100.h",
"SPIRV/SPVRemapper.cpp",
"SPIRV/SPVRemapper.h",
"SPIRV/SpvBuilder.cpp",
diff --git a/CHANGES.md b/CHANGES.md
index ebab4da..e7b6f14 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -3,6 +3,47 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/).
+## 11.12.0 2022-10-12
+
+### Other changes
+* Update generator version
+* Add support for GL_EXT_mesh_shader
+* Add support for NonSemantic.Shader.DebugInfo.100
+* Make OpEmitMeshTasksEXT a terminal instruction
+* Make gl_SubGroupARB a flat in int in Vulkan
+* Add support for GL_EXT_opacity_micromap
+* Add preamble support to C interface
+
+## 11.11.0 2022-08-11
+
+### Other changes
+* Add OpSource support to C interface
+* Deprecate samplerBuffer for spirv1.6 and later
+* Add support for SPV_AMD_shader_early_and_late_fragment_tests
+
+## 11.10.0 2022-06-02
+
+### Other changes
+* Generate OpLine before OpFunction
+* Add support for VK_EXT_fragment_shader_barycentric
+* Add whitelist filtering for debug comments in SPIRV-Remap
+* Add support for GL_EXT_ray_cull_mask
+
+## 11.9.0 2022-04-06
+
+### Other changes
+* Add GLSL version override functionality
+* Add eliminate-dead-input-components to -Os
+* Add enhanced-msgs option
+* Explicitly use Python 3 for builds
+
+## 11.8.0 2022-01-27
+
+### Other changes
+* Add support for SPIR-V 1.6
+* Add support for Vulkan 1.3
+* Add --hlsl-dx-position-w option
+
## 11.7.0 2021-11-11
### Other changes
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d5b727a..b581c84 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -33,7 +33,7 @@
# increase to 3.1 once all major distributions
# include a version of CMake >= 3.1
-cmake_minimum_required(VERSION 2.8.12)
+cmake_minimum_required(VERSION 3.14.0)
if (POLICY CMP0048)
cmake_policy(SET CMP0048 NEW)
endif()
@@ -50,6 +50,7 @@
# Adhere to GNU filesystem layout conventions
include(GNUInstallDirs)
+include(CMakePackageConfigHelpers)
# Needed for CMAKE_DEPENDENT_OPTION macro
include(CMakeDependentOption)
@@ -106,10 +107,17 @@
option(ENABLE_RTTI "Enables RTTI" OFF)
option(ENABLE_EXCEPTIONS "Enables Exceptions" OFF)
option(ENABLE_OPT "Enables spirv-opt capability if present" ON)
-option(ENABLE_PCH "Enables Precompiled header" ON)
+
+if(MINGW OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU"))
+ # Workaround for CMake behavior on Mac OS with gcc, cmake generates -Xarch_* arguments
+ # which gcc rejects
+ option(ENABLE_PCH "Enables Precompiled header" OFF)
+else()
+ option(ENABLE_PCH "Enables Precompiled header" ON)
+endif()
option(ENABLE_CTEST "Enables testing" ON)
-if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32)
+if(ENABLE_GLSLANG_INSTALL AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32)
set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "..." FORCE)
endif()
@@ -163,7 +171,7 @@
add_compile_options(-Werror=deprecated-copy)
endif()
- if(NOT CMAKE_VERSION VERSION_LESS "3.13")
+ if(NOT CMAKE_VERSION VERSION_LESS "3.13" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
# Error if there's symbols that are not found at link time.
# add_link_options() was added in CMake 3.13 - if using an earlier
# version don't set this - it should be caught by presubmits anyway.
@@ -184,7 +192,11 @@
# Error if there's symbols that are not found at link time.
# add_link_options() was added in CMake 3.13 - if using an earlier
# version don't set this - it should be caught by presubmits anyway.
- add_link_options("-Wl,-undefined,error")
+ if (WIN32)
+ add_link_options("-Wl,--no-undefined")
+ else()
+ add_link_options("-Wl,-undefined,error")
+ endif()
endif()
elseif(MSVC)
if(NOT ENABLE_RTTI)
@@ -356,3 +368,38 @@
COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/)
endif()
+
+if(ENABLE_GLSLANG_INSTALL)
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[
+ @PACKAGE_INIT@
+ include("@PACKAGE_PATH_EXPORT_TARGETS@")
+ ]=])
+
+ set(PATH_EXPORT_TARGETS "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake")
+ configure_package_config_file(
+ "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake"
+ PATH_VARS
+ PATH_EXPORT_TARGETS
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+ )
+
+ write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glslang-config-version.cmake"
+ VERSION ${GLSLANG_VERSION}
+ COMPATIBILITY SameMajorVersion
+ )
+
+ install(
+ EXPORT glslang-targets
+ NAMESPACE "glslang::"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
+ )
+
+ install(
+ FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake"
+ "${CMAKE_CURRENT_BINARY_DIR}/glslang-config-version.cmake"
+ DESTINATION
+ "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
+ )
+endif()
\ No newline at end of file
diff --git a/LICENSE.txt b/LICENSE.txt
index 5f58565..054e68a 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -303,41 +303,647 @@
GPL 3 with special bison exception
--------------------------------------------------------------------------------
- Bison implementation for Yacc-like parsers in C
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
- Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
+ Preamble
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
- As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison.
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+Bison Exception
+
+As a special exception, you may create a larger work that contains part or all
+of the Bison parser skeleton and distribute that work under terms of your
+choice, so long as that work isn't itself a parser generator using the skeleton
+or a modified version thereof as a parser skeleton. Alternatively, if you
+modify or redistribute the parser skeleton itself, you may (at your option)
+remove this special exception, which will cause the skeleton and the resulting
+Bison output files to be licensed under the GNU General Public License without
+this special exception.
+
+This special exception was added by the Free Software Foundation in version
+2.2 of Bison.
+
+ END OF TERMS AND CONDITIONS
--------------------------------------------------------------------------------
================================================================================
--------------------------------------------------------------------------------
-The preprocessor has the core licenses stated above, plus an additional licence:
+The preprocessor has the core licenses stated above, plus additional licences:
/****************************************************************************\
Copyright (c) 2002, NVIDIA Corporation.
@@ -382,3 +988,29 @@
TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF
NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\****************************************************************************/
+
+/*
+** Copyright (c) 2014-2016 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.
+*/
diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt
index 0b007d4..b44cbc7 100644
--- a/OGLCompilersDLL/CMakeLists.txt
+++ b/OGLCompilersDLL/CMakeLists.txt
@@ -41,8 +41,19 @@
source_group("Source" FILES ${SOURCES})
endif(WIN32)
-if(ENABLE_GLSLANG_INSTALL)
- install(TARGETS OGLCompiler EXPORT OGLCompilerTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- install(EXPORT OGLCompilerTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
-endif(ENABLE_GLSLANG_INSTALL)
+if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS)
+ install(TARGETS OGLCompiler EXPORT glslang-targets)
+
+ # Backward compatibility
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/OGLCompilerTargets.cmake" "
+ message(WARNING \"Using `OGLCompilerTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
+
+ if (NOT TARGET glslang::OGLCompiler)
+ include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\")
+ endif()
+
+ add_library(OGLCompiler ALIAS glslang::OGLCompiler)
+ ")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OGLCompilerTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+
+endif()
diff --git a/README.md b/README.md
index 9b8cfb3..5e642e6 100644
--- a/README.md
+++ b/README.md
@@ -19,8 +19,8 @@
If people are only using this location to get spirv.hpp, I recommend they get that from [SPIRV-Headers](https://github.com/KhronosGroup/SPIRV-Headers) instead.
-[![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)
+[![appveyor status](https://ci.appveyor.com/api/projects/status/q6fi9cb0qnhkla68/branch/master?svg=true)](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/master)
+![Continuous Deployment](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_deployment.yml/badge.svg)
# Glslang Components and Status
@@ -85,7 +85,15 @@
* `.frag` for a fragment shader
* `.comp` for a compute shader
-There is also a non-shader extension
+For ray tracing pipeline shaders:
+* `.rgen` for a ray generation shader
+* `.rint` for a ray intersection shader
+* `.rahit` for a ray any-hit shader
+* `.rchit` for a ray closest-hit shader
+* `.rmiss` for a ray miss shader
+* `.rcall` for a callable shader
+
+There is also a non-shader extension:
* `.conf` for a configuration file of limits, see usage statement for example
## Building (CMake)
@@ -161,8 +169,8 @@
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
+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_HOME/prebuilt/linux-x86_64/bin/make -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake
+# If on Windows will be -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_HOME%\prebuilt\windows-x86_64\bin\make.exe
# -G is needed for building on Windows
# -DANDROID_ABI can also be armeabi-v7a for 32 bit
```
@@ -421,6 +429,77 @@
In practice, `ShCompile()` takes shader strings, default version, and
warning/error and other options for controlling compilation.
+### C Functional Interface (new)
+
+This interface is located `glslang_c_interface.h` and exposes functionality similar to the C++ interface. The following snippet is a complete example showing how to compile GLSL into SPIR-V 1.5 for Vulkan 1.2.
+
+```cxx
+std::vector<uint32_t> compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const char* shaderSource, const char* fileName)
+{
+ const glslang_input_t input = {
+ .language = GLSLANG_SOURCE_GLSL,
+ .stage = stage,
+ .client = GLSLANG_CLIENT_VULKAN,
+ .client_version = GLSLANG_TARGET_VULKAN_1_2,
+ .target_language = GLSLANG_TARGET_SPV,
+ .target_language_version = GLSLANG_TARGET_SPV_1_5,
+ .code = shaderSource,
+ .default_version = 100,
+ .default_profile = GLSLANG_NO_PROFILE,
+ .force_default_version_and_profile = false,
+ .forward_compatible = false,
+ .messages = GLSLANG_MSG_DEFAULT_BIT,
+ .resource = reinterpret_cast<const glslang_resource_t*>(&glslang::DefaultTBuiltInResource),
+ };
+
+ glslang_shader_t* shader = glslang_shader_create(&input);
+
+ if (!glslang_shader_preprocess(shader, &input)) {
+ printf("GLSL preprocessing failed %s\n", fileName);
+ printf("%s\n", glslang_shader_get_info_log(shader));
+ printf("%s\n", glslang_shader_get_info_debug_log(shader));
+ printf("%s\n", input.code);
+ glslang_shader_delete(shader);
+ return std::vector<uint32_t>();
+ }
+
+ if (!glslang_shader_parse(shader, &input)) {
+ printf("GLSL parsing failed %s\n", fileName);
+ printf("%s\n", glslang_shader_get_info_log(shader));
+ printf("%s\n", glslang_shader_get_info_debug_log(shader));
+ printf("%s\n", glslang_shader_get_preprocessed_code(shader));
+ glslang_shader_delete(shader);
+ return std::vector<uint32_t>();
+ }
+
+ glslang_program_t* program = glslang_program_create();
+ glslang_program_add_shader(program, shader);
+
+ if (!glslang_program_link(program, GLSLANG_MSG_SPV_RULES_BIT | GLSLANG_MSG_VULKAN_RULES_BIT)) {
+ printf("GLSL linking failed %s\n", fileName);
+ printf("%s\n", glslang_program_get_info_log(program));
+ printf("%s\n", glslang_program_get_info_debug_log(program));
+ glslang_program_delete(program);
+ glslang_shader_delete(shader);
+ return std::vector<uint32_t>();
+ }
+
+ glslang_program_SPIRV_generate(program, stage);
+
+ std::vector<uint32_t> outShaderModule(glslang_program_SPIRV_get_size(program));
+ glslang_program_SPIRV_get(program, outShaderModule.data());
+
+ const char* spirv_messages = glslang_program_SPIRV_get_messages(program);
+ if (spirv_messages)
+ printf("(%s) %s\b", fileName, spirv_messages);
+
+ glslang_program_delete(program);
+ glslang_shader_delete(shader);
+
+ return outShaderModule;
+}
+```
+
## Basic Internal Operation
* Initial lexical analysis is done by the preprocessor in
diff --git a/SPIRV/CInterface/spirv_c_interface.cpp b/SPIRV/CInterface/spirv_c_interface.cpp
index a0790f4..d56ad46 100644
--- a/SPIRV/CInterface/spirv_c_interface.cpp
+++ b/SPIRV/CInterface/spirv_c_interface.cpp
@@ -36,6 +36,8 @@
#include "SPIRV/Logger.h"
#include "SPIRV/SpvTools.h"
+static_assert(sizeof(glslang_spv_options_t) == sizeof(glslang::SpvOptions), "");
+
typedef struct glslang_program_s {
glslang::TProgram* program;
std::vector<unsigned int> spirv;
@@ -57,22 +59,22 @@
return EShLangFragment;
case GLSLANG_STAGE_COMPUTE:
return EShLangCompute;
- case GLSLANG_STAGE_RAYGEN_NV:
+ case GLSLANG_STAGE_RAYGEN:
return EShLangRayGen;
- case GLSLANG_STAGE_INTERSECT_NV:
+ case GLSLANG_STAGE_INTERSECT:
return EShLangIntersect;
- case GLSLANG_STAGE_ANYHIT_NV:
+ case GLSLANG_STAGE_ANYHIT:
return EShLangAnyHit;
- case GLSLANG_STAGE_CLOSESTHIT_NV:
+ case GLSLANG_STAGE_CLOSESTHIT:
return EShLangClosestHit;
- case GLSLANG_STAGE_MISS_NV:
+ case GLSLANG_STAGE_MISS:
return EShLangMiss;
- case GLSLANG_STAGE_CALLABLE_NV:
+ case GLSLANG_STAGE_CALLABLE:
return EShLangCallable;
- case GLSLANG_STAGE_TASK_NV:
- return EShLangTaskNV;
- case GLSLANG_STAGE_MESH_NV:
- return EShLangMeshNV;
+ case GLSLANG_STAGE_TASK:
+ return EShLangTask;
+ case GLSLANG_STAGE_MESH:
+ return EShLangMesh;
default:
break;
}
@@ -81,13 +83,25 @@
GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage)
{
+ glslang_spv_options_t spv_options;
+ spv_options.generate_debug_info = false;
+ spv_options.strip_debug_info = false;
+ spv_options.emit_nonsemantic_shader_debug_info = false;
+ spv_options.emit_nonsemantic_shader_debug_source = false;
+ spv_options.disable_optimizer = true;
+ spv_options.optimize_size = false;
+ spv_options.disassemble = false;
+ spv_options.validate = true;
+
+ glslang_program_SPIRV_generate_with_options(program, stage, &spv_options);
+}
+
+GLSLANG_EXPORT void glslang_program_SPIRV_generate_with_options(glslang_program_t* program, glslang_stage_t stage, glslang_spv_options_t* spv_options) {
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);
+ glslang::GlslangToSpv(*intermediate, program->spirv, &logger, reinterpret_cast<glslang::SpvOptions*>(spv_options));
program->loggerMessages = logger.getAllMessages();
}
diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt
index 22f767d..2408e4c 100644
--- a/SPIRV/CMakeLists.txt
+++ b/SPIRV/CMakeLists.txt
@@ -62,7 +62,8 @@
disassemble.h
GLSL.ext.AMD.h
GLSL.ext.NV.h
- NonSemanticDebugPrintf.h)
+ NonSemanticDebugPrintf.h
+ NonSemanticShaderDebugInfo100.h)
set(SPVREMAP_HEADERS
SPVRemapper.h
@@ -109,30 +110,36 @@
endif()
if(ENABLE_GLSLANG_INSTALL)
- if(BUILD_SHARED_LIBS)
- if (ENABLE_SPVREMAPPER)
- install(TARGETS SPVRemapper EXPORT SPVRemapperTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
- endif()
- 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 EXPORT SPVRemapperTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- endif()
- install(TARGETS SPIRV EXPORT SPIRVTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- endif()
-
if (ENABLE_SPVREMAPPER)
- install(EXPORT SPVRemapperTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+ install(TARGETS SPVRemapper EXPORT glslang-targets)
endif()
- install(EXPORT SPIRVTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+ install(TARGETS SPIRV EXPORT glslang-targets)
+
+ # Backward compatibility
+ if (ENABLE_SPVREMAPPER)
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/SPVRemapperTargets.cmake" "
+ message(WARNING \"Using `SPVRemapperTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
+
+ if (NOT TARGET glslang::SPVRemapper)
+ include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\")
+ endif()
+
+ add_library(SPVRemapper ALIAS glslang::SPVRemapper)
+ ")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPVRemapperTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+ endif()
+
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/SPIRVTargets.cmake" "
+ message(WARNING \"Using `SPIRVTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
+
+ if (NOT TARGET glslang::SPIRV)
+ include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\")
+ endif()
+
+ add_library(SPIRV ALIAS glslang::SPIRV)
+ ")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPIRVTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/)
endif()
diff --git a/SPIRV/GLSL.ext.EXT.h b/SPIRV/GLSL.ext.EXT.h
index f48f130..a247b4c 100644
--- a/SPIRV/GLSL.ext.EXT.h
+++ b/SPIRV/GLSL.ext.EXT.h
@@ -39,5 +39,6 @@
static const char* const E_SPV_EXT_shader_atomic_float16_add = "SPV_EXT_shader_atomic_float16_add";
static const char* const E_SPV_EXT_shader_atomic_float_min_max = "SPV_EXT_shader_atomic_float_min_max";
static const char* const E_SPV_EXT_shader_image_int64 = "SPV_EXT_shader_image_int64";
+static const char* const E_SPV_EXT_mesh_shader = "SPV_EXT_mesh_shader";
#endif // #ifndef GLSLextEXT_H
diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h
index 5eb3e94..d5c670f 100644
--- a/SPIRV/GLSL.ext.KHR.h
+++ b/SPIRV/GLSL.ext.KHR.h
@@ -29,7 +29,7 @@
#define GLSLextKHR_H
static const int GLSLextKHRVersion = 100;
-static const int GLSLextKHRRevision = 2;
+static const int GLSLextKHRRevision = 3;
static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot";
static const char* const E_SPV_KHR_subgroup_vote = "SPV_KHR_subgroup_vote";
@@ -52,5 +52,7 @@
static const char* const E_SPV_KHR_terminate_invocation = "SPV_KHR_terminate_invocation";
static const char* const E_SPV_KHR_workgroup_memory_explicit_layout = "SPV_KHR_workgroup_memory_explicit_layout";
static const char* const E_SPV_KHR_subgroup_uniform_control_flow = "SPV_KHR_subgroup_uniform_control_flow";
+static const char* const E_SPV_KHR_fragment_shader_barycentric = "SPV_KHR_fragment_shader_barycentric";
+static const char* const E_SPV_AMD_shader_early_and_late_fragment_tests = "SPV_AMD_shader_early_and_late_fragment_tests";
#endif // #ifndef GLSLextKHR_H
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 43aba9c..ccb4602 100644
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -260,6 +260,7 @@
std::unordered_map<std::string, spv::Id> extBuiltinMap;
std::unordered_map<long long, spv::Id> symbolValues;
+ std::unordered_map<uint32_t, spv::Id> builtInVariableIds;
std::unordered_set<long long> rValueParameters; // set of formal function parameters passed as rValues,
// rather than a pointer
std::unordered_map<std::string, spv::Function*> functionMap;
@@ -279,6 +280,9 @@
// Used later for generating OpTraceKHR/OpExecuteCallableKHR
std::unordered_map<unsigned int, glslang::TIntermSymbol *> locationToSymbol[2];
+
+ // Used by Task shader while generating opearnds for OpEmitMeshTasksEXT
+ spv::Id taskPayloadID;
};
//
@@ -314,7 +318,7 @@
}
// Translate glslang language (stage) to SPIR-V execution model.
-spv::ExecutionModel TranslateExecutionModel(EShLanguage stage)
+spv::ExecutionModel TranslateExecutionModel(EShLanguage stage, bool isMeshShaderEXT = false)
{
switch (stage) {
case EShLangVertex: return spv::ExecutionModelVertex;
@@ -330,8 +334,8 @@
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;
+ case EShLangTask: return (isMeshShaderEXT)? spv::ExecutionModelTaskEXT : spv::ExecutionModelTaskNV;
+ case EShLangMesh: return (isMeshShaderEXT)? spv::ExecutionModelMeshEXT: spv::ExecutionModelMeshNV;
#endif
default:
assert(0);
@@ -762,7 +766,7 @@
return spv::BuiltInSampleMask;
case glslang::EbvLayer:
- if (glslangIntermediate->getStage() == EShLangMeshNV) {
+ if (glslangIntermediate->getStage() == EShLangMesh) {
return spv::BuiltInLayer;
}
if (glslangIntermediate->getStage() == EShLangGeometry ||
@@ -1007,6 +1011,8 @@
return spv::BuiltInRayTminKHR;
case glslang::EbvRayTmax:
return spv::BuiltInRayTmaxKHR;
+ case glslang::EbvCullMask:
+ return spv::BuiltInCullMaskKHR;
case glslang::EbvInstanceCustomIndex:
return spv::BuiltInInstanceCustomIndexKHR;
case glslang::EbvHitT:
@@ -1048,6 +1054,15 @@
builder.addCapability(spv::CapabilityFragmentBarycentricNV);
return spv::BuiltInBaryCoordNoPerspNV;
+ case glslang::EbvBaryCoordEXT:
+ builder.addExtension(spv::E_SPV_KHR_fragment_shader_barycentric);
+ builder.addCapability(spv::CapabilityFragmentBarycentricKHR);
+ return spv::BuiltInBaryCoordKHR;
+ case glslang::EbvBaryCoordNoPerspEXT:
+ builder.addExtension(spv::E_SPV_KHR_fragment_shader_barycentric);
+ builder.addCapability(spv::CapabilityFragmentBarycentricKHR);
+ return spv::BuiltInBaryCoordNoPerspKHR;
+
// mesh shaders
case glslang::EbvTaskCountNV:
return spv::BuiltInTaskCountNV;
@@ -1066,6 +1081,16 @@
case glslang::EbvMeshViewIndicesNV:
return spv::BuiltInMeshViewIndicesNV;
+ // SPV_EXT_mesh_shader
+ case glslang::EbvPrimitivePointIndicesEXT:
+ return spv::BuiltInPrimitivePointIndicesEXT;
+ case glslang::EbvPrimitiveLineIndicesEXT:
+ return spv::BuiltInPrimitiveLineIndicesEXT;
+ case glslang::EbvPrimitiveTriangleIndicesEXT:
+ return spv::BuiltInPrimitiveTriangleIndicesEXT;
+ case glslang::EbvCullPrimitiveEXT:
+ return spv::BuiltInCullPrimitiveEXT;
+
// sm builtins
case glslang::EbvWarpsPerSM:
builder.addExtension(spv::E_SPV_NV_shader_sm_builtins);
@@ -1256,8 +1281,10 @@
if (type.getBasicType() == glslang::EbtRayQuery)
return spv::StorageClassPrivate;
#ifndef GLSLANG_WEB
- if (type.getQualifier().isSpirvByReference())
- return spv::StorageClassFunction;
+ if (type.getQualifier().isSpirvByReference()) {
+ if (type.getQualifier().isParamInput() || type.getQualifier().isParamOutput())
+ return spv::StorageClassFunction;
+ }
#endif
if (type.getQualifier().isPipeInput())
return spv::StorageClassInput;
@@ -1307,6 +1334,7 @@
case glslang::EvqHitAttr: return spv::StorageClassHitAttributeKHR;
case glslang::EvqCallableData: return spv::StorageClassCallableDataKHR;
case glslang::EvqCallableDataIn: return spv::StorageClassIncomingCallableDataKHR;
+ case glslang::EvqtaskPayloadSharedEXT : return spv::StorageClassTaskPayloadWorkgroupEXT;
case glslang::EvqSpirvStorageClass: return static_cast<spv::StorageClass>(type.getQualifier().spirvStorageClass);
#endif
default:
@@ -1324,7 +1352,9 @@
for (auto constant : constants) {
if (constant->getBasicType() == glslang::EbtFloat) {
float floatValue = static_cast<float>(constant->getConstArray()[0].getDConst());
- unsigned literal = *reinterpret_cast<unsigned*>(&floatValue);
+ unsigned literal;
+ static_assert(sizeof(literal) == sizeof(floatValue), "sizeof(unsigned) != sizeof(float)");
+ memcpy(&literal, &floatValue, sizeof(literal));
literals.push_back(literal);
} else if (constant->getBasicType() == glslang::EbtInt) {
unsigned literal = constant->getConstArray()[0].getIConst();
@@ -1450,6 +1480,8 @@
child.perViewNV = true;
if (parent.perTaskNV)
child.perTaskNV = true;
+ if (parent.storage == glslang::EvqtaskPayloadSharedEXT)
+ child.storage = glslang::EvqtaskPayloadSharedEXT;
if (parent.patch)
child.patch = true;
if (parent.sample)
@@ -1509,9 +1541,12 @@
inEntryPoint(false), entryPointTerminated(false), linkageOnly(false),
glslangIntermediate(glslangIntermediate),
nanMinMaxClamp(glslangIntermediate->getNanMinMaxClamp()),
- nonSemanticDebugPrintf(0)
+ nonSemanticDebugPrintf(0),
+ taskPayloadID(0)
{
- spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage());
+ bool isMeshShaderExt = (glslangIntermediate->getRequestedExtensions().find(glslang::E_GL_EXT_mesh_shader) !=
+ glslangIntermediate->getRequestedExtensions().end());
+ spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage(), isMeshShaderExt);
builder.clearAccessChain();
builder.setSource(TranslateSourceLanguage(glslangIntermediate->getSource(), glslangIntermediate->getProfile()),
@@ -1543,6 +1578,10 @@
for (auto iItr = include_txt.begin(); iItr != include_txt.end(); ++iItr)
builder.addInclude(iItr->first, iItr->second);
}
+
+ builder.setEmitNonSemanticShaderDebugInfo(options.emitNonSemanticShaderDebugInfo);
+ builder.setEmitNonSemanticShaderDebugSource(options.emitNonSemanticShaderDebugSource);
+
stdBuiltins = builder.import("GLSL.std.450");
spv::AddressingModel addressingModel = spv::AddressingModelLogical;
@@ -1609,6 +1648,12 @@
if (glslangIntermediate->getEarlyFragmentTests())
builder.addExecutionMode(shaderEntry, spv::ExecutionModeEarlyFragmentTests);
+ if (glslangIntermediate->getEarlyAndLateFragmentTestsAMD())
+ {
+ builder.addExecutionMode(shaderEntry, spv::ExecutionModeEarlyAndLateFragmentTestsAMD);
+ builder.addExtension(spv::E_SPV_AMD_shader_early_and_late_fragment_tests);
+ }
+
if (glslangIntermediate->getPostDepthCoverage()) {
builder.addCapability(spv::CapabilitySampleMaskPostDepthCoverage);
builder.addExecutionMode(shaderEntry, spv::ExecutionModePostDepthCoverage);
@@ -1618,6 +1663,9 @@
if (glslangIntermediate->isDepthReplacing())
builder.addExecutionMode(shaderEntry, spv::ExecutionModeDepthReplacing);
+ if (glslangIntermediate->isStencilReplacing())
+ builder.addExecutionMode(shaderEntry, spv::ExecutionModeStencilRefReplacingEXT);
+
#ifndef GLSLANG_WEB
switch(glslangIntermediate->getDepth()) {
@@ -1626,6 +1674,20 @@
case glslang::EldUnchanged: mode = spv::ExecutionModeDepthUnchanged; break;
default: mode = spv::ExecutionModeMax; break;
}
+
+ if (mode != spv::ExecutionModeMax)
+ builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode);
+
+ switch (glslangIntermediate->getStencil()) {
+ case glslang::ElsRefUnchangedFrontAMD: mode = spv::ExecutionModeStencilRefUnchangedFrontAMD; break;
+ case glslang::ElsRefGreaterFrontAMD: mode = spv::ExecutionModeStencilRefGreaterFrontAMD; break;
+ case glslang::ElsRefLessFrontAMD: mode = spv::ExecutionModeStencilRefLessFrontAMD; break;
+ case glslang::ElsRefUnchangedBackAMD: mode = spv::ExecutionModeStencilRefUnchangedBackAMD; break;
+ case glslang::ElsRefGreaterBackAMD: mode = spv::ExecutionModeStencilRefGreaterBackAMD; break;
+ case glslang::ElsRefLessBackAMD: mode = spv::ExecutionModeStencilRefLessBackAMD; break;
+ default: mode = spv::ExecutionModeMax; break;
+ }
+
if (mode != spv::ExecutionModeMax)
builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode);
switch (glslangIntermediate->getInterlockOrdering()) {
@@ -1662,9 +1724,22 @@
case EShLangCompute:
builder.addCapability(spv::CapabilityShader);
- builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0),
- glslangIntermediate->getLocalSize(1),
- glslangIntermediate->getLocalSize(2));
+ if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) {
+ std::vector<spv::Id> dimConstId;
+ for (int dim = 0; dim < 3; ++dim) {
+ bool specConst = (glslangIntermediate->getLocalSizeSpecId(dim) != glslang::TQualifier::layoutNotSet);
+ dimConstId.push_back(builder.makeUintConstant(glslangIntermediate->getLocalSize(dim), specConst));
+ if (specConst) {
+ builder.addDecoration(dimConstId.back(), spv::DecorationSpecId,
+ glslangIntermediate->getLocalSizeSpecId(dim));
+ }
+ }
+ builder.addExecutionModeId(shaderEntry, spv::ExecutionModeLocalSizeId, dimConstId);
+ } else {
+ builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0),
+ glslangIntermediate->getLocalSize(1),
+ glslangIntermediate->getLocalSize(2));
+ }
if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupQuads) {
builder.addCapability(spv::CapabilityComputeDerivativeGroupQuadsNV);
builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupQuadsNV);
@@ -1751,7 +1826,7 @@
case EShLangAnyHit:
case EShLangClosestHit:
case EShLangMiss:
- case EShLangCallable:
+ case EShLangCallable:
{
auto& extensions = glslangIntermediate->getRequestedExtensions();
if (extensions.find("GL_NV_ray_tracing") == extensions.end()) {
@@ -1762,16 +1837,41 @@
builder.addCapability(spv::CapabilityRayTracingNV);
builder.addExtension("SPV_NV_ray_tracing");
}
+ if (glslangIntermediate->getStage() != EShLangRayGen && glslangIntermediate->getStage() != EShLangCallable)
+ {
+ if (extensions.find("GL_EXT_ray_cull_mask") != extensions.end()) {
+ builder.addCapability(spv::CapabilityRayCullMaskKHR);
+ builder.addExtension("SPV_KHR_ray_cull_mask");
+ }
+ }
break;
}
- case EShLangTaskNV:
- case EShLangMeshNV:
- builder.addCapability(spv::CapabilityMeshShadingNV);
- builder.addExtension(spv::E_SPV_NV_mesh_shader);
- builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0),
- glslangIntermediate->getLocalSize(1),
- glslangIntermediate->getLocalSize(2));
- if (glslangIntermediate->getStage() == EShLangMeshNV) {
+ case EShLangTask:
+ case EShLangMesh:
+ if(isMeshShaderExt) {
+ builder.addCapability(spv::CapabilityMeshShadingEXT);
+ builder.addExtension(spv::E_SPV_EXT_mesh_shader);
+ } else {
+ builder.addCapability(spv::CapabilityMeshShadingNV);
+ builder.addExtension(spv::E_SPV_NV_mesh_shader);
+ }
+ if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) {
+ std::vector<spv::Id> dimConstId;
+ for (int dim = 0; dim < 3; ++dim) {
+ bool specConst = (glslangIntermediate->getLocalSizeSpecId(dim) != glslang::TQualifier::layoutNotSet);
+ dimConstId.push_back(builder.makeUintConstant(glslangIntermediate->getLocalSize(dim), specConst));
+ if (specConst) {
+ builder.addDecoration(dimConstId.back(), spv::DecorationSpecId,
+ glslangIntermediate->getLocalSizeSpecId(dim));
+ }
+ }
+ builder.addExecutionModeId(shaderEntry, spv::ExecutionModeLocalSizeId, dimConstId);
+ } else {
+ builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0),
+ glslangIntermediate->getLocalSize(1),
+ glslangIntermediate->getLocalSize(2));
+ }
+ if (glslangIntermediate->getStage() == EShLangMesh) {
builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices,
glslangIntermediate->getVertices());
builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputPrimitivesNV,
@@ -1890,7 +1990,6 @@
if (symbol->getType().getQualifier().isSpecConstant())
spec_constant_op_mode_setter.turnOnSpecConstantOpMode();
-
#ifdef ENABLE_HLSL
// Skip symbol handling if it is string-typed
if (symbol->getBasicType() == glslang::EbtString)
@@ -1901,6 +2000,9 @@
// Formal function parameters were mapped during makeFunctions().
spv::Id id = getSymbolId(symbol);
+ if (symbol->getType().getQualifier().isTaskPayload())
+ taskPayloadID = id; // cache the taskPayloadID to be used it as operand for OpEmitMeshTasksEXT
+
if (builder.isPointer(id)) {
if (!symbol->getType().getQualifier().isParamInput() &&
!symbol->getType().getQualifier().isParamOutput()) {
@@ -2428,6 +2530,14 @@
return false;
}
+ // Force variable declaration - Debug Mode Only
+ if (node->getOp() == glslang::EOpDeclare) {
+ builder.clearAccessChain();
+ node->getOperand()->traverse(this);
+ builder.clearAccessChain();
+ return false;
+ }
+
// Start by evaluating the operand
// Does it need a swizzle inversion? If so, evaluation is inverted;
@@ -2444,7 +2554,7 @@
operandNode = node->getOperand()->getAsBinaryNode()->getLeft();
else
operandNode = node->getOperand();
-
+
operandNode->traverse(this);
spv::Id operand = spv::NoResult;
@@ -2688,32 +2798,38 @@
spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision());
switch (node->getOp()) {
+ case glslang::EOpScope:
case glslang::EOpSequence:
{
- if (preVisit)
+ if (visit == glslang::EvPreVisit) {
++sequenceDepth;
- else
+ if (sequenceDepth == 1) {
+ // If this is the parent node of all the functions, we want to see them
+ // early, so all call points have actual SPIR-V functions to reference.
+ // In all cases, still let the traverser visit the children for us.
+ makeFunctions(node->getAsAggregate()->getSequence());
+
+ // Also, we want all globals initializers to go into the beginning of the entry point, before
+ // anything else gets there, so visit out of order, doing them all now.
+ makeGlobalInitializers(node->getAsAggregate()->getSequence());
+
+ //Pre process linker objects for ray tracing stages
+ if (glslangIntermediate->isRayTracingStage())
+ collectRayTracingLinkerObjects();
+
+ // Initializers are done, don't want to visit again, but functions and link objects need to be processed,
+ // so do them manually.
+ visitFunctions(node->getAsAggregate()->getSequence());
+
+ return false;
+ } else {
+ if (node->getOp() == glslang::EOpScope)
+ builder.enterScope(0);
+ }
+ } else {
+ if (sequenceDepth > 1 && node->getOp() == glslang::EOpScope)
+ builder.leaveScope();
--sequenceDepth;
-
- if (sequenceDepth == 1) {
- // If this is the parent node of all the functions, we want to see them
- // early, so all call points have actual SPIR-V functions to reference.
- // In all cases, still let the traverser visit the children for us.
- makeFunctions(node->getAsAggregate()->getSequence());
-
- // Also, we want all globals initializers to go into the beginning of the entry point, before
- // anything else gets there, so visit out of order, doing them all now.
- makeGlobalInitializers(node->getAsAggregate()->getSequence());
-
- //Pre process linker objects for ray tracing stages
- if (glslangIntermediate->isRayTracingStage())
- collectRayTracingLinkerObjects();
-
- // Initializers are done, don't want to visit again, but functions and link objects need to be processed,
- // so do them manually.
- visitFunctions(node->getAsAggregate()->getSequence());
-
- return false;
}
return true;
@@ -2742,10 +2858,17 @@
if (isShaderEntryPoint(node)) {
inEntryPoint = true;
builder.setBuildPoint(shaderEntry->getLastBlock());
+ builder.enterFunction(shaderEntry);
currentFunction = shaderEntry;
} else {
handleFunctionEntry(node);
}
+ if (options.generateDebugInfo) {
+ const auto& loc = node->getLoc();
+ const char* sourceFileName = loc.getFilename();
+ spv::Id sourceFileId = sourceFileName ? builder.getStringId(sourceFileName) : builder.getSourceFile();
+ currentFunction->setDebugLineInfo(sourceFileId, loc.line, loc.column);
+ }
} else {
if (inEntryPoint)
entryPointTerminated = true;
@@ -2885,9 +3008,17 @@
std::vector<spv::Id> arguments;
translateArguments(*node, arguments, lvalueCoherentFlags);
spv::Id constructed;
- if (node->getOp() == glslang::EOpConstructTextureSampler)
- constructed = builder.createOp(spv::OpSampledImage, resultType(), arguments);
- else if (node->getOp() == glslang::EOpConstructStruct ||
+ if (node->getOp() == glslang::EOpConstructTextureSampler) {
+ const glslang::TType& texType = node->getSequence()[0]->getAsTyped()->getType();
+ if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6 &&
+ texType.getSampler().isBuffer()) {
+ // SamplerBuffer is not supported in spirv1.6 so
+ // `samplerBuffer(textureBuffer, sampler)` is a no-op
+ // and textureBuffer is the result going forward
+ constructed = arguments[0];
+ } else
+ constructed = builder.createOp(spv::OpSampledImage, resultType(), arguments);
+ } else if (node->getOp() == glslang::EOpConstructStruct ||
node->getOp() == glslang::EOpConstructCooperativeMatrix ||
node->getType().isArray()) {
std::vector<spv::Id> constituents;
@@ -3027,6 +3158,8 @@
case glslang::EOpExecuteCallableNV:
case glslang::EOpExecuteCallableKHR:
case glslang::EOpWritePackedPrimitiveIndices4x8NV:
+ case glslang::EOpEmitMeshTasksEXT:
+ case glslang::EOpSetMeshOutputsEXT:
noReturnValue = true;
break;
case glslang::EOpRayQueryInitialize:
@@ -3421,7 +3554,7 @@
break;
case 1:
{
- OpDecorations decorations = { precision,
+ OpDecorations decorations = { precision,
TranslateNoContractionDecoration(node->getType().getQualifier()),
TranslateNonUniformDecoration(node->getType().getQualifier()) };
result = createUnaryOperation(
@@ -3543,7 +3676,7 @@
// smear condition to vector, if necessary (AST is always scalar)
// Before 1.4, smear like for mix(), starting with 1.4, keep it scalar
if (glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_4 && builder.isVector(trueValue)) {
- condition = builder.smearScalar(spv::NoPrecision, condition,
+ condition = builder.smearScalar(spv::NoPrecision, condition,
builder.makeVectorType(builder.makeBoolType(),
builder.getNumComponents(trueValue)));
}
@@ -3714,8 +3847,8 @@
// by a block-ending branch. But we don't want to put any other body/test
// instructions in it, since the body/test may have arbitrary instructions,
// including merges of its own.
- builder.setLine(node->getLoc().line, node->getLoc().getFilename());
builder.setBuildPoint(&blocks.head);
+ builder.setLine(node->getLoc().line, node->getLoc().getFilename());
builder.createLoopMerge(&blocks.merge, &blocks.continue_target, control, operands);
if (node->testFirst() && node->getTest()) {
spv::Block& test = builder.makeNewBlock();
@@ -3777,7 +3910,16 @@
switch (node->getFlowOp()) {
case glslang::EOpKill:
- builder.makeStatementTerminator(spv::OpKill, "post-discard");
+ if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) {
+ if (glslangIntermediate->getSource() == glslang::EShSourceHlsl) {
+ builder.addCapability(spv::CapabilityDemoteToHelperInvocation);
+ builder.createNoResultOp(spv::OpDemoteToHelperInvocationEXT);
+ } else {
+ builder.makeStatementTerminator(spv::OpTerminateInvocation, "post-terminate-invocation");
+ }
+ } else {
+ builder.makeStatementTerminator(spv::OpKill, "post-discard");
+ }
break;
case glslang::EOpTerminateInvocation:
builder.addExtension(spv::E_SPV_KHR_terminate_invocation);
@@ -3925,7 +4067,7 @@
initializer = builder.makeNullConstant(spvType);
}
- return builder.createVariable(spv::NoPrecision, storageClass, spvType, name, initializer);
+ return builder.createVariable(spv::NoPrecision, storageClass, spvType, name, initializer, false);
}
// Return type Id of the sampled type.
@@ -4013,7 +4155,7 @@
if (explicitLayout != glslang::ElpNone)
spvType = builder.makeUintType(32);
else
- spvType = builder.makeBoolType();
+ spvType = builder.makeBoolType(false);
break;
case glslang::EbtInt:
spvType = builder.makeIntType(32);
@@ -4113,8 +4255,10 @@
spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler),
sampler.isShadow(), sampler.isArrayed(), sampler.isMultiSample(),
sampler.isImageClass() ? 2 : 1, TranslateImageFormat(type));
- if (sampler.isCombined()) {
- // already has both image and sampler, make the combined type
+ if (sampler.isCombined() &&
+ (!sampler.isBuffer() || glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_6)) {
+ // Already has both image and sampler, make the combined type. Only combine sampler to
+ // buffer if before SPIR-V 1.6.
spvType = builder.makeSampledImageType(spvType);
}
}
@@ -4148,23 +4292,25 @@
const auto& spirvType = type.getSpirvType();
const auto& spirvInst = spirvType.spirvInst;
- std::vector<spv::Id> operands;
+ std::vector<spv::IdImmediate> operands;
for (const auto& typeParam : spirvType.typeParams) {
// Constant expression
if (typeParam.constant->isLiteral()) {
if (typeParam.constant->getBasicType() == glslang::EbtFloat) {
float floatValue = static_cast<float>(typeParam.constant->getConstArray()[0].getDConst());
- unsigned literal = *reinterpret_cast<unsigned*>(&floatValue);
- operands.push_back(literal);
+ unsigned literal;
+ static_assert(sizeof(literal) == sizeof(floatValue), "sizeof(unsigned) != sizeof(float)");
+ memcpy(&literal, &floatValue, sizeof(literal));
+ operands.push_back({false, literal});
} else if (typeParam.constant->getBasicType() == glslang::EbtInt) {
unsigned literal = typeParam.constant->getConstArray()[0].getIConst();
- operands.push_back(literal);
+ operands.push_back({false, literal});
} else if (typeParam.constant->getBasicType() == glslang::EbtUint) {
unsigned literal = typeParam.constant->getConstArray()[0].getUConst();
- operands.push_back(literal);
+ operands.push_back({false, literal});
} else if (typeParam.constant->getBasicType() == glslang::EbtBool) {
unsigned literal = typeParam.constant->getConstArray()[0].getBConst();
- operands.push_back(literal);
+ operands.push_back({false, literal});
} else if (typeParam.constant->getBasicType() == glslang::EbtString) {
auto str = typeParam.constant->getConstArray()[0].getSConst()->c_str();
unsigned literal = 0;
@@ -4176,7 +4322,7 @@
*(literalPtr++) = ch;
++charCount;
if (charCount == 4) {
- operands.push_back(literal);
+ operands.push_back({false, literal});
literalPtr = reinterpret_cast<char*>(&literal);
charCount = 0;
}
@@ -4186,20 +4332,17 @@
if (charCount > 0) {
for (; charCount < 4; ++charCount)
*(literalPtr++) = 0;
- operands.push_back(literal);
+ operands.push_back({false, literal});
}
} else
assert(0); // Unexpected type
} else
- operands.push_back(createSpvConstant(*typeParam.constant));
+ operands.push_back({true, createSpvConstant(*typeParam.constant)});
}
- if (spirvInst.set == "")
- spvType = builder.createOp(static_cast<spv::Op>(spirvInst.id), spv::NoType, operands);
- else {
- spvType = builder.createBuiltinCall(
- spv::NoType, getExtBuiltins(spirvInst.set.c_str()), spirvInst.id, operands);
- }
+ assert(spirvInst.set == ""); // Currently, couldn't be extended instructions.
+ spvType = builder.makeGenericType(static_cast<spv::Op>(spirvInst.id), operands);
+
break;
}
#endif
@@ -4302,7 +4445,7 @@
extensions.find("GL_NV_stereo_view_rendering") == extensions.end())
return true;
- if (glslangIntermediate->getStage() != EShLangMeshNV) {
+ if (glslangIntermediate->getStage() != EShLangMesh) {
if (member.getFieldName() == "gl_ViewportMask" &&
extensions.find("GL_NV_viewport_array2") == extensions.end())
return true;
@@ -4332,14 +4475,14 @@
// 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()) {
+ auto& glslangMember = (*glslangMembers)[i];
+ if (glslangMember.type->hiddenMember()) {
++memberDelta;
if (type.getBasicType() == glslang::EbtBlock)
memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = -1;
} else {
if (type.getBasicType() == glslang::EbtBlock) {
- if (filterMember(glslangMember)) {
+ if (filterMember(*glslangMember.type)) {
memberDelta++;
memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = -1;
continue;
@@ -4347,7 +4490,7 @@
memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = i - memberDelta;
}
// modify just this child's view of the qualifier
- glslang::TQualifier memberQualifier = glslangMember.getQualifier();
+ glslang::TQualifier memberQualifier = glslangMember.type->getQualifier();
InheritQualifiers(memberQualifier, qualifier);
// manually inherit location
@@ -4358,25 +4501,38 @@
bool lastBufferBlockMember = qualifier.storage == glslang::EvqBuffer &&
i == (int)glslangMembers->size() - 1;
- // Make forward pointers for any pointer members, and create a list of members to
- // convert to spirv types after creating the struct.
- if (glslangMember.isReference()) {
- if (forwardPointers.find(glslangMember.getReferentType()) == forwardPointers.end()) {
- deferredForwardPointers.push_back(std::make_pair(&glslangMember, memberQualifier));
- }
- spvMembers.push_back(
- convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember,
- true));
- } else {
- spvMembers.push_back(
- convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember,
- false));
+ // Make forward pointers for any pointer members.
+ if (glslangMember.type->isReference() &&
+ forwardPointers.find(glslangMember.type->getReferentType()) == forwardPointers.end()) {
+ deferredForwardPointers.push_back(std::make_pair(glslangMember.type, memberQualifier));
+ }
+
+ // Create the member type.
+ auto const spvMember = convertGlslangToSpvType(*glslangMember.type, explicitLayout, memberQualifier, lastBufferBlockMember,
+ glslangMember.type->isReference());
+ spvMembers.push_back(spvMember);
+
+ // Update the builder with the type's location so that we can create debug types for the structure members.
+ // There doesn't exist a "clean" entry point for this information to be passed along to the builder so, for now,
+ // it is stored in the builder and consumed during the construction of composite debug types.
+ // TODO: This probably warrants further investigation. This approach was decided to be the least ugly of the
+ // quick and dirty approaches that were tried.
+ // Advantages of this approach:
+ // + Relatively clean. No direct calls into debug type system.
+ // + Handles nested recursive structures.
+ // Disadvantages of this approach:
+ // + Not as clean as desired. Traverser queries/sets persistent state. This is fragile.
+ // + Table lookup during creation of composite debug types. This really shouldn't be necessary.
+ if(options.emitNonSemanticShaderDebugInfo) {
+ builder.debugTypeLocs[spvMember].name = glslangMember.type->getFieldName().c_str();
+ builder.debugTypeLocs[spvMember].line = glslangMember.loc.line;
+ builder.debugTypeLocs[spvMember].column = glslangMember.loc.column;
}
}
}
// Make the SPIR-V type
- spv::Id spvType = builder.makeStructType(spvMembers, type.getTypeName().c_str());
+ spv::Id spvType = builder.makeStructType(spvMembers, type.getTypeName().c_str(), false);
if (! HasNonLayoutQualifiers(type, qualifier))
structMap[explicitLayout][qualifier.layoutMatrix][glslangMembers] = spvType;
@@ -4970,6 +5126,7 @@
// GLSL has copy-in/copy-out semantics. They can be handled though with a pointer to a copy.
std::vector<spv::Id> paramTypes;
+ std::vector<char const*> paramNames;
std::vector<std::vector<spv::Decoration>> paramDecorations; // list of decorations per parameter
glslang::TIntermSequence& parameters = glslFunction->getSequence()[0]->getAsAggregate()->getSequence();
@@ -4994,10 +5151,14 @@
paramTypes.push_back(typeId);
}
+ for (auto const parameter:parameters) {
+ paramNames.push_back(parameter->getAsSymbolNode()->getName().c_str());
+ }
+
spv::Block* functionBlock;
spv::Function *function = builder.makeFunctionEntry(TranslatePrecisionDecoration(glslFunction->getType()),
convertGlslangToSpvType(glslFunction->getType()),
- glslFunction->getName().c_str(), paramTypes,
+ glslFunction->getName().c_str(), paramTypes, paramNames,
paramDecorations, &functionBlock);
if (implicitThis)
function->setImplicitThis();
@@ -5087,6 +5248,7 @@
currentFunction = functionMap[node->getName().c_str()];
spv::Block* functionBlock = currentFunction->getEntryBlock();
builder.setBuildPoint(functionBlock);
+ builder.enterFunction(currentFunction);
}
void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments,
@@ -5514,10 +5676,12 @@
operands.push_back(sample);
spv::Id resultTypeId;
+ glslang::TBasicType typeProxy = node->getBasicType();
// 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(*opIt));
+ typeProxy = node->getAsAggregate()->getSequence()[0]->getAsTyped()->getType().getSampler().type;
} else {
resultTypeId = builder.makePointer(spv::StorageClassImage, resultType());
}
@@ -5531,7 +5695,7 @@
for (; opIt != arguments.end(); ++opIt)
operands.push_back(*opIt);
- return createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(),
+ return createAtomicOperation(node->getOp(), precision, resultType(), operands, typeProxy,
lvalueCoherentFlags);
}
}
@@ -5735,10 +5899,10 @@
assert(builder.isStructType(resultStructType));
//resType (SPIR-V type) contains 6 elements:
- //Member 0 must be a Boolean type scalar(LOD),
- //Member 1 must be a vector of integer type, whose Signedness operand is 0(anchor),
- //Member 2 must be a vector of integer type, whose Signedness operand is 0(offset),
- //Member 3 must be a vector of integer type, whose Signedness operand is 0(mask),
+ //Member 0 must be a Boolean type scalar(LOD),
+ //Member 1 must be a vector of integer type, whose Signedness operand is 0(anchor),
+ //Member 2 must be a vector of integer type, whose Signedness operand is 0(offset),
+ //Member 3 must be a vector of integer type, whose Signedness operand is 0(mask),
//Member 4 must be a scalar of integer type, whose Signedness operand is 0(lod),
//Member 5 must be a scalar of integer type, whose Signedness operand is 0(granularity).
std::vector<spv::Id> members;
@@ -5751,7 +5915,7 @@
//call ImageFootprintNV
spv::Id res = builder.createTextureCall(precision, resType, sparse, cracked.fetch, cracked.proj,
cracked.gather, noImplicitLod, params, signExtensionMask());
-
+
//copy resType (SPIR-V type) to resultStructType(OpenGL type)
for (int i = 0; i < 5; i++) {
builder.clearAccessChain();
@@ -5804,7 +5968,7 @@
}
#endif
- std::vector<spv::Id> result( 1,
+ std::vector<spv::Id> result( 1,
builder.createTextureCall(precision, resultType(), sparse, cracked.fetch, cracked.proj, cracked.gather,
noImplicitLod, params, signExtensionMask())
);
@@ -7327,7 +7491,7 @@
} else {
scopeId = builder.makeUintConstant(spv::ScopeDevice);
}
- // semantics default to relaxed
+ // semantics default to relaxed
spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.isVolatile() &&
glslangIntermediate->usingVulkanMemoryModel() ?
spv::MemorySemanticsVolatileMask :
@@ -8431,6 +8595,15 @@
case glslang::EOpWritePackedPrimitiveIndices4x8NV:
builder.createNoResultOp(spv::OpWritePackedPrimitiveIndices4x8NV, operands);
return 0;
+ case glslang::EOpEmitMeshTasksEXT:
+ if (taskPayloadID)
+ operands.push_back(taskPayloadID);
+ // As per SPV_EXT_mesh_shader make it a terminating instruction in the current block
+ builder.makeStatementTerminator(spv::OpEmitMeshTasksEXT, operands, "post-OpEmitMeshTasksEXT");
+ return 0;
+ case glslang::EOpSetMeshOutputsEXT:
+ builder.createNoResultOp(spv::OpSetMeshOutputsEXT, operands);
+ return 0;
case glslang::EOpCooperativeMatrixMulAdd:
opCode = spv::OpCooperativeMatrixMulAddNV;
break;
@@ -8694,7 +8867,32 @@
// it was not found, create it
spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn, false);
auto forcedType = getForcedType(symbol->getQualifier().builtIn, symbol->getType());
+
+ // There are pairs of symbols that map to the same SPIR-V built-in:
+ // gl_ObjectToWorldEXT and gl_ObjectToWorld3x4EXT, and gl_WorldToObjectEXT
+ // and gl_WorldToObject3x4EXT. SPIR-V forbids having two OpVariables
+ // with the same BuiltIn in the same storage class, so we must re-use one.
+ const bool mayNeedToReuseBuiltIn =
+ builtIn == spv::BuiltInObjectToWorldKHR ||
+ builtIn == spv::BuiltInWorldToObjectKHR;
+
+ if (mayNeedToReuseBuiltIn) {
+ auto iter = builtInVariableIds.find(uint32_t(builtIn));
+ if (builtInVariableIds.end() != iter) {
+ id = iter->second;
+ symbolValues[symbol->getId()] = id;
+ if (forcedType.second != spv::NoType)
+ forceType[id] = forcedType.second;
+ return id;
+ }
+ }
+
id = createSpvVariable(symbol, forcedType.first);
+
+ if (mayNeedToReuseBuiltIn) {
+ builtInVariableIds.insert({uint32_t(builtIn), id});
+ }
+
symbolValues[symbol->getId()] = id;
if (forcedType.second != spv::NoType)
forceType[id] = forcedType.second;
@@ -8717,8 +8915,18 @@
builder.addDecoration(id, spv::DecorationOffset, symbol->getQualifier().layoutOffset);
}
- if (symbol->getQualifier().hasLocation())
- builder.addDecoration(id, spv::DecorationLocation, symbol->getQualifier().layoutLocation);
+ if (symbol->getQualifier().hasLocation()) {
+ if (!(glslangIntermediate->isRayTracingStage() && glslangIntermediate->IsRequestedExtension(glslang::E_GL_EXT_ray_tracing)
+ && (builder.getStorageClass(id) == spv::StorageClassRayPayloadKHR ||
+ builder.getStorageClass(id) == spv::StorageClassIncomingRayPayloadKHR ||
+ builder.getStorageClass(id) == spv::StorageClassCallableDataKHR ||
+ builder.getStorageClass(id) == spv::StorageClassIncomingCallableDataKHR))) {
+ // Location values are used to link TraceRayKHR and ExecuteCallableKHR to corresponding variables
+ // but are not valid in SPIRV since they are supported only for Input/Output Storage classes.
+ builder.addDecoration(id, spv::DecorationLocation, symbol->getQualifier().layoutLocation);
+ }
+ }
+
builder.addDecoration(id, TranslateInvariantDecoration(symbol->getType().getQualifier()));
if (symbol->getQualifier().hasStream() && glslangIntermediate->isMultiStream()) {
builder.addCapability(spv::CapabilityGeometryStreams);
@@ -8752,7 +8960,16 @@
// add built-in variable decoration
if (builtIn != spv::BuiltInMax) {
- builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn);
+ // WorkgroupSize deprecated in spirv1.6
+ if (glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_6 ||
+ builtIn != spv::BuiltInWorkgroupSize)
+ builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn);
+ }
+
+ // Add volatile decoration to HelperInvocation for spirv1.6 and beyond
+ if (builtIn == spv::BuiltInHelperInvocation &&
+ glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) {
+ builder.addDecoration(id, spv::DecorationVolatile);
}
#ifndef GLSLANG_WEB
@@ -8804,6 +9021,12 @@
builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric);
}
+ if (symbol->getQualifier().pervertexEXT) {
+ builder.addDecoration(id, spv::DecorationPerVertexKHR);
+ builder.addCapability(spv::CapabilityFragmentBarycentricKHR);
+ builder.addExtension(spv::E_SPV_KHR_fragment_shader_barycentric);
+ }
+
if (glslangIntermediate->getHlslFunctionality1() && symbol->getType().getQualifier().semanticName != nullptr) {
builder.addExtension("SPV_GOOGLE_hlsl_functionality1");
builder.addDecoration(id, (spv::Decoration)spv::DecorationHlslSemanticGOOGLE,
@@ -8865,13 +9088,21 @@
// add per-primitive, per-view. per-task decorations to a struct member (member >= 0) or an object
void TGlslangToSpvTraverser::addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier& qualifier)
{
+ bool isMeshShaderExt = (glslangIntermediate->getRequestedExtensions().find(glslang::E_GL_EXT_mesh_shader) !=
+ glslangIntermediate->getRequestedExtensions().end());
+
if (member >= 0) {
if (qualifier.perPrimitiveNV) {
// Need to add capability/extension for fragment shader.
// Mesh shader already adds this by default.
if (glslangIntermediate->getStage() == EShLangFragment) {
- builder.addCapability(spv::CapabilityMeshShadingNV);
- builder.addExtension(spv::E_SPV_NV_mesh_shader);
+ if(isMeshShaderExt) {
+ builder.addCapability(spv::CapabilityMeshShadingEXT);
+ builder.addExtension(spv::E_SPV_EXT_mesh_shader);
+ } else {
+ builder.addCapability(spv::CapabilityMeshShadingNV);
+ builder.addExtension(spv::E_SPV_NV_mesh_shader);
+ }
}
builder.addMemberDecoration(id, (unsigned)member, spv::DecorationPerPrimitiveNV);
}
@@ -8884,8 +9115,13 @@
// Need to add capability/extension for fragment shader.
// Mesh shader already adds this by default.
if (glslangIntermediate->getStage() == EShLangFragment) {
- builder.addCapability(spv::CapabilityMeshShadingNV);
- builder.addExtension(spv::E_SPV_NV_mesh_shader);
+ if(isMeshShaderExt) {
+ builder.addCapability(spv::CapabilityMeshShadingEXT);
+ builder.addExtension(spv::E_SPV_EXT_mesh_shader);
+ } else {
+ builder.addCapability(spv::CapabilityMeshShadingNV);
+ builder.addExtension(spv::E_SPV_NV_mesh_shader);
+ }
}
builder.addDecoration(id, spv::DecorationPerPrimitiveNV);
}
@@ -9025,15 +9261,19 @@
break;
#ifndef GLSLANG_WEB
case glslang::EbtInt8:
+ builder.addCapability(spv::CapabilityInt8);
spvConsts.push_back(builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const()));
break;
case glslang::EbtUint8:
+ builder.addCapability(spv::CapabilityInt8);
spvConsts.push_back(builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const()));
break;
case glslang::EbtInt16:
+ builder.addCapability(spv::CapabilityInt16);
spvConsts.push_back(builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const()));
break;
case glslang::EbtUint16:
+ builder.addCapability(spv::CapabilityInt16);
spvConsts.push_back(builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const()));
break;
case glslang::EbtInt64:
@@ -9046,6 +9286,7 @@
spvConsts.push_back(builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst()));
break;
case glslang::EbtFloat16:
+ builder.addCapability(spv::CapabilityFloat16);
spvConsts.push_back(builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst()));
break;
#endif
@@ -9074,15 +9315,19 @@
break;
#ifndef GLSLANG_WEB
case glslang::EbtInt8:
+ builder.addCapability(spv::CapabilityInt8);
scalar = builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const(), specConstant);
break;
case glslang::EbtUint8:
+ builder.addCapability(spv::CapabilityInt8);
scalar = builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const(), specConstant);
break;
case glslang::EbtInt16:
+ builder.addCapability(spv::CapabilityInt16);
scalar = builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const(), specConstant);
break;
case glslang::EbtUint16:
+ builder.addCapability(spv::CapabilityInt16);
scalar = builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const(), specConstant);
break;
case glslang::EbtInt64:
@@ -9095,6 +9340,7 @@
scalar = builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst(), specConstant);
break;
case glslang::EbtFloat16:
+ builder.addCapability(spv::CapabilityFloat16);
scalar = builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant);
break;
case glslang::EbtReference:
@@ -9292,7 +9538,8 @@
// return 7; // GLSL volatile keyword maps to both SPIR-V decorations Volatile and Coherent
// return 8; // switch to new dead block eliminator; use OpUnreachable
// return 9; // don't include opaque function parameters in OpEntryPoint global's operand list
- return 10; // Generate OpFUnordNotEqual for != comparisons
+ // return 10; // Generate OpFUnordNotEqual for != comparisons
+ return 11; // Make OpEmitMeshTasksEXT a terminal instruction
}
// Write SPIR-V out to a binary file
diff --git a/SPIRV/NonSemanticShaderDebugInfo100.h b/SPIRV/NonSemanticShaderDebugInfo100.h
new file mode 100644
index 0000000..c52f32f
--- /dev/null
+++ b/SPIRV/NonSemanticShaderDebugInfo100.h
@@ -0,0 +1,171 @@
+// Copyright (c) 2018 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_NonSemanticShaderDebugInfo100_H_
+#define SPIRV_UNIFIED1_NonSemanticShaderDebugInfo100_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+ NonSemanticShaderDebugInfo100Version = 100,
+ NonSemanticShaderDebugInfo100Version_BitWidthPadding = 0x7fffffff
+};
+enum {
+ NonSemanticShaderDebugInfo100Revision = 6,
+ NonSemanticShaderDebugInfo100Revision_BitWidthPadding = 0x7fffffff
+};
+
+enum NonSemanticShaderDebugInfo100Instructions {
+ NonSemanticShaderDebugInfo100DebugInfoNone = 0,
+ NonSemanticShaderDebugInfo100DebugCompilationUnit = 1,
+ NonSemanticShaderDebugInfo100DebugTypeBasic = 2,
+ NonSemanticShaderDebugInfo100DebugTypePointer = 3,
+ NonSemanticShaderDebugInfo100DebugTypeQualifier = 4,
+ NonSemanticShaderDebugInfo100DebugTypeArray = 5,
+ NonSemanticShaderDebugInfo100DebugTypeVector = 6,
+ NonSemanticShaderDebugInfo100DebugTypedef = 7,
+ NonSemanticShaderDebugInfo100DebugTypeFunction = 8,
+ NonSemanticShaderDebugInfo100DebugTypeEnum = 9,
+ NonSemanticShaderDebugInfo100DebugTypeComposite = 10,
+ NonSemanticShaderDebugInfo100DebugTypeMember = 11,
+ NonSemanticShaderDebugInfo100DebugTypeInheritance = 12,
+ NonSemanticShaderDebugInfo100DebugTypePtrToMember = 13,
+ NonSemanticShaderDebugInfo100DebugTypeTemplate = 14,
+ NonSemanticShaderDebugInfo100DebugTypeTemplateParameter = 15,
+ NonSemanticShaderDebugInfo100DebugTypeTemplateTemplateParameter = 16,
+ NonSemanticShaderDebugInfo100DebugTypeTemplateParameterPack = 17,
+ NonSemanticShaderDebugInfo100DebugGlobalVariable = 18,
+ NonSemanticShaderDebugInfo100DebugFunctionDeclaration = 19,
+ NonSemanticShaderDebugInfo100DebugFunction = 20,
+ NonSemanticShaderDebugInfo100DebugLexicalBlock = 21,
+ NonSemanticShaderDebugInfo100DebugLexicalBlockDiscriminator = 22,
+ NonSemanticShaderDebugInfo100DebugScope = 23,
+ NonSemanticShaderDebugInfo100DebugNoScope = 24,
+ NonSemanticShaderDebugInfo100DebugInlinedAt = 25,
+ NonSemanticShaderDebugInfo100DebugLocalVariable = 26,
+ NonSemanticShaderDebugInfo100DebugInlinedVariable = 27,
+ NonSemanticShaderDebugInfo100DebugDeclare = 28,
+ NonSemanticShaderDebugInfo100DebugValue = 29,
+ NonSemanticShaderDebugInfo100DebugOperation = 30,
+ NonSemanticShaderDebugInfo100DebugExpression = 31,
+ NonSemanticShaderDebugInfo100DebugMacroDef = 32,
+ NonSemanticShaderDebugInfo100DebugMacroUndef = 33,
+ NonSemanticShaderDebugInfo100DebugImportedEntity = 34,
+ NonSemanticShaderDebugInfo100DebugSource = 35,
+ NonSemanticShaderDebugInfo100DebugFunctionDefinition = 101,
+ NonSemanticShaderDebugInfo100DebugSourceContinued = 102,
+ NonSemanticShaderDebugInfo100DebugLine = 103,
+ NonSemanticShaderDebugInfo100DebugNoLine = 104,
+ NonSemanticShaderDebugInfo100DebugBuildIdentifier = 105,
+ NonSemanticShaderDebugInfo100DebugStoragePath = 106,
+ NonSemanticShaderDebugInfo100DebugEntryPoint = 107,
+ NonSemanticShaderDebugInfo100DebugTypeMatrix = 108,
+ NonSemanticShaderDebugInfo100InstructionsMax = 0x7fffffff
+};
+
+
+enum NonSemanticShaderDebugInfo100DebugInfoFlags {
+ NonSemanticShaderDebugInfo100None = 0x0000,
+ NonSemanticShaderDebugInfo100FlagIsProtected = 0x01,
+ NonSemanticShaderDebugInfo100FlagIsPrivate = 0x02,
+ NonSemanticShaderDebugInfo100FlagIsPublic = 0x03,
+ NonSemanticShaderDebugInfo100FlagIsLocal = 0x04,
+ NonSemanticShaderDebugInfo100FlagIsDefinition = 0x08,
+ NonSemanticShaderDebugInfo100FlagFwdDecl = 0x10,
+ NonSemanticShaderDebugInfo100FlagArtificial = 0x20,
+ NonSemanticShaderDebugInfo100FlagExplicit = 0x40,
+ NonSemanticShaderDebugInfo100FlagPrototyped = 0x80,
+ NonSemanticShaderDebugInfo100FlagObjectPointer = 0x100,
+ NonSemanticShaderDebugInfo100FlagStaticMember = 0x200,
+ NonSemanticShaderDebugInfo100FlagIndirectVariable = 0x400,
+ NonSemanticShaderDebugInfo100FlagLValueReference = 0x800,
+ NonSemanticShaderDebugInfo100FlagRValueReference = 0x1000,
+ NonSemanticShaderDebugInfo100FlagIsOptimized = 0x2000,
+ NonSemanticShaderDebugInfo100FlagIsEnumClass = 0x4000,
+ NonSemanticShaderDebugInfo100FlagTypePassByValue = 0x8000,
+ NonSemanticShaderDebugInfo100FlagTypePassByReference = 0x10000,
+ NonSemanticShaderDebugInfo100FlagUnknownPhysicalLayout = 0x20000,
+ NonSemanticShaderDebugInfo100DebugInfoFlagsMax = 0x7fffffff
+};
+
+enum NonSemanticShaderDebugInfo100BuildIdentifierFlags {
+ NonSemanticShaderDebugInfo100IdentifierPossibleDuplicates = 0x01,
+ NonSemanticShaderDebugInfo100BuildIdentifierFlagsMax = 0x7fffffff
+};
+
+enum NonSemanticShaderDebugInfo100DebugBaseTypeAttributeEncoding {
+ NonSemanticShaderDebugInfo100Unspecified = 0,
+ NonSemanticShaderDebugInfo100Address = 1,
+ NonSemanticShaderDebugInfo100Boolean = 2,
+ NonSemanticShaderDebugInfo100Float = 3,
+ NonSemanticShaderDebugInfo100Signed = 4,
+ NonSemanticShaderDebugInfo100SignedChar = 5,
+ NonSemanticShaderDebugInfo100Unsigned = 6,
+ NonSemanticShaderDebugInfo100UnsignedChar = 7,
+ NonSemanticShaderDebugInfo100DebugBaseTypeAttributeEncodingMax = 0x7fffffff
+};
+
+enum NonSemanticShaderDebugInfo100DebugCompositeType {
+ NonSemanticShaderDebugInfo100Class = 0,
+ NonSemanticShaderDebugInfo100Structure = 1,
+ NonSemanticShaderDebugInfo100Union = 2,
+ NonSemanticShaderDebugInfo100DebugCompositeTypeMax = 0x7fffffff
+};
+
+enum NonSemanticShaderDebugInfo100DebugTypeQualifier {
+ NonSemanticShaderDebugInfo100ConstType = 0,
+ NonSemanticShaderDebugInfo100VolatileType = 1,
+ NonSemanticShaderDebugInfo100RestrictType = 2,
+ NonSemanticShaderDebugInfo100AtomicType = 3,
+ NonSemanticShaderDebugInfo100DebugTypeQualifierMax = 0x7fffffff
+};
+
+enum NonSemanticShaderDebugInfo100DebugOperation {
+ NonSemanticShaderDebugInfo100Deref = 0,
+ NonSemanticShaderDebugInfo100Plus = 1,
+ NonSemanticShaderDebugInfo100Minus = 2,
+ NonSemanticShaderDebugInfo100PlusUconst = 3,
+ NonSemanticShaderDebugInfo100BitPiece = 4,
+ NonSemanticShaderDebugInfo100Swap = 5,
+ NonSemanticShaderDebugInfo100Xderef = 6,
+ NonSemanticShaderDebugInfo100StackValue = 7,
+ NonSemanticShaderDebugInfo100Constu = 8,
+ NonSemanticShaderDebugInfo100Fragment = 9,
+ NonSemanticShaderDebugInfo100DebugOperationMax = 0x7fffffff
+};
+
+enum NonSemanticShaderDebugInfo100DebugImportedEntity {
+ NonSemanticShaderDebugInfo100ImportedModule = 0,
+ NonSemanticShaderDebugInfo100ImportedDeclaration = 1,
+ NonSemanticShaderDebugInfo100DebugImportedEntityMax = 0x7fffffff
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SPIRV_UNIFIED1_NonSemanticShaderDebugInfo100_H_
diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp
index 56d6d5d..6aca8cb 100644
--- a/SPIRV/SPVRemapper.cpp
+++ b/SPIRV/SPVRemapper.cpp
@@ -160,15 +160,29 @@
}
// Is this an opcode we should remove when using --strip?
- bool spirvbin_t::isStripOp(spv::Op opCode) const
+ bool spirvbin_t::isStripOp(spv::Op opCode, unsigned start) const
{
switch (opCode) {
case spv::OpSource:
case spv::OpSourceExtension:
case spv::OpName:
case spv::OpMemberName:
- case spv::OpLine: return true;
- default: return false;
+ case spv::OpLine :
+ {
+ const std::string name = literalString(start + 2);
+
+ std::vector<std::string>::const_iterator it;
+ for (it = stripWhiteList.begin(); it < stripWhiteList.end(); it++)
+ {
+ if (name.find(*it) != std::string::npos) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ default :
+ return false;
}
}
@@ -297,15 +311,21 @@
std::string spirvbin_t::literalString(unsigned word) const
{
std::string literal;
+ const spirword_t * pos = spv.data() + word;
literal.reserve(16);
- const char* bytes = reinterpret_cast<const char*>(spv.data() + word);
-
- while (bytes && *bytes)
- literal += *bytes++;
-
- return literal;
+ do {
+ spirword_t word = *pos;
+ for (int i = 0; i < 4; i++) {
+ char c = word & 0xff;
+ if (c == '\0')
+ return literal;
+ literal += c;
+ word >>= 8;
+ }
+ pos++;
+ } while (true);
}
void spirvbin_t::applyMap()
@@ -366,7 +386,7 @@
process(
[&](spv::Op opCode, unsigned start) {
// remember opcodes we want to strip later
- if (isStripOp(opCode))
+ if (isStripOp(opCode, start))
stripInst(start);
return true;
},
@@ -1488,13 +1508,24 @@
}
// remap from a memory image
- void spirvbin_t::remap(std::vector<std::uint32_t>& in_spv, std::uint32_t opts)
+ void spirvbin_t::remap(std::vector<std::uint32_t>& in_spv, const std::vector<std::string>& whiteListStrings,
+ std::uint32_t opts)
{
+ stripWhiteList = whiteListStrings;
spv.swap(in_spv);
remap(opts);
spv.swap(in_spv);
}
+ // remap from a memory image - legacy interface without white list
+ void spirvbin_t::remap(std::vector<std::uint32_t>& in_spv, std::uint32_t opts)
+ {
+ stripWhiteList.clear();
+ spv.swap(in_spv);
+ remap(opts);
+ spv.swap(in_spv);
+ }
+
} // namespace SPV
#endif // defined (use_cpp11)
diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h
index d6b9c34..d216946 100644
--- a/SPIRV/SPVRemapper.h
+++ b/SPIRV/SPVRemapper.h
@@ -118,6 +118,10 @@
virtual ~spirvbin_t() { }
// remap on an existing binary in memory
+ void remap(std::vector<std::uint32_t>& spv, const std::vector<std::string>& whiteListStrings,
+ std::uint32_t opts = DO_EVERYTHING);
+
+ // remap on an existing binary in memory - legacy interface without white list
void remap(std::vector<std::uint32_t>& spv, std::uint32_t opts = DO_EVERYTHING);
// Type for error/log handler functions
@@ -180,6 +184,8 @@
unsigned typeSizeInWords(spv::Id id) const;
unsigned idTypeSizeInWords(spv::Id id) const;
+ bool isStripOp(spv::Op opCode, unsigned start) const;
+
spv::Id& asId(unsigned word) { return spv[word]; }
const spv::Id& asId(unsigned word) const { return spv[word]; }
spv::Op asOpCode(unsigned word) const { return opOpCode(spv[word]); }
@@ -249,6 +255,8 @@
std::vector<spirword_t> spv; // SPIR words
+ std::vector<std::string> stripWhiteList;
+
namemap_t nameMap; // ID names from OpName
// Since we want to also do binary ops, we can't use std::vector<bool>. we could use
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index e83306e..7c5ea87 100644
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -59,12 +59,15 @@
Builder::Builder(unsigned int spvVersion, unsigned int magicNumber, SpvBuildLogger* buildLogger) :
spvVersion(spvVersion),
- source(SourceLanguageUnknown),
+ sourceLang(SourceLanguageUnknown),
sourceVersion(0),
sourceFileStringId(NoResult),
currentLine(0),
currentFile(nullptr),
+ currentFileId(NoResult),
+ lastDebugScopeId(NoResult),
emitOpLines(false),
+ emitNonSemanticShaderDebugInfo(false),
addressModel(AddressingModelLogical),
memoryModel(MemoryModelGLSL450),
builderNumber(magicNumber),
@@ -98,8 +101,12 @@
{
if (lineNum != 0 && lineNum != currentLine) {
currentLine = lineNum;
- if (emitOpLines)
- addLine(sourceFileStringId, currentLine, 0);
+ if (emitOpLines) {
+ if (emitNonSemanticShaderDebugInfo)
+ addDebugScopeAndLine(currentFileId, currentLine, 0);
+ else
+ addLine(sourceFileStringId, currentLine, 0);
+ }
}
}
@@ -118,7 +125,10 @@
currentFile = filename;
if (emitOpLines) {
spv::Id strId = getStringId(filename);
- addLine(strId, currentLine, 0);
+ if (emitNonSemanticShaderDebugInfo)
+ addDebugScopeAndLine(strId, currentLine, 0);
+ else
+ addLine(strId, currentLine, 0);
}
}
}
@@ -132,22 +142,49 @@
buildPoint->addInstruction(std::unique_ptr<Instruction>(line));
}
+void Builder::addDebugScopeAndLine(Id fileName, int lineNum, int column)
+{
+ if (currentDebugScopeId.top() != lastDebugScopeId) {
+ spv::Id resultId = getUniqueId();
+ Instruction* scopeInst = new Instruction(resultId, makeVoidType(), OpExtInst);
+ scopeInst->addIdOperand(nonSemanticShaderDebugInfo);
+ scopeInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugScope);
+ scopeInst->addIdOperand(currentDebugScopeId.top());
+ buildPoint->addInstruction(std::unique_ptr<Instruction>(scopeInst));
+ lastDebugScopeId = currentDebugScopeId.top();
+ }
+ spv::Id resultId = getUniqueId();
+ Instruction* lineInst = new Instruction(resultId, makeVoidType(), OpExtInst);
+ lineInst->addIdOperand(nonSemanticShaderDebugInfo);
+ lineInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLine);
+ lineInst->addIdOperand(makeDebugSource(fileName));
+ lineInst->addIdOperand(makeUintConstant(lineNum));
+ lineInst->addIdOperand(makeUintConstant(lineNum));
+ lineInst->addIdOperand(makeUintConstant(column));
+ lineInst->addIdOperand(makeUintConstant(column));
+ buildPoint->addInstruction(std::unique_ptr<Instruction>(lineInst));
+}
+
// For creating new groupedTypes (will return old type if the requested one was already made).
Id Builder::makeVoidType()
{
Instruction* type;
if (groupedTypes[OpTypeVoid].size() == 0) {
- type = new Instruction(getUniqueId(), NoType, OpTypeVoid);
+ Id typeId = getUniqueId();
+ type = new Instruction(typeId, NoType, OpTypeVoid);
groupedTypes[OpTypeVoid].push_back(type);
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
module.mapInstruction(type);
+ // Core OpTypeVoid used for debug void type
+ if (emitNonSemanticShaderDebugInfo)
+ debugId[typeId] = typeId;
} else
type = groupedTypes[OpTypeVoid].back();
return type->getResultId();
}
-Id Builder::makeBoolType()
+Id Builder::makeBoolType(bool const compilerGenerated)
{
Instruction* type;
if (groupedTypes[OpTypeBool].size() == 0) {
@@ -158,6 +195,12 @@
} else
type = groupedTypes[OpTypeBool].back();
+ if (emitNonSemanticShaderDebugInfo && !compilerGenerated)
+ {
+ auto const debugResultId = makeBoolDebugType(32);
+ debugId[type->getResultId()] = debugResultId;
+ }
+
return type->getResultId();
}
@@ -172,6 +215,12 @@
} else
type = groupedTypes[OpTypeSampler].back();
+ if (emitNonSemanticShaderDebugInfo)
+ {
+ auto const debugResultId = makeCompositeDebugType({}, "type.sampler", NonSemanticShaderDebugInfo100Structure, true);
+ debugId[type->getResultId()] = debugResultId;
+ }
+
return type->getResultId();
}
@@ -268,6 +317,12 @@
break;
}
+ if (emitNonSemanticShaderDebugInfo)
+ {
+ auto const debugResultId = makeIntegerDebugType(width, hasSign);
+ debugId[type->getResultId()] = debugResultId;
+ }
+
return type->getResultId();
}
@@ -305,6 +360,12 @@
break;
}
+ if (emitNonSemanticShaderDebugInfo)
+ {
+ auto const debugResultId = makeFloatDebugType(width);
+ debugId[type->getResultId()] = debugResultId;
+ }
+
return type->getResultId();
}
@@ -312,7 +373,7 @@
// See makeStructResultType() for non-decorated structs
// needed as the result of some instructions, which does
// check for duplicates.
-Id Builder::makeStructType(const std::vector<Id>& members, const char* name)
+Id Builder::makeStructType(const std::vector<Id>& members, const char* name, bool const compilerGenerated)
{
// Don't look for previous one, because in the general case,
// structs can be duplicated except for decorations.
@@ -326,6 +387,12 @@
module.mapInstruction(type);
addName(type->getResultId(), name);
+ if (emitNonSemanticShaderDebugInfo && !compilerGenerated)
+ {
+ auto const debugResultId = makeCompositeDebugType(members, name, NonSemanticShaderDebugInfo100Structure);
+ debugId[type->getResultId()] = debugResultId;
+ }
+
return type->getResultId();
}
@@ -372,6 +439,12 @@
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
module.mapInstruction(type);
+ if (emitNonSemanticShaderDebugInfo)
+ {
+ auto const debugResultId = makeVectorDebugType(component, size);
+ debugId[type->getResultId()] = debugResultId;
+ }
+
return type->getResultId();
}
@@ -398,6 +471,12 @@
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
module.mapInstruction(type);
+ if (emitNonSemanticShaderDebugInfo)
+ {
+ auto const debugResultId = makeMatrixDebugType(column, cols);
+ debugId[type->getResultId()] = debugResultId;
+ }
+
return type->getResultId();
}
@@ -427,6 +506,37 @@
return type->getResultId();
}
+Id Builder::makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands)
+{
+ // try to find it
+ Instruction* type;
+ for (int t = 0; t < (int)groupedTypes[opcode].size(); ++t) {
+ type = groupedTypes[opcode][t];
+ if (static_cast<size_t>(type->getNumOperands()) != operands.size())
+ continue; // Number mismatch, find next
+
+ bool match = true;
+ for (int op = 0; match && op < (int)operands.size(); ++op) {
+ match = (operands[op].isId ? type->getIdOperand(op) : type->getImmediateOperand(op)) == operands[op].word;
+ }
+ if (match)
+ return type->getResultId();
+ }
+
+ // not found, make it
+ type = new Instruction(getUniqueId(), NoType, opcode);
+ for (size_t op = 0; op < operands.size(); ++op) {
+ if (operands[op].isId)
+ type->addIdOperand(operands[op].word);
+ else
+ type->addImmediateOperand(operands[op].word);
+ }
+ groupedTypes[opcode].push_back(type);
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
+ module.mapInstruction(type);
+
+ return type->getResultId();
+}
// TODO: performance: track arrays per stride
// If a stride is supplied (non-zero) make an array.
@@ -453,6 +563,12 @@
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
module.mapInstruction(type);
+ if (emitNonSemanticShaderDebugInfo)
+ {
+ auto const debugResultId = makeArrayDebugType(element, sizeId);
+ debugId[type->getResultId()] = debugResultId;
+ }
+
return type->getResultId();
}
@@ -463,6 +579,12 @@
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
module.mapInstruction(type);
+ if (emitNonSemanticShaderDebugInfo)
+ {
+ auto const debugResultId = makeArrayDebugType(element, makeUintConstant(0));
+ debugId[type->getResultId()] = debugResultId;
+ }
+
return type->getResultId();
}
@@ -482,11 +604,25 @@
}
}
if (! mismatch)
+ {
+ // If compiling HLSL, glslang will create a wrapper function around the entrypoint. Accordingly, a void(void)
+ // function type is created for the wrapper function. However, nonsemantic shader debug information is disabled
+ // while creating the HLSL wrapper. Consequently, if we encounter another void(void) function, we need to create
+ // the associated debug function type if it hasn't been created yet.
+ if(emitNonSemanticShaderDebugInfo && debugId[type->getResultId()] == 0) {
+ assert(sourceLang == spv::SourceLanguageHLSL);
+ assert(getTypeClass(returnType) == OpTypeVoid && paramTypes.size() == 0);
+
+ Id debugTypeId = makeDebugFunctionType(returnType, {});
+ debugId[type->getResultId()] = debugTypeId;
+ }
return type->getResultId();
+ }
}
// not found, make it
- type = new Instruction(getUniqueId(), NoType, OpTypeFunction);
+ Id typeId = getUniqueId();
+ type = new Instruction(typeId, NoType, OpTypeFunction);
type->addIdOperand(returnType);
for (int p = 0; p < (int)paramTypes.size(); ++p)
type->addIdOperand(paramTypes[p]);
@@ -494,9 +630,34 @@
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
module.mapInstruction(type);
+ // make debug type and map it
+ if (emitNonSemanticShaderDebugInfo) {
+ Id debugTypeId = makeDebugFunctionType(returnType, paramTypes);
+ debugId[typeId] = debugTypeId;
+ }
+
return type->getResultId();
}
+Id Builder::makeDebugFunctionType(Id returnType, const std::vector<Id>& paramTypes)
+{
+ assert(debugId[returnType] != 0);
+
+ Id typeId = getUniqueId();
+ auto type = new Instruction(typeId, makeVoidType(), OpExtInst);
+ type->addIdOperand(nonSemanticShaderDebugInfo);
+ type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeFunction);
+ type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic));
+ type->addIdOperand(debugId[returnType]);
+ for (auto const paramType : paramTypes) {
+ assert(isPointerType(paramType) || isArrayType(paramType));
+ type->addIdOperand(debugId[getContainedTypeId(paramType)]);
+ }
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
+ module.mapInstruction(type);
+ return typeId;
+}
+
Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, bool ms, unsigned sampled,
ImageFormat format)
{
@@ -578,6 +739,22 @@
}
#endif
+ if (emitNonSemanticShaderDebugInfo)
+ {
+ auto TypeName = [&dim]() -> char const* {
+ switch (dim) {
+ case Dim1D: return "type.1d.image";
+ case Dim2D: return "type.2d.image";
+ case Dim3D: return "type.3d.image";
+ case DimCube: return "type.cube.image";
+ default: return "type.image";
+ }
+ };
+
+ auto const debugResultId = makeCompositeDebugType({}, TypeName(), NonSemanticShaderDebugInfo100Class, true);
+ debugId[type->getResultId()] = debugResultId;
+ }
+
return type->getResultId();
}
@@ -599,9 +776,376 @@
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
module.mapInstruction(type);
+ if (emitNonSemanticShaderDebugInfo)
+ {
+ auto const debugResultId = makeCompositeDebugType({}, "type.sampled.image", NonSemanticShaderDebugInfo100Class, true);
+ debugId[type->getResultId()] = debugResultId;
+ }
+
return type->getResultId();
}
+Id Builder::makeDebugInfoNone()
+{
+ if (debugInfoNone != 0)
+ return debugInfoNone;
+
+ Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
+ inst->addIdOperand(nonSemanticShaderDebugInfo);
+ inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugInfoNone);
+
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(inst));
+ module.mapInstruction(inst);
+
+ debugInfoNone = inst->getResultId();
+
+ return debugInfoNone;
+}
+
+Id Builder::makeBoolDebugType(int const size)
+{
+ // try to find it
+ Instruction* type;
+ for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) {
+ type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t];
+ if (type->getIdOperand(0) == getStringId("bool") &&
+ type->getIdOperand(1) == static_cast<unsigned int>(size) &&
+ type->getIdOperand(2) == NonSemanticShaderDebugInfo100Boolean)
+ return type->getResultId();
+ }
+
+ type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
+ type->addIdOperand(nonSemanticShaderDebugInfo);
+ type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic);
+
+ type->addIdOperand(getStringId("bool")); // name id
+ type->addIdOperand(makeUintConstant(size)); // size id
+ type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Boolean)); // encoding id
+ type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100None)); // flags id
+
+ groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].push_back(type);
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
+ module.mapInstruction(type);
+
+ return type->getResultId();
+}
+
+Id Builder::makeIntegerDebugType(int const width, bool const hasSign)
+{
+ // try to find it
+ Instruction* type;
+ for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) {
+ type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t];
+ if (type->getIdOperand(0) == (hasSign ? getStringId("int") : getStringId("uint")) &&
+ type->getIdOperand(1) == static_cast<unsigned int>(width) &&
+ type->getIdOperand(2) == (hasSign ? NonSemanticShaderDebugInfo100Signed : NonSemanticShaderDebugInfo100Unsigned))
+ return type->getResultId();
+ }
+
+ // not found, make it
+ type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
+ type->addIdOperand(nonSemanticShaderDebugInfo);
+ type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic);
+ if(hasSign == true) {
+ type->addIdOperand(getStringId("int")); // name id
+ } else {
+ type->addIdOperand(getStringId("uint")); // name id
+ }
+ type->addIdOperand(makeUintConstant(width)); // size id
+ if(hasSign == true) {
+ type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Signed)); // encoding id
+ } else {
+ type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Unsigned)); // encoding id
+ }
+ type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100None)); // flags id
+
+ groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].push_back(type);
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
+ module.mapInstruction(type);
+
+ return type->getResultId();
+}
+
+Id Builder::makeFloatDebugType(int const width)
+{
+ // try to find it
+ Instruction* type;
+ for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) {
+ type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t];
+ if (type->getIdOperand(0) == getStringId("float") &&
+ type->getIdOperand(1) == static_cast<unsigned int>(width) &&
+ type->getIdOperand(2) == NonSemanticShaderDebugInfo100Float)
+ return type->getResultId();
+ }
+
+ // not found, make it
+ type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
+ type->addIdOperand(nonSemanticShaderDebugInfo);
+ type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic);
+ type->addIdOperand(getStringId("float")); // name id
+ type->addIdOperand(makeUintConstant(width)); // size id
+ type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Float)); // encoding id
+ type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100None)); // flags id
+
+ groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].push_back(type);
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
+ module.mapInstruction(type);
+
+ return type->getResultId();
+}
+
+Id Builder::makeSequentialDebugType(Id const baseType, Id const componentCount, NonSemanticShaderDebugInfo100Instructions const sequenceType)
+{
+ assert(sequenceType == NonSemanticShaderDebugInfo100DebugTypeArray ||
+ sequenceType == NonSemanticShaderDebugInfo100DebugTypeVector);
+
+ // try to find it
+ Instruction* type;
+ for (int t = 0; t < (int)groupedDebugTypes[sequenceType].size(); ++t) {
+ type = groupedDebugTypes[sequenceType][t];
+ if (type->getIdOperand(0) == baseType &&
+ type->getIdOperand(1) == makeUintConstant(componentCount))
+ return type->getResultId();
+ }
+
+ // not found, make it
+ type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
+ type->addIdOperand(nonSemanticShaderDebugInfo);
+ type->addImmediateOperand(sequenceType);
+ type->addIdOperand(debugId[baseType]); // base type
+ type->addIdOperand(componentCount); // component count
+
+ groupedDebugTypes[sequenceType].push_back(type);
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
+ module.mapInstruction(type);
+
+ return type->getResultId();
+}
+
+Id Builder::makeArrayDebugType(Id const baseType, Id const componentCount)
+{
+ return makeSequentialDebugType(baseType, componentCount, NonSemanticShaderDebugInfo100DebugTypeArray);
+}
+
+Id Builder::makeVectorDebugType(Id const baseType, int const componentCount)
+{
+ return makeSequentialDebugType(baseType, makeUintConstant(componentCount), NonSemanticShaderDebugInfo100DebugTypeVector);;
+}
+
+Id Builder::makeMatrixDebugType(Id const vectorType, int const vectorCount, bool columnMajor)
+{
+ // try to find it
+ Instruction* type;
+ for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeMatrix].size(); ++t) {
+ type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeMatrix][t];
+ if (type->getIdOperand(0) == vectorType &&
+ type->getIdOperand(1) == makeUintConstant(vectorCount))
+ return type->getResultId();
+ }
+
+ // not found, make it
+ type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
+ type->addIdOperand(nonSemanticShaderDebugInfo);
+ type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeMatrix);
+ type->addIdOperand(debugId[vectorType]); // vector type id
+ type->addIdOperand(makeUintConstant(vectorCount)); // component count id
+ type->addIdOperand(makeBoolConstant(columnMajor)); // column-major id
+
+ groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeMatrix].push_back(type);
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
+ module.mapInstruction(type);
+
+ return type->getResultId();
+}
+
+Id Builder::makeMemberDebugType(Id const memberType, DebugTypeLoc const& debugTypeLoc)
+{
+ assert(debugId[memberType] != 0);
+
+ Instruction* type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
+ type->addIdOperand(nonSemanticShaderDebugInfo);
+ type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeMember);
+ type->addIdOperand(getStringId(debugTypeLoc.name)); // name id
+ type->addIdOperand(debugId[memberType]); // type id
+ type->addIdOperand(makeDebugSource(sourceFileStringId)); // source id TODO: verify this works across include directives
+ type->addIdOperand(makeUintConstant(debugTypeLoc.line)); // line id TODO: currentLine is always zero
+ type->addIdOperand(makeUintConstant(debugTypeLoc.column)); // TODO: column id
+ type->addIdOperand(makeUintConstant(0)); // TODO: offset id
+ type->addIdOperand(makeUintConstant(0)); // TODO: size id
+ type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); // flags id
+
+ groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeMember].push_back(type);
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
+ module.mapInstruction(type);
+
+ return type->getResultId();
+}
+
+// Note: To represent a source language opaque type, this instruction must have no Members operands, Size operand must be
+// DebugInfoNone, and Name must start with @ to avoid clashes with user defined names.
+Id Builder::makeCompositeDebugType(std::vector<Id> const& memberTypes, char const*const name,
+ NonSemanticShaderDebugInfo100DebugCompositeType const tag, bool const isOpaqueType)
+{
+ // Create the debug member types.
+ std::vector<Id> memberDebugTypes;
+ for(auto const memberType : memberTypes) {
+ assert(debugTypeLocs.find(memberType) != debugTypeLocs.end());
+
+ memberDebugTypes.emplace_back(makeMemberDebugType(memberType, debugTypeLocs[memberType]));
+
+ // TODO: Need to rethink this method of passing location information.
+ // debugTypeLocs.erase(memberType);
+ }
+
+ // Create The structure debug type.
+ Instruction* type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
+ type->addIdOperand(nonSemanticShaderDebugInfo);
+ type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeComposite);
+ type->addIdOperand(getStringId(name)); // name id
+ type->addIdOperand(makeUintConstant(tag)); // tag id
+ type->addIdOperand(makeDebugSource(sourceFileStringId)); // source id TODO: verify this works across include directives
+ type->addIdOperand(makeUintConstant(currentLine)); // line id TODO: currentLine always zero?
+ type->addIdOperand(makeUintConstant(0)); // TODO: column id
+ type->addIdOperand(makeDebugCompilationUnit()); // scope id
+ if(isOpaqueType == true) {
+ // Prepend '@' to opaque types.
+ type->addIdOperand(getStringId('@' + std::string(name))); // linkage name id
+ type->addIdOperand(makeDebugInfoNone()); // size id
+ } else {
+ type->addIdOperand(getStringId(name)); // linkage name id
+ type->addIdOperand(makeUintConstant(0)); // TODO: size id
+ }
+ type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); // flags id
+ assert(isOpaqueType == false || (isOpaqueType == true && memberDebugTypes.empty()));
+ for(auto const memberDebugType : memberDebugTypes) {
+ type->addIdOperand(memberDebugType);
+ }
+
+ groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeComposite].push_back(type);
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
+ module.mapInstruction(type);
+
+ return type->getResultId();
+}
+
+Id Builder::makeDebugSource(const Id fileName) {
+ if (debugSourceId.find(fileName) != debugSourceId.end())
+ return debugSourceId[fileName];
+ spv::Id resultId = getUniqueId();
+ Instruction* sourceInst = new Instruction(resultId, makeVoidType(), OpExtInst);
+ sourceInst->addIdOperand(nonSemanticShaderDebugInfo);
+ sourceInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugSource);
+ sourceInst->addIdOperand(fileName);
+ if (emitNonSemanticShaderDebugSource) {
+ spv::Id sourceId = 0;
+ if (fileName == sourceFileStringId) {
+ sourceId = getStringId(sourceText);
+ } else {
+ auto incItr = includeFiles.find(fileName);
+ assert(incItr != includeFiles.end());
+ sourceId = getStringId(*incItr->second);
+ }
+ sourceInst->addIdOperand(sourceId);
+ }
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(sourceInst));
+ module.mapInstruction(sourceInst);
+ debugSourceId[fileName] = resultId;
+ return resultId;
+}
+
+Id Builder::makeDebugCompilationUnit() {
+ if (nonSemanticShaderCompilationUnitId != 0)
+ return nonSemanticShaderCompilationUnitId;
+ spv::Id resultId = getUniqueId();
+ Instruction* sourceInst = new Instruction(resultId, makeVoidType(), OpExtInst);
+ sourceInst->addIdOperand(nonSemanticShaderDebugInfo);
+ sourceInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugCompilationUnit);
+ sourceInst->addIdOperand(makeUintConstant(1)); // TODO(greg-lunarg): Get rid of magic number
+ sourceInst->addIdOperand(makeUintConstant(4)); // TODO(greg-lunarg): Get rid of magic number
+ sourceInst->addIdOperand(makeDebugSource(sourceFileStringId));
+ sourceInst->addIdOperand(makeUintConstant(sourceLang));
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(sourceInst));
+ module.mapInstruction(sourceInst);
+ nonSemanticShaderCompilationUnitId = resultId;
+ return resultId;
+}
+
+Id Builder::createDebugGlobalVariable(Id const type, char const*const name, Id const variable)
+{
+ assert(type != 0);
+
+ Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
+ inst->addIdOperand(nonSemanticShaderDebugInfo);
+ inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugGlobalVariable);
+ inst->addIdOperand(getStringId(name)); // name id
+ inst->addIdOperand(type); // type id
+ inst->addIdOperand(makeDebugSource(sourceFileStringId)); // source id
+ inst->addIdOperand(makeUintConstant(currentLine)); // line id TODO: currentLine always zero?
+ inst->addIdOperand(makeUintConstant(0)); // TODO: column id
+ inst->addIdOperand(makeDebugCompilationUnit()); // scope id
+ inst->addIdOperand(getStringId(name)); // linkage name id
+ inst->addIdOperand(variable); // variable id
+ inst->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsDefinition)); // flags id
+
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(inst));
+ module.mapInstruction(inst);
+
+ return inst->getResultId();
+}
+
+Id Builder::createDebugLocalVariable(Id type, char const*const name, size_t const argNumber)
+{
+ assert(name != nullptr);
+ Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
+ inst->addIdOperand(nonSemanticShaderDebugInfo);
+ inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLocalVariable);
+ inst->addIdOperand(getStringId(name)); // name id
+ inst->addIdOperand(type); // type id
+ inst->addIdOperand(makeDebugSource(sourceFileStringId)); // source id
+ inst->addIdOperand(makeUintConstant(currentLine)); // line id
+ inst->addIdOperand(makeUintConstant(0)); // TODO: column id
+ inst->addIdOperand(currentDebugScopeId.top()); // scope id
+ inst->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsLocal)); // flags id
+ if(argNumber != 0) {
+ inst->addIdOperand(makeUintConstant(argNumber));
+ }
+
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(inst));
+ module.mapInstruction(inst);
+
+ return inst->getResultId();
+}
+
+Id Builder::makeDebugExpression()
+{
+ if (debugExpression != 0)
+ return debugExpression;
+
+ Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
+ inst->addIdOperand(nonSemanticShaderDebugInfo);
+ inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugExpression);
+
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(inst));
+ module.mapInstruction(inst);
+
+ debugExpression = inst->getResultId();
+
+ return debugExpression;
+}
+
+Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const localVariable)
+{
+ Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst);
+ inst->addIdOperand(nonSemanticShaderDebugInfo);
+ inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugDeclare);
+ inst->addIdOperand(debugLocalVariable); // debug local variable id
+ inst->addIdOperand(localVariable); // local variable id
+ inst->addIdOperand(makeDebugExpression()); // expression id
+ buildPoint->addInstruction(std::unique_ptr<Instruction>(inst));
+
+ return inst->getResultId();
+}
+
#ifndef GLSLANG_WEB
Id Builder::makeAccelerationStructureType()
{
@@ -889,6 +1433,17 @@
}
}
+bool Builder::isRayTracingOpCode(Op opcode) const
+{
+ switch (opcode) {
+ case OpTypeAccelerationStructureKHR:
+ case OpTypeRayQueryKHR:
+ return true;
+ default:
+ return false;
+ }
+}
+
Id Builder::makeNullConstant(Id typeId)
{
Instruction* constant;
@@ -1105,6 +1660,19 @@
return NoResult;
}
+Id Builder::importNonSemanticShaderDebugInfoInstructions()
+{
+ assert(emitNonSemanticShaderDebugInfo == true);
+
+ if(nonSemanticShaderDebugInfo == 0)
+ {
+ this->addExtension(spv::E_SPV_KHR_non_semantic_info);
+ nonSemanticShaderDebugInfo = this->import("NonSemantic.Shader.DebugInfo.100");
+ }
+
+ return nonSemanticShaderDebugInfo;
+}
+
Id Builder::findCompositeConstant(Op typeClass, Id typeId, const std::vector<Id>& comps)
{
Instruction* constant = 0;
@@ -1416,23 +1984,34 @@
assert(! entryPointFunction);
Block* entry;
- std::vector<Id> params;
+ std::vector<Id> paramsTypes;
+ std::vector<char const*> paramNames;
std::vector<std::vector<Decoration>> decorations;
- entryPointFunction = makeFunctionEntry(NoPrecision, makeVoidType(), entryPoint, params, decorations, &entry);
+ auto const returnType = makeVoidType();
+
+ restoreNonSemanticShaderDebugInfo = emitNonSemanticShaderDebugInfo;
+ if(sourceLang == spv::SourceLanguageHLSL) {
+ emitNonSemanticShaderDebugInfo = false;
+ }
+
+ entryPointFunction = makeFunctionEntry(NoPrecision, returnType, entryPoint, paramsTypes, paramNames, decorations, &entry);
+
+ emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo;
return entryPointFunction;
}
// Comments in header
Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name,
- const std::vector<Id>& paramTypes,
+ const std::vector<Id>& paramTypes, const std::vector<char const*>& paramNames,
const std::vector<std::vector<Decoration>>& decorations, Block **entry)
{
// Make the function and initial instructions in it
Id typeId = makeFunctionType(returnType, paramTypes);
Id firstParamId = paramTypes.size() == 0 ? 0 : getUniqueIds((int)paramTypes.size());
- Function* function = new Function(getUniqueId(), returnType, typeId, firstParamId, module);
+ Id funcId = getUniqueId();
+ Function* function = new Function(funcId, returnType, typeId, firstParamId, module);
// Set up the precisions
setPrecision(function->getId(), precision);
@@ -1444,11 +2023,39 @@
}
}
+ // Make the debug function instruction
+ if (emitNonSemanticShaderDebugInfo) {
+ Id nameId = getStringId(unmangleFunctionName(name));
+ Id debugFuncId = makeDebugFunction(function, nameId, typeId);
+ debugId[funcId] = debugFuncId;
+ currentDebugScopeId.push(debugFuncId);
+ lastDebugScopeId = NoResult;
+ }
+
// CFG
- if (entry) {
- *entry = new Block(getUniqueId(), *function);
- function->addBlock(*entry);
- setBuildPoint(*entry);
+ assert(entry != nullptr);
+ *entry = new Block(getUniqueId(), *function);
+ function->addBlock(*entry);
+ setBuildPoint(*entry);
+
+ // DebugScope and DebugLine for parameter DebugDeclares
+ if (emitNonSemanticShaderDebugInfo && (int)paramTypes.size() > 0) {
+ addDebugScopeAndLine(currentFileId, currentLine, 0);
+ }
+
+ if (emitNonSemanticShaderDebugInfo) {
+ assert(paramTypes.size() == paramNames.size());
+ for(size_t p = 0; p < paramTypes.size(); ++p)
+ {
+ auto const& paramType = paramTypes[p];
+ assert(isPointerType(paramType) || isArrayType(paramType));
+ assert(debugId[getContainedTypeId(paramType)] != 0);
+ auto const& paramName = paramNames[p];
+ auto const debugLocalVariableId = createDebugLocalVariable(debugId[getContainedTypeId(paramType)], paramName, p+1);
+ debugId[firstParamId + p] = debugLocalVariableId;
+
+ makeDebugDeclare(debugLocalVariableId, firstParamId + p);
+ }
}
if (name)
@@ -1456,9 +2063,62 @@
functions.push_back(std::unique_ptr<Function>(function));
+ // Clear debug scope stack
+ if (emitNonSemanticShaderDebugInfo)
+ currentDebugScopeId.pop();
+
return function;
}
+Id Builder::makeDebugFunction(Function* function, Id nameId, Id funcTypeId) {
+ assert(function != nullptr);
+ assert(nameId != 0);
+ assert(funcTypeId != 0);
+ assert(debugId[funcTypeId] != 0);
+
+ Id funcId = getUniqueId();
+ auto type = new Instruction(funcId, makeVoidType(), OpExtInst);
+ type->addIdOperand(nonSemanticShaderDebugInfo);
+ type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugFunction);
+ type->addIdOperand(nameId);
+ type->addIdOperand(debugId[funcTypeId]);
+ type->addIdOperand(makeDebugSource(currentFileId)); // Will be fixed later when true filename available
+ type->addIdOperand(makeUintConstant(currentLine)); // Will be fixed later when true line available
+ type->addIdOperand(makeUintConstant(0)); // column
+ type->addIdOperand(makeDebugCompilationUnit()); // scope
+ type->addIdOperand(nameId); // linkage name
+ type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic));
+ type->addIdOperand(makeUintConstant(currentLine)); // TODO(greg-lunarg): correct scope line
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
+ module.mapInstruction(type);
+ return funcId;
+}
+
+Id Builder::makeDebugLexicalBlock(uint32_t line) {
+ Id lexId = getUniqueId();
+ auto lex = new Instruction(lexId, makeVoidType(), OpExtInst);
+ lex->addIdOperand(nonSemanticShaderDebugInfo);
+ lex->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLexicalBlock);
+ lex->addIdOperand(makeDebugSource(currentFileId));
+ lex->addIdOperand(makeUintConstant(line));
+ lex->addIdOperand(makeUintConstant(0)); // column
+ lex->addIdOperand(currentDebugScopeId.top()); // scope
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(lex));
+ module.mapInstruction(lex);
+ return lexId;
+}
+
+std::string Builder::unmangleFunctionName(std::string const& name) const
+{
+ assert(name.length() > 0);
+
+ if(name.rfind('(') != std::string::npos) {
+ return name.substr(0, name.rfind('('));
+ } else {
+ return name;
+ }
+}
+
// Comments in header
void Builder::makeReturn(bool implicit, Id retVal)
{
@@ -1474,6 +2134,48 @@
}
// Comments in header
+void Builder::enterScope(uint32_t line)
+{
+ // Generate new lexical scope debug instruction
+ Id lexId = makeDebugLexicalBlock(line);
+ currentDebugScopeId.push(lexId);
+ lastDebugScopeId = NoResult;
+}
+
+// Comments in header
+void Builder::leaveScope()
+{
+ // Pop current scope from stack and clear current scope
+ currentDebugScopeId.pop();
+ lastDebugScopeId = NoResult;
+}
+
+// Comments in header
+void Builder::enterFunction(Function const* function)
+{
+ // Save and disable debugInfo for HLSL entry point function. It is a wrapper
+ // function with no user code in it.
+ restoreNonSemanticShaderDebugInfo = emitNonSemanticShaderDebugInfo;
+ if (sourceLang == spv::SourceLanguageHLSL && function == entryPointFunction) {
+ emitNonSemanticShaderDebugInfo = false;
+ }
+
+ if (emitNonSemanticShaderDebugInfo) {
+ // Initialize scope state
+ Id funcId = function->getFuncId();
+ currentDebugScopeId.push(debugId[funcId]);
+ // Create DebugFunctionDefinition
+ spv::Id resultId = getUniqueId();
+ Instruction* defInst = new Instruction(resultId, makeVoidType(), OpExtInst);
+ defInst->addIdOperand(nonSemanticShaderDebugInfo);
+ defInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugFunctionDefinition);
+ defInst->addIdOperand(debugId[funcId]);
+ defInst->addIdOperand(funcId);
+ buildPoint->addInstruction(std::unique_ptr<Instruction>(defInst));
+ }
+}
+
+// Comments in header
void Builder::leaveFunction()
{
Block* block = buildPoint;
@@ -1488,6 +2190,12 @@
makeReturn(true, createUndefined(function.getReturnType()));
}
}
+
+ // Clear function scope from debug scope stack
+ if (emitNonSemanticShaderDebugInfo)
+ currentDebugScopeId.pop();
+
+ emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo;
}
// Comments in header
@@ -1498,7 +2206,18 @@
}
// Comments in header
-Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name, Id initializer)
+void Builder::makeStatementTerminator(spv::Op opcode, const std::vector<Id>& operands, const char* name)
+{
+ // It's assumed that the terminator instruction is always of void return type
+ // However in future if there is a need for non void return type, new helper
+ // methods can be created.
+ createNoResultOp(opcode, operands);
+ createAndSetNoPredecessorBlock(name);
+}
+
+// Comments in header
+Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name, Id initializer,
+ bool const compilerGenerated)
{
Id pointerType = makePointer(storageClass, type);
Instruction* inst = new Instruction(getUniqueId(), pointerType, OpVariable);
@@ -1510,11 +2229,26 @@
case StorageClassFunction:
// Validation rules require the declaration in the entry block
buildPoint->getParent().addLocalVariable(std::unique_ptr<Instruction>(inst));
+
+ if (emitNonSemanticShaderDebugInfo && !compilerGenerated)
+ {
+ auto const debugLocalVariableId = createDebugLocalVariable(debugId[type], name);
+ debugId[inst->getResultId()] = debugLocalVariableId;
+
+ makeDebugDeclare(debugLocalVariableId, inst->getResultId());
+ }
+
break;
default:
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(inst));
module.mapInstruction(inst);
+
+ if (emitNonSemanticShaderDebugInfo && !isRayTracingOpCode(getOpCode(type)))
+ {
+ auto const debugResultId = createDebugGlobalVariable(debugId[type], name, inst->getResultId());
+ debugId[inst->getResultId()] = debugResultId;
+ }
break;
}
@@ -1544,7 +2278,7 @@
case spv::StorageClassPhysicalStorageBufferEXT:
break;
default:
- memoryAccess = spv::MemoryAccessMask(memoryAccess &
+ memoryAccess = spv::MemoryAccessMask(memoryAccess &
~(spv::MemoryAccessMakePointerAvailableKHRMask |
spv::MemoryAccessMakePointerVisibleKHRMask |
spv::MemoryAccessNonPrivatePointerKHRMask));
@@ -2020,7 +2754,7 @@
texArgs[numArgs++] = parameters.granularity;
if (parameters.coarse != NoResult)
texArgs[numArgs++] = parameters.coarse;
-#endif
+#endif
//
// Set up the optional arguments
@@ -3240,10 +3974,10 @@
const int opSourceWordCount = 4;
const int nonNullBytesPerInstruction = 4 * (maxWordCount - opSourceWordCount) - 1;
- if (source != SourceLanguageUnknown) {
+ if (sourceLang != SourceLanguageUnknown) {
// OpSource Language Version File Source
Instruction sourceInst(NoResult, NoType, OpSource);
- sourceInst.addImmediateOperand(source);
+ sourceInst.addImmediateOperand(sourceLang);
sourceInst.addImmediateOperand(sourceVersion);
// File operand
if (fileId != NoResult) {
@@ -3276,6 +4010,7 @@
// Dump an OpSource[Continued] sequence for the source and every include file
void Builder::dumpSourceInstructions(std::vector<unsigned int>& out) const
{
+ if (emitNonSemanticShaderDebugInfo) return;
dumpSourceInstructions(sourceFileStringId, sourceText, out);
for (auto iItr = includeFiles.begin(); iItr != includeFiles.end(); ++iItr)
dumpSourceInstructions(iItr->first, *iItr->second, out);
diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h
index 251b9ee..f7fdc6a 100644
--- a/SPIRV/SpvBuilder.h
+++ b/SPIRV/SpvBuilder.h
@@ -50,6 +50,10 @@
#include "Logger.h"
#include "spirv.hpp"
#include "spvIR.h"
+namespace spv {
+ #include "GLSL.ext.KHR.h"
+ #include "NonSemanticShaderDebugInfo100.h"
+}
#include <algorithm>
#include <map>
@@ -82,7 +86,7 @@
void setSource(spv::SourceLanguage lang, int version)
{
- source = lang;
+ sourceLang = lang;
sourceVersion = version;
}
spv::Id getStringId(const std::string& str)
@@ -99,14 +103,32 @@
stringIds[file_c_str] = strId;
return strId;
}
+ spv::Id getSourceFile() const
+ {
+ return sourceFileStringId;
+ }
void setSourceFile(const std::string& file)
{
sourceFileStringId = getStringId(file);
+ currentFileId = sourceFileStringId;
}
void setSourceText(const std::string& text) { sourceText = text; }
void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); }
void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); }
void setEmitOpLines() { emitOpLines = true; }
+ void setEmitNonSemanticShaderDebugInfo(bool const emit)
+ {
+ emitNonSemanticShaderDebugInfo = emit;
+
+ if(emit)
+ {
+ importNonSemanticShaderDebugInfoInstructions();
+ }
+ }
+ void setEmitNonSemanticShaderDebugSource(bool const src)
+ {
+ emitNonSemanticShaderDebugSource = src;
+ }
void addExtension(const char* ext) { extensions.insert(ext); }
void removeExtension(const char* ext)
{
@@ -159,10 +181,11 @@
void setLine(int line, const char* filename);
// Low-level OpLine. See setLine() for a layered helper.
void addLine(Id fileName, int line, int column);
+ void addDebugScopeAndLine(Id fileName, int line, int column);
// For creating new types (will return old type if the requested one was already made).
Id makeVoidType();
- Id makeBoolType();
+ Id makeBoolType(bool const compilerGenerated = true);
Id makePointer(StorageClass, Id pointee);
Id makeForwardPointer(StorageClass);
Id makePointerFromForwardPointer(StorageClass, Id forwardPointerType, Id pointee);
@@ -170,7 +193,7 @@
Id makeIntType(int width) { return makeIntegerType(width, true); }
Id makeUintType(int width) { return makeIntegerType(width, false); }
Id makeFloatType(int width);
- Id makeStructType(const std::vector<Id>& members, const char*);
+ Id makeStructType(const std::vector<Id>& members, const char* name, bool const compilerGenerated = true);
Id makeStructResultType(Id type0, Id type1);
Id makeVectorType(Id component, int size);
Id makeMatrixType(Id component, int cols, int rows);
@@ -181,6 +204,37 @@
Id makeSamplerType();
Id makeSampledImageType(Id imageType);
Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols);
+ Id makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands);
+
+ // SPIR-V NonSemantic Shader DebugInfo Instructions
+ struct DebugTypeLoc {
+ std::string name {};
+ int line {0};
+ int column {0};
+ };
+ std::unordered_map<Id, DebugTypeLoc> debugTypeLocs;
+ Id makeDebugInfoNone();
+ Id makeBoolDebugType(int const size);
+ Id makeIntegerDebugType(int const width, bool const hasSign);
+ Id makeFloatDebugType(int const width);
+ Id makeSequentialDebugType(Id const baseType, Id const componentCount, NonSemanticShaderDebugInfo100Instructions const sequenceType);
+ Id makeArrayDebugType(Id const baseType, Id const componentCount);
+ Id makeVectorDebugType(Id const baseType, int const componentCount);
+ Id makeMatrixDebugType(Id const vectorType, int const vectorCount, bool columnMajor = true);
+ Id makeMemberDebugType(Id const memberType, DebugTypeLoc const& debugTypeLoc);
+ Id makeCompositeDebugType(std::vector<Id> const& memberTypes, char const*const name,
+ NonSemanticShaderDebugInfo100DebugCompositeType const tag, bool const isOpaqueType = false);
+ Id makeDebugSource(const Id fileName);
+ Id makeDebugCompilationUnit();
+ Id createDebugGlobalVariable(Id const type, char const*const name, Id const variable);
+ Id createDebugLocalVariable(Id type, char const*const name, size_t const argNumber = 0);
+ Id makeDebugExpression();
+ Id makeDebugDeclare(Id const debugLocalVariable, Id const localVariable);
+ Id makeDebugValue(Id const debugLocalVariable, Id const value);
+ Id makeDebugFunctionType(Id returnType, const std::vector<Id>& paramTypes);
+ Id makeDebugFunction(Function* function, Id nameId, Id funcTypeId);
+ Id makeDebugLexicalBlock(uint32_t line);
+ std::string unmangleFunctionName(std::string const& name) const;
// accelerationStructureNV type
Id makeAccelerationStructureType();
@@ -256,6 +310,8 @@
// See if a resultId is valid for use as an initializer.
bool isValidInitializer(Id resultId) const { return isConstant(resultId) || isGlobalVariable(resultId); }
+ bool isRayTracingOpCode(Op opcode) const;
+
int getScalarTypeWidth(Id typeId) const
{
Id scalarTypeId = getScalarTypeId(typeId);
@@ -317,6 +373,8 @@
Id makeFloat16Constant(float f16, bool specConstant = false);
Id makeFpConstant(Id type, double d, bool specConstant = false);
+ Id importNonSemanticShaderDebugInfoInstructions();
+
// Turn the array of constants into a proper spv constant of the requested type.
Id makeCompositeConstant(Id type, const std::vector<Id>& comps, bool specConst = false);
@@ -339,7 +397,12 @@
void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector<const char*>& strings);
// At the end of what block do the next create*() instructions go?
- void setBuildPoint(Block* bp) { buildPoint = bp; }
+ // Also reset current last DebugScope and current source line to unknown
+ void setBuildPoint(Block* bp) {
+ buildPoint = bp;
+ lastDebugScopeId = NoResult;
+ currentLine = 0;
+ }
Block* getBuildPoint() const { return buildPoint; }
// Make the entry-point function. The returned pointer is only valid
@@ -350,12 +413,22 @@
// 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);
+ const std::vector<Id>& paramTypes, const std::vector<char const*>& paramNames,
+ 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.
void makeReturn(bool implicit, Id retVal = 0);
+ // Initialize state and generate instructions for new lexical scope
+ void enterScope(uint32_t line);
+
+ // Set state and generate instructions to exit current lexical scope
+ void leaveScope();
+
+ // Prepare builder for generation of instructions for a function.
+ void enterFunction(Function const* function);
+
// Generate all the code needed to finish up a function.
void leaveFunction();
@@ -363,9 +436,13 @@
// discard, terminate-invocation, terminateRayEXT, or ignoreIntersectionEXT
void makeStatementTerminator(spv::Op opcode, const char *name);
+ // Create block terminator instruction for statements that have input operands
+ // such as OpEmitMeshTasksEXT
+ void makeStatementTerminator(spv::Op opcode, const std::vector<Id>& operands, const char* name);
+
// Create a global or function local or IO variable.
- Id createVariable(Decoration precision, StorageClass, Id type, const char* name = nullptr,
- Id initializer = NoResult);
+ Id createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name = nullptr,
+ Id initializer = NoResult, bool const compilerGenerated = true);
// Create an intermediate with an undefined value.
Id createUndefined(Id type);
@@ -800,13 +877,23 @@
const;
unsigned int spvVersion; // the version of SPIR-V to emit in the header
- SourceLanguage source;
+ SourceLanguage sourceLang;
int sourceVersion;
spv::Id sourceFileStringId;
+ spv::Id nonSemanticShaderCompilationUnitId {0};
+ spv::Id nonSemanticShaderDebugInfo {0};
+ spv::Id debugInfoNone {0};
+ spv::Id debugExpression {0}; // Debug expression with zero operations.
std::string sourceText;
int currentLine;
const char* currentFile;
+ spv::Id currentFileId;
+ std::stack<spv::Id> currentDebugScopeId;
+ spv::Id lastDebugScopeId;
bool emitOpLines;
+ bool emitNonSemanticShaderDebugInfo;
+ bool restoreNonSemanticShaderDebugInfo;
+ bool emitNonSemanticShaderDebugSource;
std::set<std::string> extensions;
std::vector<const char*> sourceExtensions;
std::vector<const char*> moduleProcesses;
@@ -840,6 +927,8 @@
std::unordered_map<unsigned int, std::vector<Instruction*>> groupedStructConstants;
// map type opcodes to type instructions
std::unordered_map<unsigned int, std::vector<Instruction*>> groupedTypes;
+ // map type opcodes to debug type instructions
+ std::unordered_map<unsigned int, std::vector<Instruction*>> groupedDebugTypes;
// list of OpConstantNull instructions
std::vector<Instruction*> nullConstants;
@@ -855,6 +944,12 @@
// map from include file name ids to their contents
std::map<spv::Id, const std::string*> includeFiles;
+ // map from core id to debug id
+ std::map <spv::Id, spv::Id> debugId;
+
+ // map from file name string id to DebugSource id
+ std::unordered_map<spv::Id, spv::Id> debugSourceId;
+
// The stream for outputting warnings and errors.
SpvBuildLogger* logger;
}; // end Builder class
diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp
index 8acf9b1..2529993 100644
--- a/SPIRV/SpvTools.cpp
+++ b/SPIRV/SpvTools.cpp
@@ -68,6 +68,8 @@
}
case glslang::EShTargetVulkan_1_2:
return spv_target_env::SPV_ENV_VULKAN_1_2;
+ case glslang::EShTargetVulkan_1_3:
+ return spv_target_env::SPV_ENV_VULKAN_1_3;
default:
break;
}
@@ -210,6 +212,8 @@
optimizer.RegisterPass(spvtools::CreateInterpolateFixupPass());
if (options->optimizeSize) {
optimizer.RegisterPass(spvtools::CreateRedundancyEliminationPass());
+ if (intermediate.getStage() == EShLanguage::EShLangVertex)
+ optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsPass());
}
optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass());
optimizer.RegisterPass(spvtools::CreateCFGCleanupPass());
diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h
index 3fb3cba..5386048 100644
--- a/SPIRV/SpvTools.h
+++ b/SPIRV/SpvTools.h
@@ -53,14 +53,14 @@
namespace glslang {
struct SpvOptions {
- SpvOptions() : generateDebugInfo(false), stripDebugInfo(false), disableOptimizer(true),
- optimizeSize(false), disassemble(false), validate(false) { }
- bool generateDebugInfo;
- bool stripDebugInfo;
- bool disableOptimizer;
- bool optimizeSize;
- bool disassemble;
- bool validate;
+ bool generateDebugInfo {false};
+ bool stripDebugInfo {false};
+ bool disableOptimizer {true};
+ bool optimizeSize {false};
+ bool disassemble {false};
+ bool validate {false};
+ bool emitNonSemanticShaderDebugInfo {false};
+ bool emitNonSemanticShaderDebugSource{ false };
};
#if ENABLE_OPT
diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp
index 73c988c..74dd605 100644
--- a/SPIRV/disassemble.cpp
+++ b/SPIRV/disassemble.cpp
@@ -43,6 +43,7 @@
#include <stack>
#include <sstream>
#include <cstring>
+#include <utility>
#include "disassemble.h"
#include "doc.h"
@@ -100,6 +101,7 @@
void outputMask(OperandClass operandClass, unsigned mask);
void disassembleImmediates(int numOperands);
void disassembleIds(int numOperands);
+ std::pair<int, std::string> decodeString();
int disassembleString();
void disassembleInstruction(Id resultId, Id typeId, Op opCode, int numOperands);
@@ -290,31 +292,44 @@
}
}
-// return the number of operands consumed by the string
-int SpirvStream::disassembleString()
+// decode string from words at current position (non-consuming)
+std::pair<int, std::string> SpirvStream::decodeString()
{
- int startWord = word;
-
- out << " \"";
-
- const char* wordString;
+ std::string res;
+ int wordPos = word;
+ char c;
bool done = false;
+
do {
- unsigned int content = stream[word];
- wordString = (const char*)&content;
+ unsigned int content = stream[wordPos];
for (int charCount = 0; charCount < 4; ++charCount) {
- if (*wordString == 0) {
+ c = content & 0xff;
+ content >>= 8;
+ if (c == '\0') {
done = true;
break;
}
- out << *(wordString++);
+ res += c;
}
- ++word;
- } while (! done);
+ ++wordPos;
+ } while(! done);
+ return std::make_pair(wordPos - word, res);
+}
+
+// return the number of operands consumed by the string
+int SpirvStream::disassembleString()
+{
+ out << " \"";
+
+ std::pair<int, std::string> decoderes = decodeString();
+
+ out << decoderes.second;
out << "\"";
- return word - startWord;
+ word += decoderes.first;
+
+ return decoderes.first;
}
void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, int numOperands)
@@ -331,7 +346,7 @@
nextNestedControl = 0;
}
} else if (opCode == OpExtInstImport) {
- idDescriptor[resultId] = (const char*)(&stream[word]);
+ idDescriptor[resultId] = decodeString().second;
}
else {
if (resultId != 0 && idDescriptor[resultId].size() == 0) {
@@ -428,7 +443,7 @@
--numOperands;
// Get names for printing "(XXX)" for readability, *after* this id
if (opCode == OpName)
- idDescriptor[stream[word - 1]] = (const char*)(&stream[word]);
+ idDescriptor[stream[word - 1]] = decodeString().second;
break;
case OperandVariableIds:
disassembleIds(numOperands);
diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp
index dbdf707..b7fe3e7 100644
--- a/SPIRV/doc.cpp
+++ b/SPIRV/doc.cpp
@@ -97,6 +97,8 @@
case 6: return "Kernel";
case ExecutionModelTaskNV: return "TaskNV";
case ExecutionModelMeshNV: return "MeshNV";
+ case ExecutionModelTaskEXT: return "TaskEXT";
+ case ExecutionModelMeshEXT: return "MeshEXT";
default: return "Bad";
@@ -173,28 +175,32 @@
case 31: return "ContractionOff";
case 32: return "Bad";
- case ExecutionModeInitializer: return "Initializer";
- case ExecutionModeFinalizer: return "Finalizer";
- case ExecutionModeSubgroupSize: return "SubgroupSize";
- case ExecutionModeSubgroupsPerWorkgroup: return "SubgroupsPerWorkgroup";
- case ExecutionModeSubgroupsPerWorkgroupId: return "SubgroupsPerWorkgroupId";
- case ExecutionModeLocalSizeId: return "LocalSizeId";
- case ExecutionModeLocalSizeHintId: return "LocalSizeHintId";
+ case ExecutionModeInitializer: return "Initializer";
+ case ExecutionModeFinalizer: return "Finalizer";
+ case ExecutionModeSubgroupSize: return "SubgroupSize";
+ case ExecutionModeSubgroupsPerWorkgroup: return "SubgroupsPerWorkgroup";
+ case ExecutionModeSubgroupsPerWorkgroupId: return "SubgroupsPerWorkgroupId";
+ case ExecutionModeLocalSizeId: return "LocalSizeId";
+ case ExecutionModeLocalSizeHintId: return "LocalSizeHintId";
- case ExecutionModePostDepthCoverage: return "PostDepthCoverage";
- case ExecutionModeDenormPreserve: return "DenormPreserve";
- case ExecutionModeDenormFlushToZero: return "DenormFlushToZero";
- case ExecutionModeSignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve";
- case ExecutionModeRoundingModeRTE: return "RoundingModeRTE";
- case ExecutionModeRoundingModeRTZ: return "RoundingModeRTZ";
- case ExecutionModeStencilRefReplacingEXT: return "StencilRefReplacingEXT";
+ case ExecutionModePostDepthCoverage: return "PostDepthCoverage";
+ case ExecutionModeDenormPreserve: return "DenormPreserve";
+ case ExecutionModeDenormFlushToZero: return "DenormFlushToZero";
+ case ExecutionModeSignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve";
+ case ExecutionModeRoundingModeRTE: return "RoundingModeRTE";
+ case ExecutionModeRoundingModeRTZ: return "RoundingModeRTZ";
+ case ExecutionModeEarlyAndLateFragmentTestsAMD: return "EarlyAndLateFragmentTestsAMD";
+ case ExecutionModeStencilRefUnchangedFrontAMD: return "StencilRefUnchangedFrontAMD";
+ case ExecutionModeStencilRefLessFrontAMD: return "StencilRefLessFrontAMD";
+ case ExecutionModeStencilRefGreaterBackAMD: return "StencilRefGreaterBackAMD";
+ case ExecutionModeStencilRefReplacingEXT: return "StencilRefReplacingEXT";
case ExecutionModeSubgroupUniformControlFlowKHR: return "SubgroupUniformControlFlow";
- case ExecutionModeOutputLinesNV: return "OutputLinesNV";
- case ExecutionModeOutputPrimitivesNV: return "OutputPrimitivesNV";
- case ExecutionModeOutputTrianglesNV: return "OutputTrianglesNV";
- case ExecutionModeDerivativeGroupQuadsNV: return "DerivativeGroupQuadsNV";
- case ExecutionModeDerivativeGroupLinearNV: return "DerivativeGroupLinearNV";
+ case ExecutionModeOutputLinesNV: return "OutputLinesNV";
+ case ExecutionModeOutputPrimitivesNV: return "OutputPrimitivesNV";
+ case ExecutionModeOutputTrianglesNV: return "OutputTrianglesNV";
+ case ExecutionModeDerivativeGroupQuadsNV: return "DerivativeGroupQuadsNV";
+ case ExecutionModeDerivativeGroupLinearNV: return "DerivativeGroupLinearNV";
case ExecutionModePixelInterlockOrderedEXT: return "PixelInterlockOrderedEXT";
case ExecutionModePixelInterlockUnorderedEXT: return "PixelInterlockUnorderedEXT";
@@ -238,7 +244,7 @@
case StorageClassIncomingCallableDataKHR: return "IncomingCallableDataKHR";
case StorageClassPhysicalStorageBufferEXT: return "PhysicalStorageBufferEXT";
-
+ case StorageClassTaskPayloadWorkgroupEXT: return "TaskPayloadWorkgroupEXT";
default: return "Bad";
}
}
@@ -305,7 +311,8 @@
case DecorationPerPrimitiveNV: return "PerPrimitiveNV";
case DecorationPerViewNV: return "PerViewNV";
case DecorationPerTaskNV: return "PerTaskNV";
- case DecorationPerVertexNV: return "PerVertexNV";
+
+ case DecorationPerVertexKHR: return "PerVertexKHR";
case DecorationNonUniformEXT: return "DecorationNonUniformEXT";
case DecorationHlslCounterBufferGOOGLE: return "DecorationHlslCounterBufferGOOGLE";
@@ -392,6 +399,7 @@
case BuiltInObjectRayDirectionKHR: return "ObjectRayDirectionKHR";
case BuiltInRayTminKHR: return "RayTminKHR";
case BuiltInRayTmaxKHR: return "RayTmaxKHR";
+ case BuiltInCullMaskKHR: return "CullMaskKHR";
case BuiltInInstanceCustomIndexKHR: return "InstanceCustomIndexKHR";
case BuiltInRayGeometryIndexKHR: return "RayGeometryIndexKHR";
case BuiltInObjectToWorldKHR: return "ObjectToWorldKHR";
@@ -406,8 +414,8 @@
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 BuiltInBaryCoordKHR: return "BaryCoordKHR";
+ case BuiltInBaryCoordNoPerspKHR: return "BaryCoordNoPerspKHR";
case BuiltInFragSizeEXT: return "FragSizeEXT";
case BuiltInFragInvocationCountEXT: return "FragInvocationCountEXT";
@@ -427,6 +435,10 @@
case BuiltInWarpIDNV: return "WarpIDNV";
case BuiltInSMIDNV: return "SMIDNV";
case BuiltInCurrentRayTimeNV: return "CurrentRayTimeNV";
+ case BuiltInPrimitivePointIndicesEXT: return "PrimitivePointIndicesEXT";
+ case BuiltInPrimitiveLineIndicesEXT: return "PrimitiveLineIndicesEXT";
+ case BuiltInPrimitiveTriangleIndicesEXT: return "PrimitiveTriangleIndicesEXT";
+ case BuiltInCullPrimitiveEXT: return "CullPrimitiveEXT";
default: return "Bad";
}
@@ -900,6 +912,12 @@
case CapabilityDeviceGroup: return "DeviceGroup";
case CapabilityMultiView: return "MultiView";
+ case CapabilityDenormPreserve: return "DenormPreserve";
+ case CapabilityDenormFlushToZero: return "DenormFlushToZero";
+ case CapabilitySignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve";
+ case CapabilityRoundingModeRTE: return "RoundingModeRTE";
+ case CapabilityRoundingModeRTZ: return "RoundingModeRTZ";
+
case CapabilityStencilExportEXT: return "StencilExportEXT";
case CapabilityFloat16ImageAMD: return "Float16ImageAMD";
@@ -919,14 +937,16 @@
case CapabilityRayTracingNV: return "RayTracingNV";
case CapabilityRayTracingMotionBlurNV: return "RayTracingMotionBlurNV";
case CapabilityRayTracingKHR: return "RayTracingKHR";
+ case CapabilityRayCullMaskKHR: return "RayCullMaskKHR";
case CapabilityRayQueryKHR: return "RayQueryKHR";
case CapabilityRayTracingProvisionalKHR: return "RayTracingProvisionalKHR";
case CapabilityRayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR";
case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV";
case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV";
- case CapabilityFragmentBarycentricNV: return "FragmentBarycentricNV";
+ case CapabilityFragmentBarycentricKHR: return "FragmentBarycentricKHR";
case CapabilityMeshShadingNV: return "MeshShadingNV";
case CapabilityImageFootprintNV: return "ImageFootprintNV";
+ case CapabilityMeshShadingEXT: return "MeshShadingEXT";
// case CapabilityShadingRateNV: return "ShadingRateNV"; // superseded by FragmentDensityEXT
case CapabilitySampleMaskOverrideCoverageNV: return "SampleMaskOverrideCoverageNV";
case CapabilityFragmentDensityEXT: return "FragmentDensityEXT";
@@ -1394,6 +1414,8 @@
case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV";
case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV";
case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV";
+ case OpEmitMeshTasksEXT: return "OpEmitMeshTasksEXT";
+ case OpSetMeshOutputsEXT: return "OpSetMeshOutputsEXT";
case OpTypeRayQueryKHR: return "OpTypeRayQueryKHR";
case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR";
@@ -2968,6 +2990,17 @@
InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'");
InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'");
+ InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountX'");
+ InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountY'");
+ InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountZ'");
+ InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'Payload'");
+ InstructionDesc[OpEmitMeshTasksEXT].setResultAndType(false, false);
+
+ InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'vertexCount'");
+ InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'primitiveCount'");
+ InstructionDesc[OpSetMeshOutputsEXT].setResultAndType(false, false);
+
+
InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Component Type'");
InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Scope'");
InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Rows'");
diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp
index f6b7be9..0e40544 100644
--- a/SPIRV/spirv.hpp
+++ b/SPIRV/spirv.hpp
@@ -1,2314 +1,2533 @@
-// 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"),
-// 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.
-
-// This header is automatically generated by the same tool that creates
-// the Binary Section of the SPIR-V specification.
-
-// Enumeration tokens for SPIR-V, in various styles:
-// C, C++, C++11, JSON, Lua, Python, C#, D
-//
-// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
-// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
-// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
-// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
-// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
-// - C# will use enum classes in the Specification class located in the "Spv" namespace,
-// e.g.: Spv.Specification.SourceLanguage.GLSL
-// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
-//
-// Some tokens act like mask values, which can be OR'd together,
-// while others are mutually exclusive. The mask-like ones have
-// "Mask" in their name, and a parallel enum that has the shift
-// amount (1 << x) for each corresponding enumerant.
-
-#ifndef spirv_HPP
-#define spirv_HPP
-
-namespace spv {
-
-typedef unsigned int Id;
-
-#define SPV_VERSION 0x10500
-#define SPV_REVISION 4
-
-static const unsigned int MagicNumber = 0x07230203;
-static const unsigned int Version = 0x00010500;
-static const unsigned int Revision = 4;
-static const unsigned int OpCodeMask = 0xffff;
-static const unsigned int WordCountShift = 16;
-
-enum SourceLanguage {
- SourceLanguageUnknown = 0,
- SourceLanguageESSL = 1,
- SourceLanguageGLSL = 2,
- SourceLanguageOpenCL_C = 3,
- SourceLanguageOpenCL_CPP = 4,
- SourceLanguageHLSL = 5,
- SourceLanguageMax = 0x7fffffff,
-};
-
-enum ExecutionModel {
- ExecutionModelVertex = 0,
- ExecutionModelTessellationControl = 1,
- ExecutionModelTessellationEvaluation = 2,
- ExecutionModelGeometry = 3,
- ExecutionModelFragment = 4,
- ExecutionModelGLCompute = 5,
- 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,
-};
-
-enum AddressingModel {
- AddressingModelLogical = 0,
- AddressingModelPhysical32 = 1,
- AddressingModelPhysical64 = 2,
- AddressingModelPhysicalStorageBuffer64 = 5348,
- AddressingModelPhysicalStorageBuffer64EXT = 5348,
- AddressingModelMax = 0x7fffffff,
-};
-
-enum MemoryModel {
- MemoryModelSimple = 0,
- MemoryModelGLSL450 = 1,
- MemoryModelOpenCL = 2,
- MemoryModelVulkan = 3,
- MemoryModelVulkanKHR = 3,
- MemoryModelMax = 0x7fffffff,
-};
-
-enum ExecutionMode {
- ExecutionModeInvocations = 0,
- ExecutionModeSpacingEqual = 1,
- ExecutionModeSpacingFractionalEven = 2,
- ExecutionModeSpacingFractionalOdd = 3,
- ExecutionModeVertexOrderCw = 4,
- ExecutionModeVertexOrderCcw = 5,
- ExecutionModePixelCenterInteger = 6,
- ExecutionModeOriginUpperLeft = 7,
- ExecutionModeOriginLowerLeft = 8,
- ExecutionModeEarlyFragmentTests = 9,
- ExecutionModePointMode = 10,
- ExecutionModeXfb = 11,
- ExecutionModeDepthReplacing = 12,
- ExecutionModeDepthGreater = 14,
- ExecutionModeDepthLess = 15,
- ExecutionModeDepthUnchanged = 16,
- ExecutionModeLocalSize = 17,
- ExecutionModeLocalSizeHint = 18,
- ExecutionModeInputPoints = 19,
- ExecutionModeInputLines = 20,
- ExecutionModeInputLinesAdjacency = 21,
- ExecutionModeTriangles = 22,
- ExecutionModeInputTrianglesAdjacency = 23,
- ExecutionModeQuads = 24,
- ExecutionModeIsolines = 25,
- ExecutionModeOutputVertices = 26,
- ExecutionModeOutputPoints = 27,
- ExecutionModeOutputLineStrip = 28,
- ExecutionModeOutputTriangleStrip = 29,
- ExecutionModeVecTypeHint = 30,
- ExecutionModeContractionOff = 31,
- ExecutionModeInitializer = 33,
- ExecutionModeFinalizer = 34,
- ExecutionModeSubgroupSize = 35,
- ExecutionModeSubgroupsPerWorkgroup = 36,
- ExecutionModeSubgroupsPerWorkgroupId = 37,
- ExecutionModeLocalSizeId = 38,
- ExecutionModeLocalSizeHintId = 39,
- ExecutionModeSubgroupUniformControlFlowKHR = 4421,
- ExecutionModePostDepthCoverage = 4446,
- ExecutionModeDenormPreserve = 4459,
- ExecutionModeDenormFlushToZero = 4460,
- ExecutionModeSignedZeroInfNanPreserve = 4461,
- ExecutionModeRoundingModeRTE = 4462,
- ExecutionModeRoundingModeRTZ = 4463,
- ExecutionModeStencilRefReplacingEXT = 5027,
- ExecutionModeOutputLinesNV = 5269,
- ExecutionModeOutputPrimitivesNV = 5270,
- ExecutionModeDerivativeGroupQuadsNV = 5289,
- ExecutionModeDerivativeGroupLinearNV = 5290,
- ExecutionModeOutputTrianglesNV = 5298,
- ExecutionModePixelInterlockOrderedEXT = 5366,
- ExecutionModePixelInterlockUnorderedEXT = 5367,
- ExecutionModeSampleInterlockOrderedEXT = 5368,
- ExecutionModeSampleInterlockUnorderedEXT = 5369,
- ExecutionModeShadingRateInterlockOrderedEXT = 5370,
- ExecutionModeShadingRateInterlockUnorderedEXT = 5371,
- ExecutionModeSharedLocalMemorySizeINTEL = 5618,
- ExecutionModeRoundingModeRTPINTEL = 5620,
- ExecutionModeRoundingModeRTNINTEL = 5621,
- ExecutionModeFloatingPointModeALTINTEL = 5622,
- ExecutionModeFloatingPointModeIEEEINTEL = 5623,
- ExecutionModeMaxWorkgroupSizeINTEL = 5893,
- ExecutionModeMaxWorkDimINTEL = 5894,
- ExecutionModeNoGlobalOffsetINTEL = 5895,
- ExecutionModeNumSIMDWorkitemsINTEL = 5896,
- ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
- ExecutionModeMax = 0x7fffffff,
-};
-
-enum StorageClass {
- StorageClassUniformConstant = 0,
- StorageClassInput = 1,
- StorageClassUniform = 2,
- StorageClassOutput = 3,
- StorageClassWorkgroup = 4,
- StorageClassCrossWorkgroup = 5,
- StorageClassPrivate = 6,
- StorageClassFunction = 7,
- StorageClassGeneric = 8,
- StorageClassPushConstant = 9,
- 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,
- StorageClassCodeSectionINTEL = 5605,
- StorageClassDeviceOnlyINTEL = 5936,
- StorageClassHostOnlyINTEL = 5937,
- StorageClassMax = 0x7fffffff,
-};
-
-enum Dim {
- Dim1D = 0,
- Dim2D = 1,
- Dim3D = 2,
- DimCube = 3,
- DimRect = 4,
- DimBuffer = 5,
- DimSubpassData = 6,
- DimMax = 0x7fffffff,
-};
-
-enum SamplerAddressingMode {
- SamplerAddressingModeNone = 0,
- SamplerAddressingModeClampToEdge = 1,
- SamplerAddressingModeClamp = 2,
- SamplerAddressingModeRepeat = 3,
- SamplerAddressingModeRepeatMirrored = 4,
- SamplerAddressingModeMax = 0x7fffffff,
-};
-
-enum SamplerFilterMode {
- SamplerFilterModeNearest = 0,
- SamplerFilterModeLinear = 1,
- SamplerFilterModeMax = 0x7fffffff,
-};
-
-enum ImageFormat {
- ImageFormatUnknown = 0,
- ImageFormatRgba32f = 1,
- ImageFormatRgba16f = 2,
- ImageFormatR32f = 3,
- ImageFormatRgba8 = 4,
- ImageFormatRgba8Snorm = 5,
- ImageFormatRg32f = 6,
- ImageFormatRg16f = 7,
- ImageFormatR11fG11fB10f = 8,
- ImageFormatR16f = 9,
- ImageFormatRgba16 = 10,
- ImageFormatRgb10A2 = 11,
- ImageFormatRg16 = 12,
- ImageFormatRg8 = 13,
- ImageFormatR16 = 14,
- ImageFormatR8 = 15,
- ImageFormatRgba16Snorm = 16,
- ImageFormatRg16Snorm = 17,
- ImageFormatRg8Snorm = 18,
- ImageFormatR16Snorm = 19,
- ImageFormatR8Snorm = 20,
- ImageFormatRgba32i = 21,
- ImageFormatRgba16i = 22,
- ImageFormatRgba8i = 23,
- ImageFormatR32i = 24,
- ImageFormatRg32i = 25,
- ImageFormatRg16i = 26,
- ImageFormatRg8i = 27,
- ImageFormatR16i = 28,
- ImageFormatR8i = 29,
- ImageFormatRgba32ui = 30,
- ImageFormatRgba16ui = 31,
- ImageFormatRgba8ui = 32,
- ImageFormatR32ui = 33,
- ImageFormatRgb10a2ui = 34,
- ImageFormatRg32ui = 35,
- ImageFormatRg16ui = 36,
- ImageFormatRg8ui = 37,
- ImageFormatR16ui = 38,
- ImageFormatR8ui = 39,
- ImageFormatR64ui = 40,
- ImageFormatR64i = 41,
- ImageFormatMax = 0x7fffffff,
-};
-
-enum ImageChannelOrder {
- ImageChannelOrderR = 0,
- ImageChannelOrderA = 1,
- ImageChannelOrderRG = 2,
- ImageChannelOrderRA = 3,
- ImageChannelOrderRGB = 4,
- ImageChannelOrderRGBA = 5,
- ImageChannelOrderBGRA = 6,
- ImageChannelOrderARGB = 7,
- ImageChannelOrderIntensity = 8,
- ImageChannelOrderLuminance = 9,
- ImageChannelOrderRx = 10,
- ImageChannelOrderRGx = 11,
- ImageChannelOrderRGBx = 12,
- ImageChannelOrderDepth = 13,
- ImageChannelOrderDepthStencil = 14,
- ImageChannelOrdersRGB = 15,
- ImageChannelOrdersRGBx = 16,
- ImageChannelOrdersRGBA = 17,
- ImageChannelOrdersBGRA = 18,
- ImageChannelOrderABGR = 19,
- ImageChannelOrderMax = 0x7fffffff,
-};
-
-enum ImageChannelDataType {
- ImageChannelDataTypeSnormInt8 = 0,
- ImageChannelDataTypeSnormInt16 = 1,
- ImageChannelDataTypeUnormInt8 = 2,
- ImageChannelDataTypeUnormInt16 = 3,
- ImageChannelDataTypeUnormShort565 = 4,
- ImageChannelDataTypeUnormShort555 = 5,
- ImageChannelDataTypeUnormInt101010 = 6,
- ImageChannelDataTypeSignedInt8 = 7,
- ImageChannelDataTypeSignedInt16 = 8,
- ImageChannelDataTypeSignedInt32 = 9,
- ImageChannelDataTypeUnsignedInt8 = 10,
- ImageChannelDataTypeUnsignedInt16 = 11,
- ImageChannelDataTypeUnsignedInt32 = 12,
- ImageChannelDataTypeHalfFloat = 13,
- ImageChannelDataTypeFloat = 14,
- ImageChannelDataTypeUnormInt24 = 15,
- ImageChannelDataTypeUnormInt101010_2 = 16,
- ImageChannelDataTypeMax = 0x7fffffff,
-};
-
-enum ImageOperandsShift {
- ImageOperandsBiasShift = 0,
- ImageOperandsLodShift = 1,
- ImageOperandsGradShift = 2,
- ImageOperandsConstOffsetShift = 3,
- ImageOperandsOffsetShift = 4,
- ImageOperandsConstOffsetsShift = 5,
- ImageOperandsSampleShift = 6,
- ImageOperandsMinLodShift = 7,
- ImageOperandsMakeTexelAvailableShift = 8,
- ImageOperandsMakeTexelAvailableKHRShift = 8,
- ImageOperandsMakeTexelVisibleShift = 9,
- ImageOperandsMakeTexelVisibleKHRShift = 9,
- ImageOperandsNonPrivateTexelShift = 10,
- ImageOperandsNonPrivateTexelKHRShift = 10,
- ImageOperandsVolatileTexelShift = 11,
- ImageOperandsVolatileTexelKHRShift = 11,
- ImageOperandsSignExtendShift = 12,
- ImageOperandsZeroExtendShift = 13,
- ImageOperandsMax = 0x7fffffff,
-};
-
-enum ImageOperandsMask {
- ImageOperandsMaskNone = 0,
- ImageOperandsBiasMask = 0x00000001,
- ImageOperandsLodMask = 0x00000002,
- ImageOperandsGradMask = 0x00000004,
- ImageOperandsConstOffsetMask = 0x00000008,
- ImageOperandsOffsetMask = 0x00000010,
- ImageOperandsConstOffsetsMask = 0x00000020,
- ImageOperandsSampleMask = 0x00000040,
- ImageOperandsMinLodMask = 0x00000080,
- ImageOperandsMakeTexelAvailableMask = 0x00000100,
- ImageOperandsMakeTexelAvailableKHRMask = 0x00000100,
- ImageOperandsMakeTexelVisibleMask = 0x00000200,
- ImageOperandsMakeTexelVisibleKHRMask = 0x00000200,
- ImageOperandsNonPrivateTexelMask = 0x00000400,
- ImageOperandsNonPrivateTexelKHRMask = 0x00000400,
- ImageOperandsVolatileTexelMask = 0x00000800,
- ImageOperandsVolatileTexelKHRMask = 0x00000800,
- ImageOperandsSignExtendMask = 0x00001000,
- ImageOperandsZeroExtendMask = 0x00002000,
-};
-
-enum FPFastMathModeShift {
- FPFastMathModeNotNaNShift = 0,
- FPFastMathModeNotInfShift = 1,
- FPFastMathModeNSZShift = 2,
- FPFastMathModeAllowRecipShift = 3,
- FPFastMathModeFastShift = 4,
- FPFastMathModeAllowContractFastINTELShift = 16,
- FPFastMathModeAllowReassocINTELShift = 17,
- FPFastMathModeMax = 0x7fffffff,
-};
-
-enum FPFastMathModeMask {
- FPFastMathModeMaskNone = 0,
- FPFastMathModeNotNaNMask = 0x00000001,
- FPFastMathModeNotInfMask = 0x00000002,
- FPFastMathModeNSZMask = 0x00000004,
- FPFastMathModeAllowRecipMask = 0x00000008,
- FPFastMathModeFastMask = 0x00000010,
- FPFastMathModeAllowContractFastINTELMask = 0x00010000,
- FPFastMathModeAllowReassocINTELMask = 0x00020000,
-};
-
-enum FPRoundingMode {
- FPRoundingModeRTE = 0,
- FPRoundingModeRTZ = 1,
- FPRoundingModeRTP = 2,
- FPRoundingModeRTN = 3,
- FPRoundingModeMax = 0x7fffffff,
-};
-
-enum LinkageType {
- LinkageTypeExport = 0,
- LinkageTypeImport = 1,
- LinkageTypeLinkOnceODR = 2,
- LinkageTypeMax = 0x7fffffff,
-};
-
-enum AccessQualifier {
- AccessQualifierReadOnly = 0,
- AccessQualifierWriteOnly = 1,
- AccessQualifierReadWrite = 2,
- AccessQualifierMax = 0x7fffffff,
-};
-
-enum FunctionParameterAttribute {
- FunctionParameterAttributeZext = 0,
- FunctionParameterAttributeSext = 1,
- FunctionParameterAttributeByVal = 2,
- FunctionParameterAttributeSret = 3,
- FunctionParameterAttributeNoAlias = 4,
- FunctionParameterAttributeNoCapture = 5,
- FunctionParameterAttributeNoWrite = 6,
- FunctionParameterAttributeNoReadWrite = 7,
- FunctionParameterAttributeMax = 0x7fffffff,
-};
-
-enum Decoration {
- DecorationRelaxedPrecision = 0,
- DecorationSpecId = 1,
- DecorationBlock = 2,
- DecorationBufferBlock = 3,
- DecorationRowMajor = 4,
- DecorationColMajor = 5,
- DecorationArrayStride = 6,
- DecorationMatrixStride = 7,
- DecorationGLSLShared = 8,
- DecorationGLSLPacked = 9,
- DecorationCPacked = 10,
- DecorationBuiltIn = 11,
- DecorationNoPerspective = 13,
- DecorationFlat = 14,
- DecorationPatch = 15,
- DecorationCentroid = 16,
- DecorationSample = 17,
- DecorationInvariant = 18,
- DecorationRestrict = 19,
- DecorationAliased = 20,
- DecorationVolatile = 21,
- DecorationConstant = 22,
- DecorationCoherent = 23,
- DecorationNonWritable = 24,
- DecorationNonReadable = 25,
- DecorationUniform = 26,
- DecorationUniformId = 27,
- DecorationSaturatedConversion = 28,
- DecorationStream = 29,
- DecorationLocation = 30,
- DecorationComponent = 31,
- DecorationIndex = 32,
- DecorationBinding = 33,
- DecorationDescriptorSet = 34,
- DecorationOffset = 35,
- DecorationXfbBuffer = 36,
- DecorationXfbStride = 37,
- DecorationFuncParamAttr = 38,
- DecorationFPRoundingMode = 39,
- DecorationFPFastMathMode = 40,
- DecorationLinkageAttributes = 41,
- DecorationNoContraction = 42,
- DecorationInputAttachmentIndex = 43,
- DecorationAlignment = 44,
- DecorationMaxByteOffset = 45,
- DecorationAlignmentId = 46,
- DecorationMaxByteOffsetId = 47,
- DecorationNoSignedWrap = 4469,
- DecorationNoUnsignedWrap = 4470,
- DecorationExplicitInterpAMD = 4999,
- DecorationOverrideCoverageNV = 5248,
- DecorationPassthroughNV = 5250,
- DecorationViewportRelativeNV = 5252,
- DecorationSecondaryViewportRelativeNV = 5256,
- DecorationPerPrimitiveNV = 5271,
- DecorationPerViewNV = 5272,
- DecorationPerTaskNV = 5273,
- DecorationPerVertexNV = 5285,
- DecorationNonUniform = 5300,
- DecorationNonUniformEXT = 5300,
- DecorationRestrictPointer = 5355,
- DecorationRestrictPointerEXT = 5355,
- DecorationAliasedPointer = 5356,
- DecorationAliasedPointerEXT = 5356,
- DecorationSIMTCallINTEL = 5599,
- DecorationReferencedIndirectlyINTEL = 5602,
- DecorationClobberINTEL = 5607,
- DecorationSideEffectsINTEL = 5608,
- DecorationVectorComputeVariableINTEL = 5624,
- DecorationFuncParamIOKindINTEL = 5625,
- DecorationVectorComputeFunctionINTEL = 5626,
- DecorationStackCallINTEL = 5627,
- DecorationGlobalVariableOffsetINTEL = 5628,
- DecorationCounterBuffer = 5634,
- DecorationHlslCounterBufferGOOGLE = 5634,
- DecorationHlslSemanticGOOGLE = 5635,
- DecorationUserSemantic = 5635,
- DecorationUserTypeGOOGLE = 5636,
- DecorationFunctionRoundingModeINTEL = 5822,
- DecorationFunctionDenormModeINTEL = 5823,
- DecorationRegisterINTEL = 5825,
- DecorationMemoryINTEL = 5826,
- DecorationNumbanksINTEL = 5827,
- DecorationBankwidthINTEL = 5828,
- DecorationMaxPrivateCopiesINTEL = 5829,
- DecorationSinglepumpINTEL = 5830,
- DecorationDoublepumpINTEL = 5831,
- DecorationMaxReplicatesINTEL = 5832,
- DecorationSimpleDualPortINTEL = 5833,
- DecorationMergeINTEL = 5834,
- DecorationBankBitsINTEL = 5835,
- DecorationForcePow2DepthINTEL = 5836,
- DecorationBurstCoalesceINTEL = 5899,
- DecorationCacheSizeINTEL = 5900,
- DecorationDontStaticallyCoalesceINTEL = 5901,
- DecorationPrefetchINTEL = 5902,
- DecorationStallEnableINTEL = 5905,
- DecorationFuseLoopsInFunctionINTEL = 5907,
- DecorationBufferLocationINTEL = 5921,
- DecorationIOPipeStorageINTEL = 5944,
- DecorationFunctionFloatingPointModeINTEL = 6080,
- DecorationSingleElementVectorINTEL = 6085,
- DecorationVectorComputeCallableFunctionINTEL = 6087,
- DecorationMax = 0x7fffffff,
-};
-
-enum BuiltIn {
- BuiltInPosition = 0,
- BuiltInPointSize = 1,
- BuiltInClipDistance = 3,
- BuiltInCullDistance = 4,
- BuiltInVertexId = 5,
- BuiltInInstanceId = 6,
- BuiltInPrimitiveId = 7,
- BuiltInInvocationId = 8,
- BuiltInLayer = 9,
- BuiltInViewportIndex = 10,
- BuiltInTessLevelOuter = 11,
- BuiltInTessLevelInner = 12,
- BuiltInTessCoord = 13,
- BuiltInPatchVertices = 14,
- BuiltInFragCoord = 15,
- BuiltInPointCoord = 16,
- BuiltInFrontFacing = 17,
- BuiltInSampleId = 18,
- BuiltInSamplePosition = 19,
- BuiltInSampleMask = 20,
- BuiltInFragDepth = 22,
- BuiltInHelperInvocation = 23,
- BuiltInNumWorkgroups = 24,
- BuiltInWorkgroupSize = 25,
- BuiltInWorkgroupId = 26,
- BuiltInLocalInvocationId = 27,
- BuiltInGlobalInvocationId = 28,
- BuiltInLocalInvocationIndex = 29,
- BuiltInWorkDim = 30,
- BuiltInGlobalSize = 31,
- BuiltInEnqueuedWorkgroupSize = 32,
- BuiltInGlobalOffset = 33,
- BuiltInGlobalLinearId = 34,
- BuiltInSubgroupSize = 36,
- BuiltInSubgroupMaxSize = 37,
- BuiltInNumSubgroups = 38,
- BuiltInNumEnqueuedSubgroups = 39,
- BuiltInSubgroupId = 40,
- BuiltInSubgroupLocalInvocationId = 41,
- BuiltInVertexIndex = 42,
- BuiltInInstanceIndex = 43,
- BuiltInSubgroupEqMask = 4416,
- BuiltInSubgroupEqMaskKHR = 4416,
- BuiltInSubgroupGeMask = 4417,
- BuiltInSubgroupGeMaskKHR = 4417,
- BuiltInSubgroupGtMask = 4418,
- BuiltInSubgroupGtMaskKHR = 4418,
- BuiltInSubgroupLeMask = 4419,
- BuiltInSubgroupLeMaskKHR = 4419,
- BuiltInSubgroupLtMask = 4420,
- BuiltInSubgroupLtMaskKHR = 4420,
- BuiltInBaseVertex = 4424,
- BuiltInBaseInstance = 4425,
- BuiltInDrawIndex = 4426,
- BuiltInPrimitiveShadingRateKHR = 4432,
- BuiltInDeviceIndex = 4438,
- BuiltInViewIndex = 4440,
- BuiltInShadingRateKHR = 4444,
- BuiltInBaryCoordNoPerspAMD = 4992,
- BuiltInBaryCoordNoPerspCentroidAMD = 4993,
- BuiltInBaryCoordNoPerspSampleAMD = 4994,
- BuiltInBaryCoordSmoothAMD = 4995,
- BuiltInBaryCoordSmoothCentroidAMD = 4996,
- BuiltInBaryCoordSmoothSampleAMD = 4997,
- BuiltInBaryCoordPullModelAMD = 4998,
- BuiltInFragStencilRefEXT = 5014,
- BuiltInViewportMaskNV = 5253,
- BuiltInSecondaryPositionNV = 5257,
- BuiltInSecondaryViewportMaskNV = 5258,
- BuiltInPositionPerViewNV = 5261,
- BuiltInViewportMaskPerViewNV = 5262,
- BuiltInFullyCoveredEXT = 5264,
- BuiltInTaskCountNV = 5274,
- BuiltInPrimitiveCountNV = 5275,
- BuiltInPrimitiveIndicesNV = 5276,
- BuiltInClipDistancePerViewNV = 5277,
- BuiltInCullDistancePerViewNV = 5278,
- BuiltInLayerPerViewNV = 5279,
- BuiltInMeshViewCountNV = 5280,
- BuiltInMeshViewIndicesNV = 5281,
- BuiltInBaryCoordNV = 5286,
- BuiltInBaryCoordNoPerspNV = 5287,
- BuiltInFragSizeEXT = 5292,
- 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,
- BuiltInHitTNV = 5332,
- BuiltInHitKindKHR = 5333,
- BuiltInHitKindNV = 5333,
- BuiltInCurrentRayTimeNV = 5334,
- BuiltInIncomingRayFlagsKHR = 5351,
- BuiltInIncomingRayFlagsNV = 5351,
- BuiltInRayGeometryIndexKHR = 5352,
- BuiltInWarpsPerSMNV = 5374,
- BuiltInSMCountNV = 5375,
- BuiltInWarpIDNV = 5376,
- BuiltInSMIDNV = 5377,
- BuiltInMax = 0x7fffffff,
-};
-
-enum SelectionControlShift {
- SelectionControlFlattenShift = 0,
- SelectionControlDontFlattenShift = 1,
- SelectionControlMax = 0x7fffffff,
-};
-
-enum SelectionControlMask {
- SelectionControlMaskNone = 0,
- SelectionControlFlattenMask = 0x00000001,
- SelectionControlDontFlattenMask = 0x00000002,
-};
-
-enum LoopControlShift {
- LoopControlUnrollShift = 0,
- LoopControlDontUnrollShift = 1,
- LoopControlDependencyInfiniteShift = 2,
- LoopControlDependencyLengthShift = 3,
- LoopControlMinIterationsShift = 4,
- LoopControlMaxIterationsShift = 5,
- LoopControlIterationMultipleShift = 6,
- LoopControlPeelCountShift = 7,
- LoopControlPartialCountShift = 8,
- LoopControlInitiationIntervalINTELShift = 16,
- LoopControlMaxConcurrencyINTELShift = 17,
- LoopControlDependencyArrayINTELShift = 18,
- LoopControlPipelineEnableINTELShift = 19,
- LoopControlLoopCoalesceINTELShift = 20,
- LoopControlMaxInterleavingINTELShift = 21,
- LoopControlSpeculatedIterationsINTELShift = 22,
- LoopControlNoFusionINTELShift = 23,
- LoopControlMax = 0x7fffffff,
-};
-
-enum LoopControlMask {
- LoopControlMaskNone = 0,
- LoopControlUnrollMask = 0x00000001,
- LoopControlDontUnrollMask = 0x00000002,
- LoopControlDependencyInfiniteMask = 0x00000004,
- LoopControlDependencyLengthMask = 0x00000008,
- LoopControlMinIterationsMask = 0x00000010,
- LoopControlMaxIterationsMask = 0x00000020,
- LoopControlIterationMultipleMask = 0x00000040,
- LoopControlPeelCountMask = 0x00000080,
- LoopControlPartialCountMask = 0x00000100,
- LoopControlInitiationIntervalINTELMask = 0x00010000,
- LoopControlMaxConcurrencyINTELMask = 0x00020000,
- LoopControlDependencyArrayINTELMask = 0x00040000,
- LoopControlPipelineEnableINTELMask = 0x00080000,
- LoopControlLoopCoalesceINTELMask = 0x00100000,
- LoopControlMaxInterleavingINTELMask = 0x00200000,
- LoopControlSpeculatedIterationsINTELMask = 0x00400000,
- LoopControlNoFusionINTELMask = 0x00800000,
-};
-
-enum FunctionControlShift {
- FunctionControlInlineShift = 0,
- FunctionControlDontInlineShift = 1,
- FunctionControlPureShift = 2,
- FunctionControlConstShift = 3,
- FunctionControlMax = 0x7fffffff,
-};
-
-enum FunctionControlMask {
- FunctionControlMaskNone = 0,
- FunctionControlInlineMask = 0x00000001,
- FunctionControlDontInlineMask = 0x00000002,
- FunctionControlPureMask = 0x00000004,
- FunctionControlConstMask = 0x00000008,
-};
-
-enum MemorySemanticsShift {
- MemorySemanticsAcquireShift = 1,
- MemorySemanticsReleaseShift = 2,
- MemorySemanticsAcquireReleaseShift = 3,
- MemorySemanticsSequentiallyConsistentShift = 4,
- MemorySemanticsUniformMemoryShift = 6,
- MemorySemanticsSubgroupMemoryShift = 7,
- MemorySemanticsWorkgroupMemoryShift = 8,
- MemorySemanticsCrossWorkgroupMemoryShift = 9,
- MemorySemanticsAtomicCounterMemoryShift = 10,
- MemorySemanticsImageMemoryShift = 11,
- MemorySemanticsOutputMemoryShift = 12,
- MemorySemanticsOutputMemoryKHRShift = 12,
- MemorySemanticsMakeAvailableShift = 13,
- MemorySemanticsMakeAvailableKHRShift = 13,
- MemorySemanticsMakeVisibleShift = 14,
- MemorySemanticsMakeVisibleKHRShift = 14,
- MemorySemanticsVolatileShift = 15,
- MemorySemanticsMax = 0x7fffffff,
-};
-
-enum MemorySemanticsMask {
- MemorySemanticsMaskNone = 0,
- MemorySemanticsAcquireMask = 0x00000002,
- MemorySemanticsReleaseMask = 0x00000004,
- MemorySemanticsAcquireReleaseMask = 0x00000008,
- MemorySemanticsSequentiallyConsistentMask = 0x00000010,
- MemorySemanticsUniformMemoryMask = 0x00000040,
- MemorySemanticsSubgroupMemoryMask = 0x00000080,
- MemorySemanticsWorkgroupMemoryMask = 0x00000100,
- MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
- MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
- MemorySemanticsImageMemoryMask = 0x00000800,
- MemorySemanticsOutputMemoryMask = 0x00001000,
- MemorySemanticsOutputMemoryKHRMask = 0x00001000,
- MemorySemanticsMakeAvailableMask = 0x00002000,
- MemorySemanticsMakeAvailableKHRMask = 0x00002000,
- MemorySemanticsMakeVisibleMask = 0x00004000,
- MemorySemanticsMakeVisibleKHRMask = 0x00004000,
- MemorySemanticsVolatileMask = 0x00008000,
-};
-
-enum MemoryAccessShift {
- MemoryAccessVolatileShift = 0,
- MemoryAccessAlignedShift = 1,
- MemoryAccessNontemporalShift = 2,
- MemoryAccessMakePointerAvailableShift = 3,
- MemoryAccessMakePointerAvailableKHRShift = 3,
- MemoryAccessMakePointerVisibleShift = 4,
- MemoryAccessMakePointerVisibleKHRShift = 4,
- MemoryAccessNonPrivatePointerShift = 5,
- MemoryAccessNonPrivatePointerKHRShift = 5,
- MemoryAccessMax = 0x7fffffff,
-};
-
-enum MemoryAccessMask {
- MemoryAccessMaskNone = 0,
- MemoryAccessVolatileMask = 0x00000001,
- MemoryAccessAlignedMask = 0x00000002,
- MemoryAccessNontemporalMask = 0x00000004,
- MemoryAccessMakePointerAvailableMask = 0x00000008,
- MemoryAccessMakePointerAvailableKHRMask = 0x00000008,
- MemoryAccessMakePointerVisibleMask = 0x00000010,
- MemoryAccessMakePointerVisibleKHRMask = 0x00000010,
- MemoryAccessNonPrivatePointerMask = 0x00000020,
- MemoryAccessNonPrivatePointerKHRMask = 0x00000020,
-};
-
-enum Scope {
- ScopeCrossDevice = 0,
- ScopeDevice = 1,
- ScopeWorkgroup = 2,
- ScopeSubgroup = 3,
- ScopeInvocation = 4,
- ScopeQueueFamily = 5,
- ScopeQueueFamilyKHR = 5,
- ScopeShaderCallKHR = 6,
- ScopeMax = 0x7fffffff,
-};
-
-enum GroupOperation {
- GroupOperationReduce = 0,
- GroupOperationInclusiveScan = 1,
- GroupOperationExclusiveScan = 2,
- GroupOperationClusteredReduce = 3,
- GroupOperationPartitionedReduceNV = 6,
- GroupOperationPartitionedInclusiveScanNV = 7,
- GroupOperationPartitionedExclusiveScanNV = 8,
- GroupOperationMax = 0x7fffffff,
-};
-
-enum KernelEnqueueFlags {
- KernelEnqueueFlagsNoWait = 0,
- KernelEnqueueFlagsWaitKernel = 1,
- KernelEnqueueFlagsWaitWorkGroup = 2,
- KernelEnqueueFlagsMax = 0x7fffffff,
-};
-
-enum KernelProfilingInfoShift {
- KernelProfilingInfoCmdExecTimeShift = 0,
- KernelProfilingInfoMax = 0x7fffffff,
-};
-
-enum KernelProfilingInfoMask {
- KernelProfilingInfoMaskNone = 0,
- KernelProfilingInfoCmdExecTimeMask = 0x00000001,
-};
-
-enum Capability {
- CapabilityMatrix = 0,
- CapabilityShader = 1,
- CapabilityGeometry = 2,
- CapabilityTessellation = 3,
- CapabilityAddresses = 4,
- CapabilityLinkage = 5,
- CapabilityKernel = 6,
- CapabilityVector16 = 7,
- CapabilityFloat16Buffer = 8,
- CapabilityFloat16 = 9,
- CapabilityFloat64 = 10,
- CapabilityInt64 = 11,
- CapabilityInt64Atomics = 12,
- CapabilityImageBasic = 13,
- CapabilityImageReadWrite = 14,
- CapabilityImageMipmap = 15,
- CapabilityPipes = 17,
- CapabilityGroups = 18,
- CapabilityDeviceEnqueue = 19,
- CapabilityLiteralSampler = 20,
- CapabilityAtomicStorage = 21,
- CapabilityInt16 = 22,
- CapabilityTessellationPointSize = 23,
- CapabilityGeometryPointSize = 24,
- CapabilityImageGatherExtended = 25,
- CapabilityStorageImageMultisample = 27,
- CapabilityUniformBufferArrayDynamicIndexing = 28,
- CapabilitySampledImageArrayDynamicIndexing = 29,
- CapabilityStorageBufferArrayDynamicIndexing = 30,
- CapabilityStorageImageArrayDynamicIndexing = 31,
- CapabilityClipDistance = 32,
- CapabilityCullDistance = 33,
- CapabilityImageCubeArray = 34,
- CapabilitySampleRateShading = 35,
- CapabilityImageRect = 36,
- CapabilitySampledRect = 37,
- CapabilityGenericPointer = 38,
- CapabilityInt8 = 39,
- CapabilityInputAttachment = 40,
- CapabilitySparseResidency = 41,
- CapabilityMinLod = 42,
- CapabilitySampled1D = 43,
- CapabilityImage1D = 44,
- CapabilitySampledCubeArray = 45,
- CapabilitySampledBuffer = 46,
- CapabilityImageBuffer = 47,
- CapabilityImageMSArray = 48,
- CapabilityStorageImageExtendedFormats = 49,
- CapabilityImageQuery = 50,
- CapabilityDerivativeControl = 51,
- CapabilityInterpolationFunction = 52,
- CapabilityTransformFeedback = 53,
- CapabilityGeometryStreams = 54,
- CapabilityStorageImageReadWithoutFormat = 55,
- CapabilityStorageImageWriteWithoutFormat = 56,
- CapabilityMultiViewport = 57,
- CapabilitySubgroupDispatch = 58,
- CapabilityNamedBarrier = 59,
- CapabilityPipeStorage = 60,
- CapabilityGroupNonUniform = 61,
- CapabilityGroupNonUniformVote = 62,
- CapabilityGroupNonUniformArithmetic = 63,
- CapabilityGroupNonUniformBallot = 64,
- CapabilityGroupNonUniformShuffle = 65,
- CapabilityGroupNonUniformShuffleRelative = 66,
- CapabilityGroupNonUniformClustered = 67,
- CapabilityGroupNonUniformQuad = 68,
- CapabilityShaderLayer = 69,
- CapabilityShaderViewportIndex = 70,
- CapabilityFragmentShadingRateKHR = 4422,
- CapabilitySubgroupBallotKHR = 4423,
- CapabilityDrawParameters = 4427,
- CapabilityWorkgroupMemoryExplicitLayoutKHR = 4428,
- CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429,
- CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,
- CapabilitySubgroupVoteKHR = 4431,
- CapabilityStorageBuffer16BitAccess = 4433,
- CapabilityStorageUniformBufferBlock16 = 4433,
- CapabilityStorageUniform16 = 4434,
- CapabilityUniformAndStorageBuffer16BitAccess = 4434,
- CapabilityStoragePushConstant16 = 4435,
- CapabilityStorageInputOutput16 = 4436,
- CapabilityDeviceGroup = 4437,
- CapabilityMultiView = 4439,
- CapabilityVariablePointersStorageBuffer = 4441,
- CapabilityVariablePointers = 4442,
- CapabilityAtomicStorageOps = 4445,
- CapabilitySampleMaskPostDepthCoverage = 4447,
- CapabilityStorageBuffer8BitAccess = 4448,
- CapabilityUniformAndStorageBuffer8BitAccess = 4449,
- CapabilityStoragePushConstant8 = 4450,
- CapabilityDenormPreserve = 4464,
- CapabilityDenormFlushToZero = 4465,
- CapabilitySignedZeroInfNanPreserve = 4466,
- CapabilityRoundingModeRTE = 4467,
- CapabilityRoundingModeRTZ = 4468,
- CapabilityRayQueryProvisionalKHR = 4471,
- CapabilityRayQueryKHR = 4472,
- CapabilityRayTraversalPrimitiveCullingKHR = 4478,
- CapabilityRayTracingKHR = 4479,
- CapabilityFloat16ImageAMD = 5008,
- CapabilityImageGatherBiasLodAMD = 5009,
- CapabilityFragmentMaskAMD = 5010,
- CapabilityStencilExportEXT = 5013,
- CapabilityImageReadWriteLodAMD = 5015,
- CapabilityInt64ImageEXT = 5016,
- CapabilityShaderClockKHR = 5055,
- CapabilitySampleMaskOverrideCoverageNV = 5249,
- CapabilityGeometryShaderPassthroughNV = 5251,
- CapabilityShaderViewportIndexLayerEXT = 5254,
- CapabilityShaderViewportIndexLayerNV = 5254,
- CapabilityShaderViewportMaskNV = 5255,
- CapabilityShaderStereoViewNV = 5259,
- CapabilityPerViewAttributesNV = 5260,
- CapabilityFragmentFullyCoveredEXT = 5265,
- CapabilityMeshShadingNV = 5266,
- CapabilityImageFootprintNV = 5282,
- CapabilityFragmentBarycentricNV = 5284,
- CapabilityComputeDerivativeGroupQuadsNV = 5288,
- CapabilityFragmentDensityEXT = 5291,
- CapabilityShadingRateNV = 5291,
- CapabilityGroupNonUniformPartitionedNV = 5297,
- CapabilityShaderNonUniform = 5301,
- CapabilityShaderNonUniformEXT = 5301,
- CapabilityRuntimeDescriptorArray = 5302,
- CapabilityRuntimeDescriptorArrayEXT = 5302,
- CapabilityInputAttachmentArrayDynamicIndexing = 5303,
- CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
- CapabilityUniformTexelBufferArrayDynamicIndexing = 5304,
- CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
- CapabilityStorageTexelBufferArrayDynamicIndexing = 5305,
- CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
- CapabilityUniformBufferArrayNonUniformIndexing = 5306,
- CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
- CapabilitySampledImageArrayNonUniformIndexing = 5307,
- CapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
- CapabilityStorageBufferArrayNonUniformIndexing = 5308,
- CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
- CapabilityStorageImageArrayNonUniformIndexing = 5309,
- CapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
- CapabilityInputAttachmentArrayNonUniformIndexing = 5310,
- CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
- CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311,
- CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
- CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
- CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
- CapabilityRayTracingNV = 5340,
- CapabilityRayTracingMotionBlurNV = 5341,
- CapabilityVulkanMemoryModel = 5345,
- CapabilityVulkanMemoryModelKHR = 5345,
- CapabilityVulkanMemoryModelDeviceScope = 5346,
- CapabilityVulkanMemoryModelDeviceScopeKHR = 5346,
- CapabilityPhysicalStorageBufferAddresses = 5347,
- CapabilityPhysicalStorageBufferAddressesEXT = 5347,
- CapabilityComputeDerivativeGroupLinearNV = 5350,
- CapabilityRayTracingProvisionalKHR = 5353,
- CapabilityCooperativeMatrixNV = 5357,
- CapabilityFragmentShaderSampleInterlockEXT = 5363,
- CapabilityFragmentShaderShadingRateInterlockEXT = 5372,
- CapabilityShaderSMBuiltinsNV = 5373,
- CapabilityFragmentShaderPixelInterlockEXT = 5378,
- CapabilityDemoteToHelperInvocationEXT = 5379,
- CapabilitySubgroupShuffleINTEL = 5568,
- CapabilitySubgroupBufferBlockIOINTEL = 5569,
- CapabilitySubgroupImageBlockIOINTEL = 5570,
- CapabilitySubgroupImageMediaBlockIOINTEL = 5579,
- CapabilityRoundToInfinityINTEL = 5582,
- CapabilityFloatingPointModeINTEL = 5583,
- CapabilityIntegerFunctions2INTEL = 5584,
- CapabilityFunctionPointersINTEL = 5603,
- CapabilityIndirectReferencesINTEL = 5604,
- CapabilityAsmINTEL = 5606,
- CapabilityAtomicFloat32MinMaxEXT = 5612,
- CapabilityAtomicFloat64MinMaxEXT = 5613,
- CapabilityAtomicFloat16MinMaxEXT = 5616,
- CapabilityVectorComputeINTEL = 5617,
- CapabilityVectorAnyINTEL = 5619,
- CapabilityExpectAssumeKHR = 5629,
- CapabilitySubgroupAvcMotionEstimationINTEL = 5696,
- CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
- CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
- CapabilityVariableLengthArrayINTEL = 5817,
- CapabilityFunctionFloatControlINTEL = 5821,
- CapabilityFPGAMemoryAttributesINTEL = 5824,
- CapabilityFPFastMathModeINTEL = 5837,
- CapabilityArbitraryPrecisionIntegersINTEL = 5844,
- CapabilityUnstructuredLoopControlsINTEL = 5886,
- CapabilityFPGALoopControlsINTEL = 5888,
- CapabilityKernelAttributesINTEL = 5892,
- CapabilityFPGAKernelAttributesINTEL = 5897,
- CapabilityFPGAMemoryAccessesINTEL = 5898,
- CapabilityFPGAClusterAttributesINTEL = 5904,
- CapabilityLoopFuseINTEL = 5906,
- CapabilityFPGABufferLocationINTEL = 5920,
- CapabilityUSMStorageClassesINTEL = 5935,
- CapabilityIOPipesINTEL = 5943,
- CapabilityBlockingPipesINTEL = 5945,
- CapabilityFPGARegINTEL = 5948,
- CapabilityAtomicFloat32AddEXT = 6033,
- CapabilityAtomicFloat64AddEXT = 6034,
- CapabilityLongConstantCompositeINTEL = 6089,
- CapabilityAtomicFloat16AddEXT = 6095,
- 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 FragmentShadingRateShift {
- FragmentShadingRateVertical2PixelsShift = 0,
- FragmentShadingRateVertical4PixelsShift = 1,
- FragmentShadingRateHorizontal2PixelsShift = 2,
- FragmentShadingRateHorizontal4PixelsShift = 3,
- FragmentShadingRateMax = 0x7fffffff,
-};
-
-enum FragmentShadingRateMask {
- FragmentShadingRateMaskNone = 0,
- FragmentShadingRateVertical2PixelsMask = 0x00000001,
- FragmentShadingRateVertical4PixelsMask = 0x00000002,
- FragmentShadingRateHorizontal2PixelsMask = 0x00000004,
- FragmentShadingRateHorizontal4PixelsMask = 0x00000008,
-};
-
-enum FPDenormMode {
- FPDenormModePreserve = 0,
- FPDenormModeFlushToZero = 1,
- FPDenormModeMax = 0x7fffffff,
-};
-
-enum FPOperationMode {
- FPOperationModeIEEE = 0,
- FPOperationModeALT = 1,
- FPOperationModeMax = 0x7fffffff,
-};
-
-enum Op {
- OpNop = 0,
- OpUndef = 1,
- OpSourceContinued = 2,
- OpSource = 3,
- OpSourceExtension = 4,
- OpName = 5,
- OpMemberName = 6,
- OpString = 7,
- OpLine = 8,
- OpExtension = 10,
- OpExtInstImport = 11,
- OpExtInst = 12,
- OpMemoryModel = 14,
- OpEntryPoint = 15,
- OpExecutionMode = 16,
- OpCapability = 17,
- OpTypeVoid = 19,
- OpTypeBool = 20,
- OpTypeInt = 21,
- OpTypeFloat = 22,
- OpTypeVector = 23,
- OpTypeMatrix = 24,
- OpTypeImage = 25,
- OpTypeSampler = 26,
- OpTypeSampledImage = 27,
- OpTypeArray = 28,
- OpTypeRuntimeArray = 29,
- OpTypeStruct = 30,
- OpTypeOpaque = 31,
- OpTypePointer = 32,
- OpTypeFunction = 33,
- OpTypeEvent = 34,
- OpTypeDeviceEvent = 35,
- OpTypeReserveId = 36,
- OpTypeQueue = 37,
- OpTypePipe = 38,
- OpTypeForwardPointer = 39,
- OpConstantTrue = 41,
- OpConstantFalse = 42,
- OpConstant = 43,
- OpConstantComposite = 44,
- OpConstantSampler = 45,
- OpConstantNull = 46,
- OpSpecConstantTrue = 48,
- OpSpecConstantFalse = 49,
- OpSpecConstant = 50,
- OpSpecConstantComposite = 51,
- OpSpecConstantOp = 52,
- OpFunction = 54,
- OpFunctionParameter = 55,
- OpFunctionEnd = 56,
- OpFunctionCall = 57,
- OpVariable = 59,
- OpImageTexelPointer = 60,
- OpLoad = 61,
- OpStore = 62,
- OpCopyMemory = 63,
- OpCopyMemorySized = 64,
- OpAccessChain = 65,
- OpInBoundsAccessChain = 66,
- OpPtrAccessChain = 67,
- OpArrayLength = 68,
- OpGenericPtrMemSemantics = 69,
- OpInBoundsPtrAccessChain = 70,
- OpDecorate = 71,
- OpMemberDecorate = 72,
- OpDecorationGroup = 73,
- OpGroupDecorate = 74,
- OpGroupMemberDecorate = 75,
- OpVectorExtractDynamic = 77,
- OpVectorInsertDynamic = 78,
- OpVectorShuffle = 79,
- OpCompositeConstruct = 80,
- OpCompositeExtract = 81,
- OpCompositeInsert = 82,
- OpCopyObject = 83,
- OpTranspose = 84,
- OpSampledImage = 86,
- OpImageSampleImplicitLod = 87,
- OpImageSampleExplicitLod = 88,
- OpImageSampleDrefImplicitLod = 89,
- OpImageSampleDrefExplicitLod = 90,
- OpImageSampleProjImplicitLod = 91,
- OpImageSampleProjExplicitLod = 92,
- OpImageSampleProjDrefImplicitLod = 93,
- OpImageSampleProjDrefExplicitLod = 94,
- OpImageFetch = 95,
- OpImageGather = 96,
- OpImageDrefGather = 97,
- OpImageRead = 98,
- OpImageWrite = 99,
- OpImage = 100,
- OpImageQueryFormat = 101,
- OpImageQueryOrder = 102,
- OpImageQuerySizeLod = 103,
- OpImageQuerySize = 104,
- OpImageQueryLod = 105,
- OpImageQueryLevels = 106,
- OpImageQuerySamples = 107,
- OpConvertFToU = 109,
- OpConvertFToS = 110,
- OpConvertSToF = 111,
- OpConvertUToF = 112,
- OpUConvert = 113,
- OpSConvert = 114,
- OpFConvert = 115,
- OpQuantizeToF16 = 116,
- OpConvertPtrToU = 117,
- OpSatConvertSToU = 118,
- OpSatConvertUToS = 119,
- OpConvertUToPtr = 120,
- OpPtrCastToGeneric = 121,
- OpGenericCastToPtr = 122,
- OpGenericCastToPtrExplicit = 123,
- OpBitcast = 124,
- OpSNegate = 126,
- OpFNegate = 127,
- OpIAdd = 128,
- OpFAdd = 129,
- OpISub = 130,
- OpFSub = 131,
- OpIMul = 132,
- OpFMul = 133,
- OpUDiv = 134,
- OpSDiv = 135,
- OpFDiv = 136,
- OpUMod = 137,
- OpSRem = 138,
- OpSMod = 139,
- OpFRem = 140,
- OpFMod = 141,
- OpVectorTimesScalar = 142,
- OpMatrixTimesScalar = 143,
- OpVectorTimesMatrix = 144,
- OpMatrixTimesVector = 145,
- OpMatrixTimesMatrix = 146,
- OpOuterProduct = 147,
- OpDot = 148,
- OpIAddCarry = 149,
- OpISubBorrow = 150,
- OpUMulExtended = 151,
- OpSMulExtended = 152,
- OpAny = 154,
- OpAll = 155,
- OpIsNan = 156,
- OpIsInf = 157,
- OpIsFinite = 158,
- OpIsNormal = 159,
- OpSignBitSet = 160,
- OpLessOrGreater = 161,
- OpOrdered = 162,
- OpUnordered = 163,
- OpLogicalEqual = 164,
- OpLogicalNotEqual = 165,
- OpLogicalOr = 166,
- OpLogicalAnd = 167,
- OpLogicalNot = 168,
- OpSelect = 169,
- OpIEqual = 170,
- OpINotEqual = 171,
- OpUGreaterThan = 172,
- OpSGreaterThan = 173,
- OpUGreaterThanEqual = 174,
- OpSGreaterThanEqual = 175,
- OpULessThan = 176,
- OpSLessThan = 177,
- OpULessThanEqual = 178,
- OpSLessThanEqual = 179,
- OpFOrdEqual = 180,
- OpFUnordEqual = 181,
- OpFOrdNotEqual = 182,
- OpFUnordNotEqual = 183,
- OpFOrdLessThan = 184,
- OpFUnordLessThan = 185,
- OpFOrdGreaterThan = 186,
- OpFUnordGreaterThan = 187,
- OpFOrdLessThanEqual = 188,
- OpFUnordLessThanEqual = 189,
- OpFOrdGreaterThanEqual = 190,
- OpFUnordGreaterThanEqual = 191,
- OpShiftRightLogical = 194,
- OpShiftRightArithmetic = 195,
- OpShiftLeftLogical = 196,
- OpBitwiseOr = 197,
- OpBitwiseXor = 198,
- OpBitwiseAnd = 199,
- OpNot = 200,
- OpBitFieldInsert = 201,
- OpBitFieldSExtract = 202,
- OpBitFieldUExtract = 203,
- OpBitReverse = 204,
- OpBitCount = 205,
- OpDPdx = 207,
- OpDPdy = 208,
- OpFwidth = 209,
- OpDPdxFine = 210,
- OpDPdyFine = 211,
- OpFwidthFine = 212,
- OpDPdxCoarse = 213,
- OpDPdyCoarse = 214,
- OpFwidthCoarse = 215,
- OpEmitVertex = 218,
- OpEndPrimitive = 219,
- OpEmitStreamVertex = 220,
- OpEndStreamPrimitive = 221,
- OpControlBarrier = 224,
- OpMemoryBarrier = 225,
- OpAtomicLoad = 227,
- OpAtomicStore = 228,
- OpAtomicExchange = 229,
- OpAtomicCompareExchange = 230,
- OpAtomicCompareExchangeWeak = 231,
- OpAtomicIIncrement = 232,
- OpAtomicIDecrement = 233,
- OpAtomicIAdd = 234,
- OpAtomicISub = 235,
- OpAtomicSMin = 236,
- OpAtomicUMin = 237,
- OpAtomicSMax = 238,
- OpAtomicUMax = 239,
- OpAtomicAnd = 240,
- OpAtomicOr = 241,
- OpAtomicXor = 242,
- OpPhi = 245,
- OpLoopMerge = 246,
- OpSelectionMerge = 247,
- OpLabel = 248,
- OpBranch = 249,
- OpBranchConditional = 250,
- OpSwitch = 251,
- OpKill = 252,
- OpReturn = 253,
- OpReturnValue = 254,
- OpUnreachable = 255,
- OpLifetimeStart = 256,
- OpLifetimeStop = 257,
- OpGroupAsyncCopy = 259,
- OpGroupWaitEvents = 260,
- OpGroupAll = 261,
- OpGroupAny = 262,
- OpGroupBroadcast = 263,
- OpGroupIAdd = 264,
- OpGroupFAdd = 265,
- OpGroupFMin = 266,
- OpGroupUMin = 267,
- OpGroupSMin = 268,
- OpGroupFMax = 269,
- OpGroupUMax = 270,
- OpGroupSMax = 271,
- OpReadPipe = 274,
- OpWritePipe = 275,
- OpReservedReadPipe = 276,
- OpReservedWritePipe = 277,
- OpReserveReadPipePackets = 278,
- OpReserveWritePipePackets = 279,
- OpCommitReadPipe = 280,
- OpCommitWritePipe = 281,
- OpIsValidReserveId = 282,
- OpGetNumPipePackets = 283,
- OpGetMaxPipePackets = 284,
- OpGroupReserveReadPipePackets = 285,
- OpGroupReserveWritePipePackets = 286,
- OpGroupCommitReadPipe = 287,
- OpGroupCommitWritePipe = 288,
- OpEnqueueMarker = 291,
- OpEnqueueKernel = 292,
- OpGetKernelNDrangeSubGroupCount = 293,
- OpGetKernelNDrangeMaxSubGroupSize = 294,
- OpGetKernelWorkGroupSize = 295,
- OpGetKernelPreferredWorkGroupSizeMultiple = 296,
- OpRetainEvent = 297,
- OpReleaseEvent = 298,
- OpCreateUserEvent = 299,
- OpIsValidEvent = 300,
- OpSetUserEventStatus = 301,
- OpCaptureEventProfilingInfo = 302,
- OpGetDefaultQueue = 303,
- OpBuildNDRange = 304,
- OpImageSparseSampleImplicitLod = 305,
- OpImageSparseSampleExplicitLod = 306,
- OpImageSparseSampleDrefImplicitLod = 307,
- OpImageSparseSampleDrefExplicitLod = 308,
- OpImageSparseSampleProjImplicitLod = 309,
- OpImageSparseSampleProjExplicitLod = 310,
- OpImageSparseSampleProjDrefImplicitLod = 311,
- OpImageSparseSampleProjDrefExplicitLod = 312,
- OpImageSparseFetch = 313,
- OpImageSparseGather = 314,
- OpImageSparseDrefGather = 315,
- OpImageSparseTexelsResident = 316,
- OpNoLine = 317,
- OpAtomicFlagTestAndSet = 318,
- OpAtomicFlagClear = 319,
- OpImageSparseRead = 320,
- OpSizeOf = 321,
- OpTypePipeStorage = 322,
- OpConstantPipeStorage = 323,
- OpCreatePipeFromPipeStorage = 324,
- OpGetKernelLocalSizeForSubgroupCount = 325,
- OpGetKernelMaxNumSubgroups = 326,
- OpTypeNamedBarrier = 327,
- OpNamedBarrierInitialize = 328,
- OpMemoryNamedBarrier = 329,
- OpModuleProcessed = 330,
- OpExecutionModeId = 331,
- OpDecorateId = 332,
- OpGroupNonUniformElect = 333,
- OpGroupNonUniformAll = 334,
- OpGroupNonUniformAny = 335,
- OpGroupNonUniformAllEqual = 336,
- OpGroupNonUniformBroadcast = 337,
- OpGroupNonUniformBroadcastFirst = 338,
- OpGroupNonUniformBallot = 339,
- OpGroupNonUniformInverseBallot = 340,
- OpGroupNonUniformBallotBitExtract = 341,
- OpGroupNonUniformBallotBitCount = 342,
- OpGroupNonUniformBallotFindLSB = 343,
- OpGroupNonUniformBallotFindMSB = 344,
- OpGroupNonUniformShuffle = 345,
- OpGroupNonUniformShuffleXor = 346,
- OpGroupNonUniformShuffleUp = 347,
- OpGroupNonUniformShuffleDown = 348,
- OpGroupNonUniformIAdd = 349,
- OpGroupNonUniformFAdd = 350,
- OpGroupNonUniformIMul = 351,
- OpGroupNonUniformFMul = 352,
- OpGroupNonUniformSMin = 353,
- OpGroupNonUniformUMin = 354,
- OpGroupNonUniformFMin = 355,
- OpGroupNonUniformSMax = 356,
- OpGroupNonUniformUMax = 357,
- OpGroupNonUniformFMax = 358,
- OpGroupNonUniformBitwiseAnd = 359,
- OpGroupNonUniformBitwiseOr = 360,
- OpGroupNonUniformBitwiseXor = 361,
- OpGroupNonUniformLogicalAnd = 362,
- OpGroupNonUniformLogicalOr = 363,
- OpGroupNonUniformLogicalXor = 364,
- OpGroupNonUniformQuadBroadcast = 365,
- OpGroupNonUniformQuadSwap = 366,
- OpCopyLogical = 400,
- OpPtrEqual = 401,
- OpPtrNotEqual = 402,
- OpPtrDiff = 403,
- OpTerminateInvocation = 4416,
- OpSubgroupBallotKHR = 4421,
- OpSubgroupFirstInvocationKHR = 4422,
- OpSubgroupAllKHR = 4428,
- OpSubgroupAnyKHR = 4429,
- OpSubgroupAllEqualKHR = 4430,
- OpSubgroupReadInvocationKHR = 4432,
- OpTraceRayKHR = 4445,
- OpExecuteCallableKHR = 4446,
- OpConvertUToAccelerationStructureKHR = 4447,
- OpIgnoreIntersectionKHR = 4448,
- OpTerminateRayKHR = 4449,
- OpTypeRayQueryKHR = 4472,
- OpRayQueryInitializeKHR = 4473,
- OpRayQueryTerminateKHR = 4474,
- OpRayQueryGenerateIntersectionKHR = 4475,
- OpRayQueryConfirmIntersectionKHR = 4476,
- OpRayQueryProceedKHR = 4477,
- OpRayQueryGetIntersectionTypeKHR = 4479,
- OpGroupIAddNonUniformAMD = 5000,
- OpGroupFAddNonUniformAMD = 5001,
- OpGroupFMinNonUniformAMD = 5002,
- OpGroupUMinNonUniformAMD = 5003,
- OpGroupSMinNonUniformAMD = 5004,
- OpGroupFMaxNonUniformAMD = 5005,
- OpGroupUMaxNonUniformAMD = 5006,
- OpGroupSMaxNonUniformAMD = 5007,
- OpFragmentMaskFetchAMD = 5011,
- OpFragmentFetchAMD = 5012,
- OpReadClockKHR = 5056,
- OpImageSampleFootprintNV = 5283,
- OpGroupNonUniformPartitionNV = 5296,
- OpWritePackedPrimitiveIndices4x8NV = 5299,
- OpReportIntersectionKHR = 5334,
- OpReportIntersectionNV = 5334,
- OpIgnoreIntersectionNV = 5335,
- OpTerminateRayNV = 5336,
- OpTraceNV = 5337,
- OpTraceMotionNV = 5338,
- OpTraceRayMotionNV = 5339,
- OpTypeAccelerationStructureKHR = 5341,
- OpTypeAccelerationStructureNV = 5341,
- OpExecuteCallableNV = 5344,
- OpTypeCooperativeMatrixNV = 5358,
- OpCooperativeMatrixLoadNV = 5359,
- OpCooperativeMatrixStoreNV = 5360,
- OpCooperativeMatrixMulAddNV = 5361,
- OpCooperativeMatrixLengthNV = 5362,
- OpBeginInvocationInterlockEXT = 5364,
- OpEndInvocationInterlockEXT = 5365,
- OpDemoteToHelperInvocationEXT = 5380,
- OpIsHelperInvocationEXT = 5381,
- OpSubgroupShuffleINTEL = 5571,
- OpSubgroupShuffleDownINTEL = 5572,
- OpSubgroupShuffleUpINTEL = 5573,
- OpSubgroupShuffleXorINTEL = 5574,
- OpSubgroupBlockReadINTEL = 5575,
- OpSubgroupBlockWriteINTEL = 5576,
- OpSubgroupImageBlockReadINTEL = 5577,
- OpSubgroupImageBlockWriteINTEL = 5578,
- OpSubgroupImageMediaBlockReadINTEL = 5580,
- OpSubgroupImageMediaBlockWriteINTEL = 5581,
- OpUCountLeadingZerosINTEL = 5585,
- OpUCountTrailingZerosINTEL = 5586,
- OpAbsISubINTEL = 5587,
- OpAbsUSubINTEL = 5588,
- OpIAddSatINTEL = 5589,
- OpUAddSatINTEL = 5590,
- OpIAverageINTEL = 5591,
- OpUAverageINTEL = 5592,
- OpIAverageRoundedINTEL = 5593,
- OpUAverageRoundedINTEL = 5594,
- OpISubSatINTEL = 5595,
- OpUSubSatINTEL = 5596,
- OpIMul32x16INTEL = 5597,
- OpUMul32x16INTEL = 5598,
- OpConstantFunctionPointerINTEL = 5600,
- OpFunctionPointerCallINTEL = 5601,
- OpAsmTargetINTEL = 5609,
- OpAsmINTEL = 5610,
- OpAsmCallINTEL = 5611,
- OpAtomicFMinEXT = 5614,
- OpAtomicFMaxEXT = 5615,
- OpAssumeTrueKHR = 5630,
- OpExpectKHR = 5631,
- OpDecorateString = 5632,
- OpDecorateStringGOOGLE = 5632,
- OpMemberDecorateString = 5633,
- OpMemberDecorateStringGOOGLE = 5633,
- OpVmeImageINTEL = 5699,
- OpTypeVmeImageINTEL = 5700,
- OpTypeAvcImePayloadINTEL = 5701,
- OpTypeAvcRefPayloadINTEL = 5702,
- OpTypeAvcSicPayloadINTEL = 5703,
- OpTypeAvcMcePayloadINTEL = 5704,
- OpTypeAvcMceResultINTEL = 5705,
- OpTypeAvcImeResultINTEL = 5706,
- OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
- OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
- OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
- OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
- OpTypeAvcRefResultINTEL = 5711,
- OpTypeAvcSicResultINTEL = 5712,
- OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
- OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
- OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
- OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
- OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
- OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
- OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
- OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
- OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
- OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
- OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
- OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
- OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
- OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
- OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
- OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
- OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
- OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
- OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
- OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
- OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
- OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
- OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
- OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
- OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
- OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
- OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
- OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
- OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
- OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
- OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
- OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
- OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
- OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
- OpSubgroupAvcImeInitializeINTEL = 5747,
- OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
- OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
- OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
- OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
- OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
- OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
- OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
- OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
- OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
- OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
- OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
- OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
- OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
- OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
- OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
- OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
- OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
- OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
- OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
- OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
- OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
- OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
- OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
- OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
- OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
- OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
- OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
- OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
- OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
- OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
- OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
- OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
- OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
- OpSubgroupAvcFmeInitializeINTEL = 5781,
- OpSubgroupAvcBmeInitializeINTEL = 5782,
- OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
- OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
- OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
- OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
- OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
- OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
- OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
- OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
- OpSubgroupAvcSicInitializeINTEL = 5791,
- OpSubgroupAvcSicConfigureSkcINTEL = 5792,
- OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
- OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
- OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
- OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
- OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
- OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
- OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
- OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
- OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
- OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
- OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
- OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
- OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
- OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
- OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
- OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
- OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
- OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
- OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
- OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
- OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
- OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
- OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
- OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
- OpVariableLengthArrayINTEL = 5818,
- OpSaveMemoryINTEL = 5819,
- OpRestoreMemoryINTEL = 5820,
- OpLoopControlINTEL = 5887,
- OpPtrCastToCrossWorkgroupINTEL = 5934,
- OpCrossWorkgroupCastToPtrINTEL = 5938,
- OpReadPipeBlockingINTEL = 5946,
- OpWritePipeBlockingINTEL = 5947,
- OpFPGARegINTEL = 5949,
- 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,
- OpAtomicFAddEXT = 6035,
- OpTypeBufferSurfaceINTEL = 6086,
- OpTypeStructContinuedINTEL = 6090,
- OpConstantCompositeContinuedINTEL = 6091,
- OpSpecConstantCompositeContinuedINTEL = 6092,
- OpMax = 0x7fffffff,
-};
-
-#ifdef SPV_ENABLE_UTILITY_CODE
-inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
- *hasResult = *hasResultType = false;
- switch (opcode) {
- default: /* unknown opcode */ break;
- case OpNop: *hasResult = false; *hasResultType = false; break;
- case OpUndef: *hasResult = true; *hasResultType = true; break;
- case OpSourceContinued: *hasResult = false; *hasResultType = false; break;
- case OpSource: *hasResult = false; *hasResultType = false; break;
- case OpSourceExtension: *hasResult = false; *hasResultType = false; break;
- case OpName: *hasResult = false; *hasResultType = false; break;
- case OpMemberName: *hasResult = false; *hasResultType = false; break;
- case OpString: *hasResult = true; *hasResultType = false; break;
- case OpLine: *hasResult = false; *hasResultType = false; break;
- case OpExtension: *hasResult = false; *hasResultType = false; break;
- case OpExtInstImport: *hasResult = true; *hasResultType = false; break;
- case OpExtInst: *hasResult = true; *hasResultType = true; break;
- case OpMemoryModel: *hasResult = false; *hasResultType = false; break;
- case OpEntryPoint: *hasResult = false; *hasResultType = false; break;
- case OpExecutionMode: *hasResult = false; *hasResultType = false; break;
- case OpCapability: *hasResult = false; *hasResultType = false; break;
- case OpTypeVoid: *hasResult = true; *hasResultType = false; break;
- case OpTypeBool: *hasResult = true; *hasResultType = false; break;
- case OpTypeInt: *hasResult = true; *hasResultType = false; break;
- case OpTypeFloat: *hasResult = true; *hasResultType = false; break;
- case OpTypeVector: *hasResult = true; *hasResultType = false; break;
- case OpTypeMatrix: *hasResult = true; *hasResultType = false; break;
- case OpTypeImage: *hasResult = true; *hasResultType = false; break;
- case OpTypeSampler: *hasResult = true; *hasResultType = false; break;
- case OpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
- case OpTypeArray: *hasResult = true; *hasResultType = false; break;
- case OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
- case OpTypeStruct: *hasResult = true; *hasResultType = false; break;
- case OpTypeOpaque: *hasResult = true; *hasResultType = false; break;
- case OpTypePointer: *hasResult = true; *hasResultType = false; break;
- case OpTypeFunction: *hasResult = true; *hasResultType = false; break;
- case OpTypeEvent: *hasResult = true; *hasResultType = false; break;
- case OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
- case OpTypeReserveId: *hasResult = true; *hasResultType = false; break;
- case OpTypeQueue: *hasResult = true; *hasResultType = false; break;
- case OpTypePipe: *hasResult = true; *hasResultType = false; break;
- case OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
- case OpConstantTrue: *hasResult = true; *hasResultType = true; break;
- case OpConstantFalse: *hasResult = true; *hasResultType = true; break;
- case OpConstant: *hasResult = true; *hasResultType = true; break;
- case OpConstantComposite: *hasResult = true; *hasResultType = true; break;
- case OpConstantSampler: *hasResult = true; *hasResultType = true; break;
- case OpConstantNull: *hasResult = true; *hasResultType = true; break;
- case OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
- case OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
- case OpSpecConstant: *hasResult = true; *hasResultType = true; break;
- case OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
- case OpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
- case OpFunction: *hasResult = true; *hasResultType = true; break;
- case OpFunctionParameter: *hasResult = true; *hasResultType = true; break;
- case OpFunctionEnd: *hasResult = false; *hasResultType = false; break;
- case OpFunctionCall: *hasResult = true; *hasResultType = true; break;
- case OpVariable: *hasResult = true; *hasResultType = true; break;
- case OpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
- case OpLoad: *hasResult = true; *hasResultType = true; break;
- case OpStore: *hasResult = false; *hasResultType = false; break;
- case OpCopyMemory: *hasResult = false; *hasResultType = false; break;
- case OpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
- case OpAccessChain: *hasResult = true; *hasResultType = true; break;
- case OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
- case OpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
- case OpArrayLength: *hasResult = true; *hasResultType = true; break;
- case OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
- case OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
- case OpDecorate: *hasResult = false; *hasResultType = false; break;
- case OpMemberDecorate: *hasResult = false; *hasResultType = false; break;
- case OpDecorationGroup: *hasResult = true; *hasResultType = false; break;
- case OpGroupDecorate: *hasResult = false; *hasResultType = false; break;
- case OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
- case OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
- case OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
- case OpVectorShuffle: *hasResult = true; *hasResultType = true; break;
- case OpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
- case OpCompositeExtract: *hasResult = true; *hasResultType = true; break;
- case OpCompositeInsert: *hasResult = true; *hasResultType = true; break;
- case OpCopyObject: *hasResult = true; *hasResultType = true; break;
- case OpTranspose: *hasResult = true; *hasResultType = true; break;
- case OpSampledImage: *hasResult = true; *hasResultType = true; break;
- case OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageFetch: *hasResult = true; *hasResultType = true; break;
- case OpImageGather: *hasResult = true; *hasResultType = true; break;
- case OpImageDrefGather: *hasResult = true; *hasResultType = true; break;
- case OpImageRead: *hasResult = true; *hasResultType = true; break;
- case OpImageWrite: *hasResult = false; *hasResultType = false; break;
- case OpImage: *hasResult = true; *hasResultType = true; break;
- case OpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
- case OpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
- case OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
- case OpImageQuerySize: *hasResult = true; *hasResultType = true; break;
- case OpImageQueryLod: *hasResult = true; *hasResultType = true; break;
- case OpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
- case OpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
- case OpConvertFToU: *hasResult = true; *hasResultType = true; break;
- case OpConvertFToS: *hasResult = true; *hasResultType = true; break;
- case OpConvertSToF: *hasResult = true; *hasResultType = true; break;
- case OpConvertUToF: *hasResult = true; *hasResultType = true; break;
- case OpUConvert: *hasResult = true; *hasResultType = true; break;
- case OpSConvert: *hasResult = true; *hasResultType = true; break;
- case OpFConvert: *hasResult = true; *hasResultType = true; break;
- case OpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
- case OpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
- case OpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
- case OpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
- case OpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
- case OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
- case OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
- case OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
- case OpBitcast: *hasResult = true; *hasResultType = true; break;
- case OpSNegate: *hasResult = true; *hasResultType = true; break;
- case OpFNegate: *hasResult = true; *hasResultType = true; break;
- case OpIAdd: *hasResult = true; *hasResultType = true; break;
- case OpFAdd: *hasResult = true; *hasResultType = true; break;
- case OpISub: *hasResult = true; *hasResultType = true; break;
- case OpFSub: *hasResult = true; *hasResultType = true; break;
- case OpIMul: *hasResult = true; *hasResultType = true; break;
- case OpFMul: *hasResult = true; *hasResultType = true; break;
- case OpUDiv: *hasResult = true; *hasResultType = true; break;
- case OpSDiv: *hasResult = true; *hasResultType = true; break;
- case OpFDiv: *hasResult = true; *hasResultType = true; break;
- case OpUMod: *hasResult = true; *hasResultType = true; break;
- case OpSRem: *hasResult = true; *hasResultType = true; break;
- case OpSMod: *hasResult = true; *hasResultType = true; break;
- case OpFRem: *hasResult = true; *hasResultType = true; break;
- case OpFMod: *hasResult = true; *hasResultType = true; break;
- case OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
- case OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
- case OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
- case OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
- case OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
- case OpOuterProduct: *hasResult = true; *hasResultType = true; break;
- case OpDot: *hasResult = true; *hasResultType = true; break;
- case OpIAddCarry: *hasResult = true; *hasResultType = true; break;
- case OpISubBorrow: *hasResult = true; *hasResultType = true; break;
- case OpUMulExtended: *hasResult = true; *hasResultType = true; break;
- case OpSMulExtended: *hasResult = true; *hasResultType = true; break;
- case OpAny: *hasResult = true; *hasResultType = true; break;
- case OpAll: *hasResult = true; *hasResultType = true; break;
- case OpIsNan: *hasResult = true; *hasResultType = true; break;
- case OpIsInf: *hasResult = true; *hasResultType = true; break;
- case OpIsFinite: *hasResult = true; *hasResultType = true; break;
- case OpIsNormal: *hasResult = true; *hasResultType = true; break;
- case OpSignBitSet: *hasResult = true; *hasResultType = true; break;
- case OpLessOrGreater: *hasResult = true; *hasResultType = true; break;
- case OpOrdered: *hasResult = true; *hasResultType = true; break;
- case OpUnordered: *hasResult = true; *hasResultType = true; break;
- case OpLogicalEqual: *hasResult = true; *hasResultType = true; break;
- case OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
- case OpLogicalOr: *hasResult = true; *hasResultType = true; break;
- case OpLogicalAnd: *hasResult = true; *hasResultType = true; break;
- case OpLogicalNot: *hasResult = true; *hasResultType = true; break;
- case OpSelect: *hasResult = true; *hasResultType = true; break;
- case OpIEqual: *hasResult = true; *hasResultType = true; break;
- case OpINotEqual: *hasResult = true; *hasResultType = true; break;
- case OpUGreaterThan: *hasResult = true; *hasResultType = true; break;
- case OpSGreaterThan: *hasResult = true; *hasResultType = true; break;
- case OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
- case OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
- case OpULessThan: *hasResult = true; *hasResultType = true; break;
- case OpSLessThan: *hasResult = true; *hasResultType = true; break;
- case OpULessThanEqual: *hasResult = true; *hasResultType = true; break;
- case OpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
- case OpFOrdEqual: *hasResult = true; *hasResultType = true; break;
- case OpFUnordEqual: *hasResult = true; *hasResultType = true; break;
- case OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
- case OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
- case OpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
- case OpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
- case OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
- case OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
- case OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
- case OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
- case OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
- case OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
- case OpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
- case OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
- case OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
- case OpBitwiseOr: *hasResult = true; *hasResultType = true; break;
- case OpBitwiseXor: *hasResult = true; *hasResultType = true; break;
- case OpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
- case OpNot: *hasResult = true; *hasResultType = true; break;
- case OpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
- case OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
- case OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
- case OpBitReverse: *hasResult = true; *hasResultType = true; break;
- case OpBitCount: *hasResult = true; *hasResultType = true; break;
- case OpDPdx: *hasResult = true; *hasResultType = true; break;
- case OpDPdy: *hasResult = true; *hasResultType = true; break;
- case OpFwidth: *hasResult = true; *hasResultType = true; break;
- case OpDPdxFine: *hasResult = true; *hasResultType = true; break;
- case OpDPdyFine: *hasResult = true; *hasResultType = true; break;
- case OpFwidthFine: *hasResult = true; *hasResultType = true; break;
- case OpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
- case OpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
- case OpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
- case OpEmitVertex: *hasResult = false; *hasResultType = false; break;
- case OpEndPrimitive: *hasResult = false; *hasResultType = false; break;
- case OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
- case OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
- case OpControlBarrier: *hasResult = false; *hasResultType = false; break;
- case OpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
- case OpAtomicLoad: *hasResult = true; *hasResultType = true; break;
- case OpAtomicStore: *hasResult = false; *hasResultType = false; break;
- case OpAtomicExchange: *hasResult = true; *hasResultType = true; break;
- case OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
- case OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
- case OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
- case OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
- case OpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
- case OpAtomicISub: *hasResult = true; *hasResultType = true; break;
- case OpAtomicSMin: *hasResult = true; *hasResultType = true; break;
- case OpAtomicUMin: *hasResult = true; *hasResultType = true; break;
- case OpAtomicSMax: *hasResult = true; *hasResultType = true; break;
- case OpAtomicUMax: *hasResult = true; *hasResultType = true; break;
- case OpAtomicAnd: *hasResult = true; *hasResultType = true; break;
- case OpAtomicOr: *hasResult = true; *hasResultType = true; break;
- case OpAtomicXor: *hasResult = true; *hasResultType = true; break;
- case OpPhi: *hasResult = true; *hasResultType = true; break;
- case OpLoopMerge: *hasResult = false; *hasResultType = false; break;
- case OpSelectionMerge: *hasResult = false; *hasResultType = false; break;
- case OpLabel: *hasResult = true; *hasResultType = false; break;
- case OpBranch: *hasResult = false; *hasResultType = false; break;
- case OpBranchConditional: *hasResult = false; *hasResultType = false; break;
- case OpSwitch: *hasResult = false; *hasResultType = false; break;
- case OpKill: *hasResult = false; *hasResultType = false; break;
- case OpReturn: *hasResult = false; *hasResultType = false; break;
- case OpReturnValue: *hasResult = false; *hasResultType = false; break;
- case OpUnreachable: *hasResult = false; *hasResultType = false; break;
- case OpLifetimeStart: *hasResult = false; *hasResultType = false; break;
- case OpLifetimeStop: *hasResult = false; *hasResultType = false; break;
- case OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
- case OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
- case OpGroupAll: *hasResult = true; *hasResultType = true; break;
- case OpGroupAny: *hasResult = true; *hasResultType = true; break;
- case OpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
- case OpGroupIAdd: *hasResult = true; *hasResultType = true; break;
- case OpGroupFAdd: *hasResult = true; *hasResultType = true; break;
- case OpGroupFMin: *hasResult = true; *hasResultType = true; break;
- case OpGroupUMin: *hasResult = true; *hasResultType = true; break;
- case OpGroupSMin: *hasResult = true; *hasResultType = true; break;
- case OpGroupFMax: *hasResult = true; *hasResultType = true; break;
- case OpGroupUMax: *hasResult = true; *hasResultType = true; break;
- case OpGroupSMax: *hasResult = true; *hasResultType = true; break;
- case OpReadPipe: *hasResult = true; *hasResultType = true; break;
- case OpWritePipe: *hasResult = true; *hasResultType = true; break;
- case OpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
- case OpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
- case OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
- case OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
- case OpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
- case OpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
- case OpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
- case OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
- case OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
- case OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
- case OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
- case OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
- case OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
- case OpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
- case OpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
- case OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
- case OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
- case OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
- case OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
- case OpRetainEvent: *hasResult = false; *hasResultType = false; break;
- case OpReleaseEvent: *hasResult = false; *hasResultType = false; break;
- case OpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
- case OpIsValidEvent: *hasResult = true; *hasResultType = true; break;
- case OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
- case OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
- case OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
- case OpBuildNDRange: *hasResult = true; *hasResultType = true; break;
- case OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
- case OpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
- case OpImageSparseGather: *hasResult = true; *hasResultType = true; break;
- case OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
- case OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
- case OpNoLine: *hasResult = false; *hasResultType = false; break;
- case OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
- case OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
- case OpImageSparseRead: *hasResult = true; *hasResultType = true; break;
- case OpSizeOf: *hasResult = true; *hasResultType = true; break;
- case OpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
- case OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
- case OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
- case OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
- case OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
- case OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
- case OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
- case OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
- case OpModuleProcessed: *hasResult = false; *hasResultType = false; break;
- case OpExecutionModeId: *hasResult = false; *hasResultType = false; break;
- case OpDecorateId: *hasResult = false; *hasResultType = false; break;
- case OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
- case OpCopyLogical: *hasResult = true; *hasResultType = true; break;
- case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
- case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
- case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
- case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
- case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
- case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break;
- case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break;
- case OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break;
- case OpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break;
- case OpTerminateRayKHR: *hasResult = false; *hasResultType = false; break;
- case OpTypeRayQueryKHR: *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;
- case OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
- case OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
- case OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
- case OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
- case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
- case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
- case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
- case OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
- case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
- case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
- case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
- case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
- case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
- case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
- case OpTraceNV: *hasResult = false; *hasResultType = false; break;
- case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break;
- case OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
- case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
- case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
- case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
- case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
- case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
- case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
- case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
- case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
- case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
- case OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
- case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
- case OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
- case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
- case OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
- case OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
- case OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
- case OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
- case OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
- case OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
- case OpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
- case OpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
- case OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
- case OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
- case OpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
- case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
- case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
- case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
- case OpConstantFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
- case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
- case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break;
- case OpAsmINTEL: *hasResult = true; *hasResultType = true; break;
- case OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break;
- case OpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break;
- case OpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break;
- case OpAssumeTrueKHR: *hasResult = false; *hasResultType = false; break;
- case OpExpectKHR: *hasResult = true; *hasResultType = true; break;
- case OpDecorateString: *hasResult = false; *hasResultType = false; break;
- case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
- case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
- case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
- case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
- case OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
- case OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
- case OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
- case OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
- case OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
- case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
- case OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
- case OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
- case OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
- case OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
- case OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
- case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
- case OpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break;
- case OpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break;
- case OpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break;
- case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
- case OpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break;
- case OpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break;
- case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
- case OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
- case OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
- 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;
- case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
- case OpTypeBufferSurfaceINTEL: *hasResult = true; *hasResultType = false; break;
- case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
- case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
- case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
- }
-}
-#endif /* SPV_ENABLE_UTILITY_CODE */
-
-// Overload operator| for mask bit combining
-
-inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
-inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
-inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
-inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
-inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
-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)); }
-inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
-
-} // end namespace spv
-
-#endif // #ifndef spirv_HPP
-
+// 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"),
+// 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.
+
+// This header is automatically generated by the same tool that creates
+// the Binary Section of the SPIR-V specification.
+
+// Enumeration tokens for SPIR-V, in various styles:
+// C, C++, C++11, JSON, Lua, Python, C#, D
+//
+// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
+// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
+// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
+// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
+// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
+// - C# will use enum classes in the Specification class located in the "Spv" namespace,
+// e.g.: Spv.Specification.SourceLanguage.GLSL
+// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
+//
+// Some tokens act like mask values, which can be OR'd together,
+// while others are mutually exclusive. The mask-like ones have
+// "Mask" in their name, and a parallel enum that has the shift
+// amount (1 << x) for each corresponding enumerant.
+
+#ifndef spirv_HPP
+#define spirv_HPP
+
+namespace spv {
+
+typedef unsigned int Id;
+
+#define SPV_VERSION 0x10600
+#define SPV_REVISION 1
+
+static const unsigned int MagicNumber = 0x07230203;
+static const unsigned int Version = 0x00010600;
+static const unsigned int Revision = 1;
+static const unsigned int OpCodeMask = 0xffff;
+static const unsigned int WordCountShift = 16;
+
+enum SourceLanguage {
+ SourceLanguageUnknown = 0,
+ SourceLanguageESSL = 1,
+ SourceLanguageGLSL = 2,
+ SourceLanguageOpenCL_C = 3,
+ SourceLanguageOpenCL_CPP = 4,
+ SourceLanguageHLSL = 5,
+ SourceLanguageCPP_for_OpenCL = 6,
+ SourceLanguageMax = 0x7fffffff,
+};
+
+enum ExecutionModel {
+ ExecutionModelVertex = 0,
+ ExecutionModelTessellationControl = 1,
+ ExecutionModelTessellationEvaluation = 2,
+ ExecutionModelGeometry = 3,
+ ExecutionModelFragment = 4,
+ ExecutionModelGLCompute = 5,
+ 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,
+ ExecutionModelTaskEXT = 5364,
+ ExecutionModelMeshEXT = 5365,
+ ExecutionModelMax = 0x7fffffff,
+};
+
+enum AddressingModel {
+ AddressingModelLogical = 0,
+ AddressingModelPhysical32 = 1,
+ AddressingModelPhysical64 = 2,
+ AddressingModelPhysicalStorageBuffer64 = 5348,
+ AddressingModelPhysicalStorageBuffer64EXT = 5348,
+ AddressingModelMax = 0x7fffffff,
+};
+
+enum MemoryModel {
+ MemoryModelSimple = 0,
+ MemoryModelGLSL450 = 1,
+ MemoryModelOpenCL = 2,
+ MemoryModelVulkan = 3,
+ MemoryModelVulkanKHR = 3,
+ MemoryModelMax = 0x7fffffff,
+};
+
+enum ExecutionMode {
+ ExecutionModeInvocations = 0,
+ ExecutionModeSpacingEqual = 1,
+ ExecutionModeSpacingFractionalEven = 2,
+ ExecutionModeSpacingFractionalOdd = 3,
+ ExecutionModeVertexOrderCw = 4,
+ ExecutionModeVertexOrderCcw = 5,
+ ExecutionModePixelCenterInteger = 6,
+ ExecutionModeOriginUpperLeft = 7,
+ ExecutionModeOriginLowerLeft = 8,
+ ExecutionModeEarlyFragmentTests = 9,
+ ExecutionModePointMode = 10,
+ ExecutionModeXfb = 11,
+ ExecutionModeDepthReplacing = 12,
+ ExecutionModeDepthGreater = 14,
+ ExecutionModeDepthLess = 15,
+ ExecutionModeDepthUnchanged = 16,
+ ExecutionModeLocalSize = 17,
+ ExecutionModeLocalSizeHint = 18,
+ ExecutionModeInputPoints = 19,
+ ExecutionModeInputLines = 20,
+ ExecutionModeInputLinesAdjacency = 21,
+ ExecutionModeTriangles = 22,
+ ExecutionModeInputTrianglesAdjacency = 23,
+ ExecutionModeQuads = 24,
+ ExecutionModeIsolines = 25,
+ ExecutionModeOutputVertices = 26,
+ ExecutionModeOutputPoints = 27,
+ ExecutionModeOutputLineStrip = 28,
+ ExecutionModeOutputTriangleStrip = 29,
+ ExecutionModeVecTypeHint = 30,
+ ExecutionModeContractionOff = 31,
+ ExecutionModeInitializer = 33,
+ ExecutionModeFinalizer = 34,
+ ExecutionModeSubgroupSize = 35,
+ ExecutionModeSubgroupsPerWorkgroup = 36,
+ ExecutionModeSubgroupsPerWorkgroupId = 37,
+ ExecutionModeLocalSizeId = 38,
+ ExecutionModeLocalSizeHintId = 39,
+ ExecutionModeSubgroupUniformControlFlowKHR = 4421,
+ ExecutionModePostDepthCoverage = 4446,
+ ExecutionModeDenormPreserve = 4459,
+ ExecutionModeDenormFlushToZero = 4460,
+ ExecutionModeSignedZeroInfNanPreserve = 4461,
+ ExecutionModeRoundingModeRTE = 4462,
+ ExecutionModeRoundingModeRTZ = 4463,
+ ExecutionModeEarlyAndLateFragmentTestsAMD = 5017,
+ ExecutionModeStencilRefReplacingEXT = 5027,
+ ExecutionModeStencilRefUnchangedFrontAMD = 5079,
+ ExecutionModeStencilRefGreaterFrontAMD = 5080,
+ ExecutionModeStencilRefLessFrontAMD = 5081,
+ ExecutionModeStencilRefUnchangedBackAMD = 5082,
+ ExecutionModeStencilRefGreaterBackAMD = 5083,
+ ExecutionModeStencilRefLessBackAMD = 5084,
+ ExecutionModeOutputLinesEXT = 5269,
+ ExecutionModeOutputLinesNV = 5269,
+ ExecutionModeOutputPrimitivesEXT = 5270,
+ ExecutionModeOutputPrimitivesNV = 5270,
+ ExecutionModeDerivativeGroupQuadsNV = 5289,
+ ExecutionModeDerivativeGroupLinearNV = 5290,
+ ExecutionModeOutputTrianglesEXT = 5298,
+ ExecutionModeOutputTrianglesNV = 5298,
+ ExecutionModePixelInterlockOrderedEXT = 5366,
+ ExecutionModePixelInterlockUnorderedEXT = 5367,
+ ExecutionModeSampleInterlockOrderedEXT = 5368,
+ ExecutionModeSampleInterlockUnorderedEXT = 5369,
+ ExecutionModeShadingRateInterlockOrderedEXT = 5370,
+ ExecutionModeShadingRateInterlockUnorderedEXT = 5371,
+ ExecutionModeSharedLocalMemorySizeINTEL = 5618,
+ ExecutionModeRoundingModeRTPINTEL = 5620,
+ ExecutionModeRoundingModeRTNINTEL = 5621,
+ ExecutionModeFloatingPointModeALTINTEL = 5622,
+ ExecutionModeFloatingPointModeIEEEINTEL = 5623,
+ ExecutionModeMaxWorkgroupSizeINTEL = 5893,
+ ExecutionModeMaxWorkDimINTEL = 5894,
+ ExecutionModeNoGlobalOffsetINTEL = 5895,
+ ExecutionModeNumSIMDWorkitemsINTEL = 5896,
+ ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
+ ExecutionModeMax = 0x7fffffff,
+};
+
+enum StorageClass {
+ StorageClassUniformConstant = 0,
+ StorageClassInput = 1,
+ StorageClassUniform = 2,
+ StorageClassOutput = 3,
+ StorageClassWorkgroup = 4,
+ StorageClassCrossWorkgroup = 5,
+ StorageClassPrivate = 6,
+ StorageClassFunction = 7,
+ StorageClassGeneric = 8,
+ StorageClassPushConstant = 9,
+ 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,
+ StorageClassTaskPayloadWorkgroupEXT = 5402,
+ StorageClassCodeSectionINTEL = 5605,
+ StorageClassDeviceOnlyINTEL = 5936,
+ StorageClassHostOnlyINTEL = 5937,
+ StorageClassMax = 0x7fffffff,
+};
+
+enum Dim {
+ Dim1D = 0,
+ Dim2D = 1,
+ Dim3D = 2,
+ DimCube = 3,
+ DimRect = 4,
+ DimBuffer = 5,
+ DimSubpassData = 6,
+ DimMax = 0x7fffffff,
+};
+
+enum SamplerAddressingMode {
+ SamplerAddressingModeNone = 0,
+ SamplerAddressingModeClampToEdge = 1,
+ SamplerAddressingModeClamp = 2,
+ SamplerAddressingModeRepeat = 3,
+ SamplerAddressingModeRepeatMirrored = 4,
+ SamplerAddressingModeMax = 0x7fffffff,
+};
+
+enum SamplerFilterMode {
+ SamplerFilterModeNearest = 0,
+ SamplerFilterModeLinear = 1,
+ SamplerFilterModeMax = 0x7fffffff,
+};
+
+enum ImageFormat {
+ ImageFormatUnknown = 0,
+ ImageFormatRgba32f = 1,
+ ImageFormatRgba16f = 2,
+ ImageFormatR32f = 3,
+ ImageFormatRgba8 = 4,
+ ImageFormatRgba8Snorm = 5,
+ ImageFormatRg32f = 6,
+ ImageFormatRg16f = 7,
+ ImageFormatR11fG11fB10f = 8,
+ ImageFormatR16f = 9,
+ ImageFormatRgba16 = 10,
+ ImageFormatRgb10A2 = 11,
+ ImageFormatRg16 = 12,
+ ImageFormatRg8 = 13,
+ ImageFormatR16 = 14,
+ ImageFormatR8 = 15,
+ ImageFormatRgba16Snorm = 16,
+ ImageFormatRg16Snorm = 17,
+ ImageFormatRg8Snorm = 18,
+ ImageFormatR16Snorm = 19,
+ ImageFormatR8Snorm = 20,
+ ImageFormatRgba32i = 21,
+ ImageFormatRgba16i = 22,
+ ImageFormatRgba8i = 23,
+ ImageFormatR32i = 24,
+ ImageFormatRg32i = 25,
+ ImageFormatRg16i = 26,
+ ImageFormatRg8i = 27,
+ ImageFormatR16i = 28,
+ ImageFormatR8i = 29,
+ ImageFormatRgba32ui = 30,
+ ImageFormatRgba16ui = 31,
+ ImageFormatRgba8ui = 32,
+ ImageFormatR32ui = 33,
+ ImageFormatRgb10a2ui = 34,
+ ImageFormatRg32ui = 35,
+ ImageFormatRg16ui = 36,
+ ImageFormatRg8ui = 37,
+ ImageFormatR16ui = 38,
+ ImageFormatR8ui = 39,
+ ImageFormatR64ui = 40,
+ ImageFormatR64i = 41,
+ ImageFormatMax = 0x7fffffff,
+};
+
+enum ImageChannelOrder {
+ ImageChannelOrderR = 0,
+ ImageChannelOrderA = 1,
+ ImageChannelOrderRG = 2,
+ ImageChannelOrderRA = 3,
+ ImageChannelOrderRGB = 4,
+ ImageChannelOrderRGBA = 5,
+ ImageChannelOrderBGRA = 6,
+ ImageChannelOrderARGB = 7,
+ ImageChannelOrderIntensity = 8,
+ ImageChannelOrderLuminance = 9,
+ ImageChannelOrderRx = 10,
+ ImageChannelOrderRGx = 11,
+ ImageChannelOrderRGBx = 12,
+ ImageChannelOrderDepth = 13,
+ ImageChannelOrderDepthStencil = 14,
+ ImageChannelOrdersRGB = 15,
+ ImageChannelOrdersRGBx = 16,
+ ImageChannelOrdersRGBA = 17,
+ ImageChannelOrdersBGRA = 18,
+ ImageChannelOrderABGR = 19,
+ ImageChannelOrderMax = 0x7fffffff,
+};
+
+enum ImageChannelDataType {
+ ImageChannelDataTypeSnormInt8 = 0,
+ ImageChannelDataTypeSnormInt16 = 1,
+ ImageChannelDataTypeUnormInt8 = 2,
+ ImageChannelDataTypeUnormInt16 = 3,
+ ImageChannelDataTypeUnormShort565 = 4,
+ ImageChannelDataTypeUnormShort555 = 5,
+ ImageChannelDataTypeUnormInt101010 = 6,
+ ImageChannelDataTypeSignedInt8 = 7,
+ ImageChannelDataTypeSignedInt16 = 8,
+ ImageChannelDataTypeSignedInt32 = 9,
+ ImageChannelDataTypeUnsignedInt8 = 10,
+ ImageChannelDataTypeUnsignedInt16 = 11,
+ ImageChannelDataTypeUnsignedInt32 = 12,
+ ImageChannelDataTypeHalfFloat = 13,
+ ImageChannelDataTypeFloat = 14,
+ ImageChannelDataTypeUnormInt24 = 15,
+ ImageChannelDataTypeUnormInt101010_2 = 16,
+ ImageChannelDataTypeMax = 0x7fffffff,
+};
+
+enum ImageOperandsShift {
+ ImageOperandsBiasShift = 0,
+ ImageOperandsLodShift = 1,
+ ImageOperandsGradShift = 2,
+ ImageOperandsConstOffsetShift = 3,
+ ImageOperandsOffsetShift = 4,
+ ImageOperandsConstOffsetsShift = 5,
+ ImageOperandsSampleShift = 6,
+ ImageOperandsMinLodShift = 7,
+ ImageOperandsMakeTexelAvailableShift = 8,
+ ImageOperandsMakeTexelAvailableKHRShift = 8,
+ ImageOperandsMakeTexelVisibleShift = 9,
+ ImageOperandsMakeTexelVisibleKHRShift = 9,
+ ImageOperandsNonPrivateTexelShift = 10,
+ ImageOperandsNonPrivateTexelKHRShift = 10,
+ ImageOperandsVolatileTexelShift = 11,
+ ImageOperandsVolatileTexelKHRShift = 11,
+ ImageOperandsSignExtendShift = 12,
+ ImageOperandsZeroExtendShift = 13,
+ ImageOperandsNontemporalShift = 14,
+ ImageOperandsOffsetsShift = 16,
+ ImageOperandsMax = 0x7fffffff,
+};
+
+enum ImageOperandsMask {
+ ImageOperandsMaskNone = 0,
+ ImageOperandsBiasMask = 0x00000001,
+ ImageOperandsLodMask = 0x00000002,
+ ImageOperandsGradMask = 0x00000004,
+ ImageOperandsConstOffsetMask = 0x00000008,
+ ImageOperandsOffsetMask = 0x00000010,
+ ImageOperandsConstOffsetsMask = 0x00000020,
+ ImageOperandsSampleMask = 0x00000040,
+ ImageOperandsMinLodMask = 0x00000080,
+ ImageOperandsMakeTexelAvailableMask = 0x00000100,
+ ImageOperandsMakeTexelAvailableKHRMask = 0x00000100,
+ ImageOperandsMakeTexelVisibleMask = 0x00000200,
+ ImageOperandsMakeTexelVisibleKHRMask = 0x00000200,
+ ImageOperandsNonPrivateTexelMask = 0x00000400,
+ ImageOperandsNonPrivateTexelKHRMask = 0x00000400,
+ ImageOperandsVolatileTexelMask = 0x00000800,
+ ImageOperandsVolatileTexelKHRMask = 0x00000800,
+ ImageOperandsSignExtendMask = 0x00001000,
+ ImageOperandsZeroExtendMask = 0x00002000,
+ ImageOperandsNontemporalMask = 0x00004000,
+ ImageOperandsOffsetsMask = 0x00010000,
+};
+
+enum FPFastMathModeShift {
+ FPFastMathModeNotNaNShift = 0,
+ FPFastMathModeNotInfShift = 1,
+ FPFastMathModeNSZShift = 2,
+ FPFastMathModeAllowRecipShift = 3,
+ FPFastMathModeFastShift = 4,
+ FPFastMathModeAllowContractFastINTELShift = 16,
+ FPFastMathModeAllowReassocINTELShift = 17,
+ FPFastMathModeMax = 0x7fffffff,
+};
+
+enum FPFastMathModeMask {
+ FPFastMathModeMaskNone = 0,
+ FPFastMathModeNotNaNMask = 0x00000001,
+ FPFastMathModeNotInfMask = 0x00000002,
+ FPFastMathModeNSZMask = 0x00000004,
+ FPFastMathModeAllowRecipMask = 0x00000008,
+ FPFastMathModeFastMask = 0x00000010,
+ FPFastMathModeAllowContractFastINTELMask = 0x00010000,
+ FPFastMathModeAllowReassocINTELMask = 0x00020000,
+};
+
+enum FPRoundingMode {
+ FPRoundingModeRTE = 0,
+ FPRoundingModeRTZ = 1,
+ FPRoundingModeRTP = 2,
+ FPRoundingModeRTN = 3,
+ FPRoundingModeMax = 0x7fffffff,
+};
+
+enum LinkageType {
+ LinkageTypeExport = 0,
+ LinkageTypeImport = 1,
+ LinkageTypeLinkOnceODR = 2,
+ LinkageTypeMax = 0x7fffffff,
+};
+
+enum AccessQualifier {
+ AccessQualifierReadOnly = 0,
+ AccessQualifierWriteOnly = 1,
+ AccessQualifierReadWrite = 2,
+ AccessQualifierMax = 0x7fffffff,
+};
+
+enum FunctionParameterAttribute {
+ FunctionParameterAttributeZext = 0,
+ FunctionParameterAttributeSext = 1,
+ FunctionParameterAttributeByVal = 2,
+ FunctionParameterAttributeSret = 3,
+ FunctionParameterAttributeNoAlias = 4,
+ FunctionParameterAttributeNoCapture = 5,
+ FunctionParameterAttributeNoWrite = 6,
+ FunctionParameterAttributeNoReadWrite = 7,
+ FunctionParameterAttributeMax = 0x7fffffff,
+};
+
+enum Decoration {
+ DecorationRelaxedPrecision = 0,
+ DecorationSpecId = 1,
+ DecorationBlock = 2,
+ DecorationBufferBlock = 3,
+ DecorationRowMajor = 4,
+ DecorationColMajor = 5,
+ DecorationArrayStride = 6,
+ DecorationMatrixStride = 7,
+ DecorationGLSLShared = 8,
+ DecorationGLSLPacked = 9,
+ DecorationCPacked = 10,
+ DecorationBuiltIn = 11,
+ DecorationNoPerspective = 13,
+ DecorationFlat = 14,
+ DecorationPatch = 15,
+ DecorationCentroid = 16,
+ DecorationSample = 17,
+ DecorationInvariant = 18,
+ DecorationRestrict = 19,
+ DecorationAliased = 20,
+ DecorationVolatile = 21,
+ DecorationConstant = 22,
+ DecorationCoherent = 23,
+ DecorationNonWritable = 24,
+ DecorationNonReadable = 25,
+ DecorationUniform = 26,
+ DecorationUniformId = 27,
+ DecorationSaturatedConversion = 28,
+ DecorationStream = 29,
+ DecorationLocation = 30,
+ DecorationComponent = 31,
+ DecorationIndex = 32,
+ DecorationBinding = 33,
+ DecorationDescriptorSet = 34,
+ DecorationOffset = 35,
+ DecorationXfbBuffer = 36,
+ DecorationXfbStride = 37,
+ DecorationFuncParamAttr = 38,
+ DecorationFPRoundingMode = 39,
+ DecorationFPFastMathMode = 40,
+ DecorationLinkageAttributes = 41,
+ DecorationNoContraction = 42,
+ DecorationInputAttachmentIndex = 43,
+ DecorationAlignment = 44,
+ DecorationMaxByteOffset = 45,
+ DecorationAlignmentId = 46,
+ DecorationMaxByteOffsetId = 47,
+ DecorationNoSignedWrap = 4469,
+ DecorationNoUnsignedWrap = 4470,
+ DecorationExplicitInterpAMD = 4999,
+ DecorationOverrideCoverageNV = 5248,
+ DecorationPassthroughNV = 5250,
+ DecorationViewportRelativeNV = 5252,
+ DecorationSecondaryViewportRelativeNV = 5256,
+ DecorationPerPrimitiveEXT = 5271,
+ DecorationPerPrimitiveNV = 5271,
+ DecorationPerViewNV = 5272,
+ DecorationPerTaskNV = 5273,
+ DecorationPerVertexKHR = 5285,
+ DecorationPerVertexNV = 5285,
+ DecorationNonUniform = 5300,
+ DecorationNonUniformEXT = 5300,
+ DecorationRestrictPointer = 5355,
+ DecorationRestrictPointerEXT = 5355,
+ DecorationAliasedPointer = 5356,
+ DecorationAliasedPointerEXT = 5356,
+ DecorationBindlessSamplerNV = 5398,
+ DecorationBindlessImageNV = 5399,
+ DecorationBoundSamplerNV = 5400,
+ DecorationBoundImageNV = 5401,
+ DecorationSIMTCallINTEL = 5599,
+ DecorationReferencedIndirectlyINTEL = 5602,
+ DecorationClobberINTEL = 5607,
+ DecorationSideEffectsINTEL = 5608,
+ DecorationVectorComputeVariableINTEL = 5624,
+ DecorationFuncParamIOKindINTEL = 5625,
+ DecorationVectorComputeFunctionINTEL = 5626,
+ DecorationStackCallINTEL = 5627,
+ DecorationGlobalVariableOffsetINTEL = 5628,
+ DecorationCounterBuffer = 5634,
+ DecorationHlslCounterBufferGOOGLE = 5634,
+ DecorationHlslSemanticGOOGLE = 5635,
+ DecorationUserSemantic = 5635,
+ DecorationUserTypeGOOGLE = 5636,
+ DecorationFunctionRoundingModeINTEL = 5822,
+ DecorationFunctionDenormModeINTEL = 5823,
+ DecorationRegisterINTEL = 5825,
+ DecorationMemoryINTEL = 5826,
+ DecorationNumbanksINTEL = 5827,
+ DecorationBankwidthINTEL = 5828,
+ DecorationMaxPrivateCopiesINTEL = 5829,
+ DecorationSinglepumpINTEL = 5830,
+ DecorationDoublepumpINTEL = 5831,
+ DecorationMaxReplicatesINTEL = 5832,
+ DecorationSimpleDualPortINTEL = 5833,
+ DecorationMergeINTEL = 5834,
+ DecorationBankBitsINTEL = 5835,
+ DecorationForcePow2DepthINTEL = 5836,
+ DecorationBurstCoalesceINTEL = 5899,
+ DecorationCacheSizeINTEL = 5900,
+ DecorationDontStaticallyCoalesceINTEL = 5901,
+ DecorationPrefetchINTEL = 5902,
+ DecorationStallEnableINTEL = 5905,
+ DecorationFuseLoopsInFunctionINTEL = 5907,
+ DecorationBufferLocationINTEL = 5921,
+ DecorationIOPipeStorageINTEL = 5944,
+ DecorationFunctionFloatingPointModeINTEL = 6080,
+ DecorationSingleElementVectorINTEL = 6085,
+ DecorationVectorComputeCallableFunctionINTEL = 6087,
+ DecorationMediaBlockIOINTEL = 6140,
+ DecorationMax = 0x7fffffff,
+};
+
+enum BuiltIn {
+ BuiltInPosition = 0,
+ BuiltInPointSize = 1,
+ BuiltInClipDistance = 3,
+ BuiltInCullDistance = 4,
+ BuiltInVertexId = 5,
+ BuiltInInstanceId = 6,
+ BuiltInPrimitiveId = 7,
+ BuiltInInvocationId = 8,
+ BuiltInLayer = 9,
+ BuiltInViewportIndex = 10,
+ BuiltInTessLevelOuter = 11,
+ BuiltInTessLevelInner = 12,
+ BuiltInTessCoord = 13,
+ BuiltInPatchVertices = 14,
+ BuiltInFragCoord = 15,
+ BuiltInPointCoord = 16,
+ BuiltInFrontFacing = 17,
+ BuiltInSampleId = 18,
+ BuiltInSamplePosition = 19,
+ BuiltInSampleMask = 20,
+ BuiltInFragDepth = 22,
+ BuiltInHelperInvocation = 23,
+ BuiltInNumWorkgroups = 24,
+ BuiltInWorkgroupSize = 25,
+ BuiltInWorkgroupId = 26,
+ BuiltInLocalInvocationId = 27,
+ BuiltInGlobalInvocationId = 28,
+ BuiltInLocalInvocationIndex = 29,
+ BuiltInWorkDim = 30,
+ BuiltInGlobalSize = 31,
+ BuiltInEnqueuedWorkgroupSize = 32,
+ BuiltInGlobalOffset = 33,
+ BuiltInGlobalLinearId = 34,
+ BuiltInSubgroupSize = 36,
+ BuiltInSubgroupMaxSize = 37,
+ BuiltInNumSubgroups = 38,
+ BuiltInNumEnqueuedSubgroups = 39,
+ BuiltInSubgroupId = 40,
+ BuiltInSubgroupLocalInvocationId = 41,
+ BuiltInVertexIndex = 42,
+ BuiltInInstanceIndex = 43,
+ BuiltInSubgroupEqMask = 4416,
+ BuiltInSubgroupEqMaskKHR = 4416,
+ BuiltInSubgroupGeMask = 4417,
+ BuiltInSubgroupGeMaskKHR = 4417,
+ BuiltInSubgroupGtMask = 4418,
+ BuiltInSubgroupGtMaskKHR = 4418,
+ BuiltInSubgroupLeMask = 4419,
+ BuiltInSubgroupLeMaskKHR = 4419,
+ BuiltInSubgroupLtMask = 4420,
+ BuiltInSubgroupLtMaskKHR = 4420,
+ BuiltInBaseVertex = 4424,
+ BuiltInBaseInstance = 4425,
+ BuiltInDrawIndex = 4426,
+ BuiltInPrimitiveShadingRateKHR = 4432,
+ BuiltInDeviceIndex = 4438,
+ BuiltInViewIndex = 4440,
+ BuiltInShadingRateKHR = 4444,
+ BuiltInBaryCoordNoPerspAMD = 4992,
+ BuiltInBaryCoordNoPerspCentroidAMD = 4993,
+ BuiltInBaryCoordNoPerspSampleAMD = 4994,
+ BuiltInBaryCoordSmoothAMD = 4995,
+ BuiltInBaryCoordSmoothCentroidAMD = 4996,
+ BuiltInBaryCoordSmoothSampleAMD = 4997,
+ BuiltInBaryCoordPullModelAMD = 4998,
+ BuiltInFragStencilRefEXT = 5014,
+ BuiltInViewportMaskNV = 5253,
+ BuiltInSecondaryPositionNV = 5257,
+ BuiltInSecondaryViewportMaskNV = 5258,
+ BuiltInPositionPerViewNV = 5261,
+ BuiltInViewportMaskPerViewNV = 5262,
+ BuiltInFullyCoveredEXT = 5264,
+ BuiltInTaskCountNV = 5274,
+ BuiltInPrimitiveCountNV = 5275,
+ BuiltInPrimitiveIndicesNV = 5276,
+ BuiltInClipDistancePerViewNV = 5277,
+ BuiltInCullDistancePerViewNV = 5278,
+ BuiltInLayerPerViewNV = 5279,
+ BuiltInMeshViewCountNV = 5280,
+ BuiltInMeshViewIndicesNV = 5281,
+ BuiltInBaryCoordKHR = 5286,
+ BuiltInBaryCoordNV = 5286,
+ BuiltInBaryCoordNoPerspKHR = 5287,
+ BuiltInBaryCoordNoPerspNV = 5287,
+ BuiltInFragSizeEXT = 5292,
+ BuiltInFragmentSizeNV = 5292,
+ BuiltInFragInvocationCountEXT = 5293,
+ BuiltInInvocationsPerPixelNV = 5293,
+ BuiltInPrimitivePointIndicesEXT = 5294,
+ BuiltInPrimitiveLineIndicesEXT = 5295,
+ BuiltInPrimitiveTriangleIndicesEXT = 5296,
+ BuiltInCullPrimitiveEXT = 5299,
+ 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,
+ BuiltInHitTNV = 5332,
+ BuiltInHitKindKHR = 5333,
+ BuiltInHitKindNV = 5333,
+ BuiltInCurrentRayTimeNV = 5334,
+ BuiltInIncomingRayFlagsKHR = 5351,
+ BuiltInIncomingRayFlagsNV = 5351,
+ BuiltInRayGeometryIndexKHR = 5352,
+ BuiltInWarpsPerSMNV = 5374,
+ BuiltInSMCountNV = 5375,
+ BuiltInWarpIDNV = 5376,
+ BuiltInSMIDNV = 5377,
+ BuiltInCullMaskKHR = 6021,
+ BuiltInMax = 0x7fffffff,
+};
+
+enum SelectionControlShift {
+ SelectionControlFlattenShift = 0,
+ SelectionControlDontFlattenShift = 1,
+ SelectionControlMax = 0x7fffffff,
+};
+
+enum SelectionControlMask {
+ SelectionControlMaskNone = 0,
+ SelectionControlFlattenMask = 0x00000001,
+ SelectionControlDontFlattenMask = 0x00000002,
+};
+
+enum LoopControlShift {
+ LoopControlUnrollShift = 0,
+ LoopControlDontUnrollShift = 1,
+ LoopControlDependencyInfiniteShift = 2,
+ LoopControlDependencyLengthShift = 3,
+ LoopControlMinIterationsShift = 4,
+ LoopControlMaxIterationsShift = 5,
+ LoopControlIterationMultipleShift = 6,
+ LoopControlPeelCountShift = 7,
+ LoopControlPartialCountShift = 8,
+ LoopControlInitiationIntervalINTELShift = 16,
+ LoopControlMaxConcurrencyINTELShift = 17,
+ LoopControlDependencyArrayINTELShift = 18,
+ LoopControlPipelineEnableINTELShift = 19,
+ LoopControlLoopCoalesceINTELShift = 20,
+ LoopControlMaxInterleavingINTELShift = 21,
+ LoopControlSpeculatedIterationsINTELShift = 22,
+ LoopControlNoFusionINTELShift = 23,
+ LoopControlMax = 0x7fffffff,
+};
+
+enum LoopControlMask {
+ LoopControlMaskNone = 0,
+ LoopControlUnrollMask = 0x00000001,
+ LoopControlDontUnrollMask = 0x00000002,
+ LoopControlDependencyInfiniteMask = 0x00000004,
+ LoopControlDependencyLengthMask = 0x00000008,
+ LoopControlMinIterationsMask = 0x00000010,
+ LoopControlMaxIterationsMask = 0x00000020,
+ LoopControlIterationMultipleMask = 0x00000040,
+ LoopControlPeelCountMask = 0x00000080,
+ LoopControlPartialCountMask = 0x00000100,
+ LoopControlInitiationIntervalINTELMask = 0x00010000,
+ LoopControlMaxConcurrencyINTELMask = 0x00020000,
+ LoopControlDependencyArrayINTELMask = 0x00040000,
+ LoopControlPipelineEnableINTELMask = 0x00080000,
+ LoopControlLoopCoalesceINTELMask = 0x00100000,
+ LoopControlMaxInterleavingINTELMask = 0x00200000,
+ LoopControlSpeculatedIterationsINTELMask = 0x00400000,
+ LoopControlNoFusionINTELMask = 0x00800000,
+};
+
+enum FunctionControlShift {
+ FunctionControlInlineShift = 0,
+ FunctionControlDontInlineShift = 1,
+ FunctionControlPureShift = 2,
+ FunctionControlConstShift = 3,
+ FunctionControlOptNoneINTELShift = 16,
+ FunctionControlMax = 0x7fffffff,
+};
+
+enum FunctionControlMask {
+ FunctionControlMaskNone = 0,
+ FunctionControlInlineMask = 0x00000001,
+ FunctionControlDontInlineMask = 0x00000002,
+ FunctionControlPureMask = 0x00000004,
+ FunctionControlConstMask = 0x00000008,
+ FunctionControlOptNoneINTELMask = 0x00010000,
+};
+
+enum MemorySemanticsShift {
+ MemorySemanticsAcquireShift = 1,
+ MemorySemanticsReleaseShift = 2,
+ MemorySemanticsAcquireReleaseShift = 3,
+ MemorySemanticsSequentiallyConsistentShift = 4,
+ MemorySemanticsUniformMemoryShift = 6,
+ MemorySemanticsSubgroupMemoryShift = 7,
+ MemorySemanticsWorkgroupMemoryShift = 8,
+ MemorySemanticsCrossWorkgroupMemoryShift = 9,
+ MemorySemanticsAtomicCounterMemoryShift = 10,
+ MemorySemanticsImageMemoryShift = 11,
+ MemorySemanticsOutputMemoryShift = 12,
+ MemorySemanticsOutputMemoryKHRShift = 12,
+ MemorySemanticsMakeAvailableShift = 13,
+ MemorySemanticsMakeAvailableKHRShift = 13,
+ MemorySemanticsMakeVisibleShift = 14,
+ MemorySemanticsMakeVisibleKHRShift = 14,
+ MemorySemanticsVolatileShift = 15,
+ MemorySemanticsMax = 0x7fffffff,
+};
+
+enum MemorySemanticsMask {
+ MemorySemanticsMaskNone = 0,
+ MemorySemanticsAcquireMask = 0x00000002,
+ MemorySemanticsReleaseMask = 0x00000004,
+ MemorySemanticsAcquireReleaseMask = 0x00000008,
+ MemorySemanticsSequentiallyConsistentMask = 0x00000010,
+ MemorySemanticsUniformMemoryMask = 0x00000040,
+ MemorySemanticsSubgroupMemoryMask = 0x00000080,
+ MemorySemanticsWorkgroupMemoryMask = 0x00000100,
+ MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
+ MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
+ MemorySemanticsImageMemoryMask = 0x00000800,
+ MemorySemanticsOutputMemoryMask = 0x00001000,
+ MemorySemanticsOutputMemoryKHRMask = 0x00001000,
+ MemorySemanticsMakeAvailableMask = 0x00002000,
+ MemorySemanticsMakeAvailableKHRMask = 0x00002000,
+ MemorySemanticsMakeVisibleMask = 0x00004000,
+ MemorySemanticsMakeVisibleKHRMask = 0x00004000,
+ MemorySemanticsVolatileMask = 0x00008000,
+};
+
+enum MemoryAccessShift {
+ MemoryAccessVolatileShift = 0,
+ MemoryAccessAlignedShift = 1,
+ MemoryAccessNontemporalShift = 2,
+ MemoryAccessMakePointerAvailableShift = 3,
+ MemoryAccessMakePointerAvailableKHRShift = 3,
+ MemoryAccessMakePointerVisibleShift = 4,
+ MemoryAccessMakePointerVisibleKHRShift = 4,
+ MemoryAccessNonPrivatePointerShift = 5,
+ MemoryAccessNonPrivatePointerKHRShift = 5,
+ MemoryAccessMax = 0x7fffffff,
+};
+
+enum MemoryAccessMask {
+ MemoryAccessMaskNone = 0,
+ MemoryAccessVolatileMask = 0x00000001,
+ MemoryAccessAlignedMask = 0x00000002,
+ MemoryAccessNontemporalMask = 0x00000004,
+ MemoryAccessMakePointerAvailableMask = 0x00000008,
+ MemoryAccessMakePointerAvailableKHRMask = 0x00000008,
+ MemoryAccessMakePointerVisibleMask = 0x00000010,
+ MemoryAccessMakePointerVisibleKHRMask = 0x00000010,
+ MemoryAccessNonPrivatePointerMask = 0x00000020,
+ MemoryAccessNonPrivatePointerKHRMask = 0x00000020,
+};
+
+enum Scope {
+ ScopeCrossDevice = 0,
+ ScopeDevice = 1,
+ ScopeWorkgroup = 2,
+ ScopeSubgroup = 3,
+ ScopeInvocation = 4,
+ ScopeQueueFamily = 5,
+ ScopeQueueFamilyKHR = 5,
+ ScopeShaderCallKHR = 6,
+ ScopeMax = 0x7fffffff,
+};
+
+enum GroupOperation {
+ GroupOperationReduce = 0,
+ GroupOperationInclusiveScan = 1,
+ GroupOperationExclusiveScan = 2,
+ GroupOperationClusteredReduce = 3,
+ GroupOperationPartitionedReduceNV = 6,
+ GroupOperationPartitionedInclusiveScanNV = 7,
+ GroupOperationPartitionedExclusiveScanNV = 8,
+ GroupOperationMax = 0x7fffffff,
+};
+
+enum KernelEnqueueFlags {
+ KernelEnqueueFlagsNoWait = 0,
+ KernelEnqueueFlagsWaitKernel = 1,
+ KernelEnqueueFlagsWaitWorkGroup = 2,
+ KernelEnqueueFlagsMax = 0x7fffffff,
+};
+
+enum KernelProfilingInfoShift {
+ KernelProfilingInfoCmdExecTimeShift = 0,
+ KernelProfilingInfoMax = 0x7fffffff,
+};
+
+enum KernelProfilingInfoMask {
+ KernelProfilingInfoMaskNone = 0,
+ KernelProfilingInfoCmdExecTimeMask = 0x00000001,
+};
+
+enum Capability {
+ CapabilityMatrix = 0,
+ CapabilityShader = 1,
+ CapabilityGeometry = 2,
+ CapabilityTessellation = 3,
+ CapabilityAddresses = 4,
+ CapabilityLinkage = 5,
+ CapabilityKernel = 6,
+ CapabilityVector16 = 7,
+ CapabilityFloat16Buffer = 8,
+ CapabilityFloat16 = 9,
+ CapabilityFloat64 = 10,
+ CapabilityInt64 = 11,
+ CapabilityInt64Atomics = 12,
+ CapabilityImageBasic = 13,
+ CapabilityImageReadWrite = 14,
+ CapabilityImageMipmap = 15,
+ CapabilityPipes = 17,
+ CapabilityGroups = 18,
+ CapabilityDeviceEnqueue = 19,
+ CapabilityLiteralSampler = 20,
+ CapabilityAtomicStorage = 21,
+ CapabilityInt16 = 22,
+ CapabilityTessellationPointSize = 23,
+ CapabilityGeometryPointSize = 24,
+ CapabilityImageGatherExtended = 25,
+ CapabilityStorageImageMultisample = 27,
+ CapabilityUniformBufferArrayDynamicIndexing = 28,
+ CapabilitySampledImageArrayDynamicIndexing = 29,
+ CapabilityStorageBufferArrayDynamicIndexing = 30,
+ CapabilityStorageImageArrayDynamicIndexing = 31,
+ CapabilityClipDistance = 32,
+ CapabilityCullDistance = 33,
+ CapabilityImageCubeArray = 34,
+ CapabilitySampleRateShading = 35,
+ CapabilityImageRect = 36,
+ CapabilitySampledRect = 37,
+ CapabilityGenericPointer = 38,
+ CapabilityInt8 = 39,
+ CapabilityInputAttachment = 40,
+ CapabilitySparseResidency = 41,
+ CapabilityMinLod = 42,
+ CapabilitySampled1D = 43,
+ CapabilityImage1D = 44,
+ CapabilitySampledCubeArray = 45,
+ CapabilitySampledBuffer = 46,
+ CapabilityImageBuffer = 47,
+ CapabilityImageMSArray = 48,
+ CapabilityStorageImageExtendedFormats = 49,
+ CapabilityImageQuery = 50,
+ CapabilityDerivativeControl = 51,
+ CapabilityInterpolationFunction = 52,
+ CapabilityTransformFeedback = 53,
+ CapabilityGeometryStreams = 54,
+ CapabilityStorageImageReadWithoutFormat = 55,
+ CapabilityStorageImageWriteWithoutFormat = 56,
+ CapabilityMultiViewport = 57,
+ CapabilitySubgroupDispatch = 58,
+ CapabilityNamedBarrier = 59,
+ CapabilityPipeStorage = 60,
+ CapabilityGroupNonUniform = 61,
+ CapabilityGroupNonUniformVote = 62,
+ CapabilityGroupNonUniformArithmetic = 63,
+ CapabilityGroupNonUniformBallot = 64,
+ CapabilityGroupNonUniformShuffle = 65,
+ CapabilityGroupNonUniformShuffleRelative = 66,
+ CapabilityGroupNonUniformClustered = 67,
+ CapabilityGroupNonUniformQuad = 68,
+ CapabilityShaderLayer = 69,
+ CapabilityShaderViewportIndex = 70,
+ CapabilityUniformDecoration = 71,
+ CapabilityFragmentShadingRateKHR = 4422,
+ CapabilitySubgroupBallotKHR = 4423,
+ CapabilityDrawParameters = 4427,
+ CapabilityWorkgroupMemoryExplicitLayoutKHR = 4428,
+ CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429,
+ CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,
+ CapabilitySubgroupVoteKHR = 4431,
+ CapabilityStorageBuffer16BitAccess = 4433,
+ CapabilityStorageUniformBufferBlock16 = 4433,
+ CapabilityStorageUniform16 = 4434,
+ CapabilityUniformAndStorageBuffer16BitAccess = 4434,
+ CapabilityStoragePushConstant16 = 4435,
+ CapabilityStorageInputOutput16 = 4436,
+ CapabilityDeviceGroup = 4437,
+ CapabilityMultiView = 4439,
+ CapabilityVariablePointersStorageBuffer = 4441,
+ CapabilityVariablePointers = 4442,
+ CapabilityAtomicStorageOps = 4445,
+ CapabilitySampleMaskPostDepthCoverage = 4447,
+ CapabilityStorageBuffer8BitAccess = 4448,
+ CapabilityUniformAndStorageBuffer8BitAccess = 4449,
+ CapabilityStoragePushConstant8 = 4450,
+ CapabilityDenormPreserve = 4464,
+ CapabilityDenormFlushToZero = 4465,
+ CapabilitySignedZeroInfNanPreserve = 4466,
+ CapabilityRoundingModeRTE = 4467,
+ CapabilityRoundingModeRTZ = 4468,
+ CapabilityRayQueryProvisionalKHR = 4471,
+ CapabilityRayQueryKHR = 4472,
+ CapabilityRayTraversalPrimitiveCullingKHR = 4478,
+ CapabilityRayTracingKHR = 4479,
+ CapabilityFloat16ImageAMD = 5008,
+ CapabilityImageGatherBiasLodAMD = 5009,
+ CapabilityFragmentMaskAMD = 5010,
+ CapabilityStencilExportEXT = 5013,
+ CapabilityImageReadWriteLodAMD = 5015,
+ CapabilityInt64ImageEXT = 5016,
+ CapabilityShaderClockKHR = 5055,
+ CapabilitySampleMaskOverrideCoverageNV = 5249,
+ CapabilityGeometryShaderPassthroughNV = 5251,
+ CapabilityShaderViewportIndexLayerEXT = 5254,
+ CapabilityShaderViewportIndexLayerNV = 5254,
+ CapabilityShaderViewportMaskNV = 5255,
+ CapabilityShaderStereoViewNV = 5259,
+ CapabilityPerViewAttributesNV = 5260,
+ CapabilityFragmentFullyCoveredEXT = 5265,
+ CapabilityMeshShadingNV = 5266,
+ CapabilityImageFootprintNV = 5282,
+ CapabilityMeshShadingEXT = 5283,
+ CapabilityFragmentBarycentricKHR = 5284,
+ CapabilityFragmentBarycentricNV = 5284,
+ CapabilityComputeDerivativeGroupQuadsNV = 5288,
+ CapabilityFragmentDensityEXT = 5291,
+ CapabilityShadingRateNV = 5291,
+ CapabilityGroupNonUniformPartitionedNV = 5297,
+ CapabilityShaderNonUniform = 5301,
+ CapabilityShaderNonUniformEXT = 5301,
+ CapabilityRuntimeDescriptorArray = 5302,
+ CapabilityRuntimeDescriptorArrayEXT = 5302,
+ CapabilityInputAttachmentArrayDynamicIndexing = 5303,
+ CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
+ CapabilityUniformTexelBufferArrayDynamicIndexing = 5304,
+ CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
+ CapabilityStorageTexelBufferArrayDynamicIndexing = 5305,
+ CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
+ CapabilityUniformBufferArrayNonUniformIndexing = 5306,
+ CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
+ CapabilitySampledImageArrayNonUniformIndexing = 5307,
+ CapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
+ CapabilityStorageBufferArrayNonUniformIndexing = 5308,
+ CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
+ CapabilityStorageImageArrayNonUniformIndexing = 5309,
+ CapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
+ CapabilityInputAttachmentArrayNonUniformIndexing = 5310,
+ CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
+ CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311,
+ CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
+ CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
+ CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
+ CapabilityRayTracingNV = 5340,
+ CapabilityRayTracingMotionBlurNV = 5341,
+ CapabilityVulkanMemoryModel = 5345,
+ CapabilityVulkanMemoryModelKHR = 5345,
+ CapabilityVulkanMemoryModelDeviceScope = 5346,
+ CapabilityVulkanMemoryModelDeviceScopeKHR = 5346,
+ CapabilityPhysicalStorageBufferAddresses = 5347,
+ CapabilityPhysicalStorageBufferAddressesEXT = 5347,
+ CapabilityComputeDerivativeGroupLinearNV = 5350,
+ CapabilityRayTracingProvisionalKHR = 5353,
+ CapabilityCooperativeMatrixNV = 5357,
+ CapabilityFragmentShaderSampleInterlockEXT = 5363,
+ CapabilityFragmentShaderShadingRateInterlockEXT = 5372,
+ CapabilityShaderSMBuiltinsNV = 5373,
+ CapabilityFragmentShaderPixelInterlockEXT = 5378,
+ CapabilityDemoteToHelperInvocation = 5379,
+ CapabilityDemoteToHelperInvocationEXT = 5379,
+ CapabilityBindlessTextureNV = 5390,
+ CapabilitySubgroupShuffleINTEL = 5568,
+ CapabilitySubgroupBufferBlockIOINTEL = 5569,
+ CapabilitySubgroupImageBlockIOINTEL = 5570,
+ CapabilitySubgroupImageMediaBlockIOINTEL = 5579,
+ CapabilityRoundToInfinityINTEL = 5582,
+ CapabilityFloatingPointModeINTEL = 5583,
+ CapabilityIntegerFunctions2INTEL = 5584,
+ CapabilityFunctionPointersINTEL = 5603,
+ CapabilityIndirectReferencesINTEL = 5604,
+ CapabilityAsmINTEL = 5606,
+ CapabilityAtomicFloat32MinMaxEXT = 5612,
+ CapabilityAtomicFloat64MinMaxEXT = 5613,
+ CapabilityAtomicFloat16MinMaxEXT = 5616,
+ CapabilityVectorComputeINTEL = 5617,
+ CapabilityVectorAnyINTEL = 5619,
+ CapabilityExpectAssumeKHR = 5629,
+ CapabilitySubgroupAvcMotionEstimationINTEL = 5696,
+ CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
+ CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
+ CapabilityVariableLengthArrayINTEL = 5817,
+ CapabilityFunctionFloatControlINTEL = 5821,
+ CapabilityFPGAMemoryAttributesINTEL = 5824,
+ CapabilityFPFastMathModeINTEL = 5837,
+ CapabilityArbitraryPrecisionIntegersINTEL = 5844,
+ CapabilityArbitraryPrecisionFloatingPointINTEL = 5845,
+ CapabilityUnstructuredLoopControlsINTEL = 5886,
+ CapabilityFPGALoopControlsINTEL = 5888,
+ CapabilityKernelAttributesINTEL = 5892,
+ CapabilityFPGAKernelAttributesINTEL = 5897,
+ CapabilityFPGAMemoryAccessesINTEL = 5898,
+ CapabilityFPGAClusterAttributesINTEL = 5904,
+ CapabilityLoopFuseINTEL = 5906,
+ CapabilityFPGABufferLocationINTEL = 5920,
+ CapabilityArbitraryPrecisionFixedPointINTEL = 5922,
+ CapabilityUSMStorageClassesINTEL = 5935,
+ CapabilityIOPipesINTEL = 5943,
+ CapabilityBlockingPipesINTEL = 5945,
+ CapabilityFPGARegINTEL = 5948,
+ CapabilityDotProductInputAll = 6016,
+ CapabilityDotProductInputAllKHR = 6016,
+ CapabilityDotProductInput4x8Bit = 6017,
+ CapabilityDotProductInput4x8BitKHR = 6017,
+ CapabilityDotProductInput4x8BitPacked = 6018,
+ CapabilityDotProductInput4x8BitPackedKHR = 6018,
+ CapabilityDotProduct = 6019,
+ CapabilityDotProductKHR = 6019,
+ CapabilityRayCullMaskKHR = 6020,
+ CapabilityBitInstructions = 6025,
+ CapabilityAtomicFloat32AddEXT = 6033,
+ CapabilityAtomicFloat64AddEXT = 6034,
+ CapabilityLongConstantCompositeINTEL = 6089,
+ CapabilityOptNoneINTEL = 6094,
+ CapabilityAtomicFloat16AddEXT = 6095,
+ CapabilityDebugInfoModuleINTEL = 6114,
+ 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 FragmentShadingRateShift {
+ FragmentShadingRateVertical2PixelsShift = 0,
+ FragmentShadingRateVertical4PixelsShift = 1,
+ FragmentShadingRateHorizontal2PixelsShift = 2,
+ FragmentShadingRateHorizontal4PixelsShift = 3,
+ FragmentShadingRateMax = 0x7fffffff,
+};
+
+enum FragmentShadingRateMask {
+ FragmentShadingRateMaskNone = 0,
+ FragmentShadingRateVertical2PixelsMask = 0x00000001,
+ FragmentShadingRateVertical4PixelsMask = 0x00000002,
+ FragmentShadingRateHorizontal2PixelsMask = 0x00000004,
+ FragmentShadingRateHorizontal4PixelsMask = 0x00000008,
+};
+
+enum FPDenormMode {
+ FPDenormModePreserve = 0,
+ FPDenormModeFlushToZero = 1,
+ FPDenormModeMax = 0x7fffffff,
+};
+
+enum FPOperationMode {
+ FPOperationModeIEEE = 0,
+ FPOperationModeALT = 1,
+ FPOperationModeMax = 0x7fffffff,
+};
+
+enum QuantizationModes {
+ QuantizationModesTRN = 0,
+ QuantizationModesTRN_ZERO = 1,
+ QuantizationModesRND = 2,
+ QuantizationModesRND_ZERO = 3,
+ QuantizationModesRND_INF = 4,
+ QuantizationModesRND_MIN_INF = 5,
+ QuantizationModesRND_CONV = 6,
+ QuantizationModesRND_CONV_ODD = 7,
+ QuantizationModesMax = 0x7fffffff,
+};
+
+enum OverflowModes {
+ OverflowModesWRAP = 0,
+ OverflowModesSAT = 1,
+ OverflowModesSAT_ZERO = 2,
+ OverflowModesSAT_SYM = 3,
+ OverflowModesMax = 0x7fffffff,
+};
+
+enum PackedVectorFormat {
+ PackedVectorFormatPackedVectorFormat4x8Bit = 0,
+ PackedVectorFormatPackedVectorFormat4x8BitKHR = 0,
+ PackedVectorFormatMax = 0x7fffffff,
+};
+
+enum Op {
+ OpNop = 0,
+ OpUndef = 1,
+ OpSourceContinued = 2,
+ OpSource = 3,
+ OpSourceExtension = 4,
+ OpName = 5,
+ OpMemberName = 6,
+ OpString = 7,
+ OpLine = 8,
+ OpExtension = 10,
+ OpExtInstImport = 11,
+ OpExtInst = 12,
+ OpMemoryModel = 14,
+ OpEntryPoint = 15,
+ OpExecutionMode = 16,
+ OpCapability = 17,
+ OpTypeVoid = 19,
+ OpTypeBool = 20,
+ OpTypeInt = 21,
+ OpTypeFloat = 22,
+ OpTypeVector = 23,
+ OpTypeMatrix = 24,
+ OpTypeImage = 25,
+ OpTypeSampler = 26,
+ OpTypeSampledImage = 27,
+ OpTypeArray = 28,
+ OpTypeRuntimeArray = 29,
+ OpTypeStruct = 30,
+ OpTypeOpaque = 31,
+ OpTypePointer = 32,
+ OpTypeFunction = 33,
+ OpTypeEvent = 34,
+ OpTypeDeviceEvent = 35,
+ OpTypeReserveId = 36,
+ OpTypeQueue = 37,
+ OpTypePipe = 38,
+ OpTypeForwardPointer = 39,
+ OpConstantTrue = 41,
+ OpConstantFalse = 42,
+ OpConstant = 43,
+ OpConstantComposite = 44,
+ OpConstantSampler = 45,
+ OpConstantNull = 46,
+ OpSpecConstantTrue = 48,
+ OpSpecConstantFalse = 49,
+ OpSpecConstant = 50,
+ OpSpecConstantComposite = 51,
+ OpSpecConstantOp = 52,
+ OpFunction = 54,
+ OpFunctionParameter = 55,
+ OpFunctionEnd = 56,
+ OpFunctionCall = 57,
+ OpVariable = 59,
+ OpImageTexelPointer = 60,
+ OpLoad = 61,
+ OpStore = 62,
+ OpCopyMemory = 63,
+ OpCopyMemorySized = 64,
+ OpAccessChain = 65,
+ OpInBoundsAccessChain = 66,
+ OpPtrAccessChain = 67,
+ OpArrayLength = 68,
+ OpGenericPtrMemSemantics = 69,
+ OpInBoundsPtrAccessChain = 70,
+ OpDecorate = 71,
+ OpMemberDecorate = 72,
+ OpDecorationGroup = 73,
+ OpGroupDecorate = 74,
+ OpGroupMemberDecorate = 75,
+ OpVectorExtractDynamic = 77,
+ OpVectorInsertDynamic = 78,
+ OpVectorShuffle = 79,
+ OpCompositeConstruct = 80,
+ OpCompositeExtract = 81,
+ OpCompositeInsert = 82,
+ OpCopyObject = 83,
+ OpTranspose = 84,
+ OpSampledImage = 86,
+ OpImageSampleImplicitLod = 87,
+ OpImageSampleExplicitLod = 88,
+ OpImageSampleDrefImplicitLod = 89,
+ OpImageSampleDrefExplicitLod = 90,
+ OpImageSampleProjImplicitLod = 91,
+ OpImageSampleProjExplicitLod = 92,
+ OpImageSampleProjDrefImplicitLod = 93,
+ OpImageSampleProjDrefExplicitLod = 94,
+ OpImageFetch = 95,
+ OpImageGather = 96,
+ OpImageDrefGather = 97,
+ OpImageRead = 98,
+ OpImageWrite = 99,
+ OpImage = 100,
+ OpImageQueryFormat = 101,
+ OpImageQueryOrder = 102,
+ OpImageQuerySizeLod = 103,
+ OpImageQuerySize = 104,
+ OpImageQueryLod = 105,
+ OpImageQueryLevels = 106,
+ OpImageQuerySamples = 107,
+ OpConvertFToU = 109,
+ OpConvertFToS = 110,
+ OpConvertSToF = 111,
+ OpConvertUToF = 112,
+ OpUConvert = 113,
+ OpSConvert = 114,
+ OpFConvert = 115,
+ OpQuantizeToF16 = 116,
+ OpConvertPtrToU = 117,
+ OpSatConvertSToU = 118,
+ OpSatConvertUToS = 119,
+ OpConvertUToPtr = 120,
+ OpPtrCastToGeneric = 121,
+ OpGenericCastToPtr = 122,
+ OpGenericCastToPtrExplicit = 123,
+ OpBitcast = 124,
+ OpSNegate = 126,
+ OpFNegate = 127,
+ OpIAdd = 128,
+ OpFAdd = 129,
+ OpISub = 130,
+ OpFSub = 131,
+ OpIMul = 132,
+ OpFMul = 133,
+ OpUDiv = 134,
+ OpSDiv = 135,
+ OpFDiv = 136,
+ OpUMod = 137,
+ OpSRem = 138,
+ OpSMod = 139,
+ OpFRem = 140,
+ OpFMod = 141,
+ OpVectorTimesScalar = 142,
+ OpMatrixTimesScalar = 143,
+ OpVectorTimesMatrix = 144,
+ OpMatrixTimesVector = 145,
+ OpMatrixTimesMatrix = 146,
+ OpOuterProduct = 147,
+ OpDot = 148,
+ OpIAddCarry = 149,
+ OpISubBorrow = 150,
+ OpUMulExtended = 151,
+ OpSMulExtended = 152,
+ OpAny = 154,
+ OpAll = 155,
+ OpIsNan = 156,
+ OpIsInf = 157,
+ OpIsFinite = 158,
+ OpIsNormal = 159,
+ OpSignBitSet = 160,
+ OpLessOrGreater = 161,
+ OpOrdered = 162,
+ OpUnordered = 163,
+ OpLogicalEqual = 164,
+ OpLogicalNotEqual = 165,
+ OpLogicalOr = 166,
+ OpLogicalAnd = 167,
+ OpLogicalNot = 168,
+ OpSelect = 169,
+ OpIEqual = 170,
+ OpINotEqual = 171,
+ OpUGreaterThan = 172,
+ OpSGreaterThan = 173,
+ OpUGreaterThanEqual = 174,
+ OpSGreaterThanEqual = 175,
+ OpULessThan = 176,
+ OpSLessThan = 177,
+ OpULessThanEqual = 178,
+ OpSLessThanEqual = 179,
+ OpFOrdEqual = 180,
+ OpFUnordEqual = 181,
+ OpFOrdNotEqual = 182,
+ OpFUnordNotEqual = 183,
+ OpFOrdLessThan = 184,
+ OpFUnordLessThan = 185,
+ OpFOrdGreaterThan = 186,
+ OpFUnordGreaterThan = 187,
+ OpFOrdLessThanEqual = 188,
+ OpFUnordLessThanEqual = 189,
+ OpFOrdGreaterThanEqual = 190,
+ OpFUnordGreaterThanEqual = 191,
+ OpShiftRightLogical = 194,
+ OpShiftRightArithmetic = 195,
+ OpShiftLeftLogical = 196,
+ OpBitwiseOr = 197,
+ OpBitwiseXor = 198,
+ OpBitwiseAnd = 199,
+ OpNot = 200,
+ OpBitFieldInsert = 201,
+ OpBitFieldSExtract = 202,
+ OpBitFieldUExtract = 203,
+ OpBitReverse = 204,
+ OpBitCount = 205,
+ OpDPdx = 207,
+ OpDPdy = 208,
+ OpFwidth = 209,
+ OpDPdxFine = 210,
+ OpDPdyFine = 211,
+ OpFwidthFine = 212,
+ OpDPdxCoarse = 213,
+ OpDPdyCoarse = 214,
+ OpFwidthCoarse = 215,
+ OpEmitVertex = 218,
+ OpEndPrimitive = 219,
+ OpEmitStreamVertex = 220,
+ OpEndStreamPrimitive = 221,
+ OpControlBarrier = 224,
+ OpMemoryBarrier = 225,
+ OpAtomicLoad = 227,
+ OpAtomicStore = 228,
+ OpAtomicExchange = 229,
+ OpAtomicCompareExchange = 230,
+ OpAtomicCompareExchangeWeak = 231,
+ OpAtomicIIncrement = 232,
+ OpAtomicIDecrement = 233,
+ OpAtomicIAdd = 234,
+ OpAtomicISub = 235,
+ OpAtomicSMin = 236,
+ OpAtomicUMin = 237,
+ OpAtomicSMax = 238,
+ OpAtomicUMax = 239,
+ OpAtomicAnd = 240,
+ OpAtomicOr = 241,
+ OpAtomicXor = 242,
+ OpPhi = 245,
+ OpLoopMerge = 246,
+ OpSelectionMerge = 247,
+ OpLabel = 248,
+ OpBranch = 249,
+ OpBranchConditional = 250,
+ OpSwitch = 251,
+ OpKill = 252,
+ OpReturn = 253,
+ OpReturnValue = 254,
+ OpUnreachable = 255,
+ OpLifetimeStart = 256,
+ OpLifetimeStop = 257,
+ OpGroupAsyncCopy = 259,
+ OpGroupWaitEvents = 260,
+ OpGroupAll = 261,
+ OpGroupAny = 262,
+ OpGroupBroadcast = 263,
+ OpGroupIAdd = 264,
+ OpGroupFAdd = 265,
+ OpGroupFMin = 266,
+ OpGroupUMin = 267,
+ OpGroupSMin = 268,
+ OpGroupFMax = 269,
+ OpGroupUMax = 270,
+ OpGroupSMax = 271,
+ OpReadPipe = 274,
+ OpWritePipe = 275,
+ OpReservedReadPipe = 276,
+ OpReservedWritePipe = 277,
+ OpReserveReadPipePackets = 278,
+ OpReserveWritePipePackets = 279,
+ OpCommitReadPipe = 280,
+ OpCommitWritePipe = 281,
+ OpIsValidReserveId = 282,
+ OpGetNumPipePackets = 283,
+ OpGetMaxPipePackets = 284,
+ OpGroupReserveReadPipePackets = 285,
+ OpGroupReserveWritePipePackets = 286,
+ OpGroupCommitReadPipe = 287,
+ OpGroupCommitWritePipe = 288,
+ OpEnqueueMarker = 291,
+ OpEnqueueKernel = 292,
+ OpGetKernelNDrangeSubGroupCount = 293,
+ OpGetKernelNDrangeMaxSubGroupSize = 294,
+ OpGetKernelWorkGroupSize = 295,
+ OpGetKernelPreferredWorkGroupSizeMultiple = 296,
+ OpRetainEvent = 297,
+ OpReleaseEvent = 298,
+ OpCreateUserEvent = 299,
+ OpIsValidEvent = 300,
+ OpSetUserEventStatus = 301,
+ OpCaptureEventProfilingInfo = 302,
+ OpGetDefaultQueue = 303,
+ OpBuildNDRange = 304,
+ OpImageSparseSampleImplicitLod = 305,
+ OpImageSparseSampleExplicitLod = 306,
+ OpImageSparseSampleDrefImplicitLod = 307,
+ OpImageSparseSampleDrefExplicitLod = 308,
+ OpImageSparseSampleProjImplicitLod = 309,
+ OpImageSparseSampleProjExplicitLod = 310,
+ OpImageSparseSampleProjDrefImplicitLod = 311,
+ OpImageSparseSampleProjDrefExplicitLod = 312,
+ OpImageSparseFetch = 313,
+ OpImageSparseGather = 314,
+ OpImageSparseDrefGather = 315,
+ OpImageSparseTexelsResident = 316,
+ OpNoLine = 317,
+ OpAtomicFlagTestAndSet = 318,
+ OpAtomicFlagClear = 319,
+ OpImageSparseRead = 320,
+ OpSizeOf = 321,
+ OpTypePipeStorage = 322,
+ OpConstantPipeStorage = 323,
+ OpCreatePipeFromPipeStorage = 324,
+ OpGetKernelLocalSizeForSubgroupCount = 325,
+ OpGetKernelMaxNumSubgroups = 326,
+ OpTypeNamedBarrier = 327,
+ OpNamedBarrierInitialize = 328,
+ OpMemoryNamedBarrier = 329,
+ OpModuleProcessed = 330,
+ OpExecutionModeId = 331,
+ OpDecorateId = 332,
+ OpGroupNonUniformElect = 333,
+ OpGroupNonUniformAll = 334,
+ OpGroupNonUniformAny = 335,
+ OpGroupNonUniformAllEqual = 336,
+ OpGroupNonUniformBroadcast = 337,
+ OpGroupNonUniformBroadcastFirst = 338,
+ OpGroupNonUniformBallot = 339,
+ OpGroupNonUniformInverseBallot = 340,
+ OpGroupNonUniformBallotBitExtract = 341,
+ OpGroupNonUniformBallotBitCount = 342,
+ OpGroupNonUniformBallotFindLSB = 343,
+ OpGroupNonUniformBallotFindMSB = 344,
+ OpGroupNonUniformShuffle = 345,
+ OpGroupNonUniformShuffleXor = 346,
+ OpGroupNonUniformShuffleUp = 347,
+ OpGroupNonUniformShuffleDown = 348,
+ OpGroupNonUniformIAdd = 349,
+ OpGroupNonUniformFAdd = 350,
+ OpGroupNonUniformIMul = 351,
+ OpGroupNonUniformFMul = 352,
+ OpGroupNonUniformSMin = 353,
+ OpGroupNonUniformUMin = 354,
+ OpGroupNonUniformFMin = 355,
+ OpGroupNonUniformSMax = 356,
+ OpGroupNonUniformUMax = 357,
+ OpGroupNonUniformFMax = 358,
+ OpGroupNonUniformBitwiseAnd = 359,
+ OpGroupNonUniformBitwiseOr = 360,
+ OpGroupNonUniformBitwiseXor = 361,
+ OpGroupNonUniformLogicalAnd = 362,
+ OpGroupNonUniformLogicalOr = 363,
+ OpGroupNonUniformLogicalXor = 364,
+ OpGroupNonUniformQuadBroadcast = 365,
+ OpGroupNonUniformQuadSwap = 366,
+ OpCopyLogical = 400,
+ OpPtrEqual = 401,
+ OpPtrNotEqual = 402,
+ OpPtrDiff = 403,
+ OpTerminateInvocation = 4416,
+ OpSubgroupBallotKHR = 4421,
+ OpSubgroupFirstInvocationKHR = 4422,
+ OpSubgroupAllKHR = 4428,
+ OpSubgroupAnyKHR = 4429,
+ OpSubgroupAllEqualKHR = 4430,
+ OpSubgroupReadInvocationKHR = 4432,
+ OpTraceRayKHR = 4445,
+ OpExecuteCallableKHR = 4446,
+ OpConvertUToAccelerationStructureKHR = 4447,
+ OpIgnoreIntersectionKHR = 4448,
+ OpTerminateRayKHR = 4449,
+ OpSDot = 4450,
+ OpSDotKHR = 4450,
+ OpUDot = 4451,
+ OpUDotKHR = 4451,
+ OpSUDot = 4452,
+ OpSUDotKHR = 4452,
+ OpSDotAccSat = 4453,
+ OpSDotAccSatKHR = 4453,
+ OpUDotAccSat = 4454,
+ OpUDotAccSatKHR = 4454,
+ OpSUDotAccSat = 4455,
+ OpSUDotAccSatKHR = 4455,
+ OpTypeRayQueryKHR = 4472,
+ OpRayQueryInitializeKHR = 4473,
+ OpRayQueryTerminateKHR = 4474,
+ OpRayQueryGenerateIntersectionKHR = 4475,
+ OpRayQueryConfirmIntersectionKHR = 4476,
+ OpRayQueryProceedKHR = 4477,
+ OpRayQueryGetIntersectionTypeKHR = 4479,
+ OpGroupIAddNonUniformAMD = 5000,
+ OpGroupFAddNonUniformAMD = 5001,
+ OpGroupFMinNonUniformAMD = 5002,
+ OpGroupUMinNonUniformAMD = 5003,
+ OpGroupSMinNonUniformAMD = 5004,
+ OpGroupFMaxNonUniformAMD = 5005,
+ OpGroupUMaxNonUniformAMD = 5006,
+ OpGroupSMaxNonUniformAMD = 5007,
+ OpFragmentMaskFetchAMD = 5011,
+ OpFragmentFetchAMD = 5012,
+ OpReadClockKHR = 5056,
+ OpImageSampleFootprintNV = 5283,
+ OpEmitMeshTasksEXT = 5294,
+ OpSetMeshOutputsEXT = 5295,
+ OpGroupNonUniformPartitionNV = 5296,
+ OpWritePackedPrimitiveIndices4x8NV = 5299,
+ OpReportIntersectionKHR = 5334,
+ OpReportIntersectionNV = 5334,
+ OpIgnoreIntersectionNV = 5335,
+ OpTerminateRayNV = 5336,
+ OpTraceNV = 5337,
+ OpTraceMotionNV = 5338,
+ OpTraceRayMotionNV = 5339,
+ OpTypeAccelerationStructureKHR = 5341,
+ OpTypeAccelerationStructureNV = 5341,
+ OpExecuteCallableNV = 5344,
+ OpTypeCooperativeMatrixNV = 5358,
+ OpCooperativeMatrixLoadNV = 5359,
+ OpCooperativeMatrixStoreNV = 5360,
+ OpCooperativeMatrixMulAddNV = 5361,
+ OpCooperativeMatrixLengthNV = 5362,
+ OpBeginInvocationInterlockEXT = 5364,
+ OpEndInvocationInterlockEXT = 5365,
+ OpDemoteToHelperInvocation = 5380,
+ OpDemoteToHelperInvocationEXT = 5380,
+ OpIsHelperInvocationEXT = 5381,
+ OpConvertUToImageNV = 5391,
+ OpConvertUToSamplerNV = 5392,
+ OpConvertImageToUNV = 5393,
+ OpConvertSamplerToUNV = 5394,
+ OpConvertUToSampledImageNV = 5395,
+ OpConvertSampledImageToUNV = 5396,
+ OpSamplerImageAddressingModeNV = 5397,
+ OpSubgroupShuffleINTEL = 5571,
+ OpSubgroupShuffleDownINTEL = 5572,
+ OpSubgroupShuffleUpINTEL = 5573,
+ OpSubgroupShuffleXorINTEL = 5574,
+ OpSubgroupBlockReadINTEL = 5575,
+ OpSubgroupBlockWriteINTEL = 5576,
+ OpSubgroupImageBlockReadINTEL = 5577,
+ OpSubgroupImageBlockWriteINTEL = 5578,
+ OpSubgroupImageMediaBlockReadINTEL = 5580,
+ OpSubgroupImageMediaBlockWriteINTEL = 5581,
+ OpUCountLeadingZerosINTEL = 5585,
+ OpUCountTrailingZerosINTEL = 5586,
+ OpAbsISubINTEL = 5587,
+ OpAbsUSubINTEL = 5588,
+ OpIAddSatINTEL = 5589,
+ OpUAddSatINTEL = 5590,
+ OpIAverageINTEL = 5591,
+ OpUAverageINTEL = 5592,
+ OpIAverageRoundedINTEL = 5593,
+ OpUAverageRoundedINTEL = 5594,
+ OpISubSatINTEL = 5595,
+ OpUSubSatINTEL = 5596,
+ OpIMul32x16INTEL = 5597,
+ OpUMul32x16INTEL = 5598,
+ OpConstantFunctionPointerINTEL = 5600,
+ OpFunctionPointerCallINTEL = 5601,
+ OpAsmTargetINTEL = 5609,
+ OpAsmINTEL = 5610,
+ OpAsmCallINTEL = 5611,
+ OpAtomicFMinEXT = 5614,
+ OpAtomicFMaxEXT = 5615,
+ OpAssumeTrueKHR = 5630,
+ OpExpectKHR = 5631,
+ OpDecorateString = 5632,
+ OpDecorateStringGOOGLE = 5632,
+ OpMemberDecorateString = 5633,
+ OpMemberDecorateStringGOOGLE = 5633,
+ OpVmeImageINTEL = 5699,
+ OpTypeVmeImageINTEL = 5700,
+ OpTypeAvcImePayloadINTEL = 5701,
+ OpTypeAvcRefPayloadINTEL = 5702,
+ OpTypeAvcSicPayloadINTEL = 5703,
+ OpTypeAvcMcePayloadINTEL = 5704,
+ OpTypeAvcMceResultINTEL = 5705,
+ OpTypeAvcImeResultINTEL = 5706,
+ OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
+ OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
+ OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
+ OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
+ OpTypeAvcRefResultINTEL = 5711,
+ OpTypeAvcSicResultINTEL = 5712,
+ OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
+ OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
+ OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
+ OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
+ OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
+ OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
+ OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
+ OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
+ OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
+ OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
+ OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
+ OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
+ OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
+ OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
+ OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
+ OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
+ OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
+ OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
+ OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
+ OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
+ OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
+ OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
+ OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
+ OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
+ OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
+ OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
+ OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
+ OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
+ OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
+ OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
+ OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
+ OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
+ OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
+ OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
+ OpSubgroupAvcImeInitializeINTEL = 5747,
+ OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
+ OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
+ OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
+ OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
+ OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
+ OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
+ OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
+ OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
+ OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
+ OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
+ OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
+ OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
+ OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
+ OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
+ OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
+ OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
+ OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
+ OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
+ OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
+ OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
+ OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
+ OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
+ OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
+ OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
+ OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
+ OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
+ OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
+ OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
+ OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
+ OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
+ OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
+ OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
+ OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
+ OpSubgroupAvcFmeInitializeINTEL = 5781,
+ OpSubgroupAvcBmeInitializeINTEL = 5782,
+ OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
+ OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
+ OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
+ OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
+ OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
+ OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
+ OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
+ OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
+ OpSubgroupAvcSicInitializeINTEL = 5791,
+ OpSubgroupAvcSicConfigureSkcINTEL = 5792,
+ OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
+ OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
+ OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
+ OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
+ OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
+ OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
+ OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
+ OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
+ OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
+ OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
+ OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
+ OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
+ OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
+ OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
+ OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
+ OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
+ OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
+ OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
+ OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
+ OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
+ OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
+ OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
+ OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
+ OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
+ OpVariableLengthArrayINTEL = 5818,
+ OpSaveMemoryINTEL = 5819,
+ OpRestoreMemoryINTEL = 5820,
+ OpArbitraryFloatSinCosPiINTEL = 5840,
+ OpArbitraryFloatCastINTEL = 5841,
+ OpArbitraryFloatCastFromIntINTEL = 5842,
+ OpArbitraryFloatCastToIntINTEL = 5843,
+ OpArbitraryFloatAddINTEL = 5846,
+ OpArbitraryFloatSubINTEL = 5847,
+ OpArbitraryFloatMulINTEL = 5848,
+ OpArbitraryFloatDivINTEL = 5849,
+ OpArbitraryFloatGTINTEL = 5850,
+ OpArbitraryFloatGEINTEL = 5851,
+ OpArbitraryFloatLTINTEL = 5852,
+ OpArbitraryFloatLEINTEL = 5853,
+ OpArbitraryFloatEQINTEL = 5854,
+ OpArbitraryFloatRecipINTEL = 5855,
+ OpArbitraryFloatRSqrtINTEL = 5856,
+ OpArbitraryFloatCbrtINTEL = 5857,
+ OpArbitraryFloatHypotINTEL = 5858,
+ OpArbitraryFloatSqrtINTEL = 5859,
+ OpArbitraryFloatLogINTEL = 5860,
+ OpArbitraryFloatLog2INTEL = 5861,
+ OpArbitraryFloatLog10INTEL = 5862,
+ OpArbitraryFloatLog1pINTEL = 5863,
+ OpArbitraryFloatExpINTEL = 5864,
+ OpArbitraryFloatExp2INTEL = 5865,
+ OpArbitraryFloatExp10INTEL = 5866,
+ OpArbitraryFloatExpm1INTEL = 5867,
+ OpArbitraryFloatSinINTEL = 5868,
+ OpArbitraryFloatCosINTEL = 5869,
+ OpArbitraryFloatSinCosINTEL = 5870,
+ OpArbitraryFloatSinPiINTEL = 5871,
+ OpArbitraryFloatCosPiINTEL = 5872,
+ OpArbitraryFloatASinINTEL = 5873,
+ OpArbitraryFloatASinPiINTEL = 5874,
+ OpArbitraryFloatACosINTEL = 5875,
+ OpArbitraryFloatACosPiINTEL = 5876,
+ OpArbitraryFloatATanINTEL = 5877,
+ OpArbitraryFloatATanPiINTEL = 5878,
+ OpArbitraryFloatATan2INTEL = 5879,
+ OpArbitraryFloatPowINTEL = 5880,
+ OpArbitraryFloatPowRINTEL = 5881,
+ OpArbitraryFloatPowNINTEL = 5882,
+ OpLoopControlINTEL = 5887,
+ OpFixedSqrtINTEL = 5923,
+ OpFixedRecipINTEL = 5924,
+ OpFixedRsqrtINTEL = 5925,
+ OpFixedSinINTEL = 5926,
+ OpFixedCosINTEL = 5927,
+ OpFixedSinCosINTEL = 5928,
+ OpFixedSinPiINTEL = 5929,
+ OpFixedCosPiINTEL = 5930,
+ OpFixedSinCosPiINTEL = 5931,
+ OpFixedLogINTEL = 5932,
+ OpFixedExpINTEL = 5933,
+ OpPtrCastToCrossWorkgroupINTEL = 5934,
+ OpCrossWorkgroupCastToPtrINTEL = 5938,
+ OpReadPipeBlockingINTEL = 5946,
+ OpWritePipeBlockingINTEL = 5947,
+ OpFPGARegINTEL = 5949,
+ 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,
+ OpAtomicFAddEXT = 6035,
+ OpTypeBufferSurfaceINTEL = 6086,
+ OpTypeStructContinuedINTEL = 6090,
+ OpConstantCompositeContinuedINTEL = 6091,
+ OpSpecConstantCompositeContinuedINTEL = 6092,
+ OpMax = 0x7fffffff,
+};
+
+#ifdef SPV_ENABLE_UTILITY_CODE
+inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
+ *hasResult = *hasResultType = false;
+ switch (opcode) {
+ default: /* unknown opcode */ break;
+ case OpNop: *hasResult = false; *hasResultType = false; break;
+ case OpUndef: *hasResult = true; *hasResultType = true; break;
+ case OpSourceContinued: *hasResult = false; *hasResultType = false; break;
+ case OpSource: *hasResult = false; *hasResultType = false; break;
+ case OpSourceExtension: *hasResult = false; *hasResultType = false; break;
+ case OpName: *hasResult = false; *hasResultType = false; break;
+ case OpMemberName: *hasResult = false; *hasResultType = false; break;
+ case OpString: *hasResult = true; *hasResultType = false; break;
+ case OpLine: *hasResult = false; *hasResultType = false; break;
+ case OpExtension: *hasResult = false; *hasResultType = false; break;
+ case OpExtInstImport: *hasResult = true; *hasResultType = false; break;
+ case OpExtInst: *hasResult = true; *hasResultType = true; break;
+ case OpMemoryModel: *hasResult = false; *hasResultType = false; break;
+ case OpEntryPoint: *hasResult = false; *hasResultType = false; break;
+ case OpExecutionMode: *hasResult = false; *hasResultType = false; break;
+ case OpCapability: *hasResult = false; *hasResultType = false; break;
+ case OpTypeVoid: *hasResult = true; *hasResultType = false; break;
+ case OpTypeBool: *hasResult = true; *hasResultType = false; break;
+ case OpTypeInt: *hasResult = true; *hasResultType = false; break;
+ case OpTypeFloat: *hasResult = true; *hasResultType = false; break;
+ case OpTypeVector: *hasResult = true; *hasResultType = false; break;
+ case OpTypeMatrix: *hasResult = true; *hasResultType = false; break;
+ case OpTypeImage: *hasResult = true; *hasResultType = false; break;
+ case OpTypeSampler: *hasResult = true; *hasResultType = false; break;
+ case OpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
+ case OpTypeArray: *hasResult = true; *hasResultType = false; break;
+ case OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
+ case OpTypeStruct: *hasResult = true; *hasResultType = false; break;
+ case OpTypeOpaque: *hasResult = true; *hasResultType = false; break;
+ case OpTypePointer: *hasResult = true; *hasResultType = false; break;
+ case OpTypeFunction: *hasResult = true; *hasResultType = false; break;
+ case OpTypeEvent: *hasResult = true; *hasResultType = false; break;
+ case OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
+ case OpTypeReserveId: *hasResult = true; *hasResultType = false; break;
+ case OpTypeQueue: *hasResult = true; *hasResultType = false; break;
+ case OpTypePipe: *hasResult = true; *hasResultType = false; break;
+ case OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
+ case OpConstantTrue: *hasResult = true; *hasResultType = true; break;
+ case OpConstantFalse: *hasResult = true; *hasResultType = true; break;
+ case OpConstant: *hasResult = true; *hasResultType = true; break;
+ case OpConstantComposite: *hasResult = true; *hasResultType = true; break;
+ case OpConstantSampler: *hasResult = true; *hasResultType = true; break;
+ case OpConstantNull: *hasResult = true; *hasResultType = true; break;
+ case OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
+ case OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
+ case OpSpecConstant: *hasResult = true; *hasResultType = true; break;
+ case OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
+ case OpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
+ case OpFunction: *hasResult = true; *hasResultType = true; break;
+ case OpFunctionParameter: *hasResult = true; *hasResultType = true; break;
+ case OpFunctionEnd: *hasResult = false; *hasResultType = false; break;
+ case OpFunctionCall: *hasResult = true; *hasResultType = true; break;
+ case OpVariable: *hasResult = true; *hasResultType = true; break;
+ case OpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
+ case OpLoad: *hasResult = true; *hasResultType = true; break;
+ case OpStore: *hasResult = false; *hasResultType = false; break;
+ case OpCopyMemory: *hasResult = false; *hasResultType = false; break;
+ case OpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
+ case OpAccessChain: *hasResult = true; *hasResultType = true; break;
+ case OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
+ case OpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
+ case OpArrayLength: *hasResult = true; *hasResultType = true; break;
+ case OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
+ case OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
+ case OpDecorate: *hasResult = false; *hasResultType = false; break;
+ case OpMemberDecorate: *hasResult = false; *hasResultType = false; break;
+ case OpDecorationGroup: *hasResult = true; *hasResultType = false; break;
+ case OpGroupDecorate: *hasResult = false; *hasResultType = false; break;
+ case OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
+ case OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
+ case OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
+ case OpVectorShuffle: *hasResult = true; *hasResultType = true; break;
+ case OpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
+ case OpCompositeExtract: *hasResult = true; *hasResultType = true; break;
+ case OpCompositeInsert: *hasResult = true; *hasResultType = true; break;
+ case OpCopyObject: *hasResult = true; *hasResultType = true; break;
+ case OpTranspose: *hasResult = true; *hasResultType = true; break;
+ case OpSampledImage: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageFetch: *hasResult = true; *hasResultType = true; break;
+ case OpImageGather: *hasResult = true; *hasResultType = true; break;
+ case OpImageDrefGather: *hasResult = true; *hasResultType = true; break;
+ case OpImageRead: *hasResult = true; *hasResultType = true; break;
+ case OpImageWrite: *hasResult = false; *hasResultType = false; break;
+ case OpImage: *hasResult = true; *hasResultType = true; break;
+ case OpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
+ case OpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
+ case OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageQuerySize: *hasResult = true; *hasResultType = true; break;
+ case OpImageQueryLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
+ case OpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
+ case OpConvertFToU: *hasResult = true; *hasResultType = true; break;
+ case OpConvertFToS: *hasResult = true; *hasResultType = true; break;
+ case OpConvertSToF: *hasResult = true; *hasResultType = true; break;
+ case OpConvertUToF: *hasResult = true; *hasResultType = true; break;
+ case OpUConvert: *hasResult = true; *hasResultType = true; break;
+ case OpSConvert: *hasResult = true; *hasResultType = true; break;
+ case OpFConvert: *hasResult = true; *hasResultType = true; break;
+ case OpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
+ case OpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
+ case OpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
+ case OpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
+ case OpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
+ case OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
+ case OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
+ case OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
+ case OpBitcast: *hasResult = true; *hasResultType = true; break;
+ case OpSNegate: *hasResult = true; *hasResultType = true; break;
+ case OpFNegate: *hasResult = true; *hasResultType = true; break;
+ case OpIAdd: *hasResult = true; *hasResultType = true; break;
+ case OpFAdd: *hasResult = true; *hasResultType = true; break;
+ case OpISub: *hasResult = true; *hasResultType = true; break;
+ case OpFSub: *hasResult = true; *hasResultType = true; break;
+ case OpIMul: *hasResult = true; *hasResultType = true; break;
+ case OpFMul: *hasResult = true; *hasResultType = true; break;
+ case OpUDiv: *hasResult = true; *hasResultType = true; break;
+ case OpSDiv: *hasResult = true; *hasResultType = true; break;
+ case OpFDiv: *hasResult = true; *hasResultType = true; break;
+ case OpUMod: *hasResult = true; *hasResultType = true; break;
+ case OpSRem: *hasResult = true; *hasResultType = true; break;
+ case OpSMod: *hasResult = true; *hasResultType = true; break;
+ case OpFRem: *hasResult = true; *hasResultType = true; break;
+ case OpFMod: *hasResult = true; *hasResultType = true; break;
+ case OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
+ case OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
+ case OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
+ case OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
+ case OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
+ case OpOuterProduct: *hasResult = true; *hasResultType = true; break;
+ case OpDot: *hasResult = true; *hasResultType = true; break;
+ case OpIAddCarry: *hasResult = true; *hasResultType = true; break;
+ case OpISubBorrow: *hasResult = true; *hasResultType = true; break;
+ case OpUMulExtended: *hasResult = true; *hasResultType = true; break;
+ case OpSMulExtended: *hasResult = true; *hasResultType = true; break;
+ case OpAny: *hasResult = true; *hasResultType = true; break;
+ case OpAll: *hasResult = true; *hasResultType = true; break;
+ case OpIsNan: *hasResult = true; *hasResultType = true; break;
+ case OpIsInf: *hasResult = true; *hasResultType = true; break;
+ case OpIsFinite: *hasResult = true; *hasResultType = true; break;
+ case OpIsNormal: *hasResult = true; *hasResultType = true; break;
+ case OpSignBitSet: *hasResult = true; *hasResultType = true; break;
+ case OpLessOrGreater: *hasResult = true; *hasResultType = true; break;
+ case OpOrdered: *hasResult = true; *hasResultType = true; break;
+ case OpUnordered: *hasResult = true; *hasResultType = true; break;
+ case OpLogicalEqual: *hasResult = true; *hasResultType = true; break;
+ case OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
+ case OpLogicalOr: *hasResult = true; *hasResultType = true; break;
+ case OpLogicalAnd: *hasResult = true; *hasResultType = true; break;
+ case OpLogicalNot: *hasResult = true; *hasResultType = true; break;
+ case OpSelect: *hasResult = true; *hasResultType = true; break;
+ case OpIEqual: *hasResult = true; *hasResultType = true; break;
+ case OpINotEqual: *hasResult = true; *hasResultType = true; break;
+ case OpUGreaterThan: *hasResult = true; *hasResultType = true; break;
+ case OpSGreaterThan: *hasResult = true; *hasResultType = true; break;
+ case OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpULessThan: *hasResult = true; *hasResultType = true; break;
+ case OpSLessThan: *hasResult = true; *hasResultType = true; break;
+ case OpULessThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFOrdEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFUnordEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
+ case OpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
+ case OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
+ case OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
+ case OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
+ case OpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
+ case OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
+ case OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
+ case OpBitwiseOr: *hasResult = true; *hasResultType = true; break;
+ case OpBitwiseXor: *hasResult = true; *hasResultType = true; break;
+ case OpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
+ case OpNot: *hasResult = true; *hasResultType = true; break;
+ case OpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
+ case OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
+ case OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
+ case OpBitReverse: *hasResult = true; *hasResultType = true; break;
+ case OpBitCount: *hasResult = true; *hasResultType = true; break;
+ case OpDPdx: *hasResult = true; *hasResultType = true; break;
+ case OpDPdy: *hasResult = true; *hasResultType = true; break;
+ case OpFwidth: *hasResult = true; *hasResultType = true; break;
+ case OpDPdxFine: *hasResult = true; *hasResultType = true; break;
+ case OpDPdyFine: *hasResult = true; *hasResultType = true; break;
+ case OpFwidthFine: *hasResult = true; *hasResultType = true; break;
+ case OpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
+ case OpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
+ case OpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
+ case OpEmitVertex: *hasResult = false; *hasResultType = false; break;
+ case OpEndPrimitive: *hasResult = false; *hasResultType = false; break;
+ case OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
+ case OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
+ case OpControlBarrier: *hasResult = false; *hasResultType = false; break;
+ case OpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
+ case OpAtomicLoad: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicStore: *hasResult = false; *hasResultType = false; break;
+ case OpAtomicExchange: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicISub: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicSMin: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicUMin: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicSMax: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicUMax: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicAnd: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicOr: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicXor: *hasResult = true; *hasResultType = true; break;
+ case OpPhi: *hasResult = true; *hasResultType = true; break;
+ case OpLoopMerge: *hasResult = false; *hasResultType = false; break;
+ case OpSelectionMerge: *hasResult = false; *hasResultType = false; break;
+ case OpLabel: *hasResult = true; *hasResultType = false; break;
+ case OpBranch: *hasResult = false; *hasResultType = false; break;
+ case OpBranchConditional: *hasResult = false; *hasResultType = false; break;
+ case OpSwitch: *hasResult = false; *hasResultType = false; break;
+ case OpKill: *hasResult = false; *hasResultType = false; break;
+ case OpReturn: *hasResult = false; *hasResultType = false; break;
+ case OpReturnValue: *hasResult = false; *hasResultType = false; break;
+ case OpUnreachable: *hasResult = false; *hasResultType = false; break;
+ case OpLifetimeStart: *hasResult = false; *hasResultType = false; break;
+ case OpLifetimeStop: *hasResult = false; *hasResultType = false; break;
+ case OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
+ case OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
+ case OpGroupAll: *hasResult = true; *hasResultType = true; break;
+ case OpGroupAny: *hasResult = true; *hasResultType = true; break;
+ case OpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
+ case OpGroupIAdd: *hasResult = true; *hasResultType = true; break;
+ case OpGroupFAdd: *hasResult = true; *hasResultType = true; break;
+ case OpGroupFMin: *hasResult = true; *hasResultType = true; break;
+ case OpGroupUMin: *hasResult = true; *hasResultType = true; break;
+ case OpGroupSMin: *hasResult = true; *hasResultType = true; break;
+ case OpGroupFMax: *hasResult = true; *hasResultType = true; break;
+ case OpGroupUMax: *hasResult = true; *hasResultType = true; break;
+ case OpGroupSMax: *hasResult = true; *hasResultType = true; break;
+ case OpReadPipe: *hasResult = true; *hasResultType = true; break;
+ case OpWritePipe: *hasResult = true; *hasResultType = true; break;
+ case OpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
+ case OpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
+ case OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
+ case OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
+ case OpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
+ case OpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
+ case OpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
+ case OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
+ case OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
+ case OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
+ case OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
+ case OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
+ case OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
+ case OpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
+ case OpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
+ case OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
+ case OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
+ case OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
+ case OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
+ case OpRetainEvent: *hasResult = false; *hasResultType = false; break;
+ case OpReleaseEvent: *hasResult = false; *hasResultType = false; break;
+ case OpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
+ case OpIsValidEvent: *hasResult = true; *hasResultType = true; break;
+ case OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
+ case OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
+ case OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
+ case OpBuildNDRange: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseGather: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
+ case OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
+ case OpNoLine: *hasResult = false; *hasResultType = false; break;
+ case OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
+ case OpImageSparseRead: *hasResult = true; *hasResultType = true; break;
+ case OpSizeOf: *hasResult = true; *hasResultType = true; break;
+ case OpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
+ case OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
+ case OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
+ case OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
+ case OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
+ case OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
+ case OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
+ case OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
+ case OpModuleProcessed: *hasResult = false; *hasResultType = false; break;
+ case OpExecutionModeId: *hasResult = false; *hasResultType = false; break;
+ case OpDecorateId: *hasResult = false; *hasResultType = false; break;
+ case OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
+ case OpCopyLogical: *hasResult = true; *hasResultType = true; break;
+ case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
+ case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
+ case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
+ case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
+ case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
+ case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break;
+ case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break;
+ case OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break;
+ case OpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break;
+ case OpTerminateRayKHR: *hasResult = false; *hasResultType = false; break;
+ case OpSDot: *hasResult = true; *hasResultType = true; break;
+ case OpUDot: *hasResult = true; *hasResultType = true; break;
+ case OpSUDot: *hasResult = true; *hasResultType = true; break;
+ case OpSDotAccSat: *hasResult = true; *hasResultType = true; break;
+ case OpUDotAccSat: *hasResult = true; *hasResultType = true; break;
+ case OpSUDotAccSat: *hasResult = true; *hasResultType = true; break;
+ case OpTypeRayQueryKHR: *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;
+ case OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+ case OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+ case OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+ case OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+ case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
+ case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
+ case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
+ case OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
+ case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
+ case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
+ case OpEmitMeshTasksEXT: *hasResult = false; *hasResultType = false; break;
+ case OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break;
+ case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
+ case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
+ case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
+ case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
+ case OpTraceNV: *hasResult = false; *hasResultType = false; break;
+ case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break;
+ case OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
+ case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
+ case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
+ case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
+ case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
+ case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
+ case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
+ case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
+ case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
+ case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
+ case OpDemoteToHelperInvocation: *hasResult = false; *hasResultType = false; break;
+ case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
+ case OpConvertUToImageNV: *hasResult = true; *hasResultType = true; break;
+ case OpConvertUToSamplerNV: *hasResult = true; *hasResultType = true; break;
+ case OpConvertImageToUNV: *hasResult = true; *hasResultType = true; break;
+ case OpConvertSamplerToUNV: *hasResult = true; *hasResultType = true; break;
+ case OpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break;
+ case OpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break;
+ case OpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break;
+ case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpConstantFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpAsmINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break;
+ case OpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break;
+ case OpAssumeTrueKHR: *hasResult = false; *hasResultType = false; break;
+ case OpExpectKHR: *hasResult = true; *hasResultType = true; break;
+ case OpDecorateString: *hasResult = false; *hasResultType = false; break;
+ case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
+ case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpArbitraryFloatSinCosPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatCastINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatCastFromIntINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatCastToIntINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatAddINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatSubINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatMulINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatDivINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatGTINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatGEINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatLTINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatLEINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatEQINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatRecipINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatRSqrtINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatCbrtINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatHypotINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatSqrtINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatLogINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatLog2INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatLog10INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatLog1pINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatExpINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatExp2INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatExp10INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatExpm1INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatSinINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatCosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatSinCosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatSinPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatCosPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatASinINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatASinPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatACosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatACosPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatATanINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatATanPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatATan2INTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatPowINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpFixedSqrtINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedSinINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedCosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedSinCosINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedSinPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedCosPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedSinCosPiINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedLogINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFixedExpINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
+ case OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
+ 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;
+ case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
+ case OpTypeBufferSurfaceINTEL: *hasResult = true; *hasResultType = false; break;
+ case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
+ case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
+ }
+}
+#endif /* SPV_ENABLE_UTILITY_CODE */
+
+// Overload operator| for mask bit combining
+
+inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
+inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
+inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
+inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
+inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
+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)); }
+inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
+
+} // end namespace spv
+
+#endif // #ifndef spirv_HPP
diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h
index 486e80d..0969127 100644
--- a/SPIRV/spvIR.h
+++ b/SPIRV/spvIR.h
@@ -111,27 +111,23 @@
void addStringOperand(const char* str)
{
- unsigned int word;
- char* wordString = (char*)&word;
- char* wordPtr = wordString;
- int charCount = 0;
+ unsigned int word = 0;
+ unsigned int shiftAmount = 0;
char c;
+
do {
c = *(str++);
- *(wordPtr++) = c;
- ++charCount;
- if (charCount == 4) {
+ word |= ((unsigned int)c) << shiftAmount;
+ shiftAmount += 8;
+ if (shiftAmount == 32) {
addImmediateOperand(word);
- wordPtr = wordString;
- charCount = 0;
+ word = 0;
+ shiftAmount = 0;
}
} while (c != 0);
// deal with partial last word
- if (charCount > 0) {
- // pad with 0s
- for (; charCount < 4; ++charCount)
- *(wordPtr++) = 0;
+ if (shiftAmount > 0) {
addImmediateOperand(word);
}
}
@@ -353,6 +349,7 @@
const std::vector<Block*>& getBlocks() const { return blocks; }
void addLocalVariable(std::unique_ptr<Instruction> inst);
Id getReturnType() const { return functionInstruction.getTypeId(); }
+ Id getFuncId() const { return functionInstruction.getResultId(); }
void setReturnPrecision(Decoration precision)
{
if (precision == DecorationRelaxedPrecision)
@@ -361,6 +358,14 @@
Decoration getReturnPrecision() const
{ return reducedPrecisionReturn ? DecorationRelaxedPrecision : NoPrecision; }
+ void setDebugLineInfo(Id fileName, int line, int column) {
+ lineInstruction = std::unique_ptr<Instruction>{new Instruction(OpLine)};
+ lineInstruction->addIdOperand(fileName);
+ lineInstruction->addImmediateOperand(line);
+ lineInstruction->addImmediateOperand(column);
+ }
+ bool hasDebugLineInfo() const { return lineInstruction != nullptr; }
+
void setImplicitThis() { implicitThis = true; }
bool hasImplicitThis() const { return implicitThis; }
@@ -377,6 +382,11 @@
void dump(std::vector<unsigned int>& out) const
{
+ // OpLine
+ if (lineInstruction != nullptr) {
+ lineInstruction->dump(out);
+ }
+
// OpFunction
functionInstruction.dump(out);
@@ -395,6 +405,7 @@
Function& operator=(Function&);
Module& parent;
+ std::unique_ptr<Instruction> lineInstruction;
Instruction functionInstruction;
std::vector<Instruction*> parameterInstructions;
std::vector<Block*> blocks;
@@ -461,7 +472,8 @@
// - the OpFunction instruction
// - all the OpFunctionParameter instructions
__inline Function::Function(Id id, Id resultType, Id functionType, Id firstParamId, Module& parent)
- : parent(parent), functionInstruction(id, resultType, OpFunction), implicitThis(false),
+ : parent(parent), lineInstruction(nullptr),
+ functionInstruction(id, resultType, OpFunction), implicitThis(false),
reducedPrecisionReturn(false)
{
// OpFunction
diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt
index 2b163e7..d54a1df 100644
--- a/StandAlone/CMakeLists.txt
+++ b/StandAlone/CMakeLists.txt
@@ -104,24 +104,48 @@
endif()
if(ENABLE_GLSLANG_INSTALL)
- install(TARGETS glslangValidator EXPORT glslangValidatorTargets
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
- install(EXPORT glslangValidatorTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+ install(TARGETS glslangValidator EXPORT glslang-targets)
+
+ # Backward compatibility
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangValidatorTargets.cmake" "
+ message(WARNING \"Using `glslangValidatorTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
+
+ if (NOT TARGET glslang::glslangValidator)
+ include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\")
+ endif()
+
+ add_library(glslangValidator ALIAS glslang::glslangValidator)
+ ")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangValidatorTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
if(ENABLE_SPVREMAPPER)
- install(TARGETS spirv-remap EXPORT spirv-remapTargets
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
- install(EXPORT spirv-remapTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+ install(TARGETS spirv-remap EXPORT glslang-targets)
+
+ # Backward compatibility
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/spirv-remapTargets.cmake" "
+ message(WARNING \"Using `spirv-remapTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
+
+ if (NOT TARGET glslang::spirv-remap)
+ include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\")
+ endif()
+
+ add_library(spirv-remap ALIAS glslang::spirv-remap)
+ ")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/spirv-remapTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
endif()
- if(BUILD_SHARED_LIBS)
- install(TARGETS glslang-default-resource-limits EXPORT glslang-default-resource-limitsTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
- else()
- install(TARGETS glslang-default-resource-limits EXPORT glslang-default-resource-limitsTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- endif()
- install(EXPORT glslang-default-resource-limitsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+ install(TARGETS glslang-default-resource-limits EXPORT glslang-targets)
+
+ # Backward compatibility
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" "
+ message(WARNING \"Using `glslang-default-resource-limitsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
+
+ if (NOT TARGET glslang::glslang-default-resource-limits)
+ include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\")
+ endif()
+
+ add_library(glslang-default-resource-limits ALIAS glslang::glslang-default-resource-limits)
+ ")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+
endif()
diff --git a/StandAlone/ResourceLimits.cpp b/StandAlone/ResourceLimits.cpp
index 7c7f4c4..1a76bf6 100644
--- a/StandAlone/ResourceLimits.cpp
+++ b/StandAlone/ResourceLimits.cpp
@@ -134,6 +134,15 @@
/* .maxTaskWorkGroupSizeY_NV = */ 1,
/* .maxTaskWorkGroupSizeZ_NV = */ 1,
/* .maxMeshViewCountNV = */ 4,
+ /* .maxMeshOutputVerticesEXT = */ 256,
+ /* .maxMeshOutputPrimitivesEXT = */ 256,
+ /* .maxMeshWorkGroupSizeX_EXT = */ 128,
+ /* .maxMeshWorkGroupSizeY_EXT = */ 128,
+ /* .maxMeshWorkGroupSizeZ_EXT = */ 128,
+ /* .maxTaskWorkGroupSizeX_EXT = */ 128,
+ /* .maxTaskWorkGroupSizeY_EXT = */ 128,
+ /* .maxTaskWorkGroupSizeZ_EXT = */ 128,
+ /* .maxMeshViewCountEXT = */ 4,
/* .maxDualSourceDrawBuffersEXT = */ 1,
/* .limits = */ {
@@ -244,6 +253,15 @@
<< "MaxTaskWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_NV << "\n"
<< "MaxTaskWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_NV << "\n"
<< "MaxMeshViewCountNV " << DefaultTBuiltInResource.maxMeshViewCountNV << "\n"
+ << "MaxMeshOutputVerticesEXT " << DefaultTBuiltInResource.maxMeshOutputVerticesEXT << "\n"
+ << "MaxMeshOutputPrimitivesEXT " << DefaultTBuiltInResource.maxMeshOutputPrimitivesEXT << "\n"
+ << "MaxMeshWorkGroupSizeX_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeX_EXT << "\n"
+ << "MaxMeshWorkGroupSizeY_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeY_EXT << "\n"
+ << "MaxMeshWorkGroupSizeZ_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeZ_EXT << "\n"
+ << "MaxTaskWorkGroupSizeX_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeX_EXT << "\n"
+ << "MaxTaskWorkGroupSizeY_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_EXT << "\n"
+ << "MaxTaskWorkGroupSizeZ_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_EXT << "\n"
+ << "MaxMeshViewCountEXT " << DefaultTBuiltInResource.maxMeshViewCountEXT << "\n"
<< "MaxDualSourceDrawBuffersEXT " << DefaultTBuiltInResource.maxDualSourceDrawBuffersEXT << "\n"
<< "nonInductiveForLoops " << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n"
<< "whileLoops " << DefaultTBuiltInResource.limits.whileLoops << "\n"
@@ -469,6 +487,24 @@
resources->maxTaskWorkGroupSizeZ_NV = value;
else if (tokenStr == "MaxMeshViewCountNV")
resources->maxMeshViewCountNV = value;
+ else if (tokenStr == "MaxMeshOutputVerticesEXT")
+ resources->maxMeshOutputVerticesEXT = value;
+ else if (tokenStr == "MaxMeshOutputPrimitivesEXT")
+ resources->maxMeshOutputPrimitivesEXT = value;
+ else if (tokenStr == "MaxMeshWorkGroupSizeX_EXT")
+ resources->maxMeshWorkGroupSizeX_EXT = value;
+ else if (tokenStr == "MaxMeshWorkGroupSizeY_EXT")
+ resources->maxMeshWorkGroupSizeY_EXT = value;
+ else if (tokenStr == "MaxMeshWorkGroupSizeZ_EXT")
+ resources->maxMeshWorkGroupSizeZ_EXT = value;
+ else if (tokenStr == "MaxTaskWorkGroupSizeX_EXT")
+ resources->maxTaskWorkGroupSizeX_EXT = value;
+ else if (tokenStr == "MaxTaskWorkGroupSizeY_EXT")
+ resources->maxTaskWorkGroupSizeY_EXT = value;
+ else if (tokenStr == "MaxTaskWorkGroupSizeZ_EXT")
+ resources->maxTaskWorkGroupSizeZ_EXT = value;
+ else if (tokenStr == "MaxMeshViewCountEXT")
+ resources->maxMeshViewCountEXT = value;
else if (tokenStr == "nonInductiveForLoops")
resources->limits.nonInductiveForLoops = (value != 0);
else if (tokenStr == "whileLoops")
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 23e510c..edde81e 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -113,6 +113,8 @@
bool SpvToolsValidate = false;
bool NaNClamp = false;
bool stripDebugInfo = false;
+bool emitNonSemanticShaderDebugInfo = false;
+bool emitNonSemanticShaderDebugSource = false;
bool beQuiet = false;
bool VulkanRulesRelaxed = false;
bool autoSampledTextures = false;
@@ -177,6 +179,8 @@
const char* variableName = nullptr;
bool HlslEnable16BitTypes = false;
bool HlslDX9compatible = false;
+bool HlslDxPositionW = false;
+bool EnhancedMsgs = false;
bool DumpBuiltinSymbols = false;
std::vector<std::string> IncludeDirectoryList;
@@ -190,6 +194,9 @@
glslang::EShTargetLanguage TargetLanguage = glslang::EShTargetNone;
glslang::EShTargetLanguageVersion TargetVersion; // not valid until TargetLanguage is set
+// GLSL version
+int GlslVersion = 0; // GLSL version specified on CLI, overrides #version in shader source
+
std::vector<std::string> Processes; // what should be recorded by OpModuleProcessed, or equivalent
// Per descriptor-set binding base data
@@ -288,8 +295,8 @@
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;
+ case EShLangMesh : name = "mesh.spv"; break;
+ case EShLangTask : name = "task.spv"; break;
default: name = "unknown"; break;
}
} else
@@ -652,6 +659,48 @@
lowerword == "flatten-uniform-array" ||
lowerword == "fua") {
Options |= EOptionFlattenUniformArrays;
+ } else if (lowerword == "glsl-version") {
+ if (argc > 1) {
+ if (strcmp(argv[1], "100") == 0) {
+ GlslVersion = 100;
+ } else if (strcmp(argv[1], "110") == 0) {
+ GlslVersion = 110;
+ } else if (strcmp(argv[1], "120") == 0) {
+ GlslVersion = 120;
+ } else if (strcmp(argv[1], "130") == 0) {
+ GlslVersion = 130;
+ } else if (strcmp(argv[1], "140") == 0) {
+ GlslVersion = 140;
+ } else if (strcmp(argv[1], "150") == 0) {
+ GlslVersion = 150;
+ } else if (strcmp(argv[1], "300es") == 0) {
+ GlslVersion = 300;
+ } else if (strcmp(argv[1], "310es") == 0) {
+ GlslVersion = 310;
+ } else if (strcmp(argv[1], "320es") == 0) {
+ GlslVersion = 320;
+ } else if (strcmp(argv[1], "330") == 0) {
+ GlslVersion = 330;
+ } else if (strcmp(argv[1], "400") == 0) {
+ GlslVersion = 400;
+ } else if (strcmp(argv[1], "410") == 0) {
+ GlslVersion = 410;
+ } else if (strcmp(argv[1], "420") == 0) {
+ GlslVersion = 420;
+ } else if (strcmp(argv[1], "430") == 0) {
+ GlslVersion = 430;
+ } else if (strcmp(argv[1], "440") == 0) {
+ GlslVersion = 440;
+ } else if (strcmp(argv[1], "450") == 0) {
+ GlslVersion = 450;
+ } else if (strcmp(argv[1], "460") == 0) {
+ GlslVersion = 460;
+ } else
+ Error("--glsl-version expected one of: 100, 110, 120, 130, 140, 150,\n"
+ "300es, 310es, 320es, 330\n"
+ "400, 410, 420, 430, 440, 450, 460");
+ }
+ bumpArg();
} else if (lowerword == "hlsl-offsets") {
Options |= EOptionHlslOffsets;
} else if (lowerword == "hlsl-iomap" ||
@@ -662,6 +711,10 @@
HlslEnable16BitTypes = true;
} else if (lowerword == "hlsl-dx9-compatible") {
HlslDX9compatible = true;
+ } else if (lowerword == "hlsl-dx-position-w") {
+ HlslDxPositionW = true;
+ } else if (lowerword == "enhanced-msgs") {
+ EnhancedMsgs = true;
} else if (lowerword == "auto-sampled-textures") {
autoSampledTextures = true;
} else if (lowerword == "invert-y" || // synonyms
@@ -764,6 +817,9 @@
} else if (strcmp(argv[1], "vulkan1.2") == 0) {
setVulkanSpv();
ClientVersion = glslang::EShTargetVulkan_1_2;
+ } else if (strcmp(argv[1], "vulkan1.3") == 0) {
+ setVulkanSpv();
+ ClientVersion = glslang::EShTargetVulkan_1_3;
} else if (strcmp(argv[1], "opengl") == 0) {
setOpenGlSpv();
ClientVersion = glslang::EShTargetOpenGL_450;
@@ -785,9 +841,13 @@
} else if (strcmp(argv[1], "spirv1.5") == 0) {
TargetLanguage = glslang::EShTargetSpv;
TargetVersion = glslang::EShTargetSpv_1_5;
+ } else if (strcmp(argv[1], "spirv1.6") == 0) {
+ TargetLanguage = glslang::EShTargetSpv;
+ TargetVersion = glslang::EShTargetSpv_1_6;
} else
- 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");
+ Error("--target-env expected one of: vulkan1.0, vulkan1.1, vulkan1.2,\n"
+ "vulkan1.3, opengl, spirv1.0, spirv1.1, spirv1.2, spirv1.3,\n"
+ "spirv1.4, spirv1.5 or spirv1.6");
}
bumpArg();
} else if (lowerword == "undef-macro" ||
@@ -911,11 +971,21 @@
case 'g':
// Override previous -g or -g0 argument
stripDebugInfo = false;
+ emitNonSemanticShaderDebugInfo = false;
Options &= ~EOptionDebug;
if (argv[0][2] == '0')
stripDebugInfo = true;
- else
+ else {
Options |= EOptionDebug;
+ if (argv[0][2] == 'V') {
+ emitNonSemanticShaderDebugInfo = true;
+ if (argv[0][3] == 'S') {
+ emitNonSemanticShaderDebugSource = true;
+ } else {
+ emitNonSemanticShaderDebugSource = false;
+ }
+ }
+ }
break;
case 'h':
usage();
@@ -1012,6 +1082,10 @@
TargetLanguage = glslang::EShTargetSpv;
TargetVersion = glslang::EShTargetSpv_1_5;
break;
+ case glslang::EShTargetVulkan_1_3:
+ TargetLanguage = glslang::EShTargetSpv;
+ TargetVersion = glslang::EShTargetSpv_1_6;
+ break;
case glslang::EShTargetOpenGL_450:
TargetLanguage = glslang::EShTargetSpv;
TargetVersion = glslang::EShTargetSpv_1_0;
@@ -1059,6 +1133,8 @@
messages = (EShMessages)(messages | EShMsgHlslDX9Compatible);
if (DumpBuiltinSymbols)
messages = (EShMessages)(messages | EShMsgBuiltinSymbolTable);
+ if (EnhancedMsgs)
+ messages = (EShMessages)(messages | EShMsgEnhanced);
}
//
@@ -1149,6 +1225,27 @@
}
};
+// Writes a string into a depfile, escaping some special characters following the Makefile rules.
+static void writeEscapedDepString(std::ofstream& file, const std::string& str)
+{
+ for (char c : str) {
+ switch (c) {
+ case ' ':
+ case ':':
+ case '#':
+ case '[':
+ case ']':
+ case '\\':
+ file << '\\';
+ break;
+ case '$':
+ file << '$';
+ break;
+ }
+ file << c;
+ }
+}
+
// Writes a depfile similar to gcc -MMD foo.c
bool writeDepFile(std::string depfile, std::vector<std::string>& binaryFiles, const std::vector<std::string>& sources)
{
@@ -1156,10 +1253,12 @@
if (file.fail())
return false;
- for (auto it = binaryFiles.begin(); it != binaryFiles.end(); it++) {
- file << *it << ":";
- for (auto it = sources.begin(); it != sources.end(); it++) {
- file << " " << *it;
+ for (auto binaryFile = binaryFiles.begin(); binaryFile != binaryFiles.end(); binaryFile++) {
+ writeEscapedDepString(file, *binaryFile);
+ file << ":";
+ for (auto sourceFile = sources.begin(); sourceFile != sources.end(); sourceFile++) {
+ file << " ";
+ writeEscapedDepString(file, *sourceFile);
}
file << std::endl;
}
@@ -1209,6 +1308,8 @@
shader->setSourceEntryPoint(sourceEntryPointName);
}
+ shader->setOverrideVersion(GlslVersion);
+
std::string intrinsicString = getIntrinsic(compUnit.text, compUnit.count);
PreambleString = "";
@@ -1284,6 +1385,15 @@
if (Options & EOptionInvertY)
shader->setInvertY(true);
+ if (HlslDxPositionW)
+ shader->setDxPositionW(true);
+
+ if (EnhancedMsgs)
+ shader->setEnhancedMsgs();
+
+ if (emitNonSemanticShaderDebugInfo)
+ shader->setDebugInfo(true);
+
// Set up the environment, some subsettings take precedence over earlier
// ways of setting things.
if (Options & EOptionSpv) {
@@ -1375,9 +1485,15 @@
std::vector<unsigned int> spirv;
spv::SpvBuildLogger logger;
glslang::SpvOptions spvOptions;
- if (Options & EOptionDebug)
+ if (Options & EOptionDebug) {
spvOptions.generateDebugInfo = true;
- else if (stripDebugInfo)
+ if (emitNonSemanticShaderDebugInfo) {
+ spvOptions.emitNonSemanticShaderDebugInfo = true;
+ if (emitNonSemanticShaderDebugSource) {
+ spvOptions.emitNonSemanticShaderDebugSource = true;
+ }
+ }
+ } else if (stripDebugInfo)
spvOptions.stripDebugInfo = true;
spvOptions.disableOptimizer = (Options & EOptionOptimizeDisable) != 0;
spvOptions.optimizeSize = (Options & EOptionOptimizeSize) != 0;
@@ -1685,9 +1801,9 @@
else if (stageName == "rcall")
return EShLangCallable;
else if (stageName == "mesh")
- return EShLangMeshNV;
+ return EShLangMesh;
else if (stageName == "task")
- return EShLangTaskNV;
+ return EShLangTask;
usage();
return EShLangVertex;
@@ -1811,6 +1927,8 @@
" SPV_GOOGLE_hlsl_functionality1 extension\n"
" -g generate debug information\n"
" -g0 strip debug information\n"
+ " -gV generate nonsemantic shader debug information\n"
+ " -gVS generate nonsemantic shader debug information with source\n"
" -h print this usage message\n"
" -i intermediate tree (glslang AST) is printed out\n"
" -l link all input files together to form a single module\n"
@@ -1840,6 +1958,11 @@
" -dumpfullversion | -dumpversion print bare major.minor.patchlevel\n"
" --flatten-uniform-arrays | --fua flatten uniform texture/sampler arrays to\n"
" scalars\n"
+ " --glsl-version {100 | 110 | 120 | 130 | 140 | 150 |\n"
+ " 300es | 310es | 320es | 330\n"
+ " 400 | 410 | 420 | 430 | 440 | 450 | 460}\n"
+ " set GLSL version, overrides #version\n"
+ " in shader sourcen\n"
" --hlsl-offsets allow block offsets to follow HLSL rules\n"
" works independently of source language\n"
" --hlsl-iomap perform IO mapping in HLSL register space\n"
@@ -1847,7 +1970,10 @@
" --hlsl-dx9-compatible interprets sampler declarations as a\n"
" texture/sampler combo like DirectX9 would,\n"
" and recognizes DirectX9-specific semantics\n"
+ " --hlsl-dx-position-w W component of SV_Position in HLSL fragment\n"
+ " shaders compatible with DirectX\n"
" --invert-y | --iy invert position.Y output in vertex shader\n"
+ " --enhanced-msgs print more readable error messages (GLSL only)\n"
" --keep-uncalled | --ku don't eliminate uncalled functions\n"
" --nan-clamp favor non-NaN operand in min, max, and clamp\n"
" --no-storage-format | --nsf use Unknown image format\n"
@@ -1922,8 +2048,9 @@
" --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 | vulkan1.2 | opengl | \n"
- " spirv1.0 | spirv1.1 | spirv1.2 | spirv1.3 | spirv1.4 | spirv1.5}\n"
+ " --target-env {vulkan1.0 | vulkan1.1 | vulkan1.2 | vulkan1.3 | opengl |\n"
+ " spirv1.0 | spirv1.1 | spirv1.2 | spirv1.3 | spirv1.4 |\n"
+ " spirv1.5 | spirv1.6}\n"
" Set the execution environment that the\n"
" generated code will be executed in.\n"
" Defaults to:\n"
@@ -1932,6 +2059,7 @@
" * spirv1.0 under --target-env vulkan1.0\n"
" * spirv1.3 under --target-env vulkan1.1\n"
" * spirv1.5 under --target-env vulkan1.2\n"
+ " * spirv1.6 under --target-env vulkan1.3\n"
" Multiple --target-env can be specified.\n"
" --variable-name <name>\n"
" --vn <name> creates a C header file that contains a\n"
diff --git a/StandAlone/spirv-remap.cpp b/StandAlone/spirv-remap.cpp
index 48878c3..15c3ac5 100644
--- a/StandAlone/spirv-remap.cpp
+++ b/StandAlone/spirv-remap.cpp
@@ -105,6 +105,32 @@
}
}
+ // Read strings from a file
+ void read(std::vector<std::string>& strings, const std::string& inFilename, int verbosity)
+ {
+ std::ifstream fp;
+
+ if (verbosity > 0)
+ logHandler(std::string(" reading: ") + inFilename);
+
+ strings.clear();
+ fp.open(inFilename, std::fstream::in);
+
+ if (fp.fail())
+ errHandler("error opening file for read: ");
+
+ std::string line;
+ while (std::getline(fp, line))
+ {
+ // Ignore empty lines and lines starting with the comment marker '#'.
+ if (line.length() == 0 || line[0] == '#') {
+ continue;
+ }
+
+ strings.push_back(line);
+ }
+ }
+
void write(std::vector<SpvWord>& spv, const std::string& outFile, int verbosity)
{
if (outFile.empty())
@@ -144,6 +170,7 @@
<< " [--dce (all|types|funcs)]"
<< " [--opt (all|loadstore)]"
<< " [--strip-all | --strip all | -s]"
+ << " [--strip-white-list]"
<< " [--do-everything]"
<< " --input | -i file1 [file2...] --output|-o DESTDIR"
<< std::endl;
@@ -156,16 +183,18 @@
// grind through each SPIR in turn
void execute(const std::vector<std::string>& inputFile, const std::string& outputDir,
- int opts, int verbosity)
+ const std::string& whiteListFile, int opts, int verbosity)
{
+ std::vector<std::string> whiteListStrings;
+ if(!whiteListFile.empty())
+ read(whiteListStrings, whiteListFile, verbosity);
+
for (auto it = inputFile.cbegin(); it != inputFile.cend(); ++it) {
const std::string &filename = *it;
std::vector<SpvWord> spv;
read(spv, filename, verbosity);
- spv::spirvbin_t(verbosity).remap(spv, opts);
-
+ spv::spirvbin_t(verbosity).remap(spv, whiteListStrings, opts);
const std::string outfile = outputDir + path_sep_char() + basename(filename);
-
write(spv, outfile, verbosity);
}
@@ -176,6 +205,7 @@
// Parse command line options
void parseCmdLine(int argc, char** argv, std::vector<std::string>& inputFile,
std::string& outputDir,
+ std::string& stripWhiteListFile,
int& options,
int& verbosity)
{
@@ -245,6 +275,9 @@
options = options | spv::spirvbin_t::STRIP;
++a;
}
+ } else if (arg == "--strip-white-list") {
+ ++a;
+ stripWhiteListFile = argv[a++];
} else if (arg == "--dce") {
// Parse comma (or colon, etc) separated list of things to dce
++a;
@@ -315,6 +348,7 @@
{
std::vector<std::string> inputFile;
std::string outputDir;
+ std::string whiteListFile;
int opts;
int verbosity;
@@ -329,13 +363,13 @@
if (argc < 2)
usage(argv[0]);
- parseCmdLine(argc, argv, inputFile, outputDir, opts, verbosity);
+ parseCmdLine(argc, argv, inputFile, outputDir, whiteListFile, opts, verbosity);
if (outputDir.empty())
usage(argv[0], "Output directory required");
// Main operations: read, remap, and write.
- execute(inputFile, outputDir, opts, verbosity);
+ execute(inputFile, outputDir, whiteListFile, opts, verbosity);
// If we get here, everything went OK! Nothing more to be done.
}
diff --git a/Test/150.frag b/Test/150.frag
index 228e4f0..90b1e27 100644
--- a/Test/150.frag
+++ b/Test/150.frag
@@ -111,8 +111,8 @@
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
+ 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
@@ -138,21 +138,21 @@
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(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(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
+ lod = textureQueryLOD(sampBuf, pf); // ERROR
+ lod = textureQueryLOD(sampRect, pf2); // ERROR
}
// Test extension GL_EXT_shader_integer_mix
diff --git a/Test/BestMatchFunction.vert b/Test/BestMatchFunction.vert
new file mode 100644
index 0000000..eb09233
--- /dev/null
+++ b/Test/BestMatchFunction.vert
@@ -0,0 +1,20 @@
+#version 150
+#extension GL_ARB_gpu_shader5 : require
+
+uniform ivec4 u1;
+uniform uvec4 u2;
+out vec4 result;
+vec4 f(in vec4 a, in vec4 b){ return a * b;} // choice 1
+vec4 f(in uvec4 a, in uvec4 b){ return vec4(a - b);} // choice 2
+
+void main()
+{
+ result = f(u1, u2); // should match choice 2. which have less implicit conversion.
+ switch (gl_VertexID)
+ {
+ case 0: gl_Position = vec4(-1.0, 1.0, 0.0, 1.0); break;
+ case 1: gl_Position = vec4( 1.0, 1.0, 0.0, 1.0); break;
+ case 2: gl_Position = vec4(-1.0,-1.0, 0.0, 1.0); break;
+ case 3: gl_Position = vec4( 1.0,-1.0, 0.0, 1.0); break;
+ }
+}
diff --git a/Test/EndStreamPrimitive.geom b/Test/EndStreamPrimitive.geom
new file mode 100644
index 0000000..a654ebc
--- /dev/null
+++ b/Test/EndStreamPrimitive.geom
@@ -0,0 +1,20 @@
+#version 150 core
+#extension GL_ARB_gpu_shader5 : require
+layout(points) in;
+layout(points, max_vertices = 1) out;
+layout(stream=0) out float output1;
+layout(stream=0) out float output2;
+layout(stream=1) out float output3;
+layout(stream=1) out float output4;
+uniform uint stream;
+void main() {
+
+ output1 = 1.0;
+ output2 = 2.0;
+ EmitStreamVertex(0);
+ EndStreamPrimitive(0);
+ output3 = 3.0;
+ output4 = 4.0;
+ EmitStreamVertex(1);
+ EndStreamPrimitive(1);
+}
\ No newline at end of file
diff --git a/Test/GL_ARB_fragment_coord_conventions.vert b/Test/GL_ARB_fragment_coord_conventions.vert
new file mode 100644
index 0000000..962734f
--- /dev/null
+++ b/Test/GL_ARB_fragment_coord_conventions.vert
@@ -0,0 +1,27 @@
+#version 140
+
+#extension GL_ARB_fragment_coord_conventions: require
+#extension GL_ARB_explicit_attrib_location : enable
+
+
+#if !defined GL_ARB_fragment_coord_conventions
+# error GL_ARB_fragment_coord_conventions is not defined
+#elif GL_ARB_fragment_coord_conventions != 1
+# error GL_ARB_fragment_coord_conventions is not equal to 1
+#endif
+
+
+layout (location = 0) in vec4 pos;
+out vec4 i;
+
+uniform float gtf_windowWidth;
+uniform float gtf_windowHeight;
+uniform float n;
+uniform float f;
+
+void main()
+{
+ gl_Position = pos;
+ i = vec4((pos.x+1.0)*0.5*gtf_windowWidth, (pos.y+1.0)*0.5*gtf_windowHeight, (f-n)*0.5*pos.z + (f+n)*0.5, pos.w);
+}
+
diff --git a/Test/baseLegalResults/hlsl.aliasOpaque.frag.out b/Test/baseLegalResults/hlsl.aliasOpaque.frag.out
index 2afdb10..100f6d7 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 89
Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenOpaque.frag.out b/Test/baseLegalResults/hlsl.flattenOpaque.frag.out
index 7bb33e6..be1637f 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 190
Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out
index 0e8583f..18d7694 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 139
Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out
index fe858ef..914d9b5 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 99
Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenSubset.frag.out b/Test/baseLegalResults/hlsl.flattenSubset.frag.out
index 0edf712..2be41f0 100644
--- a/Test/baseLegalResults/hlsl.flattenSubset.frag.out
+++ b/Test/baseLegalResults/hlsl.flattenSubset.frag.out
@@ -1,24 +1,22 @@
hlsl.flattenSubset.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 67
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 47 50
+ EntryPoint Fragment 4 "main" 50
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 21 "samp"
Name 33 "tex"
- Name 47 "vpos"
Name 50 "@entryPointOutput"
Decorate 21(samp) DescriptorSet 0
Decorate 21(samp) Binding 0
Decorate 33(tex) DescriptorSet 0
Decorate 33(tex) Binding 1
- Decorate 47(vpos) Location 0
Decorate 50(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
@@ -34,8 +32,6 @@
39: TypeVector 6(float) 2
40: 6(float) Constant 1056964608
41: 39(fvec2) ConstantComposite 40 40
- 46: TypePointer Input 7(fvec4)
- 47(vpos): 46(ptr) Variable Input
49: TypePointer Output 7(fvec4)
50(@entryPointOutput): 49(ptr) Variable Output
4(main): 2 Function None 3
diff --git a/Test/baseLegalResults/hlsl.flattenSubset2.frag.out b/Test/baseLegalResults/hlsl.flattenSubset2.frag.out
index 00bd55b..656ff73 100644
--- a/Test/baseLegalResults/hlsl.flattenSubset2.frag.out
+++ b/Test/baseLegalResults/hlsl.flattenSubset2.frag.out
@@ -1,18 +1,16 @@
hlsl.flattenSubset2.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 53
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 49 52
+ EntryPoint Fragment 4 "main" 52
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
- Name 49 "vpos"
Name 52 "@entryPointOutput"
- Decorate 49(vpos) Location 0
Decorate 52(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
@@ -20,8 +18,6 @@
7: TypeVector 6(float) 4
43: 6(float) Constant 0
44: 7(fvec4) ConstantComposite 43 43 43 43
- 48: TypePointer Input 7(fvec4)
- 49(vpos): 48(ptr) Variable Input
51: TypePointer Output 7(fvec4)
52(@entryPointOutput): 51(ptr) Variable Output
4(main): 2 Function None 3
diff --git a/Test/baseLegalResults/hlsl.intrinsics.evalfns.frag.out b/Test/baseLegalResults/hlsl.intrinsics.evalfns.frag.out
index 564f0f4..936df71 100644
--- a/Test/baseLegalResults/hlsl.intrinsics.evalfns.frag.out
+++ b/Test/baseLegalResults/hlsl.intrinsics.evalfns.frag.out
@@ -1,6 +1,6 @@
hlsl.intrinsics.evalfns.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 274
Capability Shader
diff --git a/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out b/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
index f45a768..b664098 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 164
Capability Shader
diff --git a/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out b/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out
index 8975ed2..8f3ac26 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 36
Capability Shader
diff --git a/Test/baseResults/150.frag.out b/Test/baseResults/150.frag.out
index 2192e14..ba15b5c 100644
--- a/Test/baseResults/150.frag.out
+++ b/Test/baseResults/150.frag.out
@@ -2,22 +2,23 @@
ERROR: 0:4: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord
ERROR: 0:5: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord
ERROR: 0:6: 'layout qualifier' : can only apply origin_upper_left and pixel_center_origin to gl_FragCoord
-ERROR: 0:14: 'gl_FragCoord' : cannot redeclare after use
ERROR: 0:50: 'gl_PerFragment' : undeclared identifier
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:80: 'floatBitsToInt' : required extension not requested: Possible extensions include:
+GL_ARB_shader_bit_encoding
+GL_ARB_gpu_shader5
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: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: '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: 18 compilation errors. No code generated.
+ERROR: 17 compilation errors. No code generated.
Shader version: 150
diff --git a/Test/baseResults/150.geom.out b/Test/baseResults/150.geom.out
index 92b8e1a..c5a31f5 100644
--- a/Test/baseResults/150.geom.out
+++ b/Test/baseResults/150.geom.out
@@ -2,8 +2,8 @@
ERROR: 0:15: 'fromVertex' : block instance name redefinition
ERROR: 0:19: 'fromVertex' : redefinition
ERROR: 0:21: 'fooC' : block instance name redefinition
-ERROR: 0:29: 'EmitStreamVertex' : no matching overloaded function found
-ERROR: 0:30: 'EndStreamPrimitive' : no matching overloaded function found
+ERROR: 0:29: 'if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5' : required extension not requested: GL_ARB_gpu_shader5
+ERROR: 0:30: 'if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5' : required extension not requested: GL_ARB_gpu_shader5
ERROR: 0:44: 'stream' : can only be used on an output
ERROR: 0:45: 'stream' : can only be used on an output
ERROR: 0:46: 'stream' : can only be used on an output
@@ -49,10 +49,12 @@
0:27 Sequence
0:27 EmitVertex ( global void)
0:28 EndPrimitive ( global void)
-0:29 Constant:
-0:29 0.000000
-0:30 Constant:
-0:30 0.000000
+0:29 EmitStreamVertex ( global void)
+0:29 Constant:
+0:29 1 (const int)
+0:30 EndStreamPrimitive ( global void)
+0:30 Constant:
+0:30 0 (const int)
0:32 move second child to first child ( temp 3-component vector of float)
0:32 color: direct index for structure (layout( stream=0) out 3-component vector of float)
0:32 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-component vector of float color})
@@ -190,10 +192,12 @@
0:27 Sequence
0:27 EmitVertex ( global void)
0:28 EndPrimitive ( global void)
-0:29 Constant:
-0:29 0.000000
-0:30 Constant:
-0:30 0.000000
+0:29 EmitStreamVertex ( global void)
+0:29 Constant:
+0:29 1 (const int)
+0:30 EndStreamPrimitive ( global void)
+0:30 Constant:
+0:30 0 (const int)
0:32 move second child to first child ( temp 3-component vector of float)
0:32 color: direct index for structure (layout( stream=0) out 3-component vector of float)
0:32 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-component vector of float color})
diff --git a/Test/baseResults/150.tesc.out b/Test/baseResults/150.tesc.out
index 535a8a6..78b32da 100644
--- a/Test/baseResults/150.tesc.out
+++ b/Test/baseResults/150.tesc.out
@@ -627,7 +627,7 @@
ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out
ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a
ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb
-ERROR: 0:26: 'gl_PointSize' : no such field in structure
+ERROR: 0:26: 'gl_PointSize' : no such field in structure 'gl_out'
ERROR: 0:26: 'assign' : cannot convert from ' temp float' to ' temp block{ out 4-component vector of float Position gl_Position}'
ERROR: 0:29: 'out' : type must be an array: outf
ERROR: 0:43: 'vertices' : must be greater than 0
@@ -940,8 +940,9 @@
main(
ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
main(
-ERROR: Linking tessellation control stage: Types must match:
- outa: " global 4-element array of int" versus " global 1-element array of int"
+ERROR: Linking tessellation control and tessellation control stages: Array sizes must be compatible:
+ tessellation control stage: " int outa[4]"
+ tessellation control stage: " int outa[1]"
ERROR: Linking tessellation control stage: can't handle multiple entry points per stage
ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
main(
@@ -951,8 +952,9 @@
foo(
ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
main(
-ERROR: Linking tessellation control stage: Types must match:
- gl_out: " out 4-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 2-element array of float ClipDistance gl_ClipDistance}" versus " out 3-element array of block{ out 4-component vector of float Position gl_Position}"
+ERROR: Linking tessellation control and tessellation control stages: tessellation control block member has no corresponding member in tessellation control block:
+ tessellation control stage: Block: gl_PerVertex, Member: gl_PointSize
+ tessellation control stage: Block: gl_PerVertex, Member: n/a
Linked tessellation evaluation stage:
diff --git a/Test/baseResults/310.geom.out b/Test/baseResults/310.geom.out
index b0dabc3..2fa5d11 100644
--- a/Test/baseResults/310.geom.out
+++ b/Test/baseResults/310.geom.out
@@ -6,7 +6,7 @@
ERROR: 0:44: 'EndStreamPrimitive' : no matching overloaded function found
ERROR: 0:47: 'gl_ClipDistance' : undeclared identifier
ERROR: 0:47: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector
-ERROR: 0:48: 'gl_ClipDistance' : no such field in structure
+ERROR: 0:48: 'gl_ClipDistance' : no such field in structure 'gl_in'
ERROR: 0:48: 'expression' : left of '[' is not of type array, matrix, or vector
ERROR: 0:47: 'assign' : l-value required (can't modify a const)
ERROR: 0:55: 'selecting output stream' : not supported with this profile: es
diff --git a/Test/baseResults/310.tesc.out b/Test/baseResults/310.tesc.out
index 25ce6ee..bd4c1bd 100644
--- a/Test/baseResults/310.tesc.out
+++ b/Test/baseResults/310.tesc.out
@@ -6,12 +6,12 @@
ERROR: 0:26: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
GL_OES_tessellation_point_size
-ERROR: 0:27: 'gl_ClipDistance' : no such field in structure
+ERROR: 0:27: 'gl_ClipDistance' : no such field in structure 'gl_in'
ERROR: 0:27: 'expression' : left of '[' is not of type array, matrix, or vector
ERROR: 0:34: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
GL_OES_tessellation_point_size
-ERROR: 0:35: 'gl_ClipDistance' : no such field in structure
+ERROR: 0:35: 'gl_ClipDistance' : no such field in structure 'gl_out'
ERROR: 0:35: 'expression' : left of '[' is not of type array, matrix, or vector
ERROR: 0:35: 'assign' : l-value required (can't modify a const)
ERROR: 0:41: '' : tessellation control barrier() cannot be placed within flow control
diff --git a/Test/baseResults/310.tese.out b/Test/baseResults/310.tese.out
index 2f23d9b..5eecaff 100644
--- a/Test/baseResults/310.tese.out
+++ b/Test/baseResults/310.tese.out
@@ -10,7 +10,7 @@
ERROR: 0:37: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
GL_OES_tessellation_point_size
-ERROR: 0:38: 'gl_ClipDistance' : no such field in structure
+ERROR: 0:38: 'gl_ClipDistance' : no such field in structure 'gl_in'
ERROR: 0:38: 'expression' : left of '[' is not of type array, matrix, or vector
ERROR: 0:47: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
@@ -43,7 +43,7 @@
ERROR: 0:103: 'location' : overlapping use of location 24
ERROR: 0:105: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved
ERROR: 0:113: 'sample' : Reserved word.
-ERROR: 0:119: 'gl_PointSize' : no such field in structure
+ERROR: 0:119: 'gl_PointSize' : no such field in structure 'gl_in'
ERROR: 0:119: '=' : cannot convert from ' temp block{ in highp 4-component vector of float Position gl_Position}' to ' temp highp float'
ERROR: 0:127: 'gl_BoundingBoxOES' : undeclared identifier
ERROR: 43 compilation errors. No code generated.
diff --git a/Test/baseResults/320.geom.out b/Test/baseResults/320.geom.out
index f333766..cdaacb9 100644
--- a/Test/baseResults/320.geom.out
+++ b/Test/baseResults/320.geom.out
@@ -6,7 +6,7 @@
ERROR: 0:34: 'EndStreamPrimitive' : no matching overloaded function found
ERROR: 0:37: 'gl_ClipDistance' : undeclared identifier
ERROR: 0:37: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector
-ERROR: 0:38: 'gl_ClipDistance' : no such field in structure
+ERROR: 0:38: 'gl_ClipDistance' : no such field in structure 'gl_in'
ERROR: 0:38: 'expression' : left of '[' is not of type array, matrix, or vector
ERROR: 0:37: 'assign' : l-value required (can't modify a const)
ERROR: 0:45: 'selecting output stream' : not supported with this profile: es
diff --git a/Test/baseResults/320.tesc.out b/Test/baseResults/320.tesc.out
index 6bb52b3..67848d9 100644
--- a/Test/baseResults/320.tesc.out
+++ b/Test/baseResults/320.tesc.out
@@ -6,12 +6,12 @@
ERROR: 0:24: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
GL_OES_tessellation_point_size
-ERROR: 0:25: 'gl_ClipDistance' : no such field in structure
+ERROR: 0:25: 'gl_ClipDistance' : no such field in structure 'gl_in'
ERROR: 0:25: 'expression' : left of '[' is not of type array, matrix, or vector
ERROR: 0:32: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
GL_OES_tessellation_point_size
-ERROR: 0:33: 'gl_ClipDistance' : no such field in structure
+ERROR: 0:33: 'gl_ClipDistance' : no such field in structure 'gl_out'
ERROR: 0:33: 'expression' : left of '[' is not of type array, matrix, or vector
ERROR: 0:33: 'assign' : l-value required (can't modify a const)
ERROR: 0:39: '' : tessellation control barrier() cannot be placed within flow control
diff --git a/Test/baseResults/320.tese.out b/Test/baseResults/320.tese.out
index 014eeb0..ba51b9c 100644
--- a/Test/baseResults/320.tese.out
+++ b/Test/baseResults/320.tese.out
@@ -10,7 +10,7 @@
ERROR: 0:33: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
GL_OES_tessellation_point_size
-ERROR: 0:34: 'gl_ClipDistance' : no such field in structure
+ERROR: 0:34: 'gl_ClipDistance' : no such field in structure 'gl_in'
ERROR: 0:34: 'expression' : left of '[' is not of type array, matrix, or vector
ERROR: 0:43: 'gl_PointSize' : required extension not requested: Possible extensions include:
GL_EXT_tessellation_point_size
diff --git a/Test/baseResults/410.geom.out b/Test/baseResults/410.geom.out
index 498da5a..3cc7900 100644
--- a/Test/baseResults/410.geom.out
+++ b/Test/baseResults/410.geom.out
@@ -2,7 +2,7 @@
ERROR: 0:8: 'myIn' : cannot redeclare a built-in block with a user name
ERROR: 0:12: 'gl_myIn' : no declaration found for redeclaration
ERROR: 0:20: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use
-ERROR: 0:32: 'gl_Position' : no such field in structure
+ERROR: 0:32: 'gl_Position' : no such field in structure 'gl_in'
ERROR: 0:32: '=' : cannot convert from ' temp block{ in float PointSize gl_PointSize}' to ' temp 4-component vector of float'
ERROR: 0:33: 'gl_Position' : member of nameless block was not redeclared
ERROR: 0:33: 'assign' : l-value required "gl_PerVertex" (can't modify void)
diff --git a/Test/baseResults/420.tesc.out b/Test/baseResults/420.tesc.out
index a1f881c..4410c84 100644
--- a/Test/baseResults/420.tesc.out
+++ b/Test/baseResults/420.tesc.out
@@ -2,7 +2,7 @@
ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out
ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a
ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb
-ERROR: 0:26: 'gl_PointSize' : no such field in structure
+ERROR: 0:26: 'gl_PointSize' : no such field in structure 'gl_out'
ERROR: 0:26: 'assign' : cannot convert from ' temp float' to ' temp block{ out 4-component vector of float Position gl_Position}'
ERROR: 0:29: 'out' : type must be an array: outf
ERROR: 0:43: 'vertices' : must be greater than 0
diff --git a/Test/baseResults/450.geom.out b/Test/baseResults/450.geom.out
index e75bf93..b51a674 100644
--- a/Test/baseResults/450.geom.out
+++ b/Test/baseResults/450.geom.out
@@ -1,6 +1,6 @@
450.geom
ERROR: 0:15: '[' : array index out of range '3'
-ERROR: 0:15: 'gl_Position' : no such field in structure
+ERROR: 0:15: 'gl_Position' : no such field in structure 'gl_in'
ERROR: 0:19: 'points' : can only apply to a standalone qualifier
ERROR: 3 compilation errors. No code generated.
diff --git a/Test/baseResults/BestMatchFunction.vert.out b/Test/baseResults/BestMatchFunction.vert.out
new file mode 100644
index 0000000..843ffd7
--- /dev/null
+++ b/Test/baseResults/BestMatchFunction.vert.out
@@ -0,0 +1,206 @@
+BestMatchFunction.vert
+WARNING: 0:2: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
+
+Shader version: 150
+Requested GL_ARB_gpu_shader5
+0:? Sequence
+0:7 Function Definition: f(vf4;vf4; ( global 4-component vector of float)
+0:7 Function Parameters:
+0:7 'a' ( in 4-component vector of float)
+0:7 'b' ( in 4-component vector of float)
+0:7 Sequence
+0:7 Branch: Return with expression
+0:7 component-wise multiply ( temp 4-component vector of float)
+0:7 'a' ( in 4-component vector of float)
+0:7 'b' ( in 4-component vector of float)
+0:8 Function Definition: f(vu4;vu4; ( global 4-component vector of float)
+0:8 Function Parameters:
+0:8 'a' ( in 4-component vector of uint)
+0:8 'b' ( in 4-component vector of uint)
+0:8 Sequence
+0:8 Branch: Return with expression
+0:8 Convert uint to float ( temp 4-component vector of float)
+0:8 subtract ( temp 4-component vector of uint)
+0:8 'a' ( in 4-component vector of uint)
+0:8 'b' ( in 4-component vector of uint)
+0:10 Function Definition: main( ( global void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 move second child to first child ( temp 4-component vector of float)
+0:12 'result' ( smooth out 4-component vector of float)
+0:12 Function Call: f(vu4;vu4; ( global 4-component vector of float)
+0:12 Convert int to uint ( temp 4-component vector of uint)
+0:12 'u1' ( uniform 4-component vector of int)
+0:12 'u2' ( uniform 4-component vector of uint)
+0:13 switch
+0:13 condition
+0:13 'gl_VertexID' ( gl_VertexId int VertexId)
+0:13 body
+0:13 Sequence
+0:15 case: with expression
+0:15 Constant:
+0:15 0 (const int)
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:15 '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:15 Constant:
+0:15 0 (const uint)
+0:15 Constant:
+0:15 -1.000000
+0:15 1.000000
+0:15 0.000000
+0:15 1.000000
+0:15 Branch: Break
+0:16 case: with expression
+0:16 Constant:
+0:16 1 (const int)
+0:? Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 Constant:
+0:16 1.000000
+0:16 1.000000
+0:16 0.000000
+0:16 1.000000
+0:16 Branch: Break
+0:17 case: with expression
+0:17 Constant:
+0:17 2 (const int)
+0:? Sequence
+0:17 move second child to first child ( temp 4-component vector of float)
+0:17 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 Constant:
+0:17 -1.000000
+0:17 -1.000000
+0:17 0.000000
+0:17 1.000000
+0:17 Branch: Break
+0:18 case: with expression
+0:18 Constant:
+0:18 3 (const int)
+0:? Sequence
+0:18 move second child to first child ( temp 4-component vector of float)
+0:18 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:18 '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:18 Constant:
+0:18 0 (const uint)
+0:18 Constant:
+0:18 1.000000
+0:18 -1.000000
+0:18 0.000000
+0:18 1.000000
+0:18 Branch: Break
+0:? Linker Objects
+0:? 'u1' ( uniform 4-component vector of int)
+0:? 'u2' ( uniform 4-component vector of uint)
+0:? 'result' ( smooth out 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 150
+Requested GL_ARB_gpu_shader5
+0:? Sequence
+0:8 Function Definition: f(vu4;vu4; ( global 4-component vector of float)
+0:8 Function Parameters:
+0:8 'a' ( in 4-component vector of uint)
+0:8 'b' ( in 4-component vector of uint)
+0:8 Sequence
+0:8 Branch: Return with expression
+0:8 Convert uint to float ( temp 4-component vector of float)
+0:8 subtract ( temp 4-component vector of uint)
+0:8 'a' ( in 4-component vector of uint)
+0:8 'b' ( in 4-component vector of uint)
+0:10 Function Definition: main( ( global void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 move second child to first child ( temp 4-component vector of float)
+0:12 'result' ( smooth out 4-component vector of float)
+0:12 Function Call: f(vu4;vu4; ( global 4-component vector of float)
+0:12 Convert int to uint ( temp 4-component vector of uint)
+0:12 'u1' ( uniform 4-component vector of int)
+0:12 'u2' ( uniform 4-component vector of uint)
+0:13 switch
+0:13 condition
+0:13 'gl_VertexID' ( gl_VertexId int VertexId)
+0:13 body
+0:13 Sequence
+0:15 case: with expression
+0:15 Constant:
+0:15 0 (const int)
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:15 '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:15 Constant:
+0:15 0 (const uint)
+0:15 Constant:
+0:15 -1.000000
+0:15 1.000000
+0:15 0.000000
+0:15 1.000000
+0:15 Branch: Break
+0:16 case: with expression
+0:16 Constant:
+0:16 1 (const int)
+0:? Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 Constant:
+0:16 1.000000
+0:16 1.000000
+0:16 0.000000
+0:16 1.000000
+0:16 Branch: Break
+0:17 case: with expression
+0:17 Constant:
+0:17 2 (const int)
+0:? Sequence
+0:17 move second child to first child ( temp 4-component vector of float)
+0:17 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 Constant:
+0:17 -1.000000
+0:17 -1.000000
+0:17 0.000000
+0:17 1.000000
+0:17 Branch: Break
+0:18 case: with expression
+0:18 Constant:
+0:18 3 (const int)
+0:? Sequence
+0:18 move second child to first child ( temp 4-component vector of float)
+0:18 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:18 '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:18 Constant:
+0:18 0 (const uint)
+0:18 Constant:
+0:18 1.000000
+0:18 -1.000000
+0:18 0.000000
+0:18 1.000000
+0:18 Branch: Break
+0:? Linker Objects
+0:? 'u1' ( uniform 4-component vector of int)
+0:? 'u2' ( uniform 4-component vector of uint)
+0:? 'result' ( smooth out 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
diff --git a/Test/baseResults/EndStreamPrimitive.geom.out b/Test/baseResults/EndStreamPrimitive.geom.out
new file mode 100644
index 0000000..702c3f9
--- /dev/null
+++ b/Test/baseResults/EndStreamPrimitive.geom.out
@@ -0,0 +1,97 @@
+EndStreamPrimitive.geom
+WARNING: 0:2: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
+
+Shader version: 150
+Requested GL_ARB_gpu_shader5
+invocations = -1
+max_vertices = 1
+input primitive = points
+output primitive = points
+0:? Sequence
+0:10 Function Definition: main( ( global void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 move second child to first child ( temp float)
+0:12 'output1' (layout( stream=0) out float)
+0:12 Constant:
+0:12 1.000000
+0:13 move second child to first child ( temp float)
+0:13 'output2' (layout( stream=0) out float)
+0:13 Constant:
+0:13 2.000000
+0:14 EmitStreamVertex ( global void)
+0:14 Constant:
+0:14 0 (const int)
+0:15 EndStreamPrimitive ( global void)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp float)
+0:16 'output3' (layout( stream=1) out float)
+0:16 Constant:
+0:16 3.000000
+0:17 move second child to first child ( temp float)
+0:17 'output4' (layout( stream=1) out float)
+0:17 Constant:
+0:17 4.000000
+0:18 EmitStreamVertex ( global void)
+0:18 Constant:
+0:18 1 (const int)
+0:19 EndStreamPrimitive ( global void)
+0:19 Constant:
+0:19 1 (const int)
+0:? Linker Objects
+0:? 'output1' (layout( stream=0) out float)
+0:? 'output2' (layout( stream=0) out float)
+0:? 'output3' (layout( stream=1) out float)
+0:? 'output4' (layout( stream=1) out float)
+0:? 'stream' ( uniform uint)
+
+
+Linked geometry stage:
+
+
+Shader version: 150
+Requested GL_ARB_gpu_shader5
+invocations = 1
+max_vertices = 1
+input primitive = points
+output primitive = points
+0:? Sequence
+0:10 Function Definition: main( ( global void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 move second child to first child ( temp float)
+0:12 'output1' (layout( stream=0) out float)
+0:12 Constant:
+0:12 1.000000
+0:13 move second child to first child ( temp float)
+0:13 'output2' (layout( stream=0) out float)
+0:13 Constant:
+0:13 2.000000
+0:14 EmitStreamVertex ( global void)
+0:14 Constant:
+0:14 0 (const int)
+0:15 EndStreamPrimitive ( global void)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp float)
+0:16 'output3' (layout( stream=1) out float)
+0:16 Constant:
+0:16 3.000000
+0:17 move second child to first child ( temp float)
+0:17 'output4' (layout( stream=1) out float)
+0:17 Constant:
+0:17 4.000000
+0:18 EmitStreamVertex ( global void)
+0:18 Constant:
+0:18 1 (const int)
+0:19 EndStreamPrimitive ( global void)
+0:19 Constant:
+0:19 1 (const int)
+0:? Linker Objects
+0:? 'output1' (layout( stream=0) out float)
+0:? 'output2' (layout( stream=0) out float)
+0:? 'output3' (layout( stream=1) out float)
+0:? 'output4' (layout( stream=1) out float)
+0:? 'stream' ( uniform uint)
+
diff --git a/Test/baseResults/GL_ARB_fragment_coord_conventions.vert.out b/Test/baseResults/GL_ARB_fragment_coord_conventions.vert.out
new file mode 100644
index 0000000..3b55ae0
--- /dev/null
+++ b/Test/baseResults/GL_ARB_fragment_coord_conventions.vert.out
@@ -0,0 +1,143 @@
+GL_ARB_fragment_coord_conventions.vert
+Shader version: 140
+Requested GL_ARB_explicit_attrib_location
+Requested GL_ARB_fragment_coord_conventions
+0:? Sequence
+0:22 Function Definition: main( ( global void)
+0:22 Function Parameters:
+0:24 Sequence
+0:24 move second child to first child ( temp 4-component vector of float)
+0:24 'gl_Position' ( gl_Position 4-component vector of float Position)
+0:24 'pos' (layout( location=0) in 4-component vector of float)
+0:25 move second child to first child ( temp 4-component vector of float)
+0:25 'i' ( smooth out 4-component vector of float)
+0:25 Construct vec4 ( temp 4-component vector of float)
+0:25 component-wise multiply ( temp float)
+0:25 component-wise multiply ( temp float)
+0:25 add ( temp float)
+0:25 direct index ( temp float)
+0:25 'pos' (layout( location=0) in 4-component vector of float)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 1.000000
+0:25 Constant:
+0:25 0.500000
+0:25 'gtf_windowWidth' ( uniform float)
+0:25 component-wise multiply ( temp float)
+0:25 component-wise multiply ( temp float)
+0:25 add ( temp float)
+0:25 direct index ( temp float)
+0:25 'pos' (layout( location=0) in 4-component vector of float)
+0:25 Constant:
+0:25 1 (const int)
+0:25 Constant:
+0:25 1.000000
+0:25 Constant:
+0:25 0.500000
+0:25 'gtf_windowHeight' ( uniform float)
+0:25 add ( temp float)
+0:25 component-wise multiply ( temp float)
+0:25 component-wise multiply ( temp float)
+0:25 subtract ( temp float)
+0:25 'f' ( uniform float)
+0:25 'n' ( uniform float)
+0:25 Constant:
+0:25 0.500000
+0:25 direct index ( temp float)
+0:25 'pos' (layout( location=0) in 4-component vector of float)
+0:25 Constant:
+0:25 2 (const int)
+0:25 component-wise multiply ( temp float)
+0:25 add ( temp float)
+0:25 'f' ( uniform float)
+0:25 'n' ( uniform float)
+0:25 Constant:
+0:25 0.500000
+0:25 direct index ( temp float)
+0:25 'pos' (layout( location=0) in 4-component vector of float)
+0:25 Constant:
+0:25 3 (const int)
+0:? Linker Objects
+0:? 'pos' (layout( location=0) in 4-component vector of float)
+0:? 'i' ( smooth out 4-component vector of float)
+0:? 'gtf_windowWidth' ( uniform float)
+0:? 'gtf_windowHeight' ( uniform float)
+0:? 'n' ( uniform float)
+0:? 'f' ( uniform float)
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 140
+Requested GL_ARB_explicit_attrib_location
+Requested GL_ARB_fragment_coord_conventions
+0:? Sequence
+0:22 Function Definition: main( ( global void)
+0:22 Function Parameters:
+0:24 Sequence
+0:24 move second child to first child ( temp 4-component vector of float)
+0:24 'gl_Position' ( gl_Position 4-component vector of float Position)
+0:24 'pos' (layout( location=0) in 4-component vector of float)
+0:25 move second child to first child ( temp 4-component vector of float)
+0:25 'i' ( smooth out 4-component vector of float)
+0:25 Construct vec4 ( temp 4-component vector of float)
+0:25 component-wise multiply ( temp float)
+0:25 component-wise multiply ( temp float)
+0:25 add ( temp float)
+0:25 direct index ( temp float)
+0:25 'pos' (layout( location=0) in 4-component vector of float)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 1.000000
+0:25 Constant:
+0:25 0.500000
+0:25 'gtf_windowWidth' ( uniform float)
+0:25 component-wise multiply ( temp float)
+0:25 component-wise multiply ( temp float)
+0:25 add ( temp float)
+0:25 direct index ( temp float)
+0:25 'pos' (layout( location=0) in 4-component vector of float)
+0:25 Constant:
+0:25 1 (const int)
+0:25 Constant:
+0:25 1.000000
+0:25 Constant:
+0:25 0.500000
+0:25 'gtf_windowHeight' ( uniform float)
+0:25 add ( temp float)
+0:25 component-wise multiply ( temp float)
+0:25 component-wise multiply ( temp float)
+0:25 subtract ( temp float)
+0:25 'f' ( uniform float)
+0:25 'n' ( uniform float)
+0:25 Constant:
+0:25 0.500000
+0:25 direct index ( temp float)
+0:25 'pos' (layout( location=0) in 4-component vector of float)
+0:25 Constant:
+0:25 2 (const int)
+0:25 component-wise multiply ( temp float)
+0:25 add ( temp float)
+0:25 'f' ( uniform float)
+0:25 'n' ( uniform float)
+0:25 Constant:
+0:25 0.500000
+0:25 direct index ( temp float)
+0:25 'pos' (layout( location=0) in 4-component vector of float)
+0:25 Constant:
+0:25 3 (const int)
+0:? Linker Objects
+0:? 'pos' (layout( location=0) in 4-component vector of float)
+0:? 'i' ( smooth out 4-component vector of float)
+0:? 'gtf_windowWidth' ( uniform float)
+0:? 'gtf_windowHeight' ( uniform float)
+0:? 'n' ( uniform float)
+0:? 'f' ( uniform float)
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
diff --git a/Test/baseResults/compoundsuffix.frag.hlsl b/Test/baseResults/compoundsuffix.frag.hlsl
index 5a62488..f8dcfaa 100644
--- a/Test/baseResults/compoundsuffix.frag.hlsl
+++ b/Test/baseResults/compoundsuffix.frag.hlsl
@@ -1,45 +1,45 @@
-compoundsuffix.frag.hlsl
-// Module Version 10000
-// Generated by (magic number): 8000a
-// Id's are bound by 22
-
- Capability Shader
- 1: ExtInstImport "GLSL.std.450"
- MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 20
- ExecutionMode 4 OriginUpperLeft
- Source HLSL 500
- Name 4 "main"
- Name 11 "@main(vf4;"
- Name 10 "fragColor"
- Name 15 "fragColor"
- Name 16 "param"
- Name 20 "fragColor"
- Decorate 20(fragColor) Location 0
- 2: TypeVoid
- 3: TypeFunction 2
- 6: TypeFloat 32
- 7: TypeVector 6(float) 4
- 8: TypePointer Function 7(fvec4)
- 9: TypeFunction 2 8(ptr)
- 13: 6(float) Constant 1065353216
- 14: 7(fvec4) ConstantComposite 13 13 13 13
- 19: TypePointer Output 7(fvec4)
- 20(fragColor): 19(ptr) Variable Output
- 4(main): 2 Function None 3
- 5: Label
- 15(fragColor): 8(ptr) Variable Function
- 16(param): 8(ptr) Variable Function
- 17: 2 FunctionCall 11(@main(vf4;) 16(param)
- 18: 7(fvec4) Load 16(param)
- Store 15(fragColor) 18
- 21: 7(fvec4) Load 15(fragColor)
- Store 20(fragColor) 21
- Return
- FunctionEnd
- 11(@main(vf4;): 2 Function None 9
- 10(fragColor): 8(ptr) FunctionParameter
- 12: Label
- Store 10(fragColor) 14
- Return
- FunctionEnd
+compoundsuffix.frag.hlsl
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 22
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 20
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "@main(vf4;"
+ Name 10 "fragColor"
+ Name 15 "fragColor"
+ Name 16 "param"
+ Name 20 "fragColor"
+ Decorate 20(fragColor) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeFunction 2 8(ptr)
+ 13: 6(float) Constant 1065353216
+ 14: 7(fvec4) ConstantComposite 13 13 13 13
+ 19: TypePointer Output 7(fvec4)
+ 20(fragColor): 19(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 15(fragColor): 8(ptr) Variable Function
+ 16(param): 8(ptr) Variable Function
+ 17: 2 FunctionCall 11(@main(vf4;) 16(param)
+ 18: 7(fvec4) Load 16(param)
+ Store 15(fragColor) 18
+ 21: 7(fvec4) Load 15(fragColor)
+ Store 20(fragColor) 21
+ Return
+ FunctionEnd
+ 11(@main(vf4;): 2 Function None 9
+ 10(fragColor): 8(ptr) FunctionParameter
+ 12: Label
+ Store 10(fragColor) 14
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/compoundsuffix.vert.glsl b/Test/baseResults/compoundsuffix.vert.glsl
index 58354a4..8535b47 100644
--- a/Test/baseResults/compoundsuffix.vert.glsl
+++ b/Test/baseResults/compoundsuffix.vert.glsl
@@ -1,15 +1,15 @@
-compoundsuffix.vert.glsl
-Shader version: 100
-0:? Sequence
-0:1 Function Definition: main( ( global void)
-0:1 Function Parameters:
-0:3 Sequence
-0:3 move second child to first child ( temp highp 4-component vector of float)
-0:3 'gl_Position' ( gl_Position highp 4-component vector of float Position)
-0:3 Constant:
-0:3 1.000000
-0:3 1.000000
-0:3 1.000000
-0:3 1.000000
-0:? Linker Objects
-
+compoundsuffix.vert.glsl
+Shader version: 100
+0:? Sequence
+0:1 Function Definition: main( ( global void)
+0:1 Function Parameters:
+0:3 Sequence
+0:3 move second child to first child ( temp highp 4-component vector of float)
+0:3 'gl_Position' ( gl_Position highp 4-component vector of float Position)
+0:3 Constant:
+0:3 1.000000
+0:3 1.000000
+0:3 1.000000
+0:3 1.000000
+0:? Linker Objects
+
diff --git a/Test/baseResults/constantUnaryConversion.comp.out b/Test/baseResults/constantUnaryConversion.comp.out
index fcaf6f2..78372f0 100644
--- a/Test/baseResults/constantUnaryConversion.comp.out
+++ b/Test/baseResults/constantUnaryConversion.comp.out
@@ -3,8 +3,8 @@
Requested GL_EXT_shader_explicit_arithmetic_types
local_size = (1, 1, 1)
0:? Sequence
-0:48 Function Definition: main( ( global void)
-0:48 Function Parameters:
+0:69 Function Definition: main( ( global void)
+0:69 Function Parameters:
0:? Linker Objects
0:? 'bool_init' ( const bool)
0:? true (const bool)
@@ -29,6 +29,12 @@
0:? 'float32_t_init' ( const float)
0:? 13.000000
0:? 'float64_t_init' ( const double)
+0:? 4.000000
+0:? 'neg_float16_t_init' ( const float16_t)
+0:? -42.000000
+0:? 'neg_float32_t_init' ( const float)
+0:? -13.000000
+0:? 'neg_float64_t_init' ( const double)
0:? -4.000000
0:? 'bool_to_bool' ( const bool)
0:? true (const bool)
@@ -77,7 +83,7 @@
0:? 'float32_t_to_int8_t' ( const int8_t)
0:? 13 (const int8_t)
0:? 'float64_t_to_int8_t' ( const int8_t)
-0:? -4 (const int8_t)
+0:? 4 (const int8_t)
0:? 'bool_to_int16_t' ( const int16_t)
0:? 1 (const int16_t)
0:? 'int8_t_to_int16_t' ( const int16_t)
@@ -101,7 +107,7 @@
0:? 'float32_t_to_int16_t' ( const int16_t)
0:? 13 (const int16_t)
0:? 'float64_t_to_int16_t' ( const int16_t)
-0:? -4 (const int16_t)
+0:? 4 (const int16_t)
0:? 'bool_to_int32_t' ( const int)
0:? 1 (const int)
0:? 'int8_t_to_int32_t' ( const int)
@@ -125,7 +131,7 @@
0:? 'float32_t_to_int32_t' ( const int)
0:? 13 (const int)
0:? 'float64_t_to_int32_t' ( const int)
-0:? -4 (const int)
+0:? 4 (const int)
0:? 'bool_to_int64_t' ( const int64_t)
0:? 1 (const int64_t)
0:? 'int8_t_to_int64_t' ( const int64_t)
@@ -149,7 +155,7 @@
0:? 'float32_t_to_int64_t' ( const int64_t)
0:? 13 (const int64_t)
0:? 'float64_t_to_int64_t' ( const int64_t)
-0:? -4 (const int64_t)
+0:? 4 (const int64_t)
0:? 'bool_to_uint8_t' ( const uint8_t)
0:? 1 (const uint8_t)
0:? 'int8_t_to_uint8_t' ( const uint8_t)
@@ -173,7 +179,7 @@
0:? 'float32_t_to_uint8_t' ( const uint8_t)
0:? 13 (const uint8_t)
0:? 'float64_t_to_uint8_t' ( const uint8_t)
-0:? 252 (const uint8_t)
+0:? 4 (const uint8_t)
0:? 'bool_to_uint16_t' ( const uint16_t)
0:? 1 (const uint16_t)
0:? 'int8_t_to_uint16_t' ( const uint16_t)
@@ -197,7 +203,7 @@
0:? 'float32_t_to_uint16_t' ( const uint16_t)
0:? 13 (const uint16_t)
0:? 'float64_t_to_uint16_t' ( const uint16_t)
-0:? 65532 (const uint16_t)
+0:? 4 (const uint16_t)
0:? 'bool_to_uint32_t' ( const uint)
0:? 1 (const uint)
0:? 'int8_t_to_uint32_t' ( const uint)
@@ -221,7 +227,7 @@
0:? 'float32_t_to_uint32_t' ( const uint)
0:? 13 (const uint)
0:? 'float64_t_to_uint32_t' ( const uint)
-0:? 4294967292 (const uint)
+0:? 4 (const uint)
0:? 'bool_to_uint64_t' ( const uint64_t)
0:? 1 (const uint64_t)
0:? 'int8_t_to_uint64_t' ( const uint64_t)
@@ -245,7 +251,7 @@
0:? 'float32_t_to_uint64_t' ( const uint64_t)
0:? 13 (const uint64_t)
0:? 'float64_t_to_uint64_t' ( const uint64_t)
-0:? 18446744073709551612 (const uint64_t)
+0:? 4 (const uint64_t)
0:? 'bool_to_float16_t' ( const float16_t)
0:? 1.000000
0:? 'int8_t_to_float16_t' ( const float16_t)
@@ -269,7 +275,7 @@
0:? 'float32_t_to_float16_t' ( const float16_t)
0:? 13.000000
0:? 'float64_t_to_float16_t' ( const float16_t)
-0:? -4.000000
+0:? 4.000000
0:? 'bool_to_float32_t' ( const float)
0:? 1.000000
0:? 'int8_t_to_float32_t' ( const float)
@@ -293,7 +299,7 @@
0:? 'float32_t_to_float32_t' ( const float)
0:? 13.000000
0:? 'float64_t_to_float32_t' ( const float)
-0:? -4.000000
+0:? 4.000000
0:? 'bool_to_float64_t' ( const double)
0:? 1.000000
0:? 'int8_t_to_float64_t' ( const double)
@@ -317,6 +323,54 @@
0:? 'float32_t_to_float64_t' ( const double)
0:? 13.000000
0:? 'float64_t_to_float64_t' ( const double)
+0:? 4.000000
+0:? 'neg_float16_t_to_bool' ( const bool)
+0:? true (const bool)
+0:? 'neg_float32_t_to_bool' ( const bool)
+0:? true (const bool)
+0:? 'neg_float64_t_to_bool' ( const bool)
+0:? true (const bool)
+0:? 'neg_float16_t_to_int8_t' ( const int8_t)
+0:? -42 (const int8_t)
+0:? 'neg_float32_t_to_int8_t' ( const int8_t)
+0:? -13 (const int8_t)
+0:? 'neg_float64_t_to_int8_t' ( const int8_t)
+0:? -4 (const int8_t)
+0:? 'neg_float16_t_to_int16_t' ( const int16_t)
+0:? -42 (const int16_t)
+0:? 'neg_float32_t_to_int16_t' ( const int16_t)
+0:? -13 (const int16_t)
+0:? 'neg_float64_t_to_int16_t' ( const int16_t)
+0:? -4 (const int16_t)
+0:? 'neg_float16_t_to_int32_t' ( const int)
+0:? -42 (const int)
+0:? 'neg_float32_t_to_int32_t' ( const int)
+0:? -13 (const int)
+0:? 'neg_float64_t_to_int32_t' ( const int)
+0:? -4 (const int)
+0:? 'neg_float16_t_to_int64_t' ( const int64_t)
+0:? -42 (const int64_t)
+0:? 'neg_float32_t_to_int64_t' ( const int64_t)
+0:? -13 (const int64_t)
+0:? 'neg_float64_t_to_int64_t' ( const int64_t)
+0:? -4 (const int64_t)
+0:? 'neg_float16_t_to_float16_t' ( const float16_t)
+0:? -42.000000
+0:? 'neg_float32_t_to_float16_t' ( const float16_t)
+0:? -13.000000
+0:? 'neg_float64_t_to_float16_t' ( const float16_t)
+0:? -4.000000
+0:? 'neg_float16_t_to_float32_t' ( const float)
+0:? -42.000000
+0:? 'neg_float32_t_to_float32_t' ( const float)
+0:? -13.000000
+0:? 'neg_float64_t_to_float32_t' ( const float)
+0:? -4.000000
+0:? 'neg_float16_t_to_float64_t' ( const double)
+0:? -42.000000
+0:? 'neg_float32_t_to_float64_t' ( const double)
+0:? -13.000000
+0:? 'neg_float64_t_to_float64_t' ( const double)
0:? -4.000000
@@ -327,8 +381,8 @@
Requested GL_EXT_shader_explicit_arithmetic_types
local_size = (1, 1, 1)
0:? Sequence
-0:48 Function Definition: main( ( global void)
-0:48 Function Parameters:
+0:69 Function Definition: main( ( global void)
+0:69 Function Parameters:
0:? Linker Objects
0:? 'bool_init' ( const bool)
0:? true (const bool)
@@ -353,6 +407,12 @@
0:? 'float32_t_init' ( const float)
0:? 13.000000
0:? 'float64_t_init' ( const double)
+0:? 4.000000
+0:? 'neg_float16_t_init' ( const float16_t)
+0:? -42.000000
+0:? 'neg_float32_t_init' ( const float)
+0:? -13.000000
+0:? 'neg_float64_t_init' ( const double)
0:? -4.000000
0:? 'bool_to_bool' ( const bool)
0:? true (const bool)
@@ -401,7 +461,7 @@
0:? 'float32_t_to_int8_t' ( const int8_t)
0:? 13 (const int8_t)
0:? 'float64_t_to_int8_t' ( const int8_t)
-0:? -4 (const int8_t)
+0:? 4 (const int8_t)
0:? 'bool_to_int16_t' ( const int16_t)
0:? 1 (const int16_t)
0:? 'int8_t_to_int16_t' ( const int16_t)
@@ -425,7 +485,7 @@
0:? 'float32_t_to_int16_t' ( const int16_t)
0:? 13 (const int16_t)
0:? 'float64_t_to_int16_t' ( const int16_t)
-0:? -4 (const int16_t)
+0:? 4 (const int16_t)
0:? 'bool_to_int32_t' ( const int)
0:? 1 (const int)
0:? 'int8_t_to_int32_t' ( const int)
@@ -449,7 +509,7 @@
0:? 'float32_t_to_int32_t' ( const int)
0:? 13 (const int)
0:? 'float64_t_to_int32_t' ( const int)
-0:? -4 (const int)
+0:? 4 (const int)
0:? 'bool_to_int64_t' ( const int64_t)
0:? 1 (const int64_t)
0:? 'int8_t_to_int64_t' ( const int64_t)
@@ -473,7 +533,7 @@
0:? 'float32_t_to_int64_t' ( const int64_t)
0:? 13 (const int64_t)
0:? 'float64_t_to_int64_t' ( const int64_t)
-0:? -4 (const int64_t)
+0:? 4 (const int64_t)
0:? 'bool_to_uint8_t' ( const uint8_t)
0:? 1 (const uint8_t)
0:? 'int8_t_to_uint8_t' ( const uint8_t)
@@ -497,7 +557,7 @@
0:? 'float32_t_to_uint8_t' ( const uint8_t)
0:? 13 (const uint8_t)
0:? 'float64_t_to_uint8_t' ( const uint8_t)
-0:? 252 (const uint8_t)
+0:? 4 (const uint8_t)
0:? 'bool_to_uint16_t' ( const uint16_t)
0:? 1 (const uint16_t)
0:? 'int8_t_to_uint16_t' ( const uint16_t)
@@ -521,7 +581,7 @@
0:? 'float32_t_to_uint16_t' ( const uint16_t)
0:? 13 (const uint16_t)
0:? 'float64_t_to_uint16_t' ( const uint16_t)
-0:? 65532 (const uint16_t)
+0:? 4 (const uint16_t)
0:? 'bool_to_uint32_t' ( const uint)
0:? 1 (const uint)
0:? 'int8_t_to_uint32_t' ( const uint)
@@ -545,7 +605,7 @@
0:? 'float32_t_to_uint32_t' ( const uint)
0:? 13 (const uint)
0:? 'float64_t_to_uint32_t' ( const uint)
-0:? 4294967292 (const uint)
+0:? 4 (const uint)
0:? 'bool_to_uint64_t' ( const uint64_t)
0:? 1 (const uint64_t)
0:? 'int8_t_to_uint64_t' ( const uint64_t)
@@ -569,7 +629,7 @@
0:? 'float32_t_to_uint64_t' ( const uint64_t)
0:? 13 (const uint64_t)
0:? 'float64_t_to_uint64_t' ( const uint64_t)
-0:? 18446744073709551612 (const uint64_t)
+0:? 4 (const uint64_t)
0:? 'bool_to_float16_t' ( const float16_t)
0:? 1.000000
0:? 'int8_t_to_float16_t' ( const float16_t)
@@ -593,7 +653,7 @@
0:? 'float32_t_to_float16_t' ( const float16_t)
0:? 13.000000
0:? 'float64_t_to_float16_t' ( const float16_t)
-0:? -4.000000
+0:? 4.000000
0:? 'bool_to_float32_t' ( const float)
0:? 1.000000
0:? 'int8_t_to_float32_t' ( const float)
@@ -617,7 +677,7 @@
0:? 'float32_t_to_float32_t' ( const float)
0:? 13.000000
0:? 'float64_t_to_float32_t' ( const float)
-0:? -4.000000
+0:? 4.000000
0:? 'bool_to_float64_t' ( const double)
0:? 1.000000
0:? 'int8_t_to_float64_t' ( const double)
@@ -641,5 +701,53 @@
0:? 'float32_t_to_float64_t' ( const double)
0:? 13.000000
0:? 'float64_t_to_float64_t' ( const double)
+0:? 4.000000
+0:? 'neg_float16_t_to_bool' ( const bool)
+0:? true (const bool)
+0:? 'neg_float32_t_to_bool' ( const bool)
+0:? true (const bool)
+0:? 'neg_float64_t_to_bool' ( const bool)
+0:? true (const bool)
+0:? 'neg_float16_t_to_int8_t' ( const int8_t)
+0:? -42 (const int8_t)
+0:? 'neg_float32_t_to_int8_t' ( const int8_t)
+0:? -13 (const int8_t)
+0:? 'neg_float64_t_to_int8_t' ( const int8_t)
+0:? -4 (const int8_t)
+0:? 'neg_float16_t_to_int16_t' ( const int16_t)
+0:? -42 (const int16_t)
+0:? 'neg_float32_t_to_int16_t' ( const int16_t)
+0:? -13 (const int16_t)
+0:? 'neg_float64_t_to_int16_t' ( const int16_t)
+0:? -4 (const int16_t)
+0:? 'neg_float16_t_to_int32_t' ( const int)
+0:? -42 (const int)
+0:? 'neg_float32_t_to_int32_t' ( const int)
+0:? -13 (const int)
+0:? 'neg_float64_t_to_int32_t' ( const int)
+0:? -4 (const int)
+0:? 'neg_float16_t_to_int64_t' ( const int64_t)
+0:? -42 (const int64_t)
+0:? 'neg_float32_t_to_int64_t' ( const int64_t)
+0:? -13 (const int64_t)
+0:? 'neg_float64_t_to_int64_t' ( const int64_t)
+0:? -4 (const int64_t)
+0:? 'neg_float16_t_to_float16_t' ( const float16_t)
+0:? -42.000000
+0:? 'neg_float32_t_to_float16_t' ( const float16_t)
+0:? -13.000000
+0:? 'neg_float64_t_to_float16_t' ( const float16_t)
+0:? -4.000000
+0:? 'neg_float16_t_to_float32_t' ( const float)
+0:? -42.000000
+0:? 'neg_float32_t_to_float32_t' ( const float)
+0:? -13.000000
+0:? 'neg_float64_t_to_float32_t' ( const float)
+0:? -4.000000
+0:? 'neg_float16_t_to_float64_t' ( const double)
+0:? -42.000000
+0:? 'neg_float32_t_to_float64_t' ( const double)
+0:? -13.000000
+0:? 'neg_float64_t_to_float64_t' ( const double)
0:? -4.000000
diff --git a/Test/baseResults/coord_conventions.frag.out b/Test/baseResults/coord_conventions.frag.out
new file mode 100644
index 0000000..656c608
--- /dev/null
+++ b/Test/baseResults/coord_conventions.frag.out
@@ -0,0 +1,255 @@
+coord_conventions.frag
+Shader version: 140
+Requested GL_ARB_explicit_attrib_location
+Requested GL_ARB_fragment_coord_conventions
+gl_FragCoord pixel center is integer
+gl_FragCoord origin is upper left
+0:? Sequence
+0:17 Function Definition: main( ( global void)
+0:17 Function Parameters:
+0:19 Sequence
+0:19 move second child to first child ( temp 4-component vector of float)
+0:19 'myColor' (layout( location=0) out 4-component vector of float)
+0:19 Constant:
+0:19 0.200000
+0:19 0.200000
+0:19 0.200000
+0:19 0.200000
+0:20 Test condition and select ( temp void)
+0:20 Condition
+0:20 Compare Greater Than or Equal ( temp bool)
+0:20 direct index ( temp float)
+0:20 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 10.000000
+0:20 true case
+0:21 Sequence
+0:21 move second child to first child ( temp float)
+0:21 direct index ( temp float)
+0:21 'myColor' (layout( location=0) out 4-component vector of float)
+0:21 Constant:
+0:21 2 (const int)
+0:21 Constant:
+0:21 0.800000
+0:23 Test condition and select ( temp void)
+0:23 Condition
+0:23 Compare Equal ( temp bool)
+0:23 direct index ( temp float)
+0:23 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:23 Constant:
+0:23 1 (const int)
+0:23 trunc ( global float)
+0:23 direct index ( temp float)
+0:23 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:23 Constant:
+0:23 1 (const int)
+0:23 true case
+0:24 Sequence
+0:24 move second child to first child ( temp float)
+0:24 direct index ( temp float)
+0:24 'myColor' (layout( location=0) out 4-component vector of float)
+0:24 Constant:
+0:24 1 (const int)
+0:24 Constant:
+0:24 0.800000
+0:26 Test condition and select ( temp void)
+0:26 Condition
+0:26 Compare Equal ( temp bool)
+0:26 direct index ( temp float)
+0:26 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:26 Constant:
+0:26 0 (const int)
+0:26 trunc ( global float)
+0:26 direct index ( temp float)
+0:26 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:26 Constant:
+0:26 0 (const int)
+0:26 true case
+0:27 Sequence
+0:27 move second child to first child ( temp float)
+0:27 direct index ( temp float)
+0:27 'myColor' (layout( location=0) out 4-component vector of float)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 0.800000
+0:30 Sequence
+0:30 move second child to first child ( temp 4-component vector of float)
+0:30 'diff' ( temp 4-component vector of float)
+0:30 subtract ( temp 4-component vector of float)
+0:30 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:30 'i' ( smooth in 4-component vector of float)
+0:31 Test condition and select ( temp void)
+0:31 Condition
+0:31 Compare Greater Than ( temp bool)
+0:31 Absolute value ( global float)
+0:31 direct index ( temp float)
+0:31 'diff' ( temp 4-component vector of float)
+0:31 Constant:
+0:31 2 (const int)
+0:31 Constant:
+0:31 0.001000
+0:31 true case
+0:32 move second child to first child ( temp float)
+0:32 direct index ( temp float)
+0:32 'myColor' (layout( location=0) out 4-component vector of float)
+0:32 Constant:
+0:32 2 (const int)
+0:32 Constant:
+0:32 0.500000
+0:33 Test condition and select ( temp void)
+0:33 Condition
+0:33 Compare Greater Than ( temp bool)
+0:33 Absolute value ( global float)
+0:33 direct index ( temp float)
+0:33 'diff' ( temp 4-component vector of float)
+0:33 Constant:
+0:33 3 (const int)
+0:33 Constant:
+0:33 0.001000
+0:33 true case
+0:34 move second child to first child ( temp float)
+0:34 direct index ( temp float)
+0:34 'myColor' (layout( location=0) out 4-component vector of float)
+0:34 Constant:
+0:34 3 (const int)
+0:34 Constant:
+0:34 0.500000
+0:? Linker Objects
+0:? 'i' ( smooth in 4-component vector of float)
+0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:? 'myColor' (layout( location=0) out 4-component vector of float)
+0:? 'eps' ( const float)
+0:? 0.001000
+
+
+Linked fragment stage:
+
+
+Shader version: 140
+Requested GL_ARB_explicit_attrib_location
+Requested GL_ARB_fragment_coord_conventions
+gl_FragCoord pixel center is integer
+gl_FragCoord origin is upper left
+0:? Sequence
+0:17 Function Definition: main( ( global void)
+0:17 Function Parameters:
+0:19 Sequence
+0:19 move second child to first child ( temp 4-component vector of float)
+0:19 'myColor' (layout( location=0) out 4-component vector of float)
+0:19 Constant:
+0:19 0.200000
+0:19 0.200000
+0:19 0.200000
+0:19 0.200000
+0:20 Test condition and select ( temp void)
+0:20 Condition
+0:20 Compare Greater Than or Equal ( temp bool)
+0:20 direct index ( temp float)
+0:20 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 10.000000
+0:20 true case
+0:21 Sequence
+0:21 move second child to first child ( temp float)
+0:21 direct index ( temp float)
+0:21 'myColor' (layout( location=0) out 4-component vector of float)
+0:21 Constant:
+0:21 2 (const int)
+0:21 Constant:
+0:21 0.800000
+0:23 Test condition and select ( temp void)
+0:23 Condition
+0:23 Compare Equal ( temp bool)
+0:23 direct index ( temp float)
+0:23 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:23 Constant:
+0:23 1 (const int)
+0:23 trunc ( global float)
+0:23 direct index ( temp float)
+0:23 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:23 Constant:
+0:23 1 (const int)
+0:23 true case
+0:24 Sequence
+0:24 move second child to first child ( temp float)
+0:24 direct index ( temp float)
+0:24 'myColor' (layout( location=0) out 4-component vector of float)
+0:24 Constant:
+0:24 1 (const int)
+0:24 Constant:
+0:24 0.800000
+0:26 Test condition and select ( temp void)
+0:26 Condition
+0:26 Compare Equal ( temp bool)
+0:26 direct index ( temp float)
+0:26 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:26 Constant:
+0:26 0 (const int)
+0:26 trunc ( global float)
+0:26 direct index ( temp float)
+0:26 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:26 Constant:
+0:26 0 (const int)
+0:26 true case
+0:27 Sequence
+0:27 move second child to first child ( temp float)
+0:27 direct index ( temp float)
+0:27 'myColor' (layout( location=0) out 4-component vector of float)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 0.800000
+0:30 Sequence
+0:30 move second child to first child ( temp 4-component vector of float)
+0:30 'diff' ( temp 4-component vector of float)
+0:30 subtract ( temp 4-component vector of float)
+0:30 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:30 'i' ( smooth in 4-component vector of float)
+0:31 Test condition and select ( temp void)
+0:31 Condition
+0:31 Compare Greater Than ( temp bool)
+0:31 Absolute value ( global float)
+0:31 direct index ( temp float)
+0:31 'diff' ( temp 4-component vector of float)
+0:31 Constant:
+0:31 2 (const int)
+0:31 Constant:
+0:31 0.001000
+0:31 true case
+0:32 move second child to first child ( temp float)
+0:32 direct index ( temp float)
+0:32 'myColor' (layout( location=0) out 4-component vector of float)
+0:32 Constant:
+0:32 2 (const int)
+0:32 Constant:
+0:32 0.500000
+0:33 Test condition and select ( temp void)
+0:33 Condition
+0:33 Compare Greater Than ( temp bool)
+0:33 Absolute value ( global float)
+0:33 direct index ( temp float)
+0:33 'diff' ( temp 4-component vector of float)
+0:33 Constant:
+0:33 3 (const int)
+0:33 Constant:
+0:33 0.001000
+0:33 true case
+0:34 move second child to first child ( temp float)
+0:34 direct index ( temp float)
+0:34 'myColor' (layout( location=0) out 4-component vector of float)
+0:34 Constant:
+0:34 3 (const int)
+0:34 Constant:
+0:34 0.500000
+0:? Linker Objects
+0:? 'i' ( smooth in 4-component vector of float)
+0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:? 'myColor' (layout( location=0) out 4-component vector of float)
+0:? 'eps' ( const float)
+0:? 0.001000
+
diff --git a/Test/baseResults/enhanced.0.frag.out b/Test/baseResults/enhanced.0.frag.out
new file mode 100644
index 0000000..1171bfa
--- /dev/null
+++ b/Test/baseResults/enhanced.0.frag.out
@@ -0,0 +1,6 @@
+enhanced.0.frag
+ERROR: enhanced.0.frag:7: ' vec4 constructor' : not enough data provided for construction
+ERROR: 1 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/enhanced.1.frag.out b/Test/baseResults/enhanced.1.frag.out
new file mode 100644
index 0000000..42f5b72
--- /dev/null
+++ b/Test/baseResults/enhanced.1.frag.out
@@ -0,0 +1,6 @@
+enhanced.1.frag
+ERROR: enhanced.1.frag:9: 'v2' : no such field in structure 'vVert'
+ERROR: 1 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/enhanced.2.frag.out b/Test/baseResults/enhanced.2.frag.out
new file mode 100644
index 0000000..a7e48de
--- /dev/null
+++ b/Test/baseResults/enhanced.2.frag.out
@@ -0,0 +1,6 @@
+enhanced.2.frag
+ERROR: enhanced.2.frag:5: ' vec3 constructor' : too many arguments
+ERROR: 1 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/enhanced.3.link.out b/Test/baseResults/enhanced.3.link.out
new file mode 100644
index 0000000..c0e6a20
--- /dev/null
+++ b/Test/baseResults/enhanced.3.link.out
@@ -0,0 +1,8 @@
+enhanced.3.vert
+enhanced.3.frag
+ERROR: Linking vertex and fragment stages: Member names and types must match:
+ Block: VS_OUT
+ vertex stage: " vec2 TexCoords"
+ fragment stage: " vec2 foobar"
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/enhanced.4.link.out b/Test/baseResults/enhanced.4.link.out
new file mode 100644
index 0000000..2c0acf4
--- /dev/null
+++ b/Test/baseResults/enhanced.4.link.out
@@ -0,0 +1,7 @@
+enhanced.4.vert
+enhanced.4.frag
+ERROR: Linking vertex and fragment stages: Layout location qualifier must match:
+ vertex stage: Block: VS_OUT Instance: vs_out: "layout( location=0) out"
+ fragment stage: Block: VS_OUT Instance: fs_in: "layout( location=1) in"
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/enhanced.5.link.out b/Test/baseResults/enhanced.5.link.out
new file mode 100644
index 0000000..929cfce
--- /dev/null
+++ b/Test/baseResults/enhanced.5.link.out
@@ -0,0 +1,8 @@
+enhanced.5.vert
+enhanced.5.frag
+ERROR: Linking vertex and fragment stages: Member names and types must match:
+ Block: VS_OUT
+ vertex stage: " vec2 TexCoords"
+ fragment stage: " vec3 TexCoords"
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/enhanced.6.link.out b/Test/baseResults/enhanced.6.link.out
new file mode 100644
index 0000000..9962628
--- /dev/null
+++ b/Test/baseResults/enhanced.6.link.out
@@ -0,0 +1,7 @@
+enhanced.6.vert
+enhanced.6.frag
+ERROR: Linking vertex and fragment stages: Array sizes must be compatible:
+ vertex stage: " VS_OUT{ vec2 TexCoords} vs_out[2]"
+ fragment stage: " VS_OUT{ vec2 TexCoords} fs_in[1]"
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/enhanced.7.link.out b/Test/baseResults/enhanced.7.link.out
new file mode 100644
index 0000000..a6333be
--- /dev/null
+++ b/Test/baseResults/enhanced.7.link.out
@@ -0,0 +1,7 @@
+enhanced.7.vert
+enhanced.7.frag
+ERROR: Linking vertex and fragment stages: vertex block member has no corresponding member in fragment block:
+ vertex stage: Block: Vertex, Member: ii
+ fragment stage: Block: Vertex, Member: n/a
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/floatBitsToInt.vert.out b/Test/baseResults/floatBitsToInt.vert.out
new file mode 100644
index 0000000..6d5185c
--- /dev/null
+++ b/Test/baseResults/floatBitsToInt.vert.out
@@ -0,0 +1,217 @@
+floatBitsToInt.vert
+WARNING: 0:2: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
+
+Shader version: 150
+Requested GL_ARB_gpu_shader5
+0:? Sequence
+0:6 Function Definition: main( ( global void)
+0:6 Function Parameters:
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 'result' ( smooth out 4-component vector of float)
+0:8 Constant:
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:9 Sequence
+0:9 move second child to first child ( temp int)
+0:9 'ret_val' ( temp int)
+0:9 floatBitsToInt ( global int)
+0:9 'value' ( uniform float)
+0:10 Test condition and select ( temp void)
+0:10 Condition
+0:10 Compare Not Equal ( temp bool)
+0:10 'expected_value' ( uniform int)
+0:10 'ret_val' ( temp int)
+0:10 true case
+0:10 Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 'result' ( smooth out 4-component vector of float)
+0:10 Constant:
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:12 switch
+0:12 condition
+0:12 'gl_VertexID' ( gl_VertexId int VertexId)
+0:12 body
+0:12 Sequence
+0:13 case: with expression
+0:13 Constant:
+0:13 0 (const int)
+0:? Sequence
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:13 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:13 Constant:
+0:13 0 (const uint)
+0:13 Constant:
+0:13 -1.000000
+0:13 1.000000
+0:13 0.000000
+0:13 1.000000
+0:13 Branch: Break
+0:14 case: with expression
+0:14 Constant:
+0:14 1 (const int)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:14 '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:14 Constant:
+0:14 0 (const uint)
+0:14 Constant:
+0:14 1.000000
+0:14 1.000000
+0:14 0.000000
+0:14 1.000000
+0:14 Branch: Break
+0:15 case: with expression
+0:15 Constant:
+0:15 2 (const int)
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:15 '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:15 Constant:
+0:15 0 (const uint)
+0:15 Constant:
+0:15 -1.000000
+0:15 -1.000000
+0:15 0.000000
+0:15 1.000000
+0:15 Branch: Break
+0:16 case: with expression
+0:16 Constant:
+0:16 3 (const int)
+0:? Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 Constant:
+0:16 1.000000
+0:16 -1.000000
+0:16 0.000000
+0:16 1.000000
+0:16 Branch: Break
+0:? Linker Objects
+0:? 'expected_value' ( uniform int)
+0:? 'value' ( uniform float)
+0:? 'result' ( smooth out 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 150
+Requested GL_ARB_gpu_shader5
+0:? Sequence
+0:6 Function Definition: main( ( global void)
+0:6 Function Parameters:
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 'result' ( smooth out 4-component vector of float)
+0:8 Constant:
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:9 Sequence
+0:9 move second child to first child ( temp int)
+0:9 'ret_val' ( temp int)
+0:9 floatBitsToInt ( global int)
+0:9 'value' ( uniform float)
+0:10 Test condition and select ( temp void)
+0:10 Condition
+0:10 Compare Not Equal ( temp bool)
+0:10 'expected_value' ( uniform int)
+0:10 'ret_val' ( temp int)
+0:10 true case
+0:10 Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 'result' ( smooth out 4-component vector of float)
+0:10 Constant:
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:10 0.000000
+0:12 switch
+0:12 condition
+0:12 'gl_VertexID' ( gl_VertexId int VertexId)
+0:12 body
+0:12 Sequence
+0:13 case: with expression
+0:13 Constant:
+0:13 0 (const int)
+0:? Sequence
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:13 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:13 Constant:
+0:13 0 (const uint)
+0:13 Constant:
+0:13 -1.000000
+0:13 1.000000
+0:13 0.000000
+0:13 1.000000
+0:13 Branch: Break
+0:14 case: with expression
+0:14 Constant:
+0:14 1 (const int)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:14 '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:14 Constant:
+0:14 0 (const uint)
+0:14 Constant:
+0:14 1.000000
+0:14 1.000000
+0:14 0.000000
+0:14 1.000000
+0:14 Branch: Break
+0:15 case: with expression
+0:15 Constant:
+0:15 2 (const int)
+0:? Sequence
+0:15 move second child to first child ( temp 4-component vector of float)
+0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:15 '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:15 Constant:
+0:15 0 (const uint)
+0:15 Constant:
+0:15 -1.000000
+0:15 -1.000000
+0:15 0.000000
+0:15 1.000000
+0:15 Branch: Break
+0:16 case: with expression
+0:16 Constant:
+0:16 3 (const int)
+0:? Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 Constant:
+0:16 1.000000
+0:16 -1.000000
+0:16 0.000000
+0:16 1.000000
+0:16 Branch: Break
+0:? Linker Objects
+0:? 'expected_value' ( uniform int)
+0:? 'value' ( uniform float)
+0:? 'result' ( smooth out 4-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
diff --git a/Test/baseResults/gl_FragCoord.frag.out b/Test/baseResults/gl_FragCoord.frag.out
new file mode 100644
index 0000000..da9e8dc
--- /dev/null
+++ b/Test/baseResults/gl_FragCoord.frag.out
@@ -0,0 +1,269 @@
+gl_FragCoord.frag
+Shader version: 150
+Requested GL_ARB_explicit_attrib_location
+gl_FragCoord pixel center is integer
+gl_FragCoord origin is upper left
+0:? Sequence
+0:9 Sequence
+0:9 move second child to first child ( temp float)
+0:9 'myGlobalVar' ( global float)
+0:9 direct index ( temp float)
+0:9 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:9 Constant:
+0:9 0 (const int)
+0:16 Function Definition: main( ( global void)
+0:16 Function Parameters:
+0:17 Sequence
+0:17 move second child to first child ( temp 4-component vector of float)
+0:17 'myColor' (layout( location=0) out 4-component vector of float)
+0:17 Constant:
+0:17 0.200000
+0:17 0.200000
+0:17 0.200000
+0:17 0.200000
+0:18 Test condition and select ( temp void)
+0:18 Condition
+0:18 Compare Greater Than or Equal ( temp bool)
+0:18 direct index ( temp float)
+0:18 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 10.000000
+0:18 true case
+0:19 Sequence
+0:19 move second child to first child ( temp float)
+0:19 direct index ( temp float)
+0:19 'myColor' (layout( location=0) out 4-component vector of float)
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 0.800000
+0:21 Test condition and select ( temp void)
+0:21 Condition
+0:21 Compare Equal ( temp bool)
+0:21 direct index ( temp float)
+0:21 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:21 Constant:
+0:21 1 (const int)
+0:21 trunc ( global float)
+0:21 direct index ( temp float)
+0:21 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:21 Constant:
+0:21 1 (const int)
+0:21 true case
+0:22 Sequence
+0:22 move second child to first child ( temp float)
+0:22 direct index ( temp float)
+0:22 'myColor' (layout( location=0) out 4-component vector of float)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 0.800000
+0:24 Test condition and select ( temp void)
+0:24 Condition
+0:24 Compare Equal ( temp bool)
+0:24 direct index ( temp float)
+0:24 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:24 Constant:
+0:24 0 (const int)
+0:24 trunc ( global float)
+0:24 direct index ( temp float)
+0:24 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:24 Constant:
+0:24 0 (const int)
+0:24 true case
+0:25 Sequence
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 'myColor' (layout( location=0) out 4-component vector of float)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 0.800000
+0:28 Sequence
+0:28 move second child to first child ( temp 4-component vector of float)
+0:28 'diff' ( temp 4-component vector of float)
+0:28 subtract ( temp 4-component vector of float)
+0:28 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:28 'i' ( smooth in 4-component vector of float)
+0:29 Test condition and select ( temp void)
+0:29 Condition
+0:29 Compare Greater Than ( temp bool)
+0:29 Absolute value ( global float)
+0:29 direct index ( temp float)
+0:29 'diff' ( temp 4-component vector of float)
+0:29 Constant:
+0:29 2 (const int)
+0:29 Constant:
+0:29 0.001000
+0:29 true case
+0:29 move second child to first child ( temp float)
+0:29 direct index ( temp float)
+0:29 'myColor' (layout( location=0) out 4-component vector of float)
+0:29 Constant:
+0:29 2 (const int)
+0:29 Constant:
+0:29 0.500000
+0:30 Test condition and select ( temp void)
+0:30 Condition
+0:30 Compare Greater Than ( temp bool)
+0:30 Absolute value ( global float)
+0:30 direct index ( temp float)
+0:30 'diff' ( temp 4-component vector of float)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0.001000
+0:30 true case
+0:30 move second child to first child ( temp float)
+0:30 direct index ( temp float)
+0:30 'myColor' (layout( location=0) out 4-component vector of float)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0.500000
+0:? Linker Objects
+0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:? 'myGlobalVar' ( global float)
+0:? 'i' ( smooth in 4-component vector of float)
+0:? 'myColor' (layout( location=0) out 4-component vector of float)
+0:? 'eps' ( const float)
+0:? 0.001000
+
+
+Linked fragment stage:
+
+
+Shader version: 150
+Requested GL_ARB_explicit_attrib_location
+gl_FragCoord pixel center is integer
+gl_FragCoord origin is upper left
+0:? Sequence
+0:9 Sequence
+0:9 move second child to first child ( temp float)
+0:9 'myGlobalVar' ( global float)
+0:9 direct index ( temp float)
+0:9 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:9 Constant:
+0:9 0 (const int)
+0:16 Function Definition: main( ( global void)
+0:16 Function Parameters:
+0:17 Sequence
+0:17 move second child to first child ( temp 4-component vector of float)
+0:17 'myColor' (layout( location=0) out 4-component vector of float)
+0:17 Constant:
+0:17 0.200000
+0:17 0.200000
+0:17 0.200000
+0:17 0.200000
+0:18 Test condition and select ( temp void)
+0:18 Condition
+0:18 Compare Greater Than or Equal ( temp bool)
+0:18 direct index ( temp float)
+0:18 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:18 Constant:
+0:18 1 (const int)
+0:18 Constant:
+0:18 10.000000
+0:18 true case
+0:19 Sequence
+0:19 move second child to first child ( temp float)
+0:19 direct index ( temp float)
+0:19 'myColor' (layout( location=0) out 4-component vector of float)
+0:19 Constant:
+0:19 2 (const int)
+0:19 Constant:
+0:19 0.800000
+0:21 Test condition and select ( temp void)
+0:21 Condition
+0:21 Compare Equal ( temp bool)
+0:21 direct index ( temp float)
+0:21 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:21 Constant:
+0:21 1 (const int)
+0:21 trunc ( global float)
+0:21 direct index ( temp float)
+0:21 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:21 Constant:
+0:21 1 (const int)
+0:21 true case
+0:22 Sequence
+0:22 move second child to first child ( temp float)
+0:22 direct index ( temp float)
+0:22 'myColor' (layout( location=0) out 4-component vector of float)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 0.800000
+0:24 Test condition and select ( temp void)
+0:24 Condition
+0:24 Compare Equal ( temp bool)
+0:24 direct index ( temp float)
+0:24 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:24 Constant:
+0:24 0 (const int)
+0:24 trunc ( global float)
+0:24 direct index ( temp float)
+0:24 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:24 Constant:
+0:24 0 (const int)
+0:24 true case
+0:25 Sequence
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 'myColor' (layout( location=0) out 4-component vector of float)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 0.800000
+0:28 Sequence
+0:28 move second child to first child ( temp 4-component vector of float)
+0:28 'diff' ( temp 4-component vector of float)
+0:28 subtract ( temp 4-component vector of float)
+0:28 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:28 'i' ( smooth in 4-component vector of float)
+0:29 Test condition and select ( temp void)
+0:29 Condition
+0:29 Compare Greater Than ( temp bool)
+0:29 Absolute value ( global float)
+0:29 direct index ( temp float)
+0:29 'diff' ( temp 4-component vector of float)
+0:29 Constant:
+0:29 2 (const int)
+0:29 Constant:
+0:29 0.001000
+0:29 true case
+0:29 move second child to first child ( temp float)
+0:29 direct index ( temp float)
+0:29 'myColor' (layout( location=0) out 4-component vector of float)
+0:29 Constant:
+0:29 2 (const int)
+0:29 Constant:
+0:29 0.500000
+0:30 Test condition and select ( temp void)
+0:30 Condition
+0:30 Compare Greater Than ( temp bool)
+0:30 Absolute value ( global float)
+0:30 direct index ( temp float)
+0:30 'diff' ( temp 4-component vector of float)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0.001000
+0:30 true case
+0:30 move second child to first child ( temp float)
+0:30 direct index ( temp float)
+0:30 'myColor' (layout( location=0) out 4-component vector of float)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0.500000
+0:? Linker Objects
+0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
+0:? 'myGlobalVar' ( global float)
+0:? 'i' ( smooth in 4-component vector of float)
+0:? 'myColor' (layout( location=0) out 4-component vector of float)
+0:? 'eps' ( const float)
+0:? 0.001000
+
diff --git a/Test/baseResults/glsl.460.subgroupEXT.mesh.out b/Test/baseResults/glsl.460.subgroupEXT.mesh.out
new file mode 100644
index 0000000..8d45106
--- /dev/null
+++ b/Test/baseResults/glsl.460.subgroupEXT.mesh.out
@@ -0,0 +1,1039 @@
+glsl.460.subgroupEXT.mesh
+ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'gl_NumSubgroups' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:14: 'gl_SubgroupID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:15: 'subgroupMemoryBarrierShared' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 64 compilation errors. No code generated.
+
+
+Shader version: 460
+Requested GL_EXT_mesh_shader
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+max_vertices = 81
+max_primitives = 32
+output primitive = triangles
+local_size = (32, 1, 1)
+ERROR: node is still EOpNull!
+0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:3 Function Parameters:
+0:3 'f4' ( in 4-component vector of float)
+0:? Sequence
+0:6 'gl_SubgroupSize' ( in uint SubgroupSize)
+0:7 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:8 subgroupBarrier ( global void)
+0:9 subgroupMemoryBarrier ( global void)
+0:10 subgroupMemoryBarrierBuffer ( global void)
+0:11 subgroupMemoryBarrierImage ( global void)
+0:12 subgroupElect ( global bool)
+0:13 'gl_NumSubgroups' ( in uint NumSubgroups)
+0:14 'gl_SubgroupID' ( in uint SubgroupID)
+0:15 subgroupMemoryBarrierShared ( global void)
+0:17 subgroupAll ( global bool)
+0:17 Constant:
+0:17 true (const bool)
+0:18 subgroupAny ( global bool)
+0:18 Constant:
+0:18 false (const bool)
+0:19 subgroupAllEqual ( global bool)
+0:19 'f4' ( in 4-component vector of float)
+0:21 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:22 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:23 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:24 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:25 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:26 subgroupBroadcast ( global 4-component vector of float)
+0:26 'f4' ( in 4-component vector of float)
+0:26 Constant:
+0:26 0 (const uint)
+0:27 subgroupBroadcastFirst ( global 4-component vector of float)
+0:27 'f4' ( in 4-component vector of float)
+0:28 Sequence
+0:28 move second child to first child ( temp 4-component vector of uint)
+0:28 'ballot' ( temp 4-component vector of uint)
+0:28 subgroupBallot ( global 4-component vector of uint)
+0:28 Constant:
+0:28 false (const bool)
+0:29 subgroupInverseBallot ( global bool)
+0:29 Constant:
+0:29 1 (const uint)
+0:29 1 (const uint)
+0:29 1 (const uint)
+0:29 1 (const uint)
+0:30 subgroupBallotBitExtract ( global bool)
+0:30 'ballot' ( temp 4-component vector of uint)
+0:30 Constant:
+0:30 0 (const uint)
+0:31 subgroupBallotBitCount ( global uint)
+0:31 'ballot' ( temp 4-component vector of uint)
+0:32 subgroupBallotInclusiveBitCount ( global uint)
+0:32 'ballot' ( temp 4-component vector of uint)
+0:33 subgroupBallotExclusiveBitCount ( global uint)
+0:33 'ballot' ( temp 4-component vector of uint)
+0:34 subgroupBallotFindLSB ( global uint)
+0:34 'ballot' ( temp 4-component vector of uint)
+0:35 subgroupBallotFindMSB ( global uint)
+0:35 'ballot' ( temp 4-component vector of uint)
+0:37 subgroupShuffle ( global 4-component vector of float)
+0:37 'f4' ( in 4-component vector of float)
+0:37 Constant:
+0:37 0 (const uint)
+0:38 subgroupShuffleXor ( global 4-component vector of float)
+0:38 'f4' ( in 4-component vector of float)
+0:38 Constant:
+0:38 1 (const uint)
+0:39 subgroupShuffleUp ( global 4-component vector of float)
+0:39 'f4' ( in 4-component vector of float)
+0:39 Constant:
+0:39 1 (const uint)
+0:40 subgroupShuffleDown ( global 4-component vector of float)
+0:40 'f4' ( in 4-component vector of float)
+0:40 Constant:
+0:40 1 (const uint)
+0:42 move second child to first child ( temp 4-component vector of float)
+0:42 'result' ( temp 4-component vector of float)
+0:42 subgroupAdd ( global 4-component vector of float)
+0:42 'f4' ( in 4-component vector of float)
+0:43 subgroupMul ( global 4-component vector of float)
+0:43 'f4' ( in 4-component vector of float)
+0:44 subgroupMin ( global 4-component vector of float)
+0:44 'f4' ( in 4-component vector of float)
+0:45 subgroupMax ( global 4-component vector of float)
+0:45 'f4' ( in 4-component vector of float)
+0:46 subgroupAnd ( global 4-component vector of uint)
+0:46 'ballot' ( temp 4-component vector of uint)
+0:47 subgroupOr ( global 4-component vector of uint)
+0:47 'ballot' ( temp 4-component vector of uint)
+0:48 subgroupXor ( global 4-component vector of uint)
+0:48 'ballot' ( temp 4-component vector of uint)
+0:49 subgroupInclusiveAdd ( global 4-component vector of float)
+0:49 'f4' ( in 4-component vector of float)
+0:50 subgroupInclusiveMul ( global 4-component vector of float)
+0:50 'f4' ( in 4-component vector of float)
+0:51 subgroupInclusiveMin ( global 4-component vector of float)
+0:51 'f4' ( in 4-component vector of float)
+0:52 subgroupInclusiveMax ( global 4-component vector of float)
+0:52 'f4' ( in 4-component vector of float)
+0:53 subgroupInclusiveAnd ( global 4-component vector of uint)
+0:53 'ballot' ( temp 4-component vector of uint)
+0:54 subgroupInclusiveOr ( global 4-component vector of uint)
+0:54 'ballot' ( temp 4-component vector of uint)
+0:55 subgroupInclusiveXor ( global 4-component vector of uint)
+0:55 'ballot' ( temp 4-component vector of uint)
+0:56 subgroupExclusiveAdd ( global 4-component vector of float)
+0:56 'f4' ( in 4-component vector of float)
+0:57 subgroupExclusiveMul ( global 4-component vector of float)
+0:57 'f4' ( in 4-component vector of float)
+0:58 subgroupExclusiveMin ( global 4-component vector of float)
+0:58 'f4' ( in 4-component vector of float)
+0:59 subgroupExclusiveMax ( global 4-component vector of float)
+0:59 'f4' ( in 4-component vector of float)
+0:60 subgroupExclusiveAnd ( global 4-component vector of uint)
+0:60 'ballot' ( temp 4-component vector of uint)
+0:61 subgroupExclusiveOr ( global 4-component vector of uint)
+0:61 'ballot' ( temp 4-component vector of uint)
+0:62 subgroupExclusiveXor ( global 4-component vector of uint)
+0:62 'ballot' ( temp 4-component vector of uint)
+0:64 subgroupClusteredAdd ( global 4-component vector of float)
+0:64 'f4' ( in 4-component vector of float)
+0:64 Constant:
+0:64 2 (const uint)
+0:65 subgroupClusteredMul ( global 4-component vector of float)
+0:65 'f4' ( in 4-component vector of float)
+0:65 Constant:
+0:65 2 (const uint)
+0:66 subgroupClusteredMin ( global 4-component vector of float)
+0:66 'f4' ( in 4-component vector of float)
+0:66 Constant:
+0:66 2 (const uint)
+0:67 subgroupClusteredMax ( global 4-component vector of float)
+0:67 'f4' ( in 4-component vector of float)
+0:67 Constant:
+0:67 2 (const uint)
+0:68 subgroupClusteredAnd ( global 4-component vector of uint)
+0:68 'ballot' ( temp 4-component vector of uint)
+0:68 Constant:
+0:68 2 (const uint)
+0:69 subgroupClusteredOr ( global 4-component vector of uint)
+0:69 'ballot' ( temp 4-component vector of uint)
+0:69 Constant:
+0:69 2 (const uint)
+0:70 subgroupClusteredXor ( global 4-component vector of uint)
+0:70 'ballot' ( temp 4-component vector of uint)
+0:70 Constant:
+0:70 2 (const uint)
+0:72 subgroupQuadBroadcast ( global 4-component vector of float)
+0:72 'f4' ( in 4-component vector of float)
+0:72 Constant:
+0:72 0 (const uint)
+0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:73 'f4' ( in 4-component vector of float)
+0:74 subgroupQuadSwapVertical ( global 4-component vector of float)
+0:74 'f4' ( in 4-component vector of float)
+0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:75 'f4' ( in 4-component vector of float)
+0:77 Branch: Return with expression
+0:77 'result' ( temp 4-component vector of float)
+0:97 Function Definition: main( ( global void)
+0:97 Function Parameters:
+0:99 Sequence
+0:99 Sequence
+0:99 move second child to first child ( temp uint)
+0:99 'iid' ( temp uint)
+0:99 direct index ( temp uint)
+0:99 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID)
+0:99 Constant:
+0:99 0 (const int)
+0:100 Sequence
+0:100 move second child to first child ( temp uint)
+0:100 'gid' ( temp uint)
+0:100 direct index ( temp uint)
+0:100 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID)
+0:100 Constant:
+0:100 0 (const int)
+0:101 Sequence
+0:101 move second child to first child ( temp uint)
+0:101 'vertexCount' ( temp uint)
+0:101 Constant:
+0:101 81 (const uint)
+0:102 Sequence
+0:102 move second child to first child ( temp uint)
+0:102 'primitiveCount' ( temp uint)
+0:102 Constant:
+0:102 32 (const uint)
+0:103 SetMeshOutputsEXT ( global void)
+0:103 'vertexCount' ( temp uint)
+0:103 'primitiveCount' ( temp uint)
+0:105 move second child to first child ( temp 4-component vector of float)
+0:105 gl_Position: direct index for structure ( out 4-component vector of float Position)
+0:105 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:105 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:105 'iid' ( temp uint)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 1.000000
+0:105 1.000000
+0:105 1.000000
+0:105 1.000000
+0:106 move second child to first child ( temp float)
+0:106 gl_PointSize: direct index for structure ( out float PointSize)
+0:106 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:106 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:106 'iid' ( temp uint)
+0:106 Constant:
+0:106 1 (const int)
+0:106 Constant:
+0:106 2.000000
+0:107 move second child to first child ( temp float)
+0:107 direct index ( temp float ClipDistance)
+0:107 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance)
+0:107 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:107 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:107 'iid' ( temp uint)
+0:107 Constant:
+0:107 2 (const int)
+0:107 Constant:
+0:107 3 (const int)
+0:107 Constant:
+0:107 3.000000
+0:108 move second child to first child ( temp float)
+0:108 direct index ( temp float CullDistance)
+0:108 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance)
+0:108 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:108 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:108 'iid' ( temp uint)
+0:108 Constant:
+0:108 3 (const int)
+0:108 Constant:
+0:108 2 (const int)
+0:108 Constant:
+0:108 4.000000
+0:110 MemoryBarrierShared ( global void)
+0:110 Barrier ( global void)
+0:112 move second child to first child ( temp 4-component vector of float)
+0:112 gl_Position: direct index for structure ( out 4-component vector of float Position)
+0:112 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:112 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:112 add ( temp uint)
+0:112 'iid' ( temp uint)
+0:112 Constant:
+0:112 1 (const uint)
+0:112 Constant:
+0:112 0 (const int)
+0:112 gl_Position: direct index for structure ( out 4-component vector of float Position)
+0:112 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:112 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:112 'iid' ( temp uint)
+0:112 Constant:
+0:112 0 (const int)
+0:113 move second child to first child ( temp float)
+0:113 gl_PointSize: direct index for structure ( out float PointSize)
+0:113 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:113 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:113 add ( temp uint)
+0:113 'iid' ( temp uint)
+0:113 Constant:
+0:113 1 (const uint)
+0:113 Constant:
+0:113 1 (const int)
+0:113 gl_PointSize: direct index for structure ( out float PointSize)
+0:113 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:113 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:113 'iid' ( temp uint)
+0:113 Constant:
+0:113 1 (const int)
+0:114 move second child to first child ( temp float)
+0:114 direct index ( temp float ClipDistance)
+0:114 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance)
+0:114 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:114 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:114 add ( temp uint)
+0:114 'iid' ( temp uint)
+0:114 Constant:
+0:114 1 (const uint)
+0:114 Constant:
+0:114 2 (const int)
+0:114 Constant:
+0:114 3 (const int)
+0:114 direct index ( temp float ClipDistance)
+0:114 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance)
+0:114 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:114 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:114 'iid' ( temp uint)
+0:114 Constant:
+0:114 2 (const int)
+0:114 Constant:
+0:114 3 (const int)
+0:115 move second child to first child ( temp float)
+0:115 direct index ( temp float CullDistance)
+0:115 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance)
+0:115 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:115 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:115 add ( temp uint)
+0:115 'iid' ( temp uint)
+0:115 Constant:
+0:115 1 (const uint)
+0:115 Constant:
+0:115 3 (const int)
+0:115 Constant:
+0:115 2 (const int)
+0:115 direct index ( temp float CullDistance)
+0:115 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance)
+0:115 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:115 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:115 'iid' ( temp uint)
+0:115 Constant:
+0:115 3 (const int)
+0:115 Constant:
+0:115 2 (const int)
+0:117 MemoryBarrierShared ( global void)
+0:117 Barrier ( global void)
+0:119 move second child to first child ( temp int)
+0:119 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID)
+0:119 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:119 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:119 'iid' ( temp uint)
+0:119 Constant:
+0:119 0 (const int)
+0:119 Constant:
+0:119 6 (const int)
+0:120 move second child to first child ( temp int)
+0:120 gl_Layer: direct index for structure ( perprimitiveNV out int Layer)
+0:120 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:120 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:120 'iid' ( temp uint)
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 7 (const int)
+0:121 move second child to first child ( temp int)
+0:121 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex)
+0:121 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:121 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:121 'iid' ( temp uint)
+0:121 Constant:
+0:121 2 (const int)
+0:121 Constant:
+0:121 8 (const int)
+0:122 move second child to first child ( temp bool)
+0:122 gl_CullPrimitiveEXT: direct index for structure ( perprimitiveNV out bool CullPrimitiveEXT)
+0:122 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:122 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:122 'iid' ( temp uint)
+0:122 Constant:
+0:122 3 (const int)
+0:122 Constant:
+0:122 false (const bool)
+0:124 MemoryBarrierShared ( global void)
+0:124 Barrier ( global void)
+0:126 move second child to first child ( temp int)
+0:126 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID)
+0:126 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:126 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:126 add ( temp uint)
+0:126 'iid' ( temp uint)
+0:126 Constant:
+0:126 1 (const uint)
+0:126 Constant:
+0:126 0 (const int)
+0:126 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID)
+0:126 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:126 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:126 'iid' ( temp uint)
+0:126 Constant:
+0:126 0 (const int)
+0:127 move second child to first child ( temp int)
+0:127 gl_Layer: direct index for structure ( perprimitiveNV out int Layer)
+0:127 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:127 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:127 add ( temp uint)
+0:127 'iid' ( temp uint)
+0:127 Constant:
+0:127 1 (const uint)
+0:127 Constant:
+0:127 1 (const int)
+0:127 gl_Layer: direct index for structure ( perprimitiveNV out int Layer)
+0:127 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:127 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:127 'iid' ( temp uint)
+0:127 Constant:
+0:127 1 (const int)
+0:128 move second child to first child ( temp int)
+0:128 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex)
+0:128 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:128 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:128 add ( temp uint)
+0:128 'iid' ( temp uint)
+0:128 Constant:
+0:128 1 (const uint)
+0:128 Constant:
+0:128 2 (const int)
+0:128 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex)
+0:128 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:128 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:128 'iid' ( temp uint)
+0:128 Constant:
+0:128 2 (const int)
+0:129 move second child to first child ( temp bool)
+0:129 gl_CullPrimitiveEXT: direct index for structure ( perprimitiveNV out bool CullPrimitiveEXT)
+0:129 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:129 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:129 add ( temp uint)
+0:129 'iid' ( temp uint)
+0:129 Constant:
+0:129 1 (const uint)
+0:129 Constant:
+0:129 3 (const int)
+0:129 Constant:
+0:129 false (const bool)
+0:131 MemoryBarrierShared ( global void)
+0:131 Barrier ( global void)
+0:134 move second child to first child ( temp 3-component vector of uint)
+0:134 direct index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:134 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:134 Constant:
+0:134 0 (const int)
+0:134 Constant:
+0:134 1 (const uint)
+0:134 1 (const uint)
+0:134 1 (const uint)
+0:135 move second child to first child ( temp 3-component vector of uint)
+0:135 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:135 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:135 subtract ( temp uint)
+0:135 'primitiveCount' ( temp uint)
+0:135 Constant:
+0:135 1 (const uint)
+0:135 Constant:
+0:135 2 (const uint)
+0:135 2 (const uint)
+0:135 2 (const uint)
+0:136 move second child to first child ( temp 3-component vector of uint)
+0:136 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:136 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:136 'gid' ( temp uint)
+0:136 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:136 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:136 subtract ( temp uint)
+0:136 'gid' ( temp uint)
+0:136 Constant:
+0:136 1 (const uint)
+0:139 MemoryBarrierShared ( global void)
+0:139 Barrier ( global void)
+0:143 Function Definition: basic_works( ( global void)
+0:143 Function Parameters:
+0:145 Sequence
+0:145 'gl_SubgroupSize' ( in uint SubgroupSize)
+0:146 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:147 subgroupBarrier ( global void)
+0:148 subgroupMemoryBarrier ( global void)
+0:149 subgroupMemoryBarrierBuffer ( global void)
+0:150 subgroupMemoryBarrierImage ( global void)
+0:151 subgroupElect ( global bool)
+0:152 'gl_NumSubgroups' ( in uint NumSubgroups)
+0:153 'gl_SubgroupID' ( in uint SubgroupID)
+0:154 subgroupMemoryBarrierShared ( global void)
+0:158 Function Definition: ballot_works(vf4; ( global void)
+0:158 Function Parameters:
+0:158 'f4' ( in 4-component vector of float)
+0:159 Sequence
+0:159 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:160 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:161 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:162 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:163 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:164 subgroupBroadcast ( global 4-component vector of float)
+0:164 'f4' ( in 4-component vector of float)
+0:164 Constant:
+0:164 0 (const uint)
+0:165 subgroupBroadcastFirst ( global 4-component vector of float)
+0:165 'f4' ( in 4-component vector of float)
+0:166 Sequence
+0:166 move second child to first child ( temp 4-component vector of uint)
+0:166 'ballot' ( temp 4-component vector of uint)
+0:166 subgroupBallot ( global 4-component vector of uint)
+0:166 Constant:
+0:166 false (const bool)
+0:167 subgroupInverseBallot ( global bool)
+0:167 Constant:
+0:167 1 (const uint)
+0:167 1 (const uint)
+0:167 1 (const uint)
+0:167 1 (const uint)
+0:168 subgroupBallotBitExtract ( global bool)
+0:168 'ballot' ( temp 4-component vector of uint)
+0:168 Constant:
+0:168 0 (const uint)
+0:169 subgroupBallotBitCount ( global uint)
+0:169 'ballot' ( temp 4-component vector of uint)
+0:170 subgroupBallotInclusiveBitCount ( global uint)
+0:170 'ballot' ( temp 4-component vector of uint)
+0:171 subgroupBallotExclusiveBitCount ( global uint)
+0:171 'ballot' ( temp 4-component vector of uint)
+0:172 subgroupBallotFindLSB ( global uint)
+0:172 'ballot' ( temp 4-component vector of uint)
+0:173 subgroupBallotFindMSB ( global uint)
+0:173 'ballot' ( temp 4-component vector of uint)
+0:177 Function Definition: vote_works(vf4; ( global void)
+0:177 Function Parameters:
+0:177 'f4' ( in 4-component vector of float)
+0:179 Sequence
+0:179 subgroupAll ( global bool)
+0:179 Constant:
+0:179 true (const bool)
+0:180 subgroupAny ( global bool)
+0:180 Constant:
+0:180 false (const bool)
+0:181 subgroupAllEqual ( global bool)
+0:181 'f4' ( in 4-component vector of float)
+0:186 Function Definition: shuffle_works(vf4; ( global void)
+0:186 Function Parameters:
+0:186 'f4' ( in 4-component vector of float)
+0:188 Sequence
+0:188 subgroupShuffle ( global 4-component vector of float)
+0:188 'f4' ( in 4-component vector of float)
+0:188 Constant:
+0:188 0 (const uint)
+0:189 subgroupShuffleXor ( global 4-component vector of float)
+0:189 'f4' ( in 4-component vector of float)
+0:189 Constant:
+0:189 1 (const uint)
+0:190 subgroupShuffleUp ( global 4-component vector of float)
+0:190 'f4' ( in 4-component vector of float)
+0:190 Constant:
+0:190 1 (const uint)
+0:191 subgroupShuffleDown ( global 4-component vector of float)
+0:191 'f4' ( in 4-component vector of float)
+0:191 Constant:
+0:191 1 (const uint)
+0:195 Function Definition: arith_works(vf4; ( global void)
+0:195 Function Parameters:
+0:195 'f4' ( in 4-component vector of float)
+0:? Sequence
+0:198 subgroupAdd ( global 4-component vector of float)
+0:198 'f4' ( in 4-component vector of float)
+0:199 subgroupMul ( global 4-component vector of float)
+0:199 'f4' ( in 4-component vector of float)
+0:200 subgroupMin ( global 4-component vector of float)
+0:200 'f4' ( in 4-component vector of float)
+0:201 subgroupMax ( global 4-component vector of float)
+0:201 'f4' ( in 4-component vector of float)
+0:202 subgroupAnd ( global 4-component vector of uint)
+0:202 'ballot' ( temp 4-component vector of uint)
+0:203 subgroupOr ( global 4-component vector of uint)
+0:203 'ballot' ( temp 4-component vector of uint)
+0:204 subgroupXor ( global 4-component vector of uint)
+0:204 'ballot' ( temp 4-component vector of uint)
+0:205 subgroupInclusiveAdd ( global 4-component vector of float)
+0:205 'f4' ( in 4-component vector of float)
+0:206 subgroupInclusiveMul ( global 4-component vector of float)
+0:206 'f4' ( in 4-component vector of float)
+0:207 subgroupInclusiveMin ( global 4-component vector of float)
+0:207 'f4' ( in 4-component vector of float)
+0:208 subgroupInclusiveMax ( global 4-component vector of float)
+0:208 'f4' ( in 4-component vector of float)
+0:209 subgroupInclusiveAnd ( global 4-component vector of uint)
+0:209 'ballot' ( temp 4-component vector of uint)
+0:210 subgroupInclusiveOr ( global 4-component vector of uint)
+0:210 'ballot' ( temp 4-component vector of uint)
+0:211 subgroupInclusiveXor ( global 4-component vector of uint)
+0:211 'ballot' ( temp 4-component vector of uint)
+0:212 subgroupExclusiveAdd ( global 4-component vector of float)
+0:212 'f4' ( in 4-component vector of float)
+0:213 subgroupExclusiveMul ( global 4-component vector of float)
+0:213 'f4' ( in 4-component vector of float)
+0:214 subgroupExclusiveMin ( global 4-component vector of float)
+0:214 'f4' ( in 4-component vector of float)
+0:215 subgroupExclusiveMax ( global 4-component vector of float)
+0:215 'f4' ( in 4-component vector of float)
+0:216 subgroupExclusiveAnd ( global 4-component vector of uint)
+0:216 'ballot' ( temp 4-component vector of uint)
+0:217 subgroupExclusiveOr ( global 4-component vector of uint)
+0:217 'ballot' ( temp 4-component vector of uint)
+0:218 subgroupExclusiveXor ( global 4-component vector of uint)
+0:218 'ballot' ( temp 4-component vector of uint)
+0:222 Function Definition: clustered_works(vf4; ( global void)
+0:222 Function Parameters:
+0:222 'f4' ( in 4-component vector of float)
+0:224 Sequence
+0:224 Sequence
+0:224 move second child to first child ( temp 4-component vector of uint)
+0:224 'ballot' ( temp 4-component vector of uint)
+0:224 Constant:
+0:224 85 (const uint)
+0:224 0 (const uint)
+0:224 0 (const uint)
+0:224 0 (const uint)
+0:225 subgroupClusteredAdd ( global 4-component vector of float)
+0:225 'f4' ( in 4-component vector of float)
+0:225 Constant:
+0:225 2 (const uint)
+0:226 subgroupClusteredMul ( global 4-component vector of float)
+0:226 'f4' ( in 4-component vector of float)
+0:226 Constant:
+0:226 2 (const uint)
+0:227 subgroupClusteredMin ( global 4-component vector of float)
+0:227 'f4' ( in 4-component vector of float)
+0:227 Constant:
+0:227 2 (const uint)
+0:228 subgroupClusteredMax ( global 4-component vector of float)
+0:228 'f4' ( in 4-component vector of float)
+0:228 Constant:
+0:228 2 (const uint)
+0:229 subgroupClusteredAnd ( global 4-component vector of uint)
+0:229 'ballot' ( temp 4-component vector of uint)
+0:229 Constant:
+0:229 2 (const uint)
+0:230 subgroupClusteredOr ( global 4-component vector of uint)
+0:230 'ballot' ( temp 4-component vector of uint)
+0:230 Constant:
+0:230 2 (const uint)
+0:231 subgroupClusteredXor ( global 4-component vector of uint)
+0:231 'ballot' ( temp 4-component vector of uint)
+0:231 Constant:
+0:231 2 (const uint)
+0:235 Function Definition: quad_works(vf4; ( global void)
+0:235 Function Parameters:
+0:235 'f4' ( in 4-component vector of float)
+0:237 Sequence
+0:237 subgroupQuadBroadcast ( global 4-component vector of float)
+0:237 'f4' ( in 4-component vector of float)
+0:237 Constant:
+0:237 0 (const uint)
+0:238 subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:238 'f4' ( in 4-component vector of float)
+0:239 subgroupQuadSwapVertical ( global 4-component vector of float)
+0:239 'f4' ( in 4-component vector of float)
+0:240 subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:240 'f4' ( in 4-component vector of float)
+0:? Linker Objects
+0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
+0:? 32 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance})
+0:? 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:? 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT)
+
+
+Linked mesh stage:
+
+
+Shader version: 460
+Requested GL_EXT_mesh_shader
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+max_vertices = 81
+max_primitives = 32
+output primitive = triangles
+local_size = (32, 1, 1)
+ERROR: node is still EOpNull!
+0:97 Function Definition: main( ( global void)
+0:97 Function Parameters:
+0:99 Sequence
+0:99 Sequence
+0:99 move second child to first child ( temp uint)
+0:99 'iid' ( temp uint)
+0:99 direct index ( temp uint)
+0:99 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID)
+0:99 Constant:
+0:99 0 (const int)
+0:100 Sequence
+0:100 move second child to first child ( temp uint)
+0:100 'gid' ( temp uint)
+0:100 direct index ( temp uint)
+0:100 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID)
+0:100 Constant:
+0:100 0 (const int)
+0:101 Sequence
+0:101 move second child to first child ( temp uint)
+0:101 'vertexCount' ( temp uint)
+0:101 Constant:
+0:101 81 (const uint)
+0:102 Sequence
+0:102 move second child to first child ( temp uint)
+0:102 'primitiveCount' ( temp uint)
+0:102 Constant:
+0:102 32 (const uint)
+0:103 SetMeshOutputsEXT ( global void)
+0:103 'vertexCount' ( temp uint)
+0:103 'primitiveCount' ( temp uint)
+0:105 move second child to first child ( temp 4-component vector of float)
+0:105 gl_Position: direct index for structure ( out 4-component vector of float Position)
+0:105 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:105 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:105 'iid' ( temp uint)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 1.000000
+0:105 1.000000
+0:105 1.000000
+0:105 1.000000
+0:106 move second child to first child ( temp float)
+0:106 gl_PointSize: direct index for structure ( out float PointSize)
+0:106 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:106 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:106 'iid' ( temp uint)
+0:106 Constant:
+0:106 1 (const int)
+0:106 Constant:
+0:106 2.000000
+0:107 move second child to first child ( temp float)
+0:107 direct index ( temp float ClipDistance)
+0:107 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance)
+0:107 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:107 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:107 'iid' ( temp uint)
+0:107 Constant:
+0:107 2 (const int)
+0:107 Constant:
+0:107 3 (const int)
+0:107 Constant:
+0:107 3.000000
+0:108 move second child to first child ( temp float)
+0:108 direct index ( temp float CullDistance)
+0:108 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance)
+0:108 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:108 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:108 'iid' ( temp uint)
+0:108 Constant:
+0:108 3 (const int)
+0:108 Constant:
+0:108 2 (const int)
+0:108 Constant:
+0:108 4.000000
+0:110 MemoryBarrierShared ( global void)
+0:110 Barrier ( global void)
+0:112 move second child to first child ( temp 4-component vector of float)
+0:112 gl_Position: direct index for structure ( out 4-component vector of float Position)
+0:112 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:112 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:112 add ( temp uint)
+0:112 'iid' ( temp uint)
+0:112 Constant:
+0:112 1 (const uint)
+0:112 Constant:
+0:112 0 (const int)
+0:112 gl_Position: direct index for structure ( out 4-component vector of float Position)
+0:112 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:112 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:112 'iid' ( temp uint)
+0:112 Constant:
+0:112 0 (const int)
+0:113 move second child to first child ( temp float)
+0:113 gl_PointSize: direct index for structure ( out float PointSize)
+0:113 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:113 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:113 add ( temp uint)
+0:113 'iid' ( temp uint)
+0:113 Constant:
+0:113 1 (const uint)
+0:113 Constant:
+0:113 1 (const int)
+0:113 gl_PointSize: direct index for structure ( out float PointSize)
+0:113 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:113 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:113 'iid' ( temp uint)
+0:113 Constant:
+0:113 1 (const int)
+0:114 move second child to first child ( temp float)
+0:114 direct index ( temp float ClipDistance)
+0:114 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance)
+0:114 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:114 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:114 add ( temp uint)
+0:114 'iid' ( temp uint)
+0:114 Constant:
+0:114 1 (const uint)
+0:114 Constant:
+0:114 2 (const int)
+0:114 Constant:
+0:114 3 (const int)
+0:114 direct index ( temp float ClipDistance)
+0:114 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance)
+0:114 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:114 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:114 'iid' ( temp uint)
+0:114 Constant:
+0:114 2 (const int)
+0:114 Constant:
+0:114 3 (const int)
+0:115 move second child to first child ( temp float)
+0:115 direct index ( temp float CullDistance)
+0:115 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance)
+0:115 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:115 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:115 add ( temp uint)
+0:115 'iid' ( temp uint)
+0:115 Constant:
+0:115 1 (const uint)
+0:115 Constant:
+0:115 3 (const int)
+0:115 Constant:
+0:115 2 (const int)
+0:115 direct index ( temp float CullDistance)
+0:115 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance)
+0:115 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:115 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:115 'iid' ( temp uint)
+0:115 Constant:
+0:115 3 (const int)
+0:115 Constant:
+0:115 2 (const int)
+0:117 MemoryBarrierShared ( global void)
+0:117 Barrier ( global void)
+0:119 move second child to first child ( temp int)
+0:119 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID)
+0:119 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:119 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:119 'iid' ( temp uint)
+0:119 Constant:
+0:119 0 (const int)
+0:119 Constant:
+0:119 6 (const int)
+0:120 move second child to first child ( temp int)
+0:120 gl_Layer: direct index for structure ( perprimitiveNV out int Layer)
+0:120 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:120 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:120 'iid' ( temp uint)
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 7 (const int)
+0:121 move second child to first child ( temp int)
+0:121 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex)
+0:121 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:121 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:121 'iid' ( temp uint)
+0:121 Constant:
+0:121 2 (const int)
+0:121 Constant:
+0:121 8 (const int)
+0:122 move second child to first child ( temp bool)
+0:122 gl_CullPrimitiveEXT: direct index for structure ( perprimitiveNV out bool CullPrimitiveEXT)
+0:122 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:122 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:122 'iid' ( temp uint)
+0:122 Constant:
+0:122 3 (const int)
+0:122 Constant:
+0:122 false (const bool)
+0:124 MemoryBarrierShared ( global void)
+0:124 Barrier ( global void)
+0:126 move second child to first child ( temp int)
+0:126 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID)
+0:126 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:126 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:126 add ( temp uint)
+0:126 'iid' ( temp uint)
+0:126 Constant:
+0:126 1 (const uint)
+0:126 Constant:
+0:126 0 (const int)
+0:126 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID)
+0:126 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:126 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:126 'iid' ( temp uint)
+0:126 Constant:
+0:126 0 (const int)
+0:127 move second child to first child ( temp int)
+0:127 gl_Layer: direct index for structure ( perprimitiveNV out int Layer)
+0:127 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:127 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:127 add ( temp uint)
+0:127 'iid' ( temp uint)
+0:127 Constant:
+0:127 1 (const uint)
+0:127 Constant:
+0:127 1 (const int)
+0:127 gl_Layer: direct index for structure ( perprimitiveNV out int Layer)
+0:127 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:127 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:127 'iid' ( temp uint)
+0:127 Constant:
+0:127 1 (const int)
+0:128 move second child to first child ( temp int)
+0:128 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex)
+0:128 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:128 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:128 add ( temp uint)
+0:128 'iid' ( temp uint)
+0:128 Constant:
+0:128 1 (const uint)
+0:128 Constant:
+0:128 2 (const int)
+0:128 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex)
+0:128 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:128 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:128 'iid' ( temp uint)
+0:128 Constant:
+0:128 2 (const int)
+0:129 move second child to first child ( temp bool)
+0:129 gl_CullPrimitiveEXT: direct index for structure ( perprimitiveNV out bool CullPrimitiveEXT)
+0:129 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:129 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:129 add ( temp uint)
+0:129 'iid' ( temp uint)
+0:129 Constant:
+0:129 1 (const uint)
+0:129 Constant:
+0:129 3 (const int)
+0:129 Constant:
+0:129 false (const bool)
+0:131 MemoryBarrierShared ( global void)
+0:131 Barrier ( global void)
+0:134 move second child to first child ( temp 3-component vector of uint)
+0:134 direct index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:134 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:134 Constant:
+0:134 0 (const int)
+0:134 Constant:
+0:134 1 (const uint)
+0:134 1 (const uint)
+0:134 1 (const uint)
+0:135 move second child to first child ( temp 3-component vector of uint)
+0:135 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:135 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:135 subtract ( temp uint)
+0:135 'primitiveCount' ( temp uint)
+0:135 Constant:
+0:135 1 (const uint)
+0:135 Constant:
+0:135 2 (const uint)
+0:135 2 (const uint)
+0:135 2 (const uint)
+0:136 move second child to first child ( temp 3-component vector of uint)
+0:136 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:136 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:136 'gid' ( temp uint)
+0:136 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:136 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT)
+0:136 subtract ( temp uint)
+0:136 'gid' ( temp uint)
+0:136 Constant:
+0:136 1 (const uint)
+0:139 MemoryBarrierShared ( global void)
+0:139 Barrier ( global void)
+0:? Linker Objects
+0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
+0:? 32 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance})
+0:? 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT})
+0:? 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT)
+
diff --git a/Test/baseResults/glsl.460.subgroupEXT.task.out b/Test/baseResults/glsl.460.subgroupEXT.task.out
new file mode 100644
index 0000000..c756f38
--- /dev/null
+++ b/Test/baseResults/glsl.460.subgroupEXT.task.out
@@ -0,0 +1,707 @@
+glsl.460.subgroupEXT.task
+ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'gl_NumSubgroups' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:14: 'gl_SubgroupID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:15: 'subgroupMemoryBarrierShared' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 64 compilation errors. No code generated.
+
+
+Shader version: 460
+Requested GL_EXT_mesh_shader
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+local_size = (32, 1, 1)
+ERROR: node is still EOpNull!
+0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:3 Function Parameters:
+0:3 'f4' ( in 4-component vector of float)
+0:? Sequence
+0:6 'gl_SubgroupSize' ( in uint SubgroupSize)
+0:7 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:8 subgroupBarrier ( global void)
+0:9 subgroupMemoryBarrier ( global void)
+0:10 subgroupMemoryBarrierBuffer ( global void)
+0:11 subgroupMemoryBarrierImage ( global void)
+0:12 subgroupElect ( global bool)
+0:13 'gl_NumSubgroups' ( in uint NumSubgroups)
+0:14 'gl_SubgroupID' ( in uint SubgroupID)
+0:15 subgroupMemoryBarrierShared ( global void)
+0:17 subgroupAll ( global bool)
+0:17 Constant:
+0:17 true (const bool)
+0:18 subgroupAny ( global bool)
+0:18 Constant:
+0:18 false (const bool)
+0:19 subgroupAllEqual ( global bool)
+0:19 'f4' ( in 4-component vector of float)
+0:21 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:22 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:23 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:24 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:25 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:26 subgroupBroadcast ( global 4-component vector of float)
+0:26 'f4' ( in 4-component vector of float)
+0:26 Constant:
+0:26 0 (const uint)
+0:27 subgroupBroadcastFirst ( global 4-component vector of float)
+0:27 'f4' ( in 4-component vector of float)
+0:28 Sequence
+0:28 move second child to first child ( temp 4-component vector of uint)
+0:28 'ballot' ( temp 4-component vector of uint)
+0:28 subgroupBallot ( global 4-component vector of uint)
+0:28 Constant:
+0:28 false (const bool)
+0:29 subgroupInverseBallot ( global bool)
+0:29 Constant:
+0:29 1 (const uint)
+0:29 1 (const uint)
+0:29 1 (const uint)
+0:29 1 (const uint)
+0:30 subgroupBallotBitExtract ( global bool)
+0:30 'ballot' ( temp 4-component vector of uint)
+0:30 Constant:
+0:30 0 (const uint)
+0:31 subgroupBallotBitCount ( global uint)
+0:31 'ballot' ( temp 4-component vector of uint)
+0:32 subgroupBallotInclusiveBitCount ( global uint)
+0:32 'ballot' ( temp 4-component vector of uint)
+0:33 subgroupBallotExclusiveBitCount ( global uint)
+0:33 'ballot' ( temp 4-component vector of uint)
+0:34 subgroupBallotFindLSB ( global uint)
+0:34 'ballot' ( temp 4-component vector of uint)
+0:35 subgroupBallotFindMSB ( global uint)
+0:35 'ballot' ( temp 4-component vector of uint)
+0:37 subgroupShuffle ( global 4-component vector of float)
+0:37 'f4' ( in 4-component vector of float)
+0:37 Constant:
+0:37 0 (const uint)
+0:38 subgroupShuffleXor ( global 4-component vector of float)
+0:38 'f4' ( in 4-component vector of float)
+0:38 Constant:
+0:38 1 (const uint)
+0:39 subgroupShuffleUp ( global 4-component vector of float)
+0:39 'f4' ( in 4-component vector of float)
+0:39 Constant:
+0:39 1 (const uint)
+0:40 subgroupShuffleDown ( global 4-component vector of float)
+0:40 'f4' ( in 4-component vector of float)
+0:40 Constant:
+0:40 1 (const uint)
+0:42 move second child to first child ( temp 4-component vector of float)
+0:42 'result' ( temp 4-component vector of float)
+0:42 subgroupAdd ( global 4-component vector of float)
+0:42 'f4' ( in 4-component vector of float)
+0:43 subgroupMul ( global 4-component vector of float)
+0:43 'f4' ( in 4-component vector of float)
+0:44 subgroupMin ( global 4-component vector of float)
+0:44 'f4' ( in 4-component vector of float)
+0:45 subgroupMax ( global 4-component vector of float)
+0:45 'f4' ( in 4-component vector of float)
+0:46 subgroupAnd ( global 4-component vector of uint)
+0:46 'ballot' ( temp 4-component vector of uint)
+0:47 subgroupOr ( global 4-component vector of uint)
+0:47 'ballot' ( temp 4-component vector of uint)
+0:48 subgroupXor ( global 4-component vector of uint)
+0:48 'ballot' ( temp 4-component vector of uint)
+0:49 subgroupInclusiveAdd ( global 4-component vector of float)
+0:49 'f4' ( in 4-component vector of float)
+0:50 subgroupInclusiveMul ( global 4-component vector of float)
+0:50 'f4' ( in 4-component vector of float)
+0:51 subgroupInclusiveMin ( global 4-component vector of float)
+0:51 'f4' ( in 4-component vector of float)
+0:52 subgroupInclusiveMax ( global 4-component vector of float)
+0:52 'f4' ( in 4-component vector of float)
+0:53 subgroupInclusiveAnd ( global 4-component vector of uint)
+0:53 'ballot' ( temp 4-component vector of uint)
+0:54 subgroupInclusiveOr ( global 4-component vector of uint)
+0:54 'ballot' ( temp 4-component vector of uint)
+0:55 subgroupInclusiveXor ( global 4-component vector of uint)
+0:55 'ballot' ( temp 4-component vector of uint)
+0:56 subgroupExclusiveAdd ( global 4-component vector of float)
+0:56 'f4' ( in 4-component vector of float)
+0:57 subgroupExclusiveMul ( global 4-component vector of float)
+0:57 'f4' ( in 4-component vector of float)
+0:58 subgroupExclusiveMin ( global 4-component vector of float)
+0:58 'f4' ( in 4-component vector of float)
+0:59 subgroupExclusiveMax ( global 4-component vector of float)
+0:59 'f4' ( in 4-component vector of float)
+0:60 subgroupExclusiveAnd ( global 4-component vector of uint)
+0:60 'ballot' ( temp 4-component vector of uint)
+0:61 subgroupExclusiveOr ( global 4-component vector of uint)
+0:61 'ballot' ( temp 4-component vector of uint)
+0:62 subgroupExclusiveXor ( global 4-component vector of uint)
+0:62 'ballot' ( temp 4-component vector of uint)
+0:64 subgroupClusteredAdd ( global 4-component vector of float)
+0:64 'f4' ( in 4-component vector of float)
+0:64 Constant:
+0:64 2 (const uint)
+0:65 subgroupClusteredMul ( global 4-component vector of float)
+0:65 'f4' ( in 4-component vector of float)
+0:65 Constant:
+0:65 2 (const uint)
+0:66 subgroupClusteredMin ( global 4-component vector of float)
+0:66 'f4' ( in 4-component vector of float)
+0:66 Constant:
+0:66 2 (const uint)
+0:67 subgroupClusteredMax ( global 4-component vector of float)
+0:67 'f4' ( in 4-component vector of float)
+0:67 Constant:
+0:67 2 (const uint)
+0:68 subgroupClusteredAnd ( global 4-component vector of uint)
+0:68 'ballot' ( temp 4-component vector of uint)
+0:68 Constant:
+0:68 2 (const uint)
+0:69 subgroupClusteredOr ( global 4-component vector of uint)
+0:69 'ballot' ( temp 4-component vector of uint)
+0:69 Constant:
+0:69 2 (const uint)
+0:70 subgroupClusteredXor ( global 4-component vector of uint)
+0:70 'ballot' ( temp 4-component vector of uint)
+0:70 Constant:
+0:70 2 (const uint)
+0:72 subgroupQuadBroadcast ( global 4-component vector of float)
+0:72 'f4' ( in 4-component vector of float)
+0:72 Constant:
+0:72 0 (const uint)
+0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:73 'f4' ( in 4-component vector of float)
+0:74 subgroupQuadSwapVertical ( global 4-component vector of float)
+0:74 'f4' ( in 4-component vector of float)
+0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:75 'f4' ( in 4-component vector of float)
+0:77 Branch: Return with expression
+0:77 'result' ( temp 4-component vector of float)
+0:102 Function Definition: main( ( global void)
+0:102 Function Parameters:
+0:104 Sequence
+0:104 Sequence
+0:104 move second child to first child ( temp uint)
+0:104 'iid' ( temp uint)
+0:104 direct index ( temp uint)
+0:104 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID)
+0:104 Constant:
+0:104 0 (const int)
+0:105 Sequence
+0:105 move second child to first child ( temp uint)
+0:105 'gid' ( temp uint)
+0:105 direct index ( temp uint)
+0:105 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID)
+0:105 Constant:
+0:105 0 (const int)
+0:108 Sequence
+0:108 Sequence
+0:108 move second child to first child ( temp uint)
+0:108 'i' ( temp uint)
+0:108 Constant:
+0:108 0 (const uint)
+0:108 Loop with condition tested first
+0:108 Loop Condition
+0:108 Compare Less Than ( temp bool)
+0:108 'i' ( temp uint)
+0:108 Constant:
+0:108 10 (const uint)
+0:108 Loop Body
+0:109 Sequence
+0:109 move second child to first child ( temp 4-component vector of float)
+0:109 indirect index ( temp 4-component vector of float)
+0:109 'mem' ( shared 10-element array of 4-component vector of float)
+0:109 'i' ( temp uint)
+0:109 Construct vec4 ( temp 4-component vector of float)
+0:109 Convert uint to float ( temp float)
+0:109 add ( temp uint)
+0:109 'i' ( temp uint)
+0:109 uni_value: direct index for structure (layout( column_major shared) uniform uint)
+0:109 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value})
+0:109 Constant:
+0:109 0 (const uint)
+0:108 Loop Terminal Expression
+0:108 Pre-Increment ( temp uint)
+0:108 'i' ( temp uint)
+0:111 imageStore ( global void)
+0:111 'uni_image' (layout( binding=0) writeonly uniform image2D)
+0:111 Construct ivec2 ( temp 2-component vector of int)
+0:111 Convert uint to int ( temp int)
+0:111 'iid' ( temp uint)
+0:111 indirect index ( temp 4-component vector of float)
+0:111 'mem' ( shared 10-element array of 4-component vector of float)
+0:111 'gid' ( temp uint)
+0:112 imageStore ( global void)
+0:112 'uni_image' (layout( binding=0) writeonly uniform image2D)
+0:112 Construct ivec2 ( temp 2-component vector of int)
+0:112 Convert uint to int ( temp int)
+0:112 'iid' ( temp uint)
+0:112 indirect index ( temp 4-component vector of float)
+0:112 'mem' ( shared 10-element array of 4-component vector of float)
+0:112 add ( temp uint)
+0:112 'gid' ( temp uint)
+0:112 Constant:
+0:112 1 (const uint)
+0:114 MemoryBarrierShared ( global void)
+0:114 Barrier ( global void)
+0:118 move second child to first child ( temp 2-component vector of float)
+0:118 dummy: direct index for structure ( global 2-component vector of float)
+0:118 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh})
+0:118 Constant:
+0:118 0 (const int)
+0:118 Constant:
+0:118 30.000000
+0:118 31.000000
+0:119 move second child to first child ( temp 2-component vector of float)
+0:119 direct index ( temp 2-component vector of float)
+0:119 submesh: direct index for structure ( global 3-element array of 2-component vector of float)
+0:119 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh})
+0:119 Constant:
+0:119 1 (const int)
+0:119 Constant:
+0:119 0 (const int)
+0:119 Constant:
+0:119 32.000000
+0:119 33.000000
+0:120 move second child to first child ( temp 2-component vector of float)
+0:120 direct index ( temp 2-component vector of float)
+0:120 submesh: direct index for structure ( global 3-element array of 2-component vector of float)
+0:120 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh})
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 34.000000
+0:120 35.000000
+0:121 move second child to first child ( temp 2-component vector of float)
+0:121 direct index ( temp 2-component vector of float)
+0:121 submesh: direct index for structure ( global 3-element array of 2-component vector of float)
+0:121 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh})
+0:121 Constant:
+0:121 1 (const int)
+0:121 Constant:
+0:121 2 (const int)
+0:121 indirect index ( temp 2-component vector of float)
+0:121 submesh: direct index for structure ( global 3-element array of 2-component vector of float)
+0:121 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh})
+0:121 Constant:
+0:121 1 (const int)
+0:121 mod ( temp uint)
+0:121 'gid' ( temp uint)
+0:121 Constant:
+0:121 2 (const uint)
+0:123 MemoryBarrierShared ( global void)
+0:123 Barrier ( global void)
+0:126 EmitMeshTasksEXT ( global void)
+0:126 Constant:
+0:126 3 (const uint)
+0:126 Constant:
+0:126 1 (const uint)
+0:126 Constant:
+0:126 1 (const uint)
+0:130 Function Definition: basic_works( ( global void)
+0:130 Function Parameters:
+0:132 Sequence
+0:132 'gl_SubgroupSize' ( in uint SubgroupSize)
+0:133 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:134 subgroupBarrier ( global void)
+0:135 subgroupMemoryBarrier ( global void)
+0:136 subgroupMemoryBarrierBuffer ( global void)
+0:137 subgroupMemoryBarrierImage ( global void)
+0:138 subgroupElect ( global bool)
+0:139 'gl_NumSubgroups' ( in uint NumSubgroups)
+0:140 'gl_SubgroupID' ( in uint SubgroupID)
+0:141 subgroupMemoryBarrierShared ( global void)
+0:145 Function Definition: ballot_works(vf4; ( global void)
+0:145 Function Parameters:
+0:145 'f4' ( in 4-component vector of float)
+0:146 Sequence
+0:146 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:147 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:148 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:149 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:150 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:151 subgroupBroadcast ( global 4-component vector of float)
+0:151 'f4' ( in 4-component vector of float)
+0:151 Constant:
+0:151 0 (const uint)
+0:152 subgroupBroadcastFirst ( global 4-component vector of float)
+0:152 'f4' ( in 4-component vector of float)
+0:153 Sequence
+0:153 move second child to first child ( temp 4-component vector of uint)
+0:153 'ballot' ( temp 4-component vector of uint)
+0:153 subgroupBallot ( global 4-component vector of uint)
+0:153 Constant:
+0:153 false (const bool)
+0:154 subgroupInverseBallot ( global bool)
+0:154 Constant:
+0:154 1 (const uint)
+0:154 1 (const uint)
+0:154 1 (const uint)
+0:154 1 (const uint)
+0:155 subgroupBallotBitExtract ( global bool)
+0:155 'ballot' ( temp 4-component vector of uint)
+0:155 Constant:
+0:155 0 (const uint)
+0:156 subgroupBallotBitCount ( global uint)
+0:156 'ballot' ( temp 4-component vector of uint)
+0:157 subgroupBallotInclusiveBitCount ( global uint)
+0:157 'ballot' ( temp 4-component vector of uint)
+0:158 subgroupBallotExclusiveBitCount ( global uint)
+0:158 'ballot' ( temp 4-component vector of uint)
+0:159 subgroupBallotFindLSB ( global uint)
+0:159 'ballot' ( temp 4-component vector of uint)
+0:160 subgroupBallotFindMSB ( global uint)
+0:160 'ballot' ( temp 4-component vector of uint)
+0:164 Function Definition: vote_works(vf4; ( global void)
+0:164 Function Parameters:
+0:164 'f4' ( in 4-component vector of float)
+0:166 Sequence
+0:166 subgroupAll ( global bool)
+0:166 Constant:
+0:166 true (const bool)
+0:167 subgroupAny ( global bool)
+0:167 Constant:
+0:167 false (const bool)
+0:168 subgroupAllEqual ( global bool)
+0:168 'f4' ( in 4-component vector of float)
+0:173 Function Definition: shuffle_works(vf4; ( global void)
+0:173 Function Parameters:
+0:173 'f4' ( in 4-component vector of float)
+0:175 Sequence
+0:175 subgroupShuffle ( global 4-component vector of float)
+0:175 'f4' ( in 4-component vector of float)
+0:175 Constant:
+0:175 0 (const uint)
+0:176 subgroupShuffleXor ( global 4-component vector of float)
+0:176 'f4' ( in 4-component vector of float)
+0:176 Constant:
+0:176 1 (const uint)
+0:177 subgroupShuffleUp ( global 4-component vector of float)
+0:177 'f4' ( in 4-component vector of float)
+0:177 Constant:
+0:177 1 (const uint)
+0:178 subgroupShuffleDown ( global 4-component vector of float)
+0:178 'f4' ( in 4-component vector of float)
+0:178 Constant:
+0:178 1 (const uint)
+0:182 Function Definition: arith_works(vf4; ( global void)
+0:182 Function Parameters:
+0:182 'f4' ( in 4-component vector of float)
+0:? Sequence
+0:185 subgroupAdd ( global 4-component vector of float)
+0:185 'f4' ( in 4-component vector of float)
+0:186 subgroupMul ( global 4-component vector of float)
+0:186 'f4' ( in 4-component vector of float)
+0:187 subgroupMin ( global 4-component vector of float)
+0:187 'f4' ( in 4-component vector of float)
+0:188 subgroupMax ( global 4-component vector of float)
+0:188 'f4' ( in 4-component vector of float)
+0:189 subgroupAnd ( global 4-component vector of uint)
+0:189 'ballot' ( temp 4-component vector of uint)
+0:190 subgroupOr ( global 4-component vector of uint)
+0:190 'ballot' ( temp 4-component vector of uint)
+0:191 subgroupXor ( global 4-component vector of uint)
+0:191 'ballot' ( temp 4-component vector of uint)
+0:192 subgroupInclusiveAdd ( global 4-component vector of float)
+0:192 'f4' ( in 4-component vector of float)
+0:193 subgroupInclusiveMul ( global 4-component vector of float)
+0:193 'f4' ( in 4-component vector of float)
+0:194 subgroupInclusiveMin ( global 4-component vector of float)
+0:194 'f4' ( in 4-component vector of float)
+0:195 subgroupInclusiveMax ( global 4-component vector of float)
+0:195 'f4' ( in 4-component vector of float)
+0:196 subgroupInclusiveAnd ( global 4-component vector of uint)
+0:196 'ballot' ( temp 4-component vector of uint)
+0:197 subgroupInclusiveOr ( global 4-component vector of uint)
+0:197 'ballot' ( temp 4-component vector of uint)
+0:198 subgroupInclusiveXor ( global 4-component vector of uint)
+0:198 'ballot' ( temp 4-component vector of uint)
+0:199 subgroupExclusiveAdd ( global 4-component vector of float)
+0:199 'f4' ( in 4-component vector of float)
+0:200 subgroupExclusiveMul ( global 4-component vector of float)
+0:200 'f4' ( in 4-component vector of float)
+0:201 subgroupExclusiveMin ( global 4-component vector of float)
+0:201 'f4' ( in 4-component vector of float)
+0:202 subgroupExclusiveMax ( global 4-component vector of float)
+0:202 'f4' ( in 4-component vector of float)
+0:203 subgroupExclusiveAnd ( global 4-component vector of uint)
+0:203 'ballot' ( temp 4-component vector of uint)
+0:204 subgroupExclusiveOr ( global 4-component vector of uint)
+0:204 'ballot' ( temp 4-component vector of uint)
+0:205 subgroupExclusiveXor ( global 4-component vector of uint)
+0:205 'ballot' ( temp 4-component vector of uint)
+0:209 Function Definition: clustered_works(vf4; ( global void)
+0:209 Function Parameters:
+0:209 'f4' ( in 4-component vector of float)
+0:211 Sequence
+0:211 Sequence
+0:211 move second child to first child ( temp 4-component vector of uint)
+0:211 'ballot' ( temp 4-component vector of uint)
+0:211 Constant:
+0:211 85 (const uint)
+0:211 0 (const uint)
+0:211 0 (const uint)
+0:211 0 (const uint)
+0:212 subgroupClusteredAdd ( global 4-component vector of float)
+0:212 'f4' ( in 4-component vector of float)
+0:212 Constant:
+0:212 2 (const uint)
+0:213 subgroupClusteredMul ( global 4-component vector of float)
+0:213 'f4' ( in 4-component vector of float)
+0:213 Constant:
+0:213 2 (const uint)
+0:214 subgroupClusteredMin ( global 4-component vector of float)
+0:214 'f4' ( in 4-component vector of float)
+0:214 Constant:
+0:214 2 (const uint)
+0:215 subgroupClusteredMax ( global 4-component vector of float)
+0:215 'f4' ( in 4-component vector of float)
+0:215 Constant:
+0:215 2 (const uint)
+0:216 subgroupClusteredAnd ( global 4-component vector of uint)
+0:216 'ballot' ( temp 4-component vector of uint)
+0:216 Constant:
+0:216 2 (const uint)
+0:217 subgroupClusteredOr ( global 4-component vector of uint)
+0:217 'ballot' ( temp 4-component vector of uint)
+0:217 Constant:
+0:217 2 (const uint)
+0:218 subgroupClusteredXor ( global 4-component vector of uint)
+0:218 'ballot' ( temp 4-component vector of uint)
+0:218 Constant:
+0:218 2 (const uint)
+0:222 Function Definition: quad_works(vf4; ( global void)
+0:222 Function Parameters:
+0:222 'f4' ( in 4-component vector of float)
+0:224 Sequence
+0:224 subgroupQuadBroadcast ( global 4-component vector of float)
+0:224 'f4' ( in 4-component vector of float)
+0:224 Constant:
+0:224 0 (const uint)
+0:225 subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:225 'f4' ( in 4-component vector of float)
+0:226 subgroupQuadSwapVertical ( global 4-component vector of float)
+0:226 'f4' ( in 4-component vector of float)
+0:227 subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:227 'f4' ( in 4-component vector of float)
+0:? Linker Objects
+0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
+0:? 32 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 'uni_image' (layout( binding=0) writeonly uniform image2D)
+0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value})
+0:? 'mem' ( shared 10-element array of 4-component vector of float)
+0:? 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh})
+
+
+Linked task stage:
+
+
+Shader version: 460
+Requested GL_EXT_mesh_shader
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+local_size = (32, 1, 1)
+ERROR: node is still EOpNull!
+0:102 Function Definition: main( ( global void)
+0:102 Function Parameters:
+0:104 Sequence
+0:104 Sequence
+0:104 move second child to first child ( temp uint)
+0:104 'iid' ( temp uint)
+0:104 direct index ( temp uint)
+0:104 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID)
+0:104 Constant:
+0:104 0 (const int)
+0:105 Sequence
+0:105 move second child to first child ( temp uint)
+0:105 'gid' ( temp uint)
+0:105 direct index ( temp uint)
+0:105 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID)
+0:105 Constant:
+0:105 0 (const int)
+0:108 Sequence
+0:108 Sequence
+0:108 move second child to first child ( temp uint)
+0:108 'i' ( temp uint)
+0:108 Constant:
+0:108 0 (const uint)
+0:108 Loop with condition tested first
+0:108 Loop Condition
+0:108 Compare Less Than ( temp bool)
+0:108 'i' ( temp uint)
+0:108 Constant:
+0:108 10 (const uint)
+0:108 Loop Body
+0:109 Sequence
+0:109 move second child to first child ( temp 4-component vector of float)
+0:109 indirect index ( temp 4-component vector of float)
+0:109 'mem' ( shared 10-element array of 4-component vector of float)
+0:109 'i' ( temp uint)
+0:109 Construct vec4 ( temp 4-component vector of float)
+0:109 Convert uint to float ( temp float)
+0:109 add ( temp uint)
+0:109 'i' ( temp uint)
+0:109 uni_value: direct index for structure (layout( column_major shared) uniform uint)
+0:109 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value})
+0:109 Constant:
+0:109 0 (const uint)
+0:108 Loop Terminal Expression
+0:108 Pre-Increment ( temp uint)
+0:108 'i' ( temp uint)
+0:111 imageStore ( global void)
+0:111 'uni_image' (layout( binding=0) writeonly uniform image2D)
+0:111 Construct ivec2 ( temp 2-component vector of int)
+0:111 Convert uint to int ( temp int)
+0:111 'iid' ( temp uint)
+0:111 indirect index ( temp 4-component vector of float)
+0:111 'mem' ( shared 10-element array of 4-component vector of float)
+0:111 'gid' ( temp uint)
+0:112 imageStore ( global void)
+0:112 'uni_image' (layout( binding=0) writeonly uniform image2D)
+0:112 Construct ivec2 ( temp 2-component vector of int)
+0:112 Convert uint to int ( temp int)
+0:112 'iid' ( temp uint)
+0:112 indirect index ( temp 4-component vector of float)
+0:112 'mem' ( shared 10-element array of 4-component vector of float)
+0:112 add ( temp uint)
+0:112 'gid' ( temp uint)
+0:112 Constant:
+0:112 1 (const uint)
+0:114 MemoryBarrierShared ( global void)
+0:114 Barrier ( global void)
+0:118 move second child to first child ( temp 2-component vector of float)
+0:118 dummy: direct index for structure ( global 2-component vector of float)
+0:118 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh})
+0:118 Constant:
+0:118 0 (const int)
+0:118 Constant:
+0:118 30.000000
+0:118 31.000000
+0:119 move second child to first child ( temp 2-component vector of float)
+0:119 direct index ( temp 2-component vector of float)
+0:119 submesh: direct index for structure ( global 3-element array of 2-component vector of float)
+0:119 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh})
+0:119 Constant:
+0:119 1 (const int)
+0:119 Constant:
+0:119 0 (const int)
+0:119 Constant:
+0:119 32.000000
+0:119 33.000000
+0:120 move second child to first child ( temp 2-component vector of float)
+0:120 direct index ( temp 2-component vector of float)
+0:120 submesh: direct index for structure ( global 3-element array of 2-component vector of float)
+0:120 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh})
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 34.000000
+0:120 35.000000
+0:121 move second child to first child ( temp 2-component vector of float)
+0:121 direct index ( temp 2-component vector of float)
+0:121 submesh: direct index for structure ( global 3-element array of 2-component vector of float)
+0:121 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh})
+0:121 Constant:
+0:121 1 (const int)
+0:121 Constant:
+0:121 2 (const int)
+0:121 indirect index ( temp 2-component vector of float)
+0:121 submesh: direct index for structure ( global 3-element array of 2-component vector of float)
+0:121 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh})
+0:121 Constant:
+0:121 1 (const int)
+0:121 mod ( temp uint)
+0:121 'gid' ( temp uint)
+0:121 Constant:
+0:121 2 (const uint)
+0:123 MemoryBarrierShared ( global void)
+0:123 Barrier ( global void)
+0:126 EmitMeshTasksEXT ( global void)
+0:126 Constant:
+0:126 3 (const uint)
+0:126 Constant:
+0:126 1 (const uint)
+0:126 Constant:
+0:126 1 (const uint)
+0:? Linker Objects
+0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
+0:? 32 (const uint)
+0:? 1 (const uint)
+0:? 1 (const uint)
+0:? 'uni_image' (layout( binding=0) writeonly uniform image2D)
+0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value})
+0:? 'mem' ( shared 10-element array of 4-component vector of float)
+0:? 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh})
+
diff --git a/Test/baseResults/glsl.autosampledtextures.frag.out b/Test/baseResults/glsl.autosampledtextures.frag.out
index 2183898..cbbb202 100644
--- a/Test/baseResults/glsl.autosampledtextures.frag.out
+++ b/Test/baseResults/glsl.autosampledtextures.frag.out
@@ -1,6 +1,6 @@
glsl.autosampledtextures.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 23
Capability Shader
diff --git a/Test/baseResults/glsl.entryPointRename.vert.bad.out b/Test/baseResults/glsl.entryPointRename.vert.bad.out
index ce34fbf..ae5de6e 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): 8000a
+// Generated by (magic number): 8000b
// 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 71319c9..bc142a5 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 20
Capability Shader
diff --git a/Test/baseResults/glsl.versionOverride.comp.out b/Test/baseResults/glsl.versionOverride.comp.out
new file mode 100644
index 0000000..591ce4d
--- /dev/null
+++ b/Test/baseResults/glsl.versionOverride.comp.out
@@ -0,0 +1 @@
+glsl.versionOverride.comp
diff --git a/Test/baseResults/glsl.versionOverride.frag.out b/Test/baseResults/glsl.versionOverride.frag.out
new file mode 100644
index 0000000..b759a47
--- /dev/null
+++ b/Test/baseResults/glsl.versionOverride.frag.out
@@ -0,0 +1 @@
+glsl.versionOverride.frag
diff --git a/Test/baseResults/glsl.versionOverride.geom.out b/Test/baseResults/glsl.versionOverride.geom.out
new file mode 100644
index 0000000..758d9d4
--- /dev/null
+++ b/Test/baseResults/glsl.versionOverride.geom.out
@@ -0,0 +1 @@
+glsl.versionOverride.geom
diff --git a/Test/baseResults/glsl.versionOverride.tesc.out b/Test/baseResults/glsl.versionOverride.tesc.out
new file mode 100644
index 0000000..4aedf0d
--- /dev/null
+++ b/Test/baseResults/glsl.versionOverride.tesc.out
@@ -0,0 +1 @@
+glsl.versionOverride.tesc
diff --git a/Test/baseResults/glsl.versionOverride.tese.out b/Test/baseResults/glsl.versionOverride.tese.out
new file mode 100644
index 0000000..c3632e8
--- /dev/null
+++ b/Test/baseResults/glsl.versionOverride.tese.out
@@ -0,0 +1 @@
+glsl.versionOverride.tese
diff --git a/Test/baseResults/glsl.versionOverride.vert.out b/Test/baseResults/glsl.versionOverride.vert.out
new file mode 100644
index 0000000..d42dc3d
--- /dev/null
+++ b/Test/baseResults/glsl.versionOverride.vert.out
@@ -0,0 +1 @@
+glsl.versionOverride.vert
diff --git a/Test/baseResults/glspv.esversion.vert.out b/Test/baseResults/glspv.esversion.vert.out
index 2a0932a..dedcae9 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): 8000a
+// Generated by (magic number): 8000b
// 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 a90d9eb..13abe1d 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): 8000a
+// Generated by (magic number): 8000b
// 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 2b3d954..c81cf5b 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): 8000a
+// Generated by (magic number): 8000b
// 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 12a4d64..5d646a4 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): 8000a
+// Generated by (magic number): 8000b
// 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 b7c2c9e..7bea691 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): 8000a
+// Generated by (magic number): 8000b
// 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 dde6e29..b8ac133 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): 8000a
+// Generated by (magic number): 8000b
// 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 5b99f5d..264a716 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): 8000a
+// Generated by (magic number): 8000b
// 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 2691772..eab21a6 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): 8000a
+// Generated by (magic number): 8000b
// 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 566bc9d..ae36cef 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): 8000a
+// Generated by (magic number): 8000b
// 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 fa2be65..7b9d962 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): 8000a
+// Generated by (magic number): 8000b
// 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 69a631e..018da84 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): 8000a
+// Generated by (magic number): 8000b
// 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 90c1740..ee183c8 100644
--- a/Test/baseResults/hlsl.attribute.expression.comp.out
+++ b/Test/baseResults/hlsl.attribute.expression.comp.out
@@ -64,7 +64,7 @@
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int bound})
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 30
Capability Shader
diff --git a/Test/baseResults/hlsl.attribute.frag.out b/Test/baseResults/hlsl.attribute.frag.out
index 0d1f709..cdc3471 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): 8000a
+// Generated by (magic number): 8000b
// 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 1b651a3..c97c300 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): 8000a
+// Generated by (magic number): 8000b
// 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 244fe7d..4726ddd 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 28
Capability Shader
diff --git a/Test/baseResults/hlsl.autosampledtextures.frag.out b/Test/baseResults/hlsl.autosampledtextures.frag.out
index 559c130..070af82 100644
--- a/Test/baseResults/hlsl.autosampledtextures.frag.out
+++ b/Test/baseResults/hlsl.autosampledtextures.frag.out
@@ -1,6 +1,6 @@
hlsl.autosampledtextures.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 45
Capability Shader
diff --git a/Test/baseResults/hlsl.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out
index d71429c..7b02d25 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): 8000a
+// Generated by (magic number): 8000b
// 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 6dea921..ef2b5ad 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): 8000a
+// Generated by (magic number): 8000b
// 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 6a8e516..c4e3beb 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): 8000a
+// Generated by (magic number): 8000b
// 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 04a783c..f95b839 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): 8000a
+// Generated by (magic number): 8000b
// 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 d4367a0..7d896ce 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): 8000a
+// Generated by (magic number): 8000b
// 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 8a4be02..3ce857d 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): 8000a
+// Generated by (magic number): 8000b
// 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 3efbd52..ef3957c 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): 8000a
+// Generated by (magic number): 8000b
// 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 93f35d6..de9deea 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): 8000a
+// Generated by (magic number): 8000b
// 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 2151d43..6bde478 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): 8000a
+// Generated by (magic number): 8000b
// 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 691b20b..32cbb8b 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): 8000a
+// Generated by (magic number): 8000b
// 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 0cfee39..2a8d8c9 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): 8000a
+// Generated by (magic number): 8000b
// 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 a9a0b82..744b192 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): 8000a
+// Generated by (magic number): 8000b
// 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 41478e1..38d956f 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): 8000a
+// Generated by (magic number): 8000b
// 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 15a9512..6725955 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): 8000a
+// Generated by (magic number): 8000b
// 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 bb8d137..11d5b67 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): 8000a
+// Generated by (magic number): 8000b
// 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 5ccbb1e..3778ddd 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): 8000a
+// Generated by (magic number): 8000b
// 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 1d9f54e..76525dd 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): 8000a
+// Generated by (magic number): 8000b
// 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 5fa7df7..42ce516 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): 8000a
+// Generated by (magic number): 8000b
// 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 1882a5a..9cebfc5 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): 8000a
+// Generated by (magic number): 8000b
// 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 5cef564..f801eb2 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): 8000a
+// Generated by (magic number): 8000b
// 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 e942301..8dbe89a 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): 8000a
+// Generated by (magic number): 8000b
// 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 8e8fe6d..4c291a1 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): 8000a
+// Generated by (magic number): 8000b
// 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 ab366e5..9d9042d 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): 8000a
+// Generated by (magic number): 8000b
// 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 6dbe0a6..deb6ad8 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): 8000a
+// Generated by (magic number): 8000b
// 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 770f990..99798d3 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): 8000a
+// Generated by (magic number): 8000b
// 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 1adbdfc..389f867 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): 8000a
+// Generated by (magic number): 8000b
// 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 9f5e519..9b8c655 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): 8000a
+// Generated by (magic number): 8000b
// 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 13bc844..55a16c1 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): 8000a
+// Generated by (magic number): 8000b
// 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 8f2a9c2..ed82cfd 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): 8000a
+// Generated by (magic number): 8000b
// 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 fbc2c2a..9df6618 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): 8000a
+// Generated by (magic number): 8000b
// 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 b42727f..9c62b34 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): 8000a
+// Generated by (magic number): 8000b
// 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 7df3064..4e997c6 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): 8000a
+// Generated by (magic number): 8000b
// 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 e3c0a3e..7a1f830 100644
--- a/Test/baseResults/hlsl.color.hull.tesc.out
+++ b/Test/baseResults/hlsl.color.hull.tesc.out
@@ -530,7 +530,7 @@
0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 159
Capability Tessellation
diff --git a/Test/baseResults/hlsl.comparison.vec.frag.out b/Test/baseResults/hlsl.comparison.vec.frag.out
index 9fec433..720aea2 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): 8000a
+// Generated by (magic number): 8000b
// 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 99f2538..e160681 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): 8000a
+// Generated by (magic number): 8000b
// 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 12e819b..78ad577 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 66
Capability Shader
diff --git a/Test/baseResults/hlsl.constructArray.vert.out b/Test/baseResults/hlsl.constructArray.vert.out
index b070735..230efbc 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): 8000a
+// Generated by (magic number): 8000b
// 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 7b25ae8..367a03a 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): 8000a
+// Generated by (magic number): 8000b
// 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 a76ac6a..4f49b87 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): 8000a
+// Generated by (magic number): 8000b
// 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 7c44e1f..681118f 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): 8000a
+// Generated by (magic number): 8000b
// 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 7351443..ccd530a 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): 8000a
+// Generated by (magic number): 8000b
// 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 9ca0146..1862266 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): 8000a
+// Generated by (magic number): 8000b
// 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 31a7006..5128a0e 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): 8000a
+// Generated by (magic number): 8000b
// 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 d062c77..771c477 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): 8000a
+// Generated by (magic number): 8000b
// 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 41766f6..7a6c6f2 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): 8000a
+// Generated by (magic number): 8000b
// 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 0d93e8d..82a96b5 100644
--- a/Test/baseResults/hlsl.doLoop.frag.out
+++ b/Test/baseResults/hlsl.doLoop.frag.out
@@ -198,7 +198,7 @@
0:? 'input' (layout( location=0) in float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 99
Capability Shader
diff --git a/Test/baseResults/hlsl.domain.1.tese.out b/Test/baseResults/hlsl.domain.1.tese.out
index 4e53e7c..738f7cd 100644
--- a/Test/baseResults/hlsl.domain.1.tese.out
+++ b/Test/baseResults/hlsl.domain.1.tese.out
@@ -428,7 +428,7 @@
0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 125
Capability Tessellation
diff --git a/Test/baseResults/hlsl.domain.2.tese.out b/Test/baseResults/hlsl.domain.2.tese.out
index 05f934f..ddb176a 100644
--- a/Test/baseResults/hlsl.domain.2.tese.out
+++ b/Test/baseResults/hlsl.domain.2.tese.out
@@ -426,7 +426,7 @@
0:? 'pcf_data.foo' (layout( location=2) patch in float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 120
Capability Tessellation
diff --git a/Test/baseResults/hlsl.domain.3.tese.out b/Test/baseResults/hlsl.domain.3.tese.out
index c9b985d..1dc7b2f 100644
--- a/Test/baseResults/hlsl.domain.3.tese.out
+++ b/Test/baseResults/hlsl.domain.3.tese.out
@@ -358,7 +358,7 @@
0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 116
Capability Tessellation
diff --git a/Test/baseResults/hlsl.earlydepthstencil.frag.out b/Test/baseResults/hlsl.earlydepthstencil.frag.out
index 34ca006..a629bdc 100644
--- 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): 8000a
+// Generated by (magic number): 8000b
// 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 9f5c785..07baddf 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): 8000a
+// Generated by (magic number): 8000b
// 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 2a4cabe..de77486 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): 8000a
+// Generated by (magic number): 8000b
// 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 ad1efa7..22dc2cf 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): 8000a
+// Generated by (magic number): 8000b
// 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 4c32249..e86def4 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): 8000a
+// Generated by (magic number): 8000b
// 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 a8b47e9..5f162b1 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): 8000a
+// Generated by (magic number): 8000b
// 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 2fd15d1..d635c67 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): 8000a
+// Generated by (magic number): 8000b
// 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 3ca773f..5c89f7e 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): 8000a
+// Generated by (magic number): 8000b
// 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 9ba0d93..1b0e45f 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): 8000a
+// Generated by (magic number): 8000b
// 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 9a51f1f..f276462 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): 8000a
+// Generated by (magic number): 8000b
// 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 9a29081..589b1e1 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): 8000a
+// Generated by (magic number): 8000b
// 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 10e8345..dbd6446 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): 8000a
+// Generated by (magic number): 8000b
// 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 c8d0b16..66084f6 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): 8000a
+// Generated by (magic number): 8000b
// 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 7ec229a..65d3467 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): 8000a
+// Generated by (magic number): 8000b
// 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 c319637..c8a9193 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): 8000a
+// Generated by (magic number): 8000b
// 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 00bdea9..65f69da 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): 8000a
+// Generated by (magic number): 8000b
// 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 0dbd935..5fcc3c1 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): 8000a
+// Generated by (magic number): 8000b
// 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 7bce346..f1aa20b 100644
--- a/Test/baseResults/hlsl.forLoop.frag.out
+++ b/Test/baseResults/hlsl.forLoop.frag.out
@@ -510,7 +510,7 @@
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 240
Capability Shader
diff --git a/Test/baseResults/hlsl.format.rwtexture.frag.out b/Test/baseResults/hlsl.format.rwtexture.frag.out
index e6eebbf..3edbbb6 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): 8000a
+// Generated by (magic number): 8000b
// 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 d86fa96..400f530 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): 8000a
+// Generated by (magic number): 8000b
// 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 e39d5a2..13b7ebb 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): 8000a
+// Generated by (magic number): 8000b
// 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 99efd61..0aa00f7 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): 8000a
+// Generated by (magic number): 8000b
// 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 96525e0..d743074 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): 8000a
+// Generated by (magic number): 8000b
// 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 59bd8da..9656db5 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): 8000a
+// Generated by (magic number): 8000b
// 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 942bd92..2e6221a 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): 8000a
+// Generated by (magic number): 8000b
// 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 75ea036..904aaec 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): 8000a
+// Generated by (magic number): 8000b
// 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 886ad73..f8fa2f4 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): 8000a
+// Generated by (magic number): 8000b
// 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 b86cd22..63cb39f 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): 8000a
+// Generated by (magic number): 8000b
// 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 1fa728a..da83e01 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): 8000a
+// Generated by (magic number): 8000b
// 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 a858f15..ff834ec 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): 8000a
+// Generated by (magic number): 8000b
// 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 ba02359..9e1d543 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): 8000a
+// Generated by (magic number): 8000b
// 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 96a1cc1..a7d27a8 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): 8000a
+// Generated by (magic number): 8000b
// 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 1cce0cc..7af13b2 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): 8000a
+// Generated by (magic number): 8000b
// 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 5c49931..f08a91c 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): 8000a
+// Generated by (magic number): 8000b
// 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 26895bb..0510b3e 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): 8000a
+// Generated by (magic number): 8000b
// 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 bf39d11..39c5fed 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): 8000a
+// Generated by (magic number): 8000b
// 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 c9496ac..5071a47 100644
--- a/Test/baseResults/hlsl.gs-hs-mix.tesc.out
+++ b/Test/baseResults/hlsl.gs-hs-mix.tesc.out
@@ -986,7 +986,7 @@
0:? '@patchConstantOutput.NormalWS[2]' (layout( location=3) patch out 3-component vector of float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 236
Capability Tessellation
diff --git a/Test/baseResults/hlsl.hlslOffset.vert.out b/Test/baseResults/hlsl.hlslOffset.vert.out
index 09545c8..0f7b09b 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): 8000a
+// Generated by (magic number): 8000b
// 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 cba0f8b..4188942 100644
--- a/Test/baseResults/hlsl.hull.1.tesc.out
+++ b/Test/baseResults/hlsl.hull.1.tesc.out
@@ -324,7 +324,7 @@
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 104
Capability Tessellation
diff --git a/Test/baseResults/hlsl.hull.2.tesc.out b/Test/baseResults/hlsl.hull.2.tesc.out
index 4e8a50c..0d08b68 100644
--- a/Test/baseResults/hlsl.hull.2.tesc.out
+++ b/Test/baseResults/hlsl.hull.2.tesc.out
@@ -320,7 +320,7 @@
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 106
Capability Tessellation
diff --git a/Test/baseResults/hlsl.hull.3.tesc.out b/Test/baseResults/hlsl.hull.3.tesc.out
index f40a79e..808edd3 100644
--- a/Test/baseResults/hlsl.hull.3.tesc.out
+++ b/Test/baseResults/hlsl.hull.3.tesc.out
@@ -320,7 +320,7 @@
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 106
Capability Tessellation
diff --git a/Test/baseResults/hlsl.hull.4.tesc.out b/Test/baseResults/hlsl.hull.4.tesc.out
index aa766ed..bffc464 100644
--- a/Test/baseResults/hlsl.hull.4.tesc.out
+++ b/Test/baseResults/hlsl.hull.4.tesc.out
@@ -458,7 +458,7 @@
0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 124
Capability Tessellation
diff --git a/Test/baseResults/hlsl.hull.6.tesc.out b/Test/baseResults/hlsl.hull.6.tesc.out
index efb6e5b..b673a8c 100644
--- a/Test/baseResults/hlsl.hull.6.tesc.out
+++ b/Test/baseResults/hlsl.hull.6.tesc.out
@@ -450,7 +450,7 @@
0:? '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 142
Capability Tessellation
diff --git a/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out b/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out
index 70881e9..4e706c0 100644
--- a/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out
+++ b/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out
@@ -472,7 +472,7 @@
0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 135
Capability Tessellation
diff --git a/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out b/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out
index d59e163..fd7cf0b 100644
--- a/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out
+++ b/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out
@@ -490,7 +490,7 @@
0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 137
Capability Tessellation
diff --git a/Test/baseResults/hlsl.hull.void.tesc.out b/Test/baseResults/hlsl.hull.void.tesc.out
index 2249360..244d1fc 100644
--- a/Test/baseResults/hlsl.hull.void.tesc.out
+++ b/Test/baseResults/hlsl.hull.void.tesc.out
@@ -184,7 +184,7 @@
0:? 'InvocationId' ( in uint InvocationID)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 67
Capability Tessellation
diff --git a/Test/baseResults/hlsl.identifier.sample.frag.out b/Test/baseResults/hlsl.identifier.sample.frag.out
index e0a89aa..bde7fdb 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): 8000a
+// Generated by (magic number): 8000b
// 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 e77c7ac..fafad92 100644
--- a/Test/baseResults/hlsl.if.frag.out
+++ b/Test/baseResults/hlsl.if.frag.out
@@ -240,7 +240,7 @@
0:? 'input' (layout( location=0) in 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 117
Capability Shader
diff --git a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out
index ff201eb..6573820 100644
--- a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out
+++ b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out
@@ -410,7 +410,7 @@
0:? 'tid' ( in 3-component vector of uint GlobalInvocationID)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 186
Capability Shader
diff --git a/Test/baseResults/hlsl.imageload-subvec4.comp.out b/Test/baseResults/hlsl.imageload-subvec4.comp.out
index 4d038a1..d54075f 100644
--- a/Test/baseResults/hlsl.imageload-subvec4.comp.out
+++ b/Test/baseResults/hlsl.imageload-subvec4.comp.out
@@ -266,7 +266,7 @@
0:? 'tid' ( in 3-component vector of uint GlobalInvocationID)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 138
Capability Shader
diff --git a/Test/baseResults/hlsl.implicitBool.frag.out b/Test/baseResults/hlsl.implicitBool.frag.out
index dd93b7f..381e835 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): 8000a
+// Generated by (magic number): 8000b
// 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 f46658d..95a5b90 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): 8000a
+// Generated by (magic number): 8000b
// 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 bb9a184..50f6d56 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): 8000a
+// Generated by (magic number): 8000b
// 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 f604f0a..35a89f0 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): 8000a
+// Generated by (magic number): 8000b
// 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 5039333..b8b7afc 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): 8000a
+// Generated by (magic number): 8000b
// 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 25186cb..931208b 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 92
Capability Shader
diff --git a/Test/baseResults/hlsl.instance.geom.out b/Test/baseResults/hlsl.instance.geom.out
new file mode 100644
index 0000000..f2299ee
--- /dev/null
+++ b/Test/baseResults/hlsl.instance.geom.out
@@ -0,0 +1,433 @@
+hlsl.instance.geom
+Shader version: 500
+invocations = 5
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+0:? Sequence
+0:10 Function Definition: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
+0:10 Function Parameters:
+0:10 'input' ( in 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 'output' ( out structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 'id' ( in uint)
+0:? Sequence
+0:12 Sequence
+0:12 move second child to first child ( temp int)
+0:12 'i' ( temp int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Loop with condition tested first: DontUnroll
+0:12 Loop Condition
+0:12 Compare Less Than ( temp bool)
+0:12 'i' ( temp int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 Loop Body
+0:? Sequence
+0:14 Sequence
+0:14 Sequence
+0:14 move second child to first child ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:14 indirect index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:14 'input' ( in 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:14 'i' ( temp int)
+0:14 move second child to first child ( temp 4-component vector of float)
+0:? 'output.m_position' ( out 4-component vector of float Position)
+0:14 m_position: direct index for structure ( temp 4-component vector of float)
+0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:14 Constant:
+0:14 0 (const int)
+0:14 move second child to first child ( temp 4-component vector of float)
+0:? 'output.m_color' (layout( location=0) out 4-component vector of float)
+0:14 m_color: direct index for structure ( temp 4-component vector of float)
+0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:14 Constant:
+0:14 1 (const int)
+0:14 EmitVertex ( temp void)
+0:12 Loop Terminal Expression
+0:12 Pre-Increment ( temp int)
+0:12 'i' ( temp int)
+0:16 EndPrimitive ( temp void)
+0:10 Function Definition: GeometryShader( ( temp void)
+0:10 Function Parameters:
+0:? Sequence
+0:10 Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 m_position: direct index for structure ( temp 4-component vector of float)
+0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 0 (const int)
+0:10 direct index ( in 4-component vector of float Position)
+0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:10 Constant:
+0:10 0 (const int)
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 m_color: direct index for structure ( temp 4-component vector of float)
+0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:10 direct index (layout( location=0) in 4-component vector of float)
+0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:10 Constant:
+0:10 0 (const int)
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 m_position: direct index for structure ( temp 4-component vector of float)
+0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 Constant:
+0:10 1 (const int)
+0:10 Constant:
+0:10 0 (const int)
+0:10 direct index ( in 4-component vector of float Position)
+0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:10 Constant:
+0:10 1 (const int)
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 m_color: direct index for structure ( temp 4-component vector of float)
+0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 Constant:
+0:10 1 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:10 direct index (layout( location=0) in 4-component vector of float)
+0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:10 Constant:
+0:10 1 (const int)
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 m_position: direct index for structure ( temp 4-component vector of float)
+0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 Constant:
+0:10 2 (const int)
+0:10 Constant:
+0:10 0 (const int)
+0:10 direct index ( in 4-component vector of float Position)
+0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:10 Constant:
+0:10 2 (const int)
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 m_color: direct index for structure ( temp 4-component vector of float)
+0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 Constant:
+0:10 2 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:10 direct index (layout( location=0) in 4-component vector of float)
+0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:10 Constant:
+0:10 2 (const int)
+0:10 move second child to first child ( temp uint)
+0:? 'id' ( temp uint)
+0:? 'id' ( in uint InvocationID)
+0:10 Function Call: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'output' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'id' ( temp uint)
+0:? Linker Objects
+0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:? 'id' ( in uint InvocationID)
+0:? 'output.m_position' ( out 4-component vector of float Position)
+0:? 'output.m_color' (layout( location=0) out 4-component vector of float)
+
+
+Linked geometry stage:
+
+
+Shader version: 500
+invocations = 5
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+0:? Sequence
+0:10 Function Definition: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
+0:10 Function Parameters:
+0:10 'input' ( in 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 'output' ( out structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 'id' ( in uint)
+0:? Sequence
+0:12 Sequence
+0:12 move second child to first child ( temp int)
+0:12 'i' ( temp int)
+0:12 Constant:
+0:12 0 (const int)
+0:12 Loop with condition tested first: DontUnroll
+0:12 Loop Condition
+0:12 Compare Less Than ( temp bool)
+0:12 'i' ( temp int)
+0:12 Constant:
+0:12 3 (const int)
+0:12 Loop Body
+0:? Sequence
+0:14 Sequence
+0:14 Sequence
+0:14 move second child to first child ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:14 indirect index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:14 'input' ( in 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:14 'i' ( temp int)
+0:14 move second child to first child ( temp 4-component vector of float)
+0:? 'output.m_position' ( out 4-component vector of float Position)
+0:14 m_position: direct index for structure ( temp 4-component vector of float)
+0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:14 Constant:
+0:14 0 (const int)
+0:14 move second child to first child ( temp 4-component vector of float)
+0:? 'output.m_color' (layout( location=0) out 4-component vector of float)
+0:14 m_color: direct index for structure ( temp 4-component vector of float)
+0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:14 Constant:
+0:14 1 (const int)
+0:14 EmitVertex ( temp void)
+0:12 Loop Terminal Expression
+0:12 Pre-Increment ( temp int)
+0:12 'i' ( temp int)
+0:16 EndPrimitive ( temp void)
+0:10 Function Definition: GeometryShader( ( temp void)
+0:10 Function Parameters:
+0:? Sequence
+0:10 Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 m_position: direct index for structure ( temp 4-component vector of float)
+0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 0 (const int)
+0:10 direct index ( in 4-component vector of float Position)
+0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:10 Constant:
+0:10 0 (const int)
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 m_color: direct index for structure ( temp 4-component vector of float)
+0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:10 direct index (layout( location=0) in 4-component vector of float)
+0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:10 Constant:
+0:10 0 (const int)
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 m_position: direct index for structure ( temp 4-component vector of float)
+0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 Constant:
+0:10 1 (const int)
+0:10 Constant:
+0:10 0 (const int)
+0:10 direct index ( in 4-component vector of float Position)
+0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:10 Constant:
+0:10 1 (const int)
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 m_color: direct index for structure ( temp 4-component vector of float)
+0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 Constant:
+0:10 1 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:10 direct index (layout( location=0) in 4-component vector of float)
+0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:10 Constant:
+0:10 1 (const int)
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 m_position: direct index for structure ( temp 4-component vector of float)
+0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 Constant:
+0:10 2 (const int)
+0:10 Constant:
+0:10 0 (const int)
+0:10 direct index ( in 4-component vector of float Position)
+0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:10 Constant:
+0:10 2 (const int)
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 m_color: direct index for structure ( temp 4-component vector of float)
+0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:10 Constant:
+0:10 2 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:10 direct index (layout( location=0) in 4-component vector of float)
+0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:10 Constant:
+0:10 2 (const int)
+0:10 move second child to first child ( temp uint)
+0:? 'id' ( temp uint)
+0:? 'id' ( in uint InvocationID)
+0:10 Function Call: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
+0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'output' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color})
+0:? 'id' ( temp uint)
+0:? Linker Objects
+0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:? 'id' ( in uint InvocationID)
+0:? 'output.m_position' ( out 4-component vector of float Position)
+0:? 'output.m_color' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 86
+
+ Capability Geometry
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Geometry 4 "GeometryShader" 39 43 52 57 76
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 Invocations 5
+ ExecutionMode 4 OutputTriangleStrip
+ ExecutionMode 4 OutputVertices 3
+ Source HLSL 500
+ Name 4 "GeometryShader"
+ Name 8 "VertexShaderOutput"
+ MemberName 8(VertexShaderOutput) 0 "m_position"
+ MemberName 8(VertexShaderOutput) 1 "m_color"
+ Name 19 "@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;"
+ Name 16 "input"
+ Name 17 "output"
+ Name 18 "id"
+ Name 23 "i"
+ Name 34 "flattenTemp"
+ Name 39 "output.m_position"
+ Name 43 "output.m_color"
+ Name 49 "input"
+ Name 52 "input.m_position"
+ Name 57 "input.m_color"
+ Name 74 "id"
+ Name 76 "id"
+ Name 78 "output"
+ Name 79 "param"
+ Name 81 "param"
+ Name 82 "param"
+ Decorate 39(output.m_position) BuiltIn Position
+ Decorate 43(output.m_color) Location 0
+ Decorate 52(input.m_position) BuiltIn Position
+ Decorate 57(input.m_color) Location 0
+ Decorate 76(id) BuiltIn InvocationId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+8(VertexShaderOutput): TypeStruct 7(fvec4) 7(fvec4)
+ 9: TypeInt 32 0
+ 10: 9(int) Constant 3
+ 11: TypeArray 8(VertexShaderOutput) 10
+ 12: TypePointer Function 11
+ 13: TypePointer Function 8(VertexShaderOutput)
+ 14: TypePointer Function 9(int)
+ 15: TypeFunction 2 12(ptr) 13(ptr) 14(ptr)
+ 21: TypeInt 32 1
+ 22: TypePointer Function 21(int)
+ 24: 21(int) Constant 0
+ 31: 21(int) Constant 3
+ 32: TypeBool
+ 38: TypePointer Output 7(fvec4)
+39(output.m_position): 38(ptr) Variable Output
+ 40: TypePointer Function 7(fvec4)
+43(output.m_color): 38(ptr) Variable Output
+ 44: 21(int) Constant 1
+ 50: TypeArray 7(fvec4) 10
+ 51: TypePointer Input 50
+52(input.m_position): 51(ptr) Variable Input
+ 53: TypePointer Input 7(fvec4)
+57(input.m_color): 51(ptr) Variable Input
+ 67: 21(int) Constant 2
+ 75: TypePointer Input 9(int)
+ 76(id): 75(ptr) Variable Input
+4(GeometryShader): 2 Function None 3
+ 5: Label
+ 49(input): 12(ptr) Variable Function
+ 74(id): 14(ptr) Variable Function
+ 78(output): 13(ptr) Variable Function
+ 79(param): 12(ptr) Variable Function
+ 81(param): 13(ptr) Variable Function
+ 82(param): 14(ptr) Variable Function
+ 54: 53(ptr) AccessChain 52(input.m_position) 24
+ 55: 7(fvec4) Load 54
+ 56: 40(ptr) AccessChain 49(input) 24 24
+ Store 56 55
+ 58: 53(ptr) AccessChain 57(input.m_color) 24
+ 59: 7(fvec4) Load 58
+ 60: 40(ptr) AccessChain 49(input) 24 44
+ Store 60 59
+ 61: 53(ptr) AccessChain 52(input.m_position) 44
+ 62: 7(fvec4) Load 61
+ 63: 40(ptr) AccessChain 49(input) 44 24
+ Store 63 62
+ 64: 53(ptr) AccessChain 57(input.m_color) 44
+ 65: 7(fvec4) Load 64
+ 66: 40(ptr) AccessChain 49(input) 44 44
+ Store 66 65
+ 68: 53(ptr) AccessChain 52(input.m_position) 67
+ 69: 7(fvec4) Load 68
+ 70: 40(ptr) AccessChain 49(input) 67 24
+ Store 70 69
+ 71: 53(ptr) AccessChain 57(input.m_color) 67
+ 72: 7(fvec4) Load 71
+ 73: 40(ptr) AccessChain 49(input) 67 44
+ Store 73 72
+ 77: 9(int) Load 76(id)
+ Store 74(id) 77
+ 80: 11 Load 49(input)
+ Store 79(param) 80
+ 83: 9(int) Load 74(id)
+ Store 82(param) 83
+ 84: 2 FunctionCall 19(@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;) 79(param) 81(param) 82(param)
+ 85:8(VertexShaderOutput) Load 81(param)
+ Store 78(output) 85
+ Return
+ FunctionEnd
+19(@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;): 2 Function None 15
+ 16(input): 12(ptr) FunctionParameter
+ 17(output): 13(ptr) FunctionParameter
+ 18(id): 14(ptr) FunctionParameter
+ 20: Label
+ 23(i): 22(ptr) Variable Function
+ 34(flattenTemp): 13(ptr) Variable Function
+ Store 23(i) 24
+ Branch 25
+ 25: Label
+ LoopMerge 27 28 DontUnroll
+ Branch 29
+ 29: Label
+ 30: 21(int) Load 23(i)
+ 33: 32(bool) SLessThan 30 31
+ BranchConditional 33 26 27
+ 26: Label
+ 35: 21(int) Load 23(i)
+ 36: 13(ptr) AccessChain 16(input) 35
+ 37:8(VertexShaderOutput) Load 36
+ Store 34(flattenTemp) 37
+ 41: 40(ptr) AccessChain 34(flattenTemp) 24
+ 42: 7(fvec4) Load 41
+ Store 39(output.m_position) 42
+ 45: 40(ptr) AccessChain 34(flattenTemp) 44
+ 46: 7(fvec4) Load 45
+ Store 43(output.m_color) 46
+ EmitVertex
+ Branch 28
+ 28: Label
+ 47: 21(int) Load 23(i)
+ 48: 21(int) IAdd 47 44
+ Store 23(i) 48
+ Branch 25
+ 27: Label
+ EndPrimitive
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.int.dot.frag.out b/Test/baseResults/hlsl.int.dot.frag.out
index 3272cb4..5c7edbb 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 84
Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsic.frexp.frag.out b/Test/baseResults/hlsl.intrinsic.frexp.frag.out
index 1595a60..c0c9109 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): 8000a
+// Generated by (magic number): 8000b
// 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 0418ed6..41bb429 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): 8000a
+// Generated by (magic number): 8000b
// 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 abb9650..4dfe8e0 100644
--- a/Test/baseResults/hlsl.intrinsics.barriers.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.barriers.comp.out
@@ -40,7 +40,7 @@
0:? Linker Objects
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 15
Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out
index bce3d14..56752af 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): 8000a
+// Generated by (magic number): 8000b
// 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 b0eeaa9..75a66d6 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): 8000a
+// Generated by (magic number): 8000b
// 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 8444e20..d87fd2f 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 90
Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.f1632.frag.out b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
index 90a4b98..52bbc4f 100644
--- a/Test/baseResults/hlsl.intrinsics.f1632.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
@@ -270,7 +270,7 @@
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 106
Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.f3216.frag.out b/Test/baseResults/hlsl.intrinsics.f3216.frag.out
index ddf9a70..c9a94b8 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): 8000a
+// Generated by (magic number): 8000b
// 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 02b1e6d..38857f8 100644
--- a/Test/baseResults/hlsl.intrinsics.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.frag.out
@@ -5659,7 +5659,7 @@
Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 1839
Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.lit.frag.out b/Test/baseResults/hlsl.intrinsics.lit.frag.out
index ef5759e..8307db5 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): 8000a
+// Generated by (magic number): 8000b
// 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 c0a543c..6ea121a 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.comp.out
@@ -122,7 +122,7 @@
0:? 'inI0' (layout( location=3) in 4-component vector of int)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 79
Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.negative.vert.out b/Test/baseResults/hlsl.intrinsics.negative.vert.out
index f1ab582..9044abd 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): 8000a
+// Generated by (magic number): 8000b
// 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 bd73fae..c68fc96 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): 8000a
+// Generated by (magic number): 8000b
// 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 18fd037..99176f1 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): 8000a
+// Generated by (magic number): 8000b
// 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 1abed4c..e0fbfe6 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): 8000a
+// Generated by (magic number): 8000b
// 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 647570c..611ff16 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): 8000a
+// Generated by (magic number): 8000b
// 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 430ff06..e46e771 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): 8000a
+// Generated by (magic number): 8000b
// 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 9007e93..b2306d0 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): 8000a
+// Generated by (magic number): 8000b
// 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 a3b8960..80c3e45 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): 8000a
+// Generated by (magic number): 8000b
// 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 daa28b2..09086cb 100644
--- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
@@ -336,7 +336,7 @@
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 129
Capability Shader
diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out
index 0440779..96792a9 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): 8000a
+// Generated by (magic number): 8000b
// 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 2aef83d..b9730f3 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): 8000a
+// Generated by (magic number): 8000b
// 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 8b9a04f..c387d5f 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): 8000a
+// Generated by (magic number): 8000b
// 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 299bde1..b37e3c9 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): 8000a
+// Generated by (magic number): 8000b
// 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 f7a530c..b248ed6 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): 8000a
+// Generated by (magic number): 8000b
// 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 106af53..f8d4383 100644
--- a/Test/baseResults/hlsl.load.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offset.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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 205
Capability Shader
diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
index 04ea482..bc5f632 100644
--- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offsetarray.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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 176
Capability Shader
diff --git a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
index 73a854b..ed6f528 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): 8000a
+// Generated by (magic number): 8000b
// 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 db105d7..a94da2f 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): 8000a
+// Generated by (magic number): 8000b
// 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 c063e0c..b00da80 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): 8000a
+// Generated by (magic number): 8000b
// 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 d66eb7c..e6f484e 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): 8000a
+// Generated by (magic number): 8000b
// 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 20f87b8..986d83f 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): 8000a
+// Generated by (magic number): 8000b
// 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 711625d..cc933bb 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): 8000a
+// Generated by (magic number): 8000b
// 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 44e1961..0e7bad1 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): 8000a
+// Generated by (magic number): 8000b
// 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 ea37109..2784dda 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): 8000a
+// Generated by (magic number): 8000b
// 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 48a7180..91b2ec3 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): 8000a
+// Generated by (magic number): 8000b
// 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 500b311..d7d4b7d 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): 8000a
+// Generated by (magic number): 8000b
// 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 1117df1..92d44a4 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): 8000a
+// Generated by (magic number): 8000b
// 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 a99bd15..551d41e 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): 8000a
+// Generated by (magic number): 8000b
// 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 c480f78..5af6c2b 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 39
Capability Shader
diff --git a/Test/baseResults/hlsl.matpack-pragma-global.frag.out b/Test/baseResults/hlsl.matpack-pragma-global.frag.out
index 2feef9e..d6afb4e 100644
--- a/Test/baseResults/hlsl.matpack-pragma-global.frag.out
+++ b/Test/baseResults/hlsl.matpack-pragma-global.frag.out
@@ -52,7 +52,7 @@
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 25
Capability Shader
diff --git a/Test/baseResults/hlsl.matpack-pragma.frag.out b/Test/baseResults/hlsl.matpack-pragma.frag.out
index bd5ca50..aac5af5 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): 8000a
+// Generated by (magic number): 8000b
// 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 4082cb2..4b103ac 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): 8000a
+// Generated by (magic number): 8000b
// 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 fa7a8c0..cf75c05 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): 8000a
+// Generated by (magic number): 8000b
// 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 7a0c5d2..058786c 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): 8000a
+// Generated by (magic number): 8000b
// 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 2886f8f..7898376 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): 8000a
+// Generated by (magic number): 8000b
// 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 013f8d4..07f28c3 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): 8000a
+// Generated by (magic number): 8000b
// 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 48e563c..2c03a26 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): 8000a
+// Generated by (magic number): 8000b
// 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 25e7b2e..806d241 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): 8000a
+// Generated by (magic number): 8000b
// 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 cfe3ea8..d79b121 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): 8000a
+// Generated by (magic number): 8000b
// 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 fcb9f18..0e31ed6 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): 8000a
+// Generated by (magic number): 8000b
// 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 9379863..fbe7fbf 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): 8000a
+// Generated by (magic number): 8000b
// 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 5346c44..c01089a 100644
--- a/Test/baseResults/hlsl.namespace.frag.out
+++ b/Test/baseResults/hlsl.namespace.frag.out
@@ -17,9 +17,8 @@
0:? Sequence
0:12 Branch: Return with expression
0:12 'v2' ( global 4-component vector of float)
-0:15 Function Definition: N2::N3::C1::getVec( ( temp 4-component vector of float)
+0:15 Function Definition: N2::N3::C1::getVec( ( global 4-component vector of float)
0:15 Function Parameters:
-0:15 '@this' ( temp structure{})
0:? Sequence
0:15 Branch: Return with expression
0:15 'v2' ( global 4-component vector of float)
@@ -34,7 +33,7 @@
0:22 Function Call: N2::getVec( ( temp 4-component vector of float)
0:22 Function Call: N2::N3::getVec( ( temp 4-component vector of float)
0:22 vector-scale ( temp 4-component vector of float)
-0:22 Function Call: N2::N3::C1::getVec( ( temp 4-component vector of float)
+0:22 Function Call: N2::N3::C1::getVec( ( global 4-component vector of float)
0:22 'N2::gf' ( global float)
0:21 Function Definition: main( ( temp void)
0:21 Function Parameters:
@@ -70,9 +69,8 @@
0:? Sequence
0:12 Branch: Return with expression
0:12 'v2' ( global 4-component vector of float)
-0:15 Function Definition: N2::N3::C1::getVec( ( temp 4-component vector of float)
+0:15 Function Definition: N2::N3::C1::getVec( ( global 4-component vector of float)
0:15 Function Parameters:
-0:15 '@this' ( temp structure{})
0:? Sequence
0:15 Branch: Return with expression
0:15 'v2' ( global 4-component vector of float)
@@ -87,7 +85,7 @@
0:22 Function Call: N2::getVec( ( temp 4-component vector of float)
0:22 Function Call: N2::N3::getVec( ( temp 4-component vector of float)
0:22 vector-scale ( temp 4-component vector of float)
-0:22 Function Call: N2::N3::C1::getVec( ( temp 4-component vector of float)
+0:22 Function Call: N2::N3::C1::getVec( ( global 4-component vector of float)
0:22 'N2::gf' ( global float)
0:21 Function Definition: main( ( temp void)
0:21 Function Parameters:
@@ -101,82 +99,75 @@
0:? 'N2::gf' ( global float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
-// Id's are bound by 54
+// Generated by (magic number): 8000b
+// Id's are bound by 50
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 52
+ EntryPoint Fragment 4 "main" 48
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 9 "N1::getVec("
Name 11 "N2::getVec("
Name 13 "N2::N3::getVec("
- Name 15 "C1"
- Name 19 "N2::N3::C1::getVec("
- Name 18 "@this"
- Name 21 "@main("
- Name 24 "v1"
- Name 28 "v2"
- Name 45 "N2::gf"
- Name 52 "@entryPointOutput"
- Decorate 52(@entryPointOutput) Location 0
+ Name 15 "N2::N3::C1::getVec("
+ Name 17 "@main("
+ Name 20 "v1"
+ Name 24 "v2"
+ Name 41 "N2::gf"
+ Name 48 "@entryPointOutput"
+ Decorate 48(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeFunction 7(fvec4)
- 15(C1): TypeStruct
- 16: TypePointer Function 15(C1)
- 17: TypeFunction 7(fvec4) 16(ptr)
- 23: TypePointer Private 7(fvec4)
- 24(v1): 23(ptr) Variable Private
- 28(v2): 23(ptr) Variable Private
- 44: TypePointer Private 6(float)
- 45(N2::gf): 44(ptr) Variable Private
- 51: TypePointer Output 7(fvec4)
-52(@entryPointOutput): 51(ptr) Variable Output
+ 19: TypePointer Private 7(fvec4)
+ 20(v1): 19(ptr) Variable Private
+ 24(v2): 19(ptr) Variable Private
+ 40: TypePointer Private 6(float)
+ 41(N2::gf): 40(ptr) Variable Private
+ 47: TypePointer Output 7(fvec4)
+48(@entryPointOutput): 47(ptr) Variable Output
4(main): 2 Function None 3
5: Label
- 53: 7(fvec4) FunctionCall 21(@main()
- Store 52(@entryPointOutput) 53
+ 49: 7(fvec4) FunctionCall 17(@main()
+ Store 48(@entryPointOutput) 49
Return
FunctionEnd
9(N1::getVec(): 7(fvec4) Function None 8
10: Label
- 25: 7(fvec4) Load 24(v1)
- ReturnValue 25
+ 21: 7(fvec4) Load 20(v1)
+ ReturnValue 21
FunctionEnd
11(N2::getVec(): 7(fvec4) Function None 8
12: Label
- 29: 7(fvec4) Load 28(v2)
- ReturnValue 29
+ 25: 7(fvec4) Load 24(v2)
+ ReturnValue 25
FunctionEnd
13(N2::N3::getVec(): 7(fvec4) Function None 8
14: Label
- 32: 7(fvec4) Load 28(v2)
- ReturnValue 32
+ 28: 7(fvec4) Load 24(v2)
+ ReturnValue 28
FunctionEnd
-19(N2::N3::C1::getVec(): 7(fvec4) Function None 17
- 18(@this): 16(ptr) FunctionParameter
- 20: Label
- 35: 7(fvec4) Load 28(v2)
- ReturnValue 35
+15(N2::N3::C1::getVec(): 7(fvec4) Function None 8
+ 16: Label
+ 31: 7(fvec4) Load 24(v2)
+ ReturnValue 31
FunctionEnd
- 21(@main(): 7(fvec4) Function None 8
- 22: Label
- 38: 7(fvec4) FunctionCall 9(N1::getVec()
- 39: 7(fvec4) FunctionCall 11(N2::getVec()
- 40: 7(fvec4) FAdd 38 39
- 41: 7(fvec4) FunctionCall 13(N2::N3::getVec()
- 42: 7(fvec4) FAdd 40 41
- 43: 7(fvec4) FunctionCall 19(N2::N3::C1::getVec()
- 46: 6(float) Load 45(N2::gf)
- 47: 7(fvec4) VectorTimesScalar 43 46
- 48: 7(fvec4) FAdd 42 47
- ReturnValue 48
+ 17(@main(): 7(fvec4) Function None 8
+ 18: Label
+ 34: 7(fvec4) FunctionCall 9(N1::getVec()
+ 35: 7(fvec4) FunctionCall 11(N2::getVec()
+ 36: 7(fvec4) FAdd 34 35
+ 37: 7(fvec4) FunctionCall 13(N2::N3::getVec()
+ 38: 7(fvec4) FAdd 36 37
+ 39: 7(fvec4) FunctionCall 15(N2::N3::C1::getVec()
+ 42: 6(float) Load 41(N2::gf)
+ 43: 7(fvec4) VectorTimesScalar 39 42
+ 44: 7(fvec4) FAdd 38 43
+ ReturnValue 44
FunctionEnd
diff --git a/Test/baseResults/hlsl.noSemantic.functionality1.comp.out b/Test/baseResults/hlsl.noSemantic.functionality1.comp.out
index 3531a34..1121e0b 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): 8000a
+// Generated by (magic number): 8000b
// 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 897f8bc..71502ee 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): 8000a
+// Generated by (magic number): 8000b
// 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 5a485c6..3cbae1e 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): 8000a
+// Generated by (magic number): 8000b
// 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 1725d3f..02f7d2a 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): 8000a
+// Generated by (magic number): 8000b
// 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 c8676e3..49fa4f3 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): 8000a
+// Generated by (magic number): 8000b
// 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 738fa4f..d82509d 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): 8000a
+// Generated by (magic number): 8000b
// 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 4cfc391..460262e 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): 8000a
+// Generated by (magic number): 8000b
// 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 6898240..be1f641 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): 8000a
+// Generated by (magic number): 8000b
// 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 7bcc879..6a1b1de 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 93
Capability Shader
diff --git a/Test/baseResults/hlsl.partialFlattenMixed.vert.out b/Test/baseResults/hlsl.partialFlattenMixed.vert.out
index c9fcc6f..eae3c98 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): 8000a
+// Generated by (magic number): 8000b
// 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 4686566..d3ce42e 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): 8000a
+// Generated by (magic number): 8000b
// 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 68476d2..3478c66 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): 8000a
+// Generated by (magic number): 8000b
// 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 9ccf05c..1c73bce 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 80
Capability Shader
@@ -129,6 +129,7 @@
71(i.vTextureCoords): 70(ptr) Variable Input
74: TypePointer Output 11(fvec4)
75(@entryPointOutput.vColor): 74(ptr) Variable Output
+ Line 17 23 1
5(MainPs): 3 Function None 4
6: Label
69(i): 10(ptr) Variable Function
@@ -144,6 +145,7 @@
Store 75(@entryPointOutput.vColor) 79
Return
FunctionEnd
+ Line 17 23 1
15(@MainPs(struct-PS_INPUT-vf21;):12(PS_OUTPUT) Function None 13
14(i): 10(ptr) FunctionParameter
16: Label
diff --git a/Test/baseResults/hlsl.pp.line3.frag.out b/Test/baseResults/hlsl.pp.line3.frag.out
index d19c516..717a21b 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 78
Capability Shader
@@ -120,6 +120,7 @@
69(i.vTextureCoords): 68(ptr) Variable Input
72: TypePointer Output 12(fvec4)
73(@entryPointOutput.vColor): 72(ptr) Variable Output
+ Line 1 23 1
6(MainPs): 4 Function None 5
7: Label
67(i): 11(ptr) Variable Function
@@ -135,6 +136,7 @@
Store 73(@entryPointOutput.vColor) 77
Return
FunctionEnd
+ Line 1 23 1
16(@MainPs(struct-PS_INPUT-vf21;):13(PS_OUTPUT) Function None 14
15(i): 11(ptr) FunctionParameter
17: Label
diff --git a/Test/baseResults/hlsl.pp.line4.frag.out b/Test/baseResults/hlsl.pp.line4.frag.out
index 2244588..da968b2 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 116
Capability Shader
@@ -112,7 +112,9 @@
70(i.vTextureCoords): 69(ptr) Variable Input
73: TypePointer Output 11(fvec4)
74(@entryPointOutput.vColor): 73(ptr) Variable Output
+ Line 17 25 1
5(MainPs): 3 Function None 4
+ NoLine
6: Label
Line 17 25 0
71: 8(fvec2) Load 70(i.vTextureCoords)
diff --git a/Test/baseResults/hlsl.pp.vert.out b/Test/baseResults/hlsl.pp.vert.out
index 5478101..652cf17 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): 8000a
+// Generated by (magic number): 8000b
// 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 3992618..4dd025a 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): 8000a
+// Generated by (magic number): 8000b
// 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 f231b35..1611d5a 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): 8000a
+// Generated by (magic number): 8000b
// 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 39e3578..2d134b8 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): 8000a
+// Generated by (magic number): 8000b
// 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 754d0d8..106762b 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 40
Capability Shader
diff --git a/Test/baseResults/hlsl.printf.comp.out b/Test/baseResults/hlsl.printf.comp.out
index ea31c35..c4768a2 100644
--- a/Test/baseResults/hlsl.printf.comp.out
+++ b/Test/baseResults/hlsl.printf.comp.out
@@ -126,7 +126,7 @@
0:? "first string"
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 36
Capability Shader
diff --git a/Test/baseResults/hlsl.promote.atomic.frag.out b/Test/baseResults/hlsl.promote.atomic.frag.out
index a34b7dd..91b1d58 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): 8000a
+// Generated by (magic number): 8000b
// 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 a0007c3..f9f57a4 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): 8000a
+// Generated by (magic number): 8000b
// 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 11e324f..7bdaf45 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): 8000a
+// Generated by (magic number): 8000b
// 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 f135406..6d73cc7 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 596
Capability Shader
diff --git a/Test/baseResults/hlsl.round.dx10.frag.out b/Test/baseResults/hlsl.round.dx10.frag.out
index be72dc5..f8597d4 100644
--- a/Test/baseResults/hlsl.round.dx10.frag.out
+++ b/Test/baseResults/hlsl.round.dx10.frag.out
@@ -29,7 +29,7 @@
0:? Linker Objects
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 17
Capability Shader
diff --git a/Test/baseResults/hlsl.round.dx9.frag.out b/Test/baseResults/hlsl.round.dx9.frag.out
index 9333c7d..d4ff02a 100644
--- a/Test/baseResults/hlsl.round.dx9.frag.out
+++ b/Test/baseResults/hlsl.round.dx9.frag.out
@@ -29,7 +29,7 @@
0:? Linker Objects
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 18
Capability Shader
@@ -60,6 +60,7 @@
6: Label
Return
FunctionEnd
+ Line 1 2 1
12(PixelShaderFunction(vf4;): 8(fvec4) Function None 10
11(input): 9(ptr) FunctionParameter
13: Label
diff --git a/Test/baseResults/hlsl.rw.atomics.frag.out b/Test/baseResults/hlsl.rw.atomics.frag.out
index 06bc317..83169f1 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): 8000a
+// Generated by (magic number): 8000b
// 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 c79877c..02ed379 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): 8000a
+// Generated by (magic number): 8000b
// 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 265eaf9..558bf42 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 45
Capability Shader
diff --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
index 8e4716b..f2bef19 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 607
Capability Shader
diff --git a/Test/baseResults/hlsl.rw.swizzle.frag.out b/Test/baseResults/hlsl.rw.swizzle.frag.out
index 97dd0dc..5121ceb 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): 8000a
+// Generated by (magic number): 8000b
// 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 1f77a77..a0c639b 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 711
Capability Shader
diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out
index 28d96f0..1acca18 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): 8000a
+// Generated by (magic number): 8000b
// 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 12c6711..e306317 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): 8000a
+// Generated by (magic number): 8000b
// 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 282455c..04eb9d3 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 135
Capability Shader
@@ -477,6 +477,7 @@
128(@entryPointOutput.Color): 127(ptr) Variable Output
131: TypePointer Output 7(float)
132(@entryPointOutput.Depth): 131(ptr) Variable Output
+ Line 1 15 1
5(main): 3 Function None 4
6: Label
125(flattenTemp): 109(ptr) Variable Function
@@ -491,6 +492,7 @@
Store 132(@entryPointOutput.Depth) 134
Return
FunctionEnd
+ Line 1 15 1
11(@main():9(PS_OUTPUT) Function None 10
12: Label
14(ColorOut): 13(ptr) Variable Function
diff --git a/Test/baseResults/hlsl.sample.dx9.vert.out b/Test/baseResults/hlsl.sample.dx9.vert.out
index 4b718cf..59878a9 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 64
Capability Shader
@@ -215,6 +215,7 @@
53: 7(float) Constant 1073741824
60: TypePointer Output 8(fvec4)
61(@entryPointOutput.Pos): 60(ptr) Variable Output
+ Line 1 11 1
5(main): 3 Function None 4
6: Label
Line 1 11 0
@@ -223,6 +224,7 @@
Store 61(@entryPointOutput.Pos) 63
Return
FunctionEnd
+ Line 1 11 1
11(@main():9(VS_OUTPUT) Function None 10
12: Label
14(PosOut): 13(ptr) Variable Function
diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
index e5d204f..0a351b4 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): 8000a
+// Generated by (magic number): 8000b
// 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 5b14c65..0770e0b 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): 8000a
+// Generated by (magic number): 8000b
// 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 8754a03..ea0e4e2 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): 8000a
+// Generated by (magic number): 8000b
// 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 e177d77..f59fc81 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): 8000a
+// Generated by (magic number): 8000b
// 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 2f15b42..919be71 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): 8000a
+// Generated by (magic number): 8000b
// 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 291f624..5b29757 100644
--- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.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): 8000a
+// Generated by (magic number): 8000b
// 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 a5bb613..c3114a1 100644
--- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.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): 8000a
+// Generated by (magic number): 8000b
// 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 0ab61eb..caddcee 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): 8000a
+// Generated by (magic number): 8000b
// 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 c178c57..fde1b58 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): 8000a
+// Generated by (magic number): 8000b
// 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 6859f6d..7f17e90 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): 8000a
+// Generated by (magic number): 8000b
// 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 1e50d7b..cc1b858 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): 8000a
+// Generated by (magic number): 8000b
// 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 3b1eb6f..9d8413c 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): 8000a
+// Generated by (magic number): 8000b
// 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 a734e54..45e33ff 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): 8000a
+// Generated by (magic number): 8000b
// 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 54135cd..6807d99 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): 8000a
+// Generated by (magic number): 8000b
// 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 4922cde..338a5e7 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): 8000a
+// Generated by (magic number): 8000b
// 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 22bd257..4b68c90 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): 8000a
+// Generated by (magic number): 8000b
// 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 67e1d15..a2e58bd 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): 8000a
+// Generated by (magic number): 8000b
// 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 8f2fabc..09bfbdf 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): 8000a
+// Generated by (magic number): 8000b
// 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 6982090..f63d9e8 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): 8000a
+// Generated by (magic number): 8000b
// 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 5694f89..3180e7a 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): 8000a
+// Generated by (magic number): 8000b
// 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 a3bc4c1..ce79969 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): 8000a
+// Generated by (magic number): 8000b
// 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 68e0e87..7f3af78 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): 8000a
+// Generated by (magic number): 8000b
// 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 ee3588d..e1d449f 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): 8000a
+// Generated by (magic number): 8000b
// 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 a3ff9e6..bbb51f3 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): 8000a
+// Generated by (magic number): 8000b
// 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 c9d431b..1b06c57 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): 8000a
+// Generated by (magic number): 8000b
// 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 3f6ae55..e256054 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): 8000a
+// Generated by (magic number): 8000b
// 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 c09216a..fd5f0b8 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): 8000a
+// Generated by (magic number): 8000b
// 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 62980dd..ee0c3db 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): 8000a
+// Generated by (magic number): 8000b
// 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 17356f9..f10f86c 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): 8000a
+// Generated by (magic number): 8000b
// 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 5d73bba..24f452c 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): 8000a
+// Generated by (magic number): 8000b
// 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 ad4252b..1328833 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): 8000a
+// Generated by (magic number): 8000b
// 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 25fb582..191afbc 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): 8000a
+// Generated by (magic number): 8000b
// 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 0aba000..740f4a2 100644
--- a/Test/baseResults/hlsl.semantic.geom.out
+++ b/Test/baseResults/hlsl.semantic.geom.out
@@ -261,7 +261,7 @@
Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 88
Capability Geometry
diff --git a/Test/baseResults/hlsl.semantic.vert.out b/Test/baseResults/hlsl.semantic.vert.out
index c17969a..41edff2 100644
--- a/Test/baseResults/hlsl.semantic.vert.out
+++ b/Test/baseResults/hlsl.semantic.vert.out
@@ -211,7 +211,7 @@
Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// 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 1afcd5b..347190e 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): 8000a
+// Generated by (magic number): 8000b
// 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 d3b17f0..05bfa6a 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): 8000a
+// Generated by (magic number): 8000b
// 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 e3e27a2..a23478c 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): 8000a
+// Generated by (magic number): 8000b
// 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 bf88ce8..1f44be5 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 26
Capability Shader
diff --git a/Test/baseResults/hlsl.singleArgIntPromo.vert.out b/Test/baseResults/hlsl.singleArgIntPromo.vert.out
index a610594..a5bf362 100644
--- a/Test/baseResults/hlsl.singleArgIntPromo.vert.out
+++ b/Test/baseResults/hlsl.singleArgIntPromo.vert.out
@@ -194,7 +194,7 @@
0:? '@entryPointOutput' (layout( location=0) out float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 75
Capability Shader
diff --git a/Test/baseResults/hlsl.snorm.uav.comp.out b/Test/baseResults/hlsl.snorm.uav.comp.out
index 7b8cd41..40ab6cf 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): 8000a
+// Generated by (magic number): 8000b
// 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 eb62242..3d81789 100644
--- 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 61
Capability Shader
diff --git a/Test/baseResults/hlsl.spv.1.6.discard.frag.out b/Test/baseResults/hlsl.spv.1.6.discard.frag.out
new file mode 100644
index 0000000..0d09d25
--- /dev/null
+++ b/Test/baseResults/hlsl.spv.1.6.discard.frag.out
@@ -0,0 +1,195 @@
+hlsl.spv.1.6.discard.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: foo(f1; ( temp void)
+0:2 Function Parameters:
+0:2 'f' ( in float)
+0:? Sequence
+0:3 Test condition and select ( temp void)
+0:3 Condition
+0:3 Compare Less Than ( temp bool)
+0:3 'f' ( in float)
+0:3 Constant:
+0:3 1.000000
+0:3 true case
+0:4 Branch: Kill
+0:8 Function Definition: @PixelShaderFunction(vf4; ( temp void)
+0:8 Function Parameters:
+0:8 'input' ( in 4-component vector of float)
+0:? Sequence
+0:9 Function Call: foo(f1; ( temp void)
+0:9 direct index ( temp float)
+0:9 'input' ( in 4-component vector of float)
+0:9 Constant:
+0:9 2 (const int)
+0:10 Test condition and select ( temp void)
+0:10 Condition
+0:10 Convert float to bool ( temp bool)
+0:10 direct index ( temp float)
+0:10 'input' ( in 4-component vector of float)
+0:10 Constant:
+0:10 0 (const int)
+0:10 true case
+0:11 Branch: Kill
+0:12 Sequence
+0:12 move second child to first child ( temp float)
+0:12 'f' ( temp float)
+0:12 direct index ( temp float)
+0:12 'input' ( in 4-component vector of float)
+0:12 Constant:
+0:12 0 (const int)
+0:13 Branch: Kill
+0:8 Function Definition: PixelShaderFunction( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 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:8 Function Call: @PixelShaderFunction(vf4; ( temp void)
+0:? 'input' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'input' (layout( location=0) in 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: foo(f1; ( temp void)
+0:2 Function Parameters:
+0:2 'f' ( in float)
+0:? Sequence
+0:3 Test condition and select ( temp void)
+0:3 Condition
+0:3 Compare Less Than ( temp bool)
+0:3 'f' ( in float)
+0:3 Constant:
+0:3 1.000000
+0:3 true case
+0:4 Branch: Kill
+0:8 Function Definition: @PixelShaderFunction(vf4; ( temp void)
+0:8 Function Parameters:
+0:8 'input' ( in 4-component vector of float)
+0:? Sequence
+0:9 Function Call: foo(f1; ( temp void)
+0:9 direct index ( temp float)
+0:9 'input' ( in 4-component vector of float)
+0:9 Constant:
+0:9 2 (const int)
+0:10 Test condition and select ( temp void)
+0:10 Condition
+0:10 Convert float to bool ( temp bool)
+0:10 direct index ( temp float)
+0:10 'input' ( in 4-component vector of float)
+0:10 Constant:
+0:10 0 (const int)
+0:10 true case
+0:11 Branch: Kill
+0:12 Sequence
+0:12 move second child to first child ( temp float)
+0:12 'f' ( temp float)
+0:12 direct index ( temp float)
+0:12 'input' ( in 4-component vector of float)
+0:12 Constant:
+0:12 0 (const int)
+0:13 Branch: Kill
+0:8 Function Definition: PixelShaderFunction( ( temp void)
+0:8 Function Parameters:
+0:? Sequence
+0:8 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:8 Function Call: @PixelShaderFunction(vf4; ( temp void)
+0:? 'input' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'input' (layout( location=0) in 4-component vector of float)
+
+// Module Version 10600
+// Generated by (magic number): 8000b
+// Id's are bound by 47
+
+ Capability Shader
+ Capability DemoteToHelperInvocationEXT
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "PixelShaderFunction" 42
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "PixelShaderFunction"
+ Name 10 "foo(f1;"
+ Name 9 "f"
+ Name 16 "@PixelShaderFunction(vf4;"
+ Name 15 "input"
+ Name 24 "param"
+ Name 37 "f"
+ Name 40 "input"
+ Name 42 "input"
+ Name 44 "param"
+ Decorate 42(input) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Function 6(float)
+ 8: TypeFunction 2 7(ptr)
+ 12: TypeVector 6(float) 4
+ 13: TypePointer Function 12(fvec4)
+ 14: TypeFunction 2 13(ptr)
+ 19: 6(float) Constant 1065353216
+ 20: TypeBool
+ 25: TypeInt 32 0
+ 26: 25(int) Constant 2
+ 30: 25(int) Constant 0
+ 33: 6(float) Constant 0
+ 41: TypePointer Input 12(fvec4)
+ 42(input): 41(ptr) Variable Input
+4(PixelShaderFunction): 2 Function None 3
+ 5: Label
+ 40(input): 13(ptr) Variable Function
+ 44(param): 13(ptr) Variable Function
+ 43: 12(fvec4) Load 42(input)
+ Store 40(input) 43
+ 45: 12(fvec4) Load 40(input)
+ Store 44(param) 45
+ 46: 2 FunctionCall 16(@PixelShaderFunction(vf4;) 44(param)
+ Return
+ FunctionEnd
+ 10(foo(f1;): 2 Function None 8
+ 9(f): 7(ptr) FunctionParameter
+ 11: Label
+ 18: 6(float) Load 9(f)
+ 21: 20(bool) FOrdLessThan 18 19
+ SelectionMerge 23 None
+ BranchConditional 21 22 23
+ 22: Label
+ DemoteToHelperInvocationEXT
+ Branch 23
+ 23: Label
+ Return
+ FunctionEnd
+16(@PixelShaderFunction(vf4;): 2 Function None 14
+ 15(input): 13(ptr) FunctionParameter
+ 17: Label
+ 24(param): 7(ptr) Variable Function
+ 37(f): 7(ptr) Variable Function
+ 27: 7(ptr) AccessChain 15(input) 26
+ 28: 6(float) Load 27
+ Store 24(param) 28
+ 29: 2 FunctionCall 10(foo(f1;) 24(param)
+ 31: 7(ptr) AccessChain 15(input) 30
+ 32: 6(float) Load 31
+ 34: 20(bool) FUnordNotEqual 32 33
+ SelectionMerge 36 None
+ BranchConditional 34 35 36
+ 35: Label
+ DemoteToHelperInvocationEXT
+ Branch 36
+ 36: Label
+ 38: 7(ptr) AccessChain 15(input) 30
+ 39: 6(float) Load 38
+ Store 37(f) 39
+ DemoteToHelperInvocationEXT
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.staticFuncInit.frag.out b/Test/baseResults/hlsl.staticFuncInit.frag.out
index 586dace..9e1e4a8 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): 8000a
+// Generated by (magic number): 8000b
// 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 f0e5f9f..9cd3d38 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): 8000a
+// Generated by (magic number): 8000b
// 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 e518821..2198aff 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): 8000a
+// Generated by (magic number): 8000b
// 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 047f413..2a5ce37 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): 8000a
+// Generated by (magic number): 8000b
// 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 f2ca742..144bebc 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): 8000a
+// Generated by (magic number): 8000b
// 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 7330f56..a36bba4 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): 8000a
+// Generated by (magic number): 8000b
// 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 f204bd5..89b4e4e 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): 8000a
+// Generated by (magic number): 8000b
// 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 3d75fb8..0e3e852 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): 8000a
+// Generated by (magic number): 8000b
// 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 c40dbd6..16c897b 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): 8000a
+// Generated by (magic number): 8000b
// 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 2570552..7451a34 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): 8000a
+// Generated by (magic number): 8000b
// 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 1abe4c3..9bab38c 100644
--- a/Test/baseResults/hlsl.struct.split.nested.geom.out
+++ b/Test/baseResults/hlsl.struct.split.nested.geom.out
@@ -430,7 +430,7 @@
0:? 'ts.contains_no_builtin_io.m1' (layout( location=3) out int)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 99
Capability Geometry
diff --git a/Test/baseResults/hlsl.struct.split.trivial.geom.out b/Test/baseResults/hlsl.struct.split.trivial.geom.out
index 89c02bf..f46316f 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): 8000a
+// Generated by (magic number): 8000b
// 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 f1470ab..065f422 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): 8000a
+// Generated by (magic number): 8000b
// 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 fd1a8bb..3faff5b 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): 8000a
+// Generated by (magic number): 8000b
// 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 3fdbca9..ce305b0 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): 8000a
+// Generated by (magic number): 8000b
// 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 97e57b1..4896dca 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): 8000a
+// Generated by (magic number): 8000b
// 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 619dccf..e36e5f0 100644
--- a/Test/baseResults/hlsl.structarray.flatten.geom.out
+++ b/Test/baseResults/hlsl.structarray.flatten.geom.out
@@ -314,7 +314,7 @@
0:? 'outStream.uv' (layout( location=1) out 2-component vector of float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 82
Capability Geometry
diff --git a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
index a4e540f..acfbf5d 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): 8000a
+// Generated by (magic number): 8000b
// 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 518b67f..4c57e0b 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): 8000a
+// Generated by (magic number): 8000b
// 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 ba874ee..3f26652 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): 8000a
+// Generated by (magic number): 8000b
// 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 b5252bc..f3e92ce 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): 8000a
+// Generated by (magic number): 8000b
// 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 3d97ee5..65e4a14 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 78
Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.floatidx.comp.out b/Test/baseResults/hlsl.structbuffer.floatidx.comp.out
index a7668a7..6a86e48 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): 8000a
+// Generated by (magic number): 8000b
// 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 bd2a4e6..2086d59 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): 8000a
+// Generated by (magic number): 8000b
// 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 3409a5f..1953d46 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): 8000a
+// Generated by (magic number): 8000b
// 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 294a1c6..0e16ef1 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 96
Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out b/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out
index 23b2125..95b13a8 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): 8000a
+// Generated by (magic number): 8000b
// 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 2605777..72efcc0 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): 8000a
+// Generated by (magic number): 8000b
// 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 1eb98aa..9dfdaf0 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 78
Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out b/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
index 337442d..5fdbd1d 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 239
Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out b/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out
new file mode 100644
index 0000000..b024bd4
--- /dev/null
+++ b/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out
@@ -0,0 +1,140 @@
+hlsl.structbuffer.rwbyte2.comp
+Shader version: 500
+local_size = (1, 1, 1)
+0:? Sequence
+0:6 Function Definition: @main( ( temp void)
+0:6 Function Parameters:
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp uint)
+0:7 'f' ( temp uint)
+0:7 indirect index (layout( row_major std430) buffer uint)
+0:7 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
+0:7 'g_bbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
+0:7 Constant:
+0:7 0 (const uint)
+0:7 right-shift ( temp int)
+0:7 Constant:
+0:7 16 (const int)
+0:7 Constant:
+0:7 2 (const int)
+0:8 move second child to first child ( temp uint)
+0:8 direct index (layout( row_major std430) buffer uint)
+0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
+0:8 'g_sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
+0:8 Constant:
+0:8 0 (const uint)
+0:8 Constant:
+0:8 0 (const int)
+0:8 'f' ( temp uint)
+0:6 Function Definition: main( ( temp void)
+0:6 Function Parameters:
+0:? Sequence
+0:6 Function Call: @main( ( temp void)
+0:? Linker Objects
+0:? 'g_sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
+0:? 'g_bbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (1, 1, 1)
+0:? Sequence
+0:6 Function Definition: @main( ( temp void)
+0:6 Function Parameters:
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child ( temp uint)
+0:7 'f' ( temp uint)
+0:7 indirect index (layout( row_major std430) buffer uint)
+0:7 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
+0:7 'g_bbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
+0:7 Constant:
+0:7 0 (const uint)
+0:7 right-shift ( temp int)
+0:7 Constant:
+0:7 16 (const int)
+0:7 Constant:
+0:7 2 (const int)
+0:8 move second child to first child ( temp uint)
+0:8 direct index (layout( row_major std430) buffer uint)
+0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
+0:8 'g_sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
+0:8 Constant:
+0:8 0 (const uint)
+0:8 Constant:
+0:8 0 (const int)
+0:8 'f' ( temp uint)
+0:6 Function Definition: main( ( temp void)
+0:6 Function Parameters:
+0:? Sequence
+0:6 Function Call: @main( ( temp void)
+0:? Linker Objects
+0:? 'g_sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
+0:? 'g_bbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
+
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 30
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main"
+ ExecutionMode 4 LocalSize 1 1 1
+ Source HLSL 500
+ Name 4 "main"
+ Name 6 "@main("
+ Name 10 "f"
+ Name 12 "g_bbuf"
+ MemberName 12(g_bbuf) 0 "@data"
+ Name 14 "g_bbuf"
+ Name 24 "g_sbuf"
+ MemberName 24(g_sbuf) 0 "@data"
+ Name 26 "g_sbuf"
+ Decorate 11 ArrayStride 4
+ MemberDecorate 12(g_bbuf) 0 Offset 0
+ Decorate 12(g_bbuf) BufferBlock
+ Decorate 14(g_bbuf) DescriptorSet 0
+ Decorate 14(g_bbuf) Binding 1
+ Decorate 23 ArrayStride 4
+ MemberDecorate 24(g_sbuf) 0 Offset 0
+ Decorate 24(g_sbuf) BufferBlock
+ Decorate 26(g_sbuf) DescriptorSet 0
+ Decorate 26(g_sbuf) Binding 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 8: TypeInt 32 0
+ 9: TypePointer Function 8(int)
+ 11: TypeRuntimeArray 8(int)
+ 12(g_bbuf): TypeStruct 11
+ 13: TypePointer Uniform 12(g_bbuf)
+ 14(g_bbuf): 13(ptr) Variable Uniform
+ 15: TypeInt 32 1
+ 16: 15(int) Constant 0
+ 17: 15(int) Constant 16
+ 18: 15(int) Constant 2
+ 20: TypePointer Uniform 8(int)
+ 23: TypeRuntimeArray 8(int)
+ 24(g_sbuf): TypeStruct 23
+ 25: TypePointer Uniform 24(g_sbuf)
+ 26(g_sbuf): 25(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 29: 2 FunctionCall 6(@main()
+ Return
+ FunctionEnd
+ 6(@main(): 2 Function None 3
+ 7: Label
+ 10(f): 9(ptr) Variable Function
+ 19: 15(int) ShiftRightArithmetic 17 18
+ 21: 20(ptr) AccessChain 14(g_bbuf) 16 19
+ 22: 8(int) Load 21
+ Store 10(f) 22
+ 27: 8(int) Load 10(f)
+ 28: 20(ptr) AccessChain 26(g_sbuf) 16 16
+ Store 28 27
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.structin.vert.out b/Test/baseResults/hlsl.structin.vert.out
index 85f6346..04a64e7 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): 8000a
+// Generated by (magic number): 8000b
// 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 2aca628..942ef5e 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): 8000a
+// Generated by (magic number): 8000b
// 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 c239640..2ee9bd9 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): 8000a
+// Generated by (magic number): 8000b
// 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 88ea3cc..afb81de 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): 8000a
+// Generated by (magic number): 8000b
// 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 316a352..5462e64 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): 8000a
+// Generated by (magic number): 8000b
// 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 8bfaa2b..9e86746 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): 8000a
+// Generated by (magic number): 8000b
// 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 095d15d..0be96d1 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): 8000a
+// Generated by (magic number): 8000b
// 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 c57ae00..2fa4765 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): 8000a
+// Generated by (magic number): 8000b
// 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 842ed0d..5624c28 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): 8000a
+// Generated by (magic number): 8000b
// 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 bf9ab68..ba632be 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): 8000a
+// Generated by (magic number): 8000b
// 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 1a7816d..9c3b741 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): 8000a
+// Generated by (magic number): 8000b
// 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 37e19c2..ae1d4f7 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): 8000a
+// Generated by (magic number): 8000b
// 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 e6b54cf..6e4a8a0 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): 8000a
+// Generated by (magic number): 8000b
// 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 53e8c04..630f2d3 100644
--- a/Test/baseResults/hlsl.tristream-append.geom.out
+++ b/Test/baseResults/hlsl.tristream-append.geom.out
@@ -157,7 +157,7 @@
Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 66
Capability Geometry
diff --git a/Test/baseResults/hlsl.tx.bracket.frag.out b/Test/baseResults/hlsl.tx.bracket.frag.out
index 424b848..07f1909 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): 8000a
+// Generated by (magic number): 8000b
// 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 7fb0640..df1bb20 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): 8000a
+// Generated by (magic number): 8000b
// 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 68f1b24..f12838b 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): 8000a
+// Generated by (magic number): 8000b
// 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 5705fb7..6130fda 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): 8000a
+// Generated by (magic number): 8000b
// 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 7320074..fe802db 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): 8000a
+// Generated by (magic number): 8000b
// 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 cedf601..e380547 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): 8000a
+// Generated by (magic number): 8000b
// 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 d925124..ecb8dbd 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): 8000a
+// Generated by (magic number): 8000b
// 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 f93cca0..48c43c6 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 27
Capability Shader
diff --git a/Test/baseResults/hlsl.w-recip.frag.out b/Test/baseResults/hlsl.w-recip.frag.out
new file mode 100644
index 0000000..a4fc494
--- /dev/null
+++ b/Test/baseResults/hlsl.w-recip.frag.out
@@ -0,0 +1,268 @@
+hlsl.w-recip.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:5 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:5 Function Parameters:
+0:5 'vpos' ( in 4-component vector of float)
+0:? Sequence
+0:6 Sequence
+0:6 move second child to first child ( temp 4-component vector of float)
+0:6 'vpos_t' ( temp 4-component vector of float)
+0:6 Construct vec4 ( temp 4-component vector of float)
+0:6 vector swizzle ( temp 3-component vector of float)
+0:6 'vpos' ( in 4-component vector of float)
+0:6 Sequence
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 1 (const int)
+0:6 Constant:
+0:6 2 (const int)
+0:6 divide ( temp float)
+0:6 Constant:
+0:6 1.000000
+0:6 direct index ( temp float)
+0:6 'vpos' ( in 4-component vector of float)
+0:6 Constant:
+0:6 3 (const int)
+0:7 Test condition and select ( temp void)
+0:7 Condition
+0:7 Compare Less Than ( temp bool)
+0:7 direct index ( temp float)
+0:7 'vpos_t' ( temp 4-component vector of float)
+0:7 Constant:
+0:7 0 (const int)
+0:7 Constant:
+0:7 400.000000
+0:7 true case
+0:8 Branch: Return with expression
+0:8 AmbientColor: direct index for structure ( uniform 4-component vector of float)
+0:8 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
+0:8 Constant:
+0:8 0 (const uint)
+0:7 false case
+0:10 Branch: Return with expression
+0:10 AmbientColor2: direct index for structure ( uniform 4-component vector of float)
+0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
+0:10 Constant:
+0:10 1 (const uint)
+0:5 Function Definition: main( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:5 move second child to first child ( temp 4-component vector of float)
+0:? 'vpos' ( temp 4-component vector of float)
+0:5 Construct vec4 ( temp 4-component vector of float)
+0:5 vector swizzle ( temp 3-component vector of float)
+0:? 'vpos' ( in 4-component vector of float FragCoord)
+0:5 Sequence
+0:5 Constant:
+0:5 0 (const int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Constant:
+0:5 2 (const int)
+0:5 divide ( temp float)
+0:5 Constant:
+0:5 1.000000
+0:5 direct index ( temp float)
+0:? 'vpos' ( in 4-component vector of float FragCoord)
+0:5 Constant:
+0:5 3 (const int)
+0:5 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:5 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'vpos' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'vpos' ( in 4-component vector of float FragCoord)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:5 Function Definition: @main(vf4; ( temp 4-component vector of float)
+0:5 Function Parameters:
+0:5 'vpos' ( in 4-component vector of float)
+0:? Sequence
+0:6 Sequence
+0:6 move second child to first child ( temp 4-component vector of float)
+0:6 'vpos_t' ( temp 4-component vector of float)
+0:6 Construct vec4 ( temp 4-component vector of float)
+0:6 vector swizzle ( temp 3-component vector of float)
+0:6 'vpos' ( in 4-component vector of float)
+0:6 Sequence
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 1 (const int)
+0:6 Constant:
+0:6 2 (const int)
+0:6 divide ( temp float)
+0:6 Constant:
+0:6 1.000000
+0:6 direct index ( temp float)
+0:6 'vpos' ( in 4-component vector of float)
+0:6 Constant:
+0:6 3 (const int)
+0:7 Test condition and select ( temp void)
+0:7 Condition
+0:7 Compare Less Than ( temp bool)
+0:7 direct index ( temp float)
+0:7 'vpos_t' ( temp 4-component vector of float)
+0:7 Constant:
+0:7 0 (const int)
+0:7 Constant:
+0:7 400.000000
+0:7 true case
+0:8 Branch: Return with expression
+0:8 AmbientColor: direct index for structure ( uniform 4-component vector of float)
+0:8 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
+0:8 Constant:
+0:8 0 (const uint)
+0:7 false case
+0:10 Branch: Return with expression
+0:10 AmbientColor2: direct index for structure ( uniform 4-component vector of float)
+0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
+0:10 Constant:
+0:10 1 (const uint)
+0:5 Function Definition: main( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:5 move second child to first child ( temp 4-component vector of float)
+0:? 'vpos' ( temp 4-component vector of float)
+0:5 Construct vec4 ( temp 4-component vector of float)
+0:5 vector swizzle ( temp 3-component vector of float)
+0:? 'vpos' ( in 4-component vector of float FragCoord)
+0:5 Sequence
+0:5 Constant:
+0:5 0 (const int)
+0:5 Constant:
+0:5 1 (const int)
+0:5 Constant:
+0:5 2 (const int)
+0:5 divide ( temp float)
+0:5 Constant:
+0:5 1.000000
+0:5 direct index ( temp float)
+0:? 'vpos' ( in 4-component vector of float FragCoord)
+0:5 Constant:
+0:5 3 (const int)
+0:5 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:5 Function Call: @main(vf4; ( temp 4-component vector of float)
+0:? 'vpos' ( temp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'vpos' ( in 4-component vector of float FragCoord)
+
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 69
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 53 65
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 11 "@main(vf4;"
+ Name 10 "vpos"
+ Name 13 "vpos_t"
+ Name 36 "$Global"
+ MemberName 36($Global) 0 "AmbientColor"
+ MemberName 36($Global) 1 "AmbientColor2"
+ Name 38 ""
+ Name 51 "vpos"
+ Name 53 "vpos"
+ Name 65 "@entryPointOutput"
+ Name 66 "param"
+ MemberDecorate 36($Global) 0 Offset 0
+ MemberDecorate 36($Global) 1 Offset 16
+ Decorate 36($Global) Block
+ Decorate 38 DescriptorSet 0
+ Decorate 38 Binding 0
+ Decorate 53(vpos) BuiltIn FragCoord
+ Decorate 65(@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)
+ 14: TypeVector 6(float) 3
+ 17: 6(float) Constant 1065353216
+ 18: TypeInt 32 0
+ 19: 18(int) Constant 3
+ 20: TypePointer Function 6(float)
+ 28: 18(int) Constant 0
+ 31: 6(float) Constant 1137180672
+ 32: TypeBool
+ 36($Global): TypeStruct 7(fvec4) 7(fvec4)
+ 37: TypePointer Uniform 36($Global)
+ 38: 37(ptr) Variable Uniform
+ 39: TypeInt 32 1
+ 40: 39(int) Constant 0
+ 41: TypePointer Uniform 7(fvec4)
+ 46: 39(int) Constant 1
+ 52: TypePointer Input 7(fvec4)
+ 53(vpos): 52(ptr) Variable Input
+ 56: TypePointer Input 6(float)
+ 64: TypePointer Output 7(fvec4)
+65(@entryPointOutput): 64(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 51(vpos): 8(ptr) Variable Function
+ 66(param): 8(ptr) Variable Function
+ 54: 7(fvec4) Load 53(vpos)
+ 55: 14(fvec3) VectorShuffle 54 54 0 1 2
+ 57: 56(ptr) AccessChain 53(vpos) 19
+ 58: 6(float) Load 57
+ 59: 6(float) FDiv 17 58
+ 60: 6(float) CompositeExtract 55 0
+ 61: 6(float) CompositeExtract 55 1
+ 62: 6(float) CompositeExtract 55 2
+ 63: 7(fvec4) CompositeConstruct 60 61 62 59
+ Store 51(vpos) 63
+ 67: 7(fvec4) Load 51(vpos)
+ Store 66(param) 67
+ 68: 7(fvec4) FunctionCall 11(@main(vf4;) 66(param)
+ Store 65(@entryPointOutput) 68
+ Return
+ FunctionEnd
+ 11(@main(vf4;): 7(fvec4) Function None 9
+ 10(vpos): 8(ptr) FunctionParameter
+ 12: Label
+ 13(vpos_t): 8(ptr) Variable Function
+ 15: 7(fvec4) Load 10(vpos)
+ 16: 14(fvec3) VectorShuffle 15 15 0 1 2
+ 21: 20(ptr) AccessChain 10(vpos) 19
+ 22: 6(float) Load 21
+ 23: 6(float) FDiv 17 22
+ 24: 6(float) CompositeExtract 16 0
+ 25: 6(float) CompositeExtract 16 1
+ 26: 6(float) CompositeExtract 16 2
+ 27: 7(fvec4) CompositeConstruct 24 25 26 23
+ Store 13(vpos_t) 27
+ 29: 20(ptr) AccessChain 13(vpos_t) 28
+ 30: 6(float) Load 29
+ 33: 32(bool) FOrdLessThan 30 31
+ SelectionMerge 35 None
+ BranchConditional 33 34 45
+ 34: Label
+ 42: 41(ptr) AccessChain 38 40
+ 43: 7(fvec4) Load 42
+ ReturnValue 43
+ 45: Label
+ 47: 41(ptr) AccessChain 38 46
+ 48: 7(fvec4) Load 47
+ ReturnValue 48
+ 35: Label
+ Unreachable
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.w-recip2.frag.out b/Test/baseResults/hlsl.w-recip2.frag.out
new file mode 100644
index 0000000..2157ce4
--- /dev/null
+++ b/Test/baseResults/hlsl.w-recip2.frag.out
@@ -0,0 +1,305 @@
+hlsl.w-recip2.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:13 Function Definition: @main(struct-VSOutput-vf4-vf3-vf3-vf21; ( temp 4-component vector of float)
+0:13 Function Parameters:
+0:13 'VSOut' ( in structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:? Sequence
+0:14 Test condition and select ( temp void)
+0:14 Condition
+0:14 Compare Less Than ( temp bool)
+0:14 direct index ( temp float)
+0:14 PositionPS: direct index for structure ( temp 4-component vector of float)
+0:14 'VSOut' ( in structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 400.000000
+0:14 true case
+0:15 Branch: Return with expression
+0:15 AmbientColor: direct index for structure ( uniform 4-component vector of float)
+0:15 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
+0:15 Constant:
+0:15 0 (const uint)
+0:14 false case
+0:17 Branch: Return with expression
+0:17 AmbientColor2: direct index for structure ( uniform 4-component vector of float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
+0:17 Constant:
+0:17 1 (const uint)
+0:13 Function Definition: main( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 Sequence
+0:13 Sequence
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 '@fragcoord' ( temp 4-component vector of float)
+0:? 'VSOut.PositionPS' ( in 4-component vector of float FragCoord)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( in float FragCoord)
+0:13 '@fragcoord' ( temp 4-component vector of float)
+0:13 Constant:
+0:13 3 (const int)
+0:13 divide ( temp float)
+0:13 Constant:
+0:13 1.000000
+0:13 direct index ( in float FragCoord)
+0:13 '@fragcoord' ( temp 4-component vector of float)
+0:13 Constant:
+0:13 3 (const int)
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 PositionPS: direct index for structure ( temp 4-component vector of float)
+0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:13 Constant:
+0:13 0 (const int)
+0:13 '@fragcoord' ( temp 4-component vector of float)
+0:13 move second child to first child ( temp 3-component vector of float)
+0:13 PosInLightViewSpace: direct index for structure ( temp 3-component vector of float)
+0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:13 Constant:
+0:13 1 (const int)
+0:? 'VSOut.PosInLightViewSpace' (layout( location=0) in 3-component vector of float)
+0:13 move second child to first child ( temp 3-component vector of float)
+0:13 NormalWS: direct index for structure ( temp 3-component vector of float)
+0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:13 Constant:
+0:13 2 (const int)
+0:? 'VSOut.NormalWS' (layout( location=1) in 3-component vector of float)
+0:13 move second child to first child ( temp 2-component vector of float)
+0:13 TexCoord: direct index for structure ( temp 2-component vector of float)
+0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:13 Constant:
+0:13 3 (const int)
+0:? 'VSOut.TexCoord' (layout( location=2) in 2-component vector of float)
+0:13 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:13 Function Call: @main(struct-VSOutput-vf4-vf3-vf3-vf21; ( temp 4-component vector of float)
+0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'VSOut.PositionPS' ( in 4-component vector of float FragCoord)
+0:? 'VSOut.PosInLightViewSpace' (layout( location=0) in 3-component vector of float)
+0:? 'VSOut.NormalWS' (layout( location=1) in 3-component vector of float)
+0:? 'VSOut.TexCoord' (layout( location=2) in 2-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:13 Function Definition: @main(struct-VSOutput-vf4-vf3-vf3-vf21; ( temp 4-component vector of float)
+0:13 Function Parameters:
+0:13 'VSOut' ( in structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:? Sequence
+0:14 Test condition and select ( temp void)
+0:14 Condition
+0:14 Compare Less Than ( temp bool)
+0:14 direct index ( temp float)
+0:14 PositionPS: direct index for structure ( temp 4-component vector of float)
+0:14 'VSOut' ( in structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 400.000000
+0:14 true case
+0:15 Branch: Return with expression
+0:15 AmbientColor: direct index for structure ( uniform 4-component vector of float)
+0:15 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
+0:15 Constant:
+0:15 0 (const uint)
+0:14 false case
+0:17 Branch: Return with expression
+0:17 AmbientColor2: direct index for structure ( uniform 4-component vector of float)
+0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
+0:17 Constant:
+0:17 1 (const uint)
+0:13 Function Definition: main( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 Sequence
+0:13 Sequence
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 '@fragcoord' ( temp 4-component vector of float)
+0:? 'VSOut.PositionPS' ( in 4-component vector of float FragCoord)
+0:13 move second child to first child ( temp float)
+0:13 direct index ( in float FragCoord)
+0:13 '@fragcoord' ( temp 4-component vector of float)
+0:13 Constant:
+0:13 3 (const int)
+0:13 divide ( temp float)
+0:13 Constant:
+0:13 1.000000
+0:13 direct index ( in float FragCoord)
+0:13 '@fragcoord' ( temp 4-component vector of float)
+0:13 Constant:
+0:13 3 (const int)
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 PositionPS: direct index for structure ( temp 4-component vector of float)
+0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:13 Constant:
+0:13 0 (const int)
+0:13 '@fragcoord' ( temp 4-component vector of float)
+0:13 move second child to first child ( temp 3-component vector of float)
+0:13 PosInLightViewSpace: direct index for structure ( temp 3-component vector of float)
+0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:13 Constant:
+0:13 1 (const int)
+0:? 'VSOut.PosInLightViewSpace' (layout( location=0) in 3-component vector of float)
+0:13 move second child to first child ( temp 3-component vector of float)
+0:13 NormalWS: direct index for structure ( temp 3-component vector of float)
+0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:13 Constant:
+0:13 2 (const int)
+0:? 'VSOut.NormalWS' (layout( location=1) in 3-component vector of float)
+0:13 move second child to first child ( temp 2-component vector of float)
+0:13 TexCoord: direct index for structure ( temp 2-component vector of float)
+0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:13 Constant:
+0:13 3 (const int)
+0:? 'VSOut.TexCoord' (layout( location=2) in 2-component vector of float)
+0:13 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:13 Function Call: @main(struct-VSOutput-vf4-vf3-vf3-vf21; ( temp 4-component vector of float)
+0:? 'VSOut' ( temp structure{ temp 4-component vector of float PositionPS, temp 3-component vector of float PosInLightViewSpace, temp 3-component vector of float NormalWS, temp 2-component vector of float TexCoord})
+0:? Linker Objects
+0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform 4-component vector of float AmbientColor2})
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:? 'VSOut.PositionPS' ( in 4-component vector of float FragCoord)
+0:? 'VSOut.PosInLightViewSpace' (layout( location=0) in 3-component vector of float)
+0:? 'VSOut.NormalWS' (layout( location=1) in 3-component vector of float)
+0:? 'VSOut.TexCoord' (layout( location=2) in 2-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 75
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 44 56 61 66 71
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "main"
+ Name 10 "VSOutput"
+ MemberName 10(VSOutput) 0 "PositionPS"
+ MemberName 10(VSOutput) 1 "PosInLightViewSpace"
+ MemberName 10(VSOutput) 2 "NormalWS"
+ MemberName 10(VSOutput) 3 "TexCoord"
+ Name 14 "@main(struct-VSOutput-vf4-vf3-vf3-vf21;"
+ Name 13 "VSOut"
+ Name 28 "$Global"
+ MemberName 28($Global) 0 "AmbientColor"
+ MemberName 28($Global) 1 "AmbientColor2"
+ Name 30 ""
+ Name 42 "@fragcoord"
+ Name 44 "VSOut.PositionPS"
+ Name 52 "VSOut"
+ Name 56 "VSOut.PosInLightViewSpace"
+ Name 61 "VSOut.NormalWS"
+ Name 66 "VSOut.TexCoord"
+ Name 71 "@entryPointOutput"
+ Name 72 "param"
+ MemberDecorate 28($Global) 0 Offset 0
+ MemberDecorate 28($Global) 1 Offset 16
+ Decorate 28($Global) Block
+ Decorate 30 DescriptorSet 0
+ Decorate 30 Binding 0
+ Decorate 44(VSOut.PositionPS) BuiltIn FragCoord
+ Decorate 56(VSOut.PosInLightViewSpace) Location 0
+ Decorate 61(VSOut.NormalWS) Location 1
+ Decorate 66(VSOut.TexCoord) Location 2
+ Decorate 71(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeVector 6(float) 3
+ 9: TypeVector 6(float) 2
+ 10(VSOutput): TypeStruct 7(fvec4) 8(fvec3) 8(fvec3) 9(fvec2)
+ 11: TypePointer Function 10(VSOutput)
+ 12: TypeFunction 7(fvec4) 11(ptr)
+ 16: TypeInt 32 1
+ 17: 16(int) Constant 0
+ 18: TypeInt 32 0
+ 19: 18(int) Constant 0
+ 20: TypePointer Function 6(float)
+ 23: 6(float) Constant 1137180672
+ 24: TypeBool
+ 28($Global): TypeStruct 7(fvec4) 7(fvec4)
+ 29: TypePointer Uniform 28($Global)
+ 30: 29(ptr) Variable Uniform
+ 31: TypePointer Uniform 7(fvec4)
+ 36: 16(int) Constant 1
+ 41: TypePointer Function 7(fvec4)
+ 43: TypePointer Input 7(fvec4)
+44(VSOut.PositionPS): 43(ptr) Variable Input
+ 46: 6(float) Constant 1065353216
+ 47: 18(int) Constant 3
+ 55: TypePointer Input 8(fvec3)
+56(VSOut.PosInLightViewSpace): 55(ptr) Variable Input
+ 58: TypePointer Function 8(fvec3)
+ 60: 16(int) Constant 2
+61(VSOut.NormalWS): 55(ptr) Variable Input
+ 64: 16(int) Constant 3
+ 65: TypePointer Input 9(fvec2)
+66(VSOut.TexCoord): 65(ptr) Variable Input
+ 68: TypePointer Function 9(fvec2)
+ 70: TypePointer Output 7(fvec4)
+71(@entryPointOutput): 70(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 42(@fragcoord): 41(ptr) Variable Function
+ 52(VSOut): 11(ptr) Variable Function
+ 72(param): 11(ptr) Variable Function
+ 45: 7(fvec4) Load 44(VSOut.PositionPS)
+ Store 42(@fragcoord) 45
+ 48: 20(ptr) AccessChain 42(@fragcoord) 47
+ 49: 6(float) Load 48
+ 50: 6(float) FDiv 46 49
+ 51: 20(ptr) AccessChain 42(@fragcoord) 47
+ Store 51 50
+ 53: 7(fvec4) Load 42(@fragcoord)
+ 54: 41(ptr) AccessChain 52(VSOut) 17
+ Store 54 53
+ 57: 8(fvec3) Load 56(VSOut.PosInLightViewSpace)
+ 59: 58(ptr) AccessChain 52(VSOut) 36
+ Store 59 57
+ 62: 8(fvec3) Load 61(VSOut.NormalWS)
+ 63: 58(ptr) AccessChain 52(VSOut) 60
+ Store 63 62
+ 67: 9(fvec2) Load 66(VSOut.TexCoord)
+ 69: 68(ptr) AccessChain 52(VSOut) 64
+ Store 69 67
+ 73:10(VSOutput) Load 52(VSOut)
+ Store 72(param) 73
+ 74: 7(fvec4) FunctionCall 14(@main(struct-VSOutput-vf4-vf3-vf3-vf21;) 72(param)
+ Store 71(@entryPointOutput) 74
+ Return
+ FunctionEnd
+14(@main(struct-VSOutput-vf4-vf3-vf3-vf21;): 7(fvec4) Function None 12
+ 13(VSOut): 11(ptr) FunctionParameter
+ 15: Label
+ 21: 20(ptr) AccessChain 13(VSOut) 17 19
+ 22: 6(float) Load 21
+ 25: 24(bool) FOrdLessThan 22 23
+ SelectionMerge 27 None
+ BranchConditional 25 26 35
+ 26: Label
+ 32: 31(ptr) AccessChain 30 17
+ 33: 7(fvec4) Load 32
+ ReturnValue 33
+ 35: Label
+ 37: 31(ptr) AccessChain 30 36
+ 38: 7(fvec4) Load 37
+ ReturnValue 38
+ 27: Label
+ Unreachable
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.wavebroadcast.comp.out b/Test/baseResults/hlsl.wavebroadcast.comp.out
index 01bc953..49d3b87 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 393
Capability Shader
diff --git a/Test/baseResults/hlsl.waveprefix.comp.out b/Test/baseResults/hlsl.waveprefix.comp.out
index cc4737e..e2991bf 100644
--- a/Test/baseResults/hlsl.waveprefix.comp.out
+++ b/Test/baseResults/hlsl.waveprefix.comp.out
@@ -1126,7 +1126,7 @@
0:54 0 (const int)
0:54 Constant:
0:54 0 (const int)
-0:54 subgroupBallotInclusiveBitCount ( temp uint)
+0:54 subgroupBallotExclusiveBitCount ( temp uint)
0:54 subgroupBallot ( temp 4-component vector of uint)
0:54 Compare Equal ( temp bool)
0:54 direct index ( temp uint)
@@ -2289,7 +2289,7 @@
0:54 0 (const int)
0:54 Constant:
0:54 0 (const int)
-0:54 subgroupBallotInclusiveBitCount ( temp uint)
+0:54 subgroupBallotExclusiveBitCount ( temp uint)
0:54 subgroupBallot ( temp 4-component vector of uint)
0:54 Compare Equal ( temp bool)
0:54 direct index ( temp uint)
@@ -2322,7 +2322,7 @@
0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
// Module Version 10300
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 403
Capability Shader
@@ -2818,7 +2818,7 @@
390: 6(int) Load 389
392: 391(bool) IEqual 390 26
393: 13(ivec4) GroupNonUniformBallot 35 392
- 394: 6(int) GroupNonUniformBallotBitCount 35 InclusiveScan 393
+ 394: 6(int) GroupNonUniformBallotBitCount 35 ExclusiveScan 393
395: 42(ptr) AccessChain 24(data) 25 386 25 26
Store 395 394
Return
diff --git a/Test/baseResults/hlsl.wavequad.comp.out b/Test/baseResults/hlsl.wavequad.comp.out
index e4311c7..6d4ab5b 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 1232
Capability Shader
diff --git a/Test/baseResults/hlsl.wavequery.comp.out b/Test/baseResults/hlsl.wavequery.comp.out
index dcd11ae..a380808 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): 8000a
+// Generated by (magic number): 8000b
// 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 df1b596..bb5147a 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 30
Capability Shader
diff --git a/Test/baseResults/hlsl.wavereduction.comp.out b/Test/baseResults/hlsl.wavereduction.comp.out
index 64a4e7c..a4393fe 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 991
Capability Shader
diff --git a/Test/baseResults/hlsl.wavevote.comp.out b/Test/baseResults/hlsl.wavevote.comp.out
index 83140a2..f9382b7 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): 8000a
+// Generated by (magic number): 8000b
// 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 23825e8..1f9a36b 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): 8000a
+// Generated by (magic number): 8000b
// 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 aefde04..e000752 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): 8000a
+// Generated by (magic number): 8000b
// 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 4a9ef61..57a47ab 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): 8000a
+// Generated by (magic number): 8000b
// 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 3544910..3e58951 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 50
Capability Shader
diff --git a/Test/baseResults/iomap.blockOutVariableIn.2.vert.out b/Test/baseResults/iomap.blockOutVariableIn.2.vert.out
new file mode 100644
index 0000000..2c4ecdc
--- /dev/null
+++ b/Test/baseResults/iomap.blockOutVariableIn.2.vert.out
@@ -0,0 +1,413 @@
+iomap.blockOutVariableIn.2.vert
+Shader version: 440
+0:? Sequence
+0:9 Function Definition: main( ( global void)
+0:9 Function Parameters:
+0:11 Sequence
+0:11 move second child to first child ( temp 4-component vector of float)
+0:11 a1: direct index for structure ( out 4-component vector of float)
+0:11 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
+0:11 Constant:
+0:11 0 (const uint)
+0:11 Constant:
+0:11 1.000000
+0:11 1.000000
+0:11 1.000000
+0:11 1.000000
+0:12 move second child to first child ( temp 2-component vector of float)
+0:12 a2: direct index for structure ( out 2-component vector of float)
+0:12 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
+0:12 Constant:
+0:12 1 (const uint)
+0:12 Constant:
+0:12 0.500000
+0:12 0.500000
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:13 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:13 Constant:
+0:13 0 (const uint)
+0:13 Constant:
+0:13 1.000000
+0:13 1.000000
+0:13 1.000000
+0:13 1.000000
+0:? Linker Objects
+0:? 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
+0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+iomap.blockOutVariableIn.geom
+Shader version: 440
+invocations = -1
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+0:? Sequence
+0:12 Function Definition: main( ( global void)
+0:12 Function Parameters:
+0:14 Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 'a1' (layout( location=0 stream=0) out 4-component vector of float)
+0:14 direct index (layout( location=0) temp 4-component vector of float)
+0:14 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
+0:14 Constant:
+0:14 0 (const int)
+0:15 move second child to first child ( temp 2-component vector of float)
+0:15 'a2' (layout( location=1 stream=0) out 2-component vector of float)
+0:15 direct index (layout( location=1) temp 2-component vector of float)
+0:15 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 Constant:
+0:16 1.000000
+0:16 1.000000
+0:16 1.000000
+0:16 1.000000
+0:17 EmitVertex ( global void)
+0:19 move second child to first child ( temp 4-component vector of float)
+0:19 'a1' (layout( location=0 stream=0) out 4-component vector of float)
+0:19 direct index (layout( location=0) temp 4-component vector of float)
+0:19 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
+0:19 Constant:
+0:19 1 (const int)
+0:20 move second child to first child ( temp 2-component vector of float)
+0:20 'a2' (layout( location=1 stream=0) out 2-component vector of float)
+0:20 direct index (layout( location=1) temp 2-component vector of float)
+0:20 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
+0:20 Constant:
+0:20 1 (const int)
+0:21 move second child to first child ( temp 4-component vector of float)
+0:21 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:21 '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:21 Constant:
+0:21 0 (const uint)
+0:21 Constant:
+0:21 1.000000
+0:21 1.000000
+0:21 1.000000
+0:21 1.000000
+0:22 EmitVertex ( global void)
+0:24 move second child to first child ( temp 4-component vector of float)
+0:24 'a1' (layout( location=0 stream=0) out 4-component vector of float)
+0:24 direct index (layout( location=0) temp 4-component vector of float)
+0:24 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
+0:24 Constant:
+0:24 2 (const int)
+0:25 move second child to first child ( temp 2-component vector of float)
+0:25 'a2' (layout( location=1 stream=0) out 2-component vector of float)
+0:25 direct index (layout( location=1) temp 2-component vector of float)
+0:25 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
+0:25 Constant:
+0:25 2 (const int)
+0:26 move second child to first child ( temp 4-component vector of float)
+0:26 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:26 '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:26 Constant:
+0:26 0 (const uint)
+0:26 Constant:
+0:26 1.000000
+0:26 1.000000
+0:26 1.000000
+0:26 1.000000
+0:27 EmitVertex ( global void)
+0:? Linker Objects
+0:? 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
+0:? 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
+0:? 'a1' (layout( location=0 stream=0) out 4-component vector of float)
+0:? 'a2' (layout( location=1 stream=0) out 2-component vector of 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})
+
+
+Linked vertex stage:
+
+
+Linked geometry stage:
+
+
+Shader version: 440
+0:? Sequence
+0:9 Function Definition: main( ( global void)
+0:9 Function Parameters:
+0:11 Sequence
+0:11 move second child to first child ( temp 4-component vector of float)
+0:11 a1: direct index for structure ( out 4-component vector of float)
+0:11 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
+0:11 Constant:
+0:11 0 (const uint)
+0:11 Constant:
+0:11 1.000000
+0:11 1.000000
+0:11 1.000000
+0:11 1.000000
+0:12 move second child to first child ( temp 2-component vector of float)
+0:12 a2: direct index for structure ( out 2-component vector of float)
+0:12 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
+0:12 Constant:
+0:12 1 (const uint)
+0:12 Constant:
+0:12 0.500000
+0:12 0.500000
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:13 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:13 Constant:
+0:13 0 (const uint)
+0:13 Constant:
+0:13 1.000000
+0:13 1.000000
+0:13 1.000000
+0:13 1.000000
+0:? Linker Objects
+0:? 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
+0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+Shader version: 440
+invocations = 1
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+0:? Sequence
+0:12 Function Definition: main( ( global void)
+0:12 Function Parameters:
+0:14 Sequence
+0:14 move second child to first child ( temp 4-component vector of float)
+0:14 'a1' (layout( location=0 stream=0) out 4-component vector of float)
+0:14 direct index (layout( location=0) temp 4-component vector of float)
+0:14 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
+0:14 Constant:
+0:14 0 (const int)
+0:15 move second child to first child ( temp 2-component vector of float)
+0:15 'a2' (layout( location=1 stream=0) out 2-component vector of float)
+0:15 direct index (layout( location=1) temp 2-component vector of float)
+0:15 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 Constant:
+0:16 1.000000
+0:16 1.000000
+0:16 1.000000
+0:16 1.000000
+0:17 EmitVertex ( global void)
+0:19 move second child to first child ( temp 4-component vector of float)
+0:19 'a1' (layout( location=0 stream=0) out 4-component vector of float)
+0:19 direct index (layout( location=0) temp 4-component vector of float)
+0:19 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
+0:19 Constant:
+0:19 1 (const int)
+0:20 move second child to first child ( temp 2-component vector of float)
+0:20 'a2' (layout( location=1 stream=0) out 2-component vector of float)
+0:20 direct index (layout( location=1) temp 2-component vector of float)
+0:20 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
+0:20 Constant:
+0:20 1 (const int)
+0:21 move second child to first child ( temp 4-component vector of float)
+0:21 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:21 '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:21 Constant:
+0:21 0 (const uint)
+0:21 Constant:
+0:21 1.000000
+0:21 1.000000
+0:21 1.000000
+0:21 1.000000
+0:22 EmitVertex ( global void)
+0:24 move second child to first child ( temp 4-component vector of float)
+0:24 'a1' (layout( location=0 stream=0) out 4-component vector of float)
+0:24 direct index (layout( location=0) temp 4-component vector of float)
+0:24 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
+0:24 Constant:
+0:24 2 (const int)
+0:25 move second child to first child ( temp 2-component vector of float)
+0:25 'a2' (layout( location=1 stream=0) out 2-component vector of float)
+0:25 direct index (layout( location=1) temp 2-component vector of float)
+0:25 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
+0:25 Constant:
+0:25 2 (const int)
+0:26 move second child to first child ( temp 4-component vector of float)
+0:26 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:26 '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:26 Constant:
+0:26 0 (const uint)
+0:26 Constant:
+0:26 1.000000
+0:26 1.000000
+0:26 1.000000
+0:26 1.000000
+0:27 EmitVertex ( global void)
+0:? Linker Objects
+0:? 'in_a1' (layout( location=0) in 3-element array of 4-component vector of float)
+0:? 'in_a2' (layout( location=1) in 3-element array of 2-component vector of float)
+0:? 'a1' (layout( location=0 stream=0) out 4-component vector of float)
+0:? 'a2' (layout( location=1 stream=0) out 2-component vector of 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})
+
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 33
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 11 28 31 32
+ Source GLSL 440
+ Name 4 "main"
+ Name 9 "Block"
+ MemberName 9(Block) 0 "a1"
+ MemberName 9(Block) 1 "a2"
+ Name 11 ""
+ Name 26 "gl_PerVertex"
+ MemberName 26(gl_PerVertex) 0 "gl_Position"
+ MemberName 26(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 26(gl_PerVertex) 2 "gl_ClipDistance"
+ Name 28 ""
+ Name 31 "gl_VertexID"
+ Name 32 "gl_InstanceID"
+ Decorate 9(Block) Block
+ Decorate 11 Location 0
+ MemberDecorate 26(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 26(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 26(gl_PerVertex) 2 BuiltIn ClipDistance
+ Decorate 26(gl_PerVertex) Block
+ Decorate 31(gl_VertexID) BuiltIn VertexId
+ Decorate 32(gl_InstanceID) BuiltIn InstanceId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeVector 6(float) 2
+ 9(Block): TypeStruct 7(fvec4) 8(fvec2)
+ 10: TypePointer Output 9(Block)
+ 11: 10(ptr) Variable Output
+ 12: TypeInt 32 1
+ 13: 12(int) Constant 0
+ 14: 6(float) Constant 1065353216
+ 15: 7(fvec4) ConstantComposite 14 14 14 14
+ 16: TypePointer Output 7(fvec4)
+ 18: 12(int) Constant 1
+ 19: 6(float) Constant 1056964608
+ 20: 8(fvec2) ConstantComposite 19 19
+ 21: TypePointer Output 8(fvec2)
+ 23: TypeInt 32 0
+ 24: 23(int) Constant 1
+ 25: TypeArray 6(float) 24
+26(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 25
+ 27: TypePointer Output 26(gl_PerVertex)
+ 28: 27(ptr) Variable Output
+ 30: TypePointer Input 12(int)
+ 31(gl_VertexID): 30(ptr) Variable Input
+32(gl_InstanceID): 30(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 17: 16(ptr) AccessChain 11 13
+ Store 17 15
+ 22: 21(ptr) AccessChain 11 18
+ Store 22 20
+ 29: 16(ptr) AccessChain 28 13
+ Store 29 15
+ Return
+ FunctionEnd
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 49
+
+ Capability Geometry
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Geometry 4 "main" 9 14 22 25 33
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 Invocations 1
+ ExecutionMode 4 OutputTriangleStrip
+ ExecutionMode 4 OutputVertices 3
+ Source GLSL 440
+ Name 4 "main"
+ Name 9 "a1"
+ Name 14 "in_a1"
+ Name 22 "a2"
+ Name 25 "in_a2"
+ Name 31 "gl_PerVertex"
+ MemberName 31(gl_PerVertex) 0 "gl_Position"
+ MemberName 31(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 31(gl_PerVertex) 2 "gl_ClipDistance"
+ Name 33 ""
+ Decorate 9(a1) Location 0
+ Decorate 14(in_a1) Location 0
+ Decorate 22(a2) Location 1
+ Decorate 25(in_a2) Location 1
+ MemberDecorate 31(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 31(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 31(gl_PerVertex) 2 BuiltIn ClipDistance
+ Decorate 31(gl_PerVertex) Block
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(a1): 8(ptr) Variable Output
+ 10: TypeInt 32 0
+ 11: 10(int) Constant 3
+ 12: TypeArray 7(fvec4) 11
+ 13: TypePointer Input 12
+ 14(in_a1): 13(ptr) Variable Input
+ 15: TypeInt 32 1
+ 16: 15(int) Constant 0
+ 17: TypePointer Input 7(fvec4)
+ 20: TypeVector 6(float) 2
+ 21: TypePointer Output 20(fvec2)
+ 22(a2): 21(ptr) Variable Output
+ 23: TypeArray 20(fvec2) 11
+ 24: TypePointer Input 23
+ 25(in_a2): 24(ptr) Variable Input
+ 26: TypePointer Input 20(fvec2)
+ 29: 10(int) Constant 1
+ 30: TypeArray 6(float) 29
+31(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 30
+ 32: TypePointer Output 31(gl_PerVertex)
+ 33: 32(ptr) Variable Output
+ 34: 6(float) Constant 1065353216
+ 35: 7(fvec4) ConstantComposite 34 34 34 34
+ 37: 15(int) Constant 1
+ 43: 15(int) Constant 2
+ 4(main): 2 Function None 3
+ 5: Label
+ 18: 17(ptr) AccessChain 14(in_a1) 16
+ 19: 7(fvec4) Load 18
+ Store 9(a1) 19
+ 27: 26(ptr) AccessChain 25(in_a2) 16
+ 28: 20(fvec2) Load 27
+ Store 22(a2) 28
+ 36: 8(ptr) AccessChain 33 16
+ Store 36 35
+ EmitVertex
+ 38: 17(ptr) AccessChain 14(in_a1) 37
+ 39: 7(fvec4) Load 38
+ Store 9(a1) 39
+ 40: 26(ptr) AccessChain 25(in_a2) 37
+ 41: 20(fvec2) Load 40
+ Store 22(a2) 41
+ 42: 8(ptr) AccessChain 33 16
+ Store 42 35
+ EmitVertex
+ 44: 17(ptr) AccessChain 14(in_a1) 43
+ 45: 7(fvec4) Load 44
+ Store 9(a1) 45
+ 46: 26(ptr) AccessChain 25(in_a2) 43
+ 47: 20(fvec2) Load 46
+ Store 22(a2) 47
+ 48: 8(ptr) AccessChain 33 16
+ Store 48 35
+ EmitVertex
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/iomap.blockOutVariableIn.vert.out b/Test/baseResults/iomap.blockOutVariableIn.vert.out
new file mode 100644
index 0000000..a43e52f
--- /dev/null
+++ b/Test/baseResults/iomap.blockOutVariableIn.vert.out
@@ -0,0 +1,234 @@
+iomap.blockOutVariableIn.vert
+Shader version: 440
+0:? Sequence
+0:9 Function Definition: main( ( global void)
+0:9 Function Parameters:
+0:11 Sequence
+0:11 move second child to first child ( temp 4-component vector of float)
+0:11 a1: direct index for structure ( out 4-component vector of float)
+0:11 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
+0:11 Constant:
+0:11 0 (const uint)
+0:11 Constant:
+0:11 1.000000
+0:11 1.000000
+0:11 1.000000
+0:11 1.000000
+0:12 move second child to first child ( temp 2-component vector of float)
+0:12 a2: direct index for structure ( out 2-component vector of float)
+0:12 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
+0:12 Constant:
+0:12 1 (const uint)
+0:12 Constant:
+0:12 0.500000
+0:12 0.500000
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:13 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:13 Constant:
+0:13 0 (const uint)
+0:13 Constant:
+0:13 1.000000
+0:13 1.000000
+0:13 1.000000
+0:13 1.000000
+0:? Linker Objects
+0:? 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
+0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+iomap.blockOutVariableIn.frag
+Shader version: 440
+0:? Sequence
+0:8 Function Definition: main( ( global void)
+0:8 Function Parameters:
+0:10 Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 'color' (layout( location=0) out 4-component vector of float)
+0:10 Construct vec4 ( temp 4-component vector of float)
+0:10 vector swizzle ( temp 2-component vector of float)
+0:10 'a1' (layout( location=0) smooth in 4-component vector of float)
+0:10 Sequence
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:10 'a2' (layout( location=1) smooth in 2-component vector of float)
+0:? Linker Objects
+0:? 'a1' (layout( location=0) smooth in 4-component vector of float)
+0:? 'a2' (layout( location=1) smooth in 2-component vector of float)
+0:? 'color' (layout( location=0) out 4-component vector of float)
+
+
+Linked vertex stage:
+
+
+Linked fragment stage:
+
+
+Shader version: 440
+0:? Sequence
+0:9 Function Definition: main( ( global void)
+0:9 Function Parameters:
+0:11 Sequence
+0:11 move second child to first child ( temp 4-component vector of float)
+0:11 a1: direct index for structure ( out 4-component vector of float)
+0:11 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
+0:11 Constant:
+0:11 0 (const uint)
+0:11 Constant:
+0:11 1.000000
+0:11 1.000000
+0:11 1.000000
+0:11 1.000000
+0:12 move second child to first child ( temp 2-component vector of float)
+0:12 a2: direct index for structure ( out 2-component vector of float)
+0:12 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
+0:12 Constant:
+0:12 1 (const uint)
+0:12 Constant:
+0:12 0.500000
+0:12 0.500000
+0:13 move second child to first child ( temp 4-component vector of float)
+0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:13 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:13 Constant:
+0:13 0 (const uint)
+0:13 Constant:
+0:13 1.000000
+0:13 1.000000
+0:13 1.000000
+0:13 1.000000
+0:? Linker Objects
+0:? 'anon@0' (layout( location=0) out block{ out 4-component vector of float a1, out 2-component vector of float a2})
+0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+Shader version: 440
+0:? Sequence
+0:8 Function Definition: main( ( global void)
+0:8 Function Parameters:
+0:10 Sequence
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 'color' (layout( location=0) out 4-component vector of float)
+0:10 Construct vec4 ( temp 4-component vector of float)
+0:10 vector swizzle ( temp 2-component vector of float)
+0:10 'a1' (layout( location=0) smooth in 4-component vector of float)
+0:10 Sequence
+0:10 Constant:
+0:10 0 (const int)
+0:10 Constant:
+0:10 1 (const int)
+0:10 'a2' (layout( location=1) smooth in 2-component vector of float)
+0:? Linker Objects
+0:? 'a1' (layout( location=0) smooth in 4-component vector of float)
+0:? 'a2' (layout( location=1) smooth in 2-component vector of float)
+0:? 'color' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 33
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 11 28 31 32
+ Source GLSL 440
+ Name 4 "main"
+ Name 9 "Block"
+ MemberName 9(Block) 0 "a1"
+ MemberName 9(Block) 1 "a2"
+ Name 11 ""
+ Name 26 "gl_PerVertex"
+ MemberName 26(gl_PerVertex) 0 "gl_Position"
+ MemberName 26(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 26(gl_PerVertex) 2 "gl_ClipDistance"
+ Name 28 ""
+ Name 31 "gl_VertexID"
+ Name 32 "gl_InstanceID"
+ Decorate 9(Block) Block
+ Decorate 11 Location 0
+ MemberDecorate 26(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 26(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 26(gl_PerVertex) 2 BuiltIn ClipDistance
+ Decorate 26(gl_PerVertex) Block
+ Decorate 31(gl_VertexID) BuiltIn VertexId
+ Decorate 32(gl_InstanceID) BuiltIn InstanceId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeVector 6(float) 2
+ 9(Block): TypeStruct 7(fvec4) 8(fvec2)
+ 10: TypePointer Output 9(Block)
+ 11: 10(ptr) Variable Output
+ 12: TypeInt 32 1
+ 13: 12(int) Constant 0
+ 14: 6(float) Constant 1065353216
+ 15: 7(fvec4) ConstantComposite 14 14 14 14
+ 16: TypePointer Output 7(fvec4)
+ 18: 12(int) Constant 1
+ 19: 6(float) Constant 1056964608
+ 20: 8(fvec2) ConstantComposite 19 19
+ 21: TypePointer Output 8(fvec2)
+ 23: TypeInt 32 0
+ 24: 23(int) Constant 1
+ 25: TypeArray 6(float) 24
+26(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 25
+ 27: TypePointer Output 26(gl_PerVertex)
+ 28: 27(ptr) Variable Output
+ 30: TypePointer Input 12(int)
+ 31(gl_VertexID): 30(ptr) Variable Input
+32(gl_InstanceID): 30(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 17: 16(ptr) AccessChain 11 13
+ Store 17 15
+ 22: 21(ptr) AccessChain 11 18
+ Store 22 20
+ 29: 16(ptr) AccessChain 28 13
+ Store 29 15
+ Return
+ FunctionEnd
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 23
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 9 11 16
+ ExecutionMode 4 OriginLowerLeft
+ Source GLSL 440
+ Name 4 "main"
+ Name 9 "color"
+ Name 11 "a1"
+ Name 16 "a2"
+ Decorate 9(color) Location 0
+ Decorate 11(a1) Location 0
+ Decorate 16(a2) Location 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(color): 8(ptr) Variable Output
+ 10: TypePointer Input 7(fvec4)
+ 11(a1): 10(ptr) Variable Input
+ 12: TypeVector 6(float) 2
+ 15: TypePointer Input 12(fvec2)
+ 16(a2): 15(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 13: 7(fvec4) Load 11(a1)
+ 14: 12(fvec2) VectorShuffle 13 13 0 1
+ 17: 12(fvec2) Load 16(a2)
+ 18: 6(float) CompositeExtract 14 0
+ 19: 6(float) CompositeExtract 14 1
+ 20: 6(float) CompositeExtract 17 0
+ 21: 6(float) CompositeExtract 17 1
+ 22: 7(fvec4) CompositeConstruct 18 19 20 21
+ Store 9(color) 22
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/iomap.crossStage.2.vert.out b/Test/baseResults/iomap.crossStage.2.vert.out
index 325c1b4..171cc0e 100644
--- a/Test/baseResults/iomap.crossStage.2.vert.out
+++ b/Test/baseResults/iomap.crossStage.2.vert.out
@@ -207,8 +207,9 @@
Linked fragment stage:
-WARNING: Linking unknown stage stage: Matched shader interfaces are using different instance names.
- blockName1: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}" versus blockName2: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}"
+WARNING: Linking unknown stage and fragment stages: Matched shader interfaces are using different instance names.
+ unknown stage stage: Block: crossStageBlock2 Instance: blockName1: ""
+ fragment stage: Block: crossStageBlock2 Instance: blockName2: ""
Shader version: 460
0:? Sequence
@@ -406,7 +407,7 @@
0:? 'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b})
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 56
Capability Shader
@@ -529,7 +530,7 @@
Return
FunctionEnd
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 65
Capability Geometry
@@ -658,7 +659,7 @@
Return
FunctionEnd
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 62
Capability Shader
diff --git a/Test/baseResults/iomap.crossStage.vert.out b/Test/baseResults/iomap.crossStage.vert.out
index 5338b80..d6b6e4f 100644
--- a/Test/baseResults/iomap.crossStage.vert.out
+++ b/Test/baseResults/iomap.crossStage.vert.out
@@ -133,8 +133,9 @@
Linked fragment stage:
-WARNING: Linking unknown stage stage: Matched shader interfaces are using different instance names.
- blockName1: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}" versus blockName2: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}"
+WARNING: Linking unknown stage and fragment stages: Matched shader interfaces are using different instance names.
+ unknown stage stage: Block: crossStageBlock2 Instance: blockName1: ""
+ fragment stage: Block: crossStageBlock2 Instance: blockName2: ""
Shader version: 460
0:? Sequence
@@ -263,7 +264,7 @@
0:? 'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b})
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 56
Capability Shader
@@ -386,7 +387,7 @@
Return
FunctionEnd
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 62
Capability Shader
diff --git a/Test/baseResults/iomap.crossStage.vk.vert.out b/Test/baseResults/iomap.crossStage.vk.vert.out
index e137bdf..dd8029d 100644
--- a/Test/baseResults/iomap.crossStage.vk.vert.out
+++ b/Test/baseResults/iomap.crossStage.vk.vert.out
@@ -194,8 +194,9 @@
Linked fragment stage:
-WARNING: Linking unknown stage stage: Matched shader interfaces are using different instance names.
- blockName1: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b}" versus blockName2: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b}"
+WARNING: Linking unknown stage and fragment stages: Matched shader interfaces are using different instance names.
+ unknown stage stage: Block: crossStageBlock2 Instance: blockName1: ""
+ fragment stage: Block: crossStageBlock2 Instance: blockName2: ""
Shader version: 460
0:? Sequence
@@ -380,7 +381,7 @@
0:? 'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b})
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 38
Capability Shader
@@ -469,7 +470,7 @@
Return
FunctionEnd
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 57
Capability Geometry
@@ -581,7 +582,7 @@
Return
FunctionEnd
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 81
Capability Shader
diff --git a/Test/baseResults/iomap.variableOutBlockIn.2.vert.out b/Test/baseResults/iomap.variableOutBlockIn.2.vert.out
new file mode 100644
index 0000000..3e6d30b
--- /dev/null
+++ b/Test/baseResults/iomap.variableOutBlockIn.2.vert.out
@@ -0,0 +1,276 @@
+iomap.variableOutBlockIn.2.vert
+Shader version: 440
+0:? Sequence
+0:6 Function Definition: main( ( global void)
+0:6 Function Parameters:
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 'a1' (layout( location=0) smooth out 4-component vector of float)
+0:8 Constant:
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:9 move second child to first child ( temp 2-component vector of float)
+0:9 'a2' (layout( location=1) smooth out 2-component vector of float)
+0:9 Constant:
+0:9 0.500000
+0:9 0.500000
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:10 Constant:
+0:10 0 (const uint)
+0:10 Constant:
+0:10 1.000000
+0:10 1.000000
+0:10 1.000000
+0:10 1.000000
+0:? Linker Objects
+0:? 'a1' (layout( location=0) smooth out 4-component vector of float)
+0:? 'a2' (layout( location=1) smooth out 2-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+iomap.variableOutBlockIn.geom
+Shader version: 440
+invocations = -1
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+0:? Sequence
+0:14 Function Definition: main( ( global void)
+0:14 Function Parameters:
+0:16 Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 'a1' (layout( location=0 stream=0) out 4-component vector of float)
+0:16 Constant:
+0:16 1.000000
+0:16 1.000000
+0:16 1.000000
+0:16 1.000000
+0:17 move second child to first child ( temp 2-component vector of float)
+0:17 'a2' (layout( location=1 stream=0) out 2-component vector of float)
+0:17 Constant:
+0:17 0.500000
+0:17 0.500000
+0:18 move second child to first child ( temp 4-component vector of float)
+0:18 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:18 '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:18 Constant:
+0:18 0 (const uint)
+0:18 Constant:
+0:18 1.000000
+0:18 1.000000
+0:18 1.000000
+0:18 1.000000
+0:? Linker Objects
+0:? 'gin' (layout( location=0) in 3-element array of block{ in 4-component vector of float a1, in 2-component vector of float a2})
+0:? 'a1' (layout( location=0 stream=0) out 4-component vector of float)
+0:? 'a2' (layout( location=1 stream=0) out 2-component vector of 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})
+
+
+Linked vertex stage:
+
+
+Linked geometry stage:
+
+
+Shader version: 440
+0:? Sequence
+0:6 Function Definition: main( ( global void)
+0:6 Function Parameters:
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 'a1' (layout( location=0) smooth out 4-component vector of float)
+0:8 Constant:
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:9 move second child to first child ( temp 2-component vector of float)
+0:9 'a2' (layout( location=1) smooth out 2-component vector of float)
+0:9 Constant:
+0:9 0.500000
+0:9 0.500000
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:10 Constant:
+0:10 0 (const uint)
+0:10 Constant:
+0:10 1.000000
+0:10 1.000000
+0:10 1.000000
+0:10 1.000000
+0:? Linker Objects
+0:? 'a1' (layout( location=0) smooth out 4-component vector of float)
+0:? 'a2' (layout( location=1) smooth out 2-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+Shader version: 440
+invocations = 1
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+0:? Sequence
+0:14 Function Definition: main( ( global void)
+0:14 Function Parameters:
+0:16 Sequence
+0:16 move second child to first child ( temp 4-component vector of float)
+0:16 'a1' (layout( location=0 stream=0) out 4-component vector of float)
+0:16 Constant:
+0:16 1.000000
+0:16 1.000000
+0:16 1.000000
+0:16 1.000000
+0:17 move second child to first child ( temp 2-component vector of float)
+0:17 'a2' (layout( location=1 stream=0) out 2-component vector of float)
+0:17 Constant:
+0:17 0.500000
+0:17 0.500000
+0:18 move second child to first child ( temp 4-component vector of float)
+0:18 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:18 '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:18 Constant:
+0:18 0 (const uint)
+0:18 Constant:
+0:18 1.000000
+0:18 1.000000
+0:18 1.000000
+0:18 1.000000
+0:? Linker Objects
+0:? 'gin' (layout( location=0) in 3-element array of block{ in 4-component vector of float a1, in 2-component vector of float a2})
+0:? 'a1' (layout( location=0 stream=0) out 4-component vector of float)
+0:? 'a2' (layout( location=1 stream=0) out 2-component vector of 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})
+
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 29
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 9 14 22 27 28
+ Source GLSL 440
+ Name 4 "main"
+ Name 9 "a1"
+ Name 14 "a2"
+ Name 20 "gl_PerVertex"
+ MemberName 20(gl_PerVertex) 0 "gl_Position"
+ MemberName 20(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 20(gl_PerVertex) 2 "gl_ClipDistance"
+ Name 22 ""
+ Name 27 "gl_VertexID"
+ Name 28 "gl_InstanceID"
+ Decorate 9(a1) Location 0
+ Decorate 14(a2) Location 1
+ MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
+ Decorate 20(gl_PerVertex) Block
+ Decorate 27(gl_VertexID) BuiltIn VertexId
+ Decorate 28(gl_InstanceID) BuiltIn InstanceId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(a1): 8(ptr) Variable Output
+ 10: 6(float) Constant 1065353216
+ 11: 7(fvec4) ConstantComposite 10 10 10 10
+ 12: TypeVector 6(float) 2
+ 13: TypePointer Output 12(fvec2)
+ 14(a2): 13(ptr) Variable Output
+ 15: 6(float) Constant 1056964608
+ 16: 12(fvec2) ConstantComposite 15 15
+ 17: TypeInt 32 0
+ 18: 17(int) Constant 1
+ 19: TypeArray 6(float) 18
+20(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 19
+ 21: TypePointer Output 20(gl_PerVertex)
+ 22: 21(ptr) Variable Output
+ 23: TypeInt 32 1
+ 24: 23(int) Constant 0
+ 26: TypePointer Input 23(int)
+ 27(gl_VertexID): 26(ptr) Variable Input
+28(gl_InstanceID): 26(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ Store 9(a1) 11
+ Store 14(a2) 16
+ 25: 8(ptr) AccessChain 22 24
+ Store 25 11
+ Return
+ FunctionEnd
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 31
+
+ Capability Geometry
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Geometry 4 "main" 9 14 22 30
+ ExecutionMode 4 Triangles
+ ExecutionMode 4 Invocations 1
+ ExecutionMode 4 OutputTriangleStrip
+ ExecutionMode 4 OutputVertices 3
+ Source GLSL 440
+ Name 4 "main"
+ Name 9 "a1"
+ Name 14 "a2"
+ Name 20 "gl_PerVertex"
+ MemberName 20(gl_PerVertex) 0 "gl_Position"
+ MemberName 20(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 20(gl_PerVertex) 2 "gl_ClipDistance"
+ Name 22 ""
+ Name 26 "Inputs"
+ MemberName 26(Inputs) 0 "a1"
+ MemberName 26(Inputs) 1 "a2"
+ Name 30 "gin"
+ Decorate 9(a1) Location 0
+ Decorate 14(a2) Location 1
+ MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
+ Decorate 20(gl_PerVertex) Block
+ Decorate 26(Inputs) Block
+ Decorate 30(gin) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(a1): 8(ptr) Variable Output
+ 10: 6(float) Constant 1065353216
+ 11: 7(fvec4) ConstantComposite 10 10 10 10
+ 12: TypeVector 6(float) 2
+ 13: TypePointer Output 12(fvec2)
+ 14(a2): 13(ptr) Variable Output
+ 15: 6(float) Constant 1056964608
+ 16: 12(fvec2) ConstantComposite 15 15
+ 17: TypeInt 32 0
+ 18: 17(int) Constant 1
+ 19: TypeArray 6(float) 18
+20(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 19
+ 21: TypePointer Output 20(gl_PerVertex)
+ 22: 21(ptr) Variable Output
+ 23: TypeInt 32 1
+ 24: 23(int) Constant 0
+ 26(Inputs): TypeStruct 7(fvec4) 12(fvec2)
+ 27: 17(int) Constant 3
+ 28: TypeArray 26(Inputs) 27
+ 29: TypePointer Input 28
+ 30(gin): 29(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ Store 9(a1) 11
+ Store 14(a2) 16
+ 25: 8(ptr) AccessChain 22 24
+ Store 25 11
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/iomap.variableOutBlockIn.vert.out b/Test/baseResults/iomap.variableOutBlockIn.vert.out
new file mode 100644
index 0000000..4b0ce64
--- /dev/null
+++ b/Test/baseResults/iomap.variableOutBlockIn.vert.out
@@ -0,0 +1,236 @@
+iomap.variableOutBlockIn.vert
+Shader version: 440
+0:? Sequence
+0:6 Function Definition: main( ( global void)
+0:6 Function Parameters:
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 'a1' (layout( location=0) smooth out 4-component vector of float)
+0:8 Constant:
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:9 move second child to first child ( temp 2-component vector of float)
+0:9 'a2' (layout( location=1) smooth out 2-component vector of float)
+0:9 Constant:
+0:9 0.500000
+0:9 0.500000
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:10 Constant:
+0:10 0 (const uint)
+0:10 Constant:
+0:10 1.000000
+0:10 1.000000
+0:10 1.000000
+0:10 1.000000
+0:? Linker Objects
+0:? 'a1' (layout( location=0) smooth out 4-component vector of float)
+0:? 'a2' (layout( location=1) smooth out 2-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+iomap.variableOutBlockIn.frag
+Shader version: 440
+0:? Sequence
+0:10 Function Definition: main( ( global void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 move second child to first child ( temp 4-component vector of float)
+0:12 'color' (layout( location=0) out 4-component vector of float)
+0:12 Construct vec4 ( temp 4-component vector of float)
+0:12 vector swizzle ( temp 2-component vector of float)
+0:12 a1: direct index for structure ( in 4-component vector of float)
+0:12 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2})
+0:12 Constant:
+0:12 0 (const uint)
+0:12 Sequence
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 a2: direct index for structure ( in 2-component vector of float)
+0:12 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2})
+0:12 Constant:
+0:12 1 (const uint)
+0:? Linker Objects
+0:? 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2})
+0:? 'color' (layout( location=0) out 4-component vector of float)
+
+
+Linked vertex stage:
+
+
+Linked fragment stage:
+
+
+Shader version: 440
+0:? Sequence
+0:6 Function Definition: main( ( global void)
+0:6 Function Parameters:
+0:8 Sequence
+0:8 move second child to first child ( temp 4-component vector of float)
+0:8 'a1' (layout( location=0) smooth out 4-component vector of float)
+0:8 Constant:
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:8 1.000000
+0:9 move second child to first child ( temp 2-component vector of float)
+0:9 'a2' (layout( location=1) smooth out 2-component vector of float)
+0:9 Constant:
+0:9 0.500000
+0:9 0.500000
+0:10 move second child to first child ( temp 4-component vector of float)
+0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:10 Constant:
+0:10 0 (const uint)
+0:10 Constant:
+0:10 1.000000
+0:10 1.000000
+0:10 1.000000
+0:10 1.000000
+0:? Linker Objects
+0:? 'a1' (layout( location=0) smooth out 4-component vector of float)
+0:? 'a2' (layout( location=1) smooth out 2-component vector of float)
+0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
+0:? 'gl_VertexID' ( gl_VertexId int VertexId)
+0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
+Shader version: 440
+0:? Sequence
+0:10 Function Definition: main( ( global void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 move second child to first child ( temp 4-component vector of float)
+0:12 'color' (layout( location=0) out 4-component vector of float)
+0:12 Construct vec4 ( temp 4-component vector of float)
+0:12 vector swizzle ( temp 2-component vector of float)
+0:12 a1: direct index for structure ( in 4-component vector of float)
+0:12 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2})
+0:12 Constant:
+0:12 0 (const uint)
+0:12 Sequence
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 1 (const int)
+0:12 a2: direct index for structure ( in 2-component vector of float)
+0:12 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2})
+0:12 Constant:
+0:12 1 (const uint)
+0:? Linker Objects
+0:? 'anon@0' (layout( location=0) in block{ in 4-component vector of float a1, in 2-component vector of float a2})
+0:? 'color' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 29
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 9 14 22 27 28
+ Source GLSL 440
+ Name 4 "main"
+ Name 9 "a1"
+ Name 14 "a2"
+ Name 20 "gl_PerVertex"
+ MemberName 20(gl_PerVertex) 0 "gl_Position"
+ MemberName 20(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 20(gl_PerVertex) 2 "gl_ClipDistance"
+ Name 22 ""
+ Name 27 "gl_VertexID"
+ Name 28 "gl_InstanceID"
+ Decorate 9(a1) Location 0
+ Decorate 14(a2) Location 1
+ MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
+ Decorate 20(gl_PerVertex) Block
+ Decorate 27(gl_VertexID) BuiltIn VertexId
+ Decorate 28(gl_InstanceID) BuiltIn InstanceId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(a1): 8(ptr) Variable Output
+ 10: 6(float) Constant 1065353216
+ 11: 7(fvec4) ConstantComposite 10 10 10 10
+ 12: TypeVector 6(float) 2
+ 13: TypePointer Output 12(fvec2)
+ 14(a2): 13(ptr) Variable Output
+ 15: 6(float) Constant 1056964608
+ 16: 12(fvec2) ConstantComposite 15 15
+ 17: TypeInt 32 0
+ 18: 17(int) Constant 1
+ 19: TypeArray 6(float) 18
+20(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 19
+ 21: TypePointer Output 20(gl_PerVertex)
+ 22: 21(ptr) Variable Output
+ 23: TypeInt 32 1
+ 24: 23(int) Constant 0
+ 26: TypePointer Input 23(int)
+ 27(gl_VertexID): 26(ptr) Variable Input
+28(gl_InstanceID): 26(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ Store 9(a1) 11
+ Store 14(a2) 16
+ 25: 8(ptr) AccessChain 22 24
+ Store 25 11
+ Return
+ FunctionEnd
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 29
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 9 13
+ ExecutionMode 4 OriginLowerLeft
+ Source GLSL 440
+ Name 4 "main"
+ Name 9 "color"
+ Name 11 "Inputs"
+ MemberName 11(Inputs) 0 "a1"
+ MemberName 11(Inputs) 1 "a2"
+ Name 13 ""
+ Decorate 9(color) Location 0
+ Decorate 11(Inputs) Block
+ Decorate 13 Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(color): 8(ptr) Variable Output
+ 10: TypeVector 6(float) 2
+ 11(Inputs): TypeStruct 7(fvec4) 10(fvec2)
+ 12: TypePointer Input 11(Inputs)
+ 13: 12(ptr) Variable Input
+ 14: TypeInt 32 1
+ 15: 14(int) Constant 0
+ 16: TypePointer Input 7(fvec4)
+ 20: 14(int) Constant 1
+ 21: TypePointer Input 10(fvec2)
+ 4(main): 2 Function None 3
+ 5: Label
+ 17: 16(ptr) AccessChain 13 15
+ 18: 7(fvec4) Load 17
+ 19: 10(fvec2) VectorShuffle 18 18 0 1
+ 22: 21(ptr) AccessChain 13 20
+ 23: 10(fvec2) Load 22
+ 24: 6(float) CompositeExtract 19 0
+ 25: 6(float) CompositeExtract 19 1
+ 26: 6(float) CompositeExtract 23 0
+ 27: 6(float) CompositeExtract 23 1
+ 28: 7(fvec4) CompositeConstruct 24 25 26 27
+ Store 9(color) 28
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out
index 404ae84..c34401c 100644
--- a/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out
+++ b/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out
@@ -92,15 +92,20 @@
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}"
+ERROR: Linking vertex and vertex stages: vertex block member has no corresponding member in vertex block:
+ vertex stage: Block: Block, Member: uWorld
+ vertex stage: Block: Block, Member: n/a
+ERROR: Linking vertex and vertex stages: vertex block member has no corresponding member in vertex block:
+ vertex stage: Block: Vertex, Member: v2
+ vertex stage: Block: Vertex, Member: n/a
+ERROR: Linking vertex and vertex stages: Member names and types must match:
+ Block: BufferBlock
+ vertex stage: " vec4 b"
+ vertex stage: " vec4 a"
+ERROR: Linking vertex and vertex stages: Matched Uniform or Storage blocks must all be anonymous, or all be named:
+WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names.
+ vertex stage: Block: NamedBlock Instance: myName: ""
+ vertex stage: Block: NamedBlock Instance: anon@4: ""
Shader version: 430
ERROR: node is still EOpNull!
diff --git a/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out
index ad609e8..d94debb 100644
--- a/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out
+++ b/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out
@@ -89,19 +89,35 @@
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}"
+ERROR: Linking vertex and vertex stages: Member names and types must match:
+ Block: ColorBlock
+ vertex stage: " vec4 color1"
+ vertex stage: " vec4 color2"
+WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names.
+ vertex stage: Block: ColorBlock Instance: uC: ""
+ vertex stage: Block: ColorBlock Instance: uColorB: ""
+ERROR: Linking vertex and vertex stages: Member names and types must match:
+ Block: ColorBlock
+ vertex stage: " vec4 color1"
+ vertex stage: " vec4 color2"
+ERROR: Linking vertex and vertex stages: Storage qualifiers must match:
+ERROR: Linking vertex and vertex stages: Layout packing qualifier must match:
+ vertex stage: Block: ColorBlock Instance: uBufC: "layout( column_major std430) buffer"
+ vertex stage: Block: ColorBlock Instance: uColorB: "layout( column_major std140) uniform"
+ERROR: Linking vertex and vertex stages: Member names and types must match:
+ Block: Block
+ vertex stage: " mat4x4 uProj"
+ vertex stage: " mat4x4 uWorld"
+WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names.
+ vertex stage: Block: Block Instance: uD: ""
+ vertex stage: Block: Block Instance: uDefaultB: ""
+ERROR: Linking vertex and vertex stages: Member names and types must match:
+ Block: Vertex
+ vertex stage: " vec4 v1"
+ vertex stage: " vec4 v2"
+WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names.
+ vertex stage: Block: Vertex Instance: oV: ""
+ vertex stage: Block: Vertex Instance: oVert: ""
Shader version: 430
0:? Sequence
diff --git a/Test/baseResults/link.multiBlocksValid.1.0.vert.out b/Test/baseResults/link.multiBlocksValid.1.0.vert.out
index 0015cab..69513f0 100644
--- a/Test/baseResults/link.multiBlocksValid.1.0.vert.out
+++ b/Test/baseResults/link.multiBlocksValid.1.0.vert.out
@@ -83,12 +83,15 @@
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}"
+WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names.
+ vertex stage: Block: ColorBlock Instance: c: ""
+ vertex stage: Block: ColorBlock Instance: a: ""
+WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names.
+ vertex stage: Block: Block Instance: a: ""
+ vertex stage: Block: Block Instance: b: ""
+WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names.
+ vertex stage: Block: Vertex Instance: b: ""
+ vertex stage: Block: Vertex Instance: c: ""
Shader version: 430
0:? Sequence
diff --git a/Test/baseResults/link.vk.differentPC.0.0.frag.out b/Test/baseResults/link.vk.differentPC.0.0.frag.out
index d7cfd22..d78ba54 100644
--- a/Test/baseResults/link.vk.differentPC.0.0.frag.out
+++ b/Test/baseResults/link.vk.differentPC.0.0.frag.out
@@ -52,8 +52,10 @@
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}"
+ERROR: Linking fragment and fragment stages: Member names and types must match:
+ Block: PushConstantBlock
+ fragment stage: " float scale"
+ fragment stage: " float scale2"
Shader version: 450
gl_FragCoord origin is upper left
diff --git a/Test/baseResults/link.vk.differentPC.1.0.frag.out b/Test/baseResults/link.vk.differentPC.1.0.frag.out
index 632f18b..07ed124 100644
--- a/Test/baseResults/link.vk.differentPC.1.0.frag.out
+++ b/Test/baseResults/link.vk.differentPC.1.0.frag.out
@@ -52,10 +52,12 @@
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}"
+ERROR: Linking fragment and fragment stages: fragment block member has no corresponding member in fragment block:
+ fragment stage: Block: PushConstantBlock, Member: scale2
+ fragment stage: Block: PushConstantBlock, Member: n/a
+ERROR: Linking fragment and fragment stages: fragment block member has no corresponding member in fragment block:
+ fragment stage: Block: PushConstantBlock, Member: scale2
+ fragment stage: Block: PushConstantBlock, Member: n/a
Shader version: 450
gl_FragCoord origin is upper left
diff --git a/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out b/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out
index 3d76b2f..d3545bf 100755
--- a/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out
+++ b/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out
@@ -253,7 +253,7 @@
0:? 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance, in 1-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 30
Capability Shader
diff --git a/Test/baseResults/link.vk.matchingPC.0.0.frag.out b/Test/baseResults/link.vk.matchingPC.0.0.frag.out
index c434b66..87d3b02 100644
--- a/Test/baseResults/link.vk.matchingPC.0.0.frag.out
+++ b/Test/baseResults/link.vk.matchingPC.0.0.frag.out
@@ -90,7 +90,7 @@
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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 39
Capability Shader
diff --git a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out
index bdabab1..7f9a05a 100644
--- a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out
+++ b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out
@@ -87,14 +87,18 @@
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}"
+WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names.
+ vertex stage: Block: ColorBlock Instance: uC: ""
+ vertex stage: Block: ColorBlock Instance: uColor: ""
+WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names.
+ vertex stage: Block: BufferBlock Instance: uBuf: ""
+ vertex stage: Block: BufferBlock Instance: uBuffer: ""
+WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names.
+ vertex stage: Block: MatrixBlock Instance: uM: ""
+ vertex stage: Block: MatrixBlock Instance: uMatrix: ""
+WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names.
+ vertex stage: Block: Vertex Instance: oV: ""
+ vertex stage: Block: Vertex Instance: anon@0: ""
Shader version: 430
0:? Sequence
@@ -173,7 +177,7 @@
0:? 'P' ( in highp 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 73
Capability Shader
diff --git a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out
index b0456a0..374a2a0 100644
--- a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out
+++ b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out
@@ -131,16 +131,21 @@
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}"
+WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names.
+ geometry stage: Block: ColorBlock Instance: uC: ""
+ geometry stage: Block: ColorBlock Instance: uColor: ""
+WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names.
+ geometry stage: Block: BufferBlock Instance: uBuf: ""
+ geometry stage: Block: BufferBlock Instance: uBuffer: ""
+WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names.
+ geometry stage: Block: MatrixBlock Instance: uM: ""
+ geometry stage: Block: MatrixBlock Instance: uMatrix: ""
+WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names.
+ geometry stage: Block: Vertex Instance: oV: ""
+ geometry stage: Block: Vertex Instance: anon@0: ""
+WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names.
+ geometry stage: Block: Vertex Instance: iV: ""
+ geometry stage: Block: Vertex Instance: iVV: ""
Shader version: 430
invocations = 1
@@ -258,7 +263,7 @@
0:? 'P' ( in 3-element array of highp 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 101
Capability Geometry
diff --git a/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out
index e1d5c88..410f192 100644
--- a/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out
+++ b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out
@@ -56,8 +56,9 @@
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}"
+WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names.
+ vertex stage: Block: PCBlock Instance: a: ""
+ vertex stage: Block: PCBlock Instance: b: ""
Shader version: 450
0:? Sequence
@@ -108,7 +109,7 @@
0:? 'P' (layout( location=0) in highp 4-component vector of float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 53
Capability Shader
diff --git a/Test/baseResults/link1.vk.frag.out b/Test/baseResults/link1.vk.frag.out
index fa1d48e..225aee1 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 70
Capability Shader
diff --git a/Test/baseResults/noMatchingFunction.frag.out b/Test/baseResults/noMatchingFunction.frag.out
new file mode 100644
index 0000000..85aa3f6
--- /dev/null
+++ b/Test/baseResults/noMatchingFunction.frag.out
@@ -0,0 +1,52 @@
+noMatchingFunction.frag
+ERROR: 0:17: 'func' : no matching overloaded function found
+ERROR: 1 compilation errors. No code generated.
+
+
+Shader version: 330
+ERROR: node is still EOpNull!
+0:8 Function Definition: func(struct-S-f11; ( global float)
+0:8 Function Parameters:
+0:8 's' ( in structure{ global float a})
+0:10 Sequence
+0:10 Branch: Return with expression
+0:10 a: direct index for structure ( global float)
+0:10 's' ( in structure{ global float a})
+0:10 Constant:
+0:10 0 (const int)
+0:15 Function Definition: main( ( global void)
+0:15 Function Parameters:
+0:17 Sequence
+0:17 Sequence
+0:17 move second child to first child ( temp float)
+0:17 'c' ( temp float)
+0:17 Constant:
+0:17 0.000000
+0:18 move second child to first child ( temp 4-component vector of float)
+0:18 'o_color' (layout( location=0) out 4-component vector of float)
+0:18 Construct vec4 ( temp 4-component vector of float)
+0:18 'c' ( temp float)
+0:? Linker Objects
+0:? 'o_color' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 330
+ERROR: node is still EOpNull!
+0:15 Function Definition: main( ( global void)
+0:15 Function Parameters:
+0:17 Sequence
+0:17 Sequence
+0:17 move second child to first child ( temp float)
+0:17 'c' ( temp float)
+0:17 Constant:
+0:17 0.000000
+0:18 move second child to first child ( temp 4-component vector of float)
+0:18 'o_color' (layout( location=0) out 4-component vector of float)
+0:18 Construct vec4 ( temp 4-component vector of float)
+0:18 'c' ( temp float)
+0:? Linker Objects
+0:? 'o_color' (layout( location=0) out 4-component vector of float)
+
diff --git a/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out b/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out
new file mode 100644
index 0000000..007dcb9
--- /dev/null
+++ b/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out
@@ -0,0 +1,51 @@
+rayQuery-OpConvertUToAccelerationStructureKHR.comp
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 28
+
+ Capability Shader
+ Capability RayQueryKHR
+ 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_query"
+ Name 4 "main"
+ Name 8 "rayQuery"
+ Name 11 "params"
+ MemberName 11(params) 0 "tlas"
+ Name 13 ""
+ MemberDecorate 11(params) 0 Offset 0
+ Decorate 11(params) Block
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeRayQueryKHR
+ 7: TypePointer Private 6
+ 8(rayQuery): 7(ptr) Variable Private
+ 9: TypeInt 32 0
+ 10: TypeVector 9(int) 2
+ 11(params): TypeStruct 10(ivec2)
+ 12: TypePointer PushConstant 11(params)
+ 13: 12(ptr) Variable PushConstant
+ 14: TypeInt 32 1
+ 15: 14(int) Constant 0
+ 16: TypePointer PushConstant 10(ivec2)
+ 19: TypeAccelerationStructureKHR
+ 21: 9(int) Constant 0
+ 22: TypeFloat 32
+ 23: TypeVector 22(float) 3
+ 24: 22(float) Constant 0
+ 25: 23(fvec3) ConstantComposite 24 24 24
+ 26: 22(float) Constant 1065353216
+ 27: 23(fvec3) ConstantComposite 26 26 26
+ 4(main): 2 Function None 3
+ 5: Label
+ 17: 16(ptr) AccessChain 13 15
+ 18: 10(ivec2) Load 17
+ 20: 19 ConvertUToAccelerationStructureKHR 18
+ RayQueryInitializeKHR 8(rayQuery) 20 21 21 25 24 27 26
+ RayQueryTerminateKHR 8(rayQuery)
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/rayQuery-allOps.comp.out b/Test/baseResults/rayQuery-allOps.comp.out
index bf654f7..05936bb 100644
--- a/Test/baseResults/rayQuery-allOps.comp.out
+++ b/Test/baseResults/rayQuery-allOps.comp.out
@@ -1,6 +1,6 @@
rayQuery-allOps.comp
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 258
Capability Shader
diff --git a/Test/baseResults/rayQuery-allOps.frag.out b/Test/baseResults/rayQuery-allOps.frag.out
index 90ebc4a..19a6171 100644
--- a/Test/baseResults/rayQuery-allOps.frag.out
+++ b/Test/baseResults/rayQuery-allOps.frag.out
@@ -1,6 +1,6 @@
rayQuery-allOps.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 257
Capability Shader
diff --git a/Test/baseResults/rayQuery-allOps.rgen.out b/Test/baseResults/rayQuery-allOps.rgen.out
index b3a93b0..67447b9 100644
--- a/Test/baseResults/rayQuery-allOps.rgen.out
+++ b/Test/baseResults/rayQuery-allOps.rgen.out
@@ -1,6 +1,6 @@
rayQuery-allOps.rgen
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 257
Capability RayQueryKHR
diff --git a/Test/baseResults/rayQuery-global.rgen.out b/Test/baseResults/rayQuery-global.rgen.out
index 7b05173..968a178 100644
--- a/Test/baseResults/rayQuery-global.rgen.out
+++ b/Test/baseResults/rayQuery-global.rgen.out
@@ -1,6 +1,6 @@
rayQuery-global.rgen
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 44
Capability RayQueryKHR
diff --git a/Test/baseResults/rayQuery-initialize.rgen.out b/Test/baseResults/rayQuery-initialize.rgen.out
index f16facd..dc213c5 100644
--- a/Test/baseResults/rayQuery-initialize.rgen.out
+++ b/Test/baseResults/rayQuery-initialize.rgen.out
@@ -1,6 +1,6 @@
rayQuery-initialize.rgen
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 103
Capability RayQueryKHR
diff --git a/Test/baseResults/rayQuery-no-cse.rgen.out b/Test/baseResults/rayQuery-no-cse.rgen.out
index a44c41f..0a751a3 100644
--- a/Test/baseResults/rayQuery-no-cse.rgen.out
+++ b/Test/baseResults/rayQuery-no-cse.rgen.out
@@ -1,6 +1,6 @@
rayQuery-no-cse.rgen
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 107
Capability RayQueryKHR
diff --git a/Test/baseResults/rayQuery-types.comp.out b/Test/baseResults/rayQuery-types.comp.out
index 87a1d68..bb7ed7b 100644
--- a/Test/baseResults/rayQuery-types.comp.out
+++ b/Test/baseResults/rayQuery-types.comp.out
@@ -1,6 +1,6 @@
rayQuery-types.comp
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 86
Capability Shader
diff --git a/Test/baseResults/rayQuery.rgen.out b/Test/baseResults/rayQuery.rgen.out
index 06a1a5a..4a54973 100644
--- a/Test/baseResults/rayQuery.rgen.out
+++ b/Test/baseResults/rayQuery.rgen.out
@@ -1,6 +1,6 @@
rayQuery.rgen
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 44
Capability RayQueryKHR
diff --git a/Test/baseResults/remap.basic.dcefunc.frag.out b/Test/baseResults/remap.basic.dcefunc.frag.out
index c531eba..f5c9a71 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): 8000a
+// Generated by (magic number): 8000b
// 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 d483f20..6c73e59 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): 8000a
+// Generated by (magic number): 8000b
// 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 34f64c8..3cff65b 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): 8000a
+// Generated by (magic number): 8000b
// 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 f1d7769..030877d 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): 8000a
+// Generated by (magic number): 8000b
// 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 88c516f..b1ce523 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): 8000a
+// Generated by (magic number): 8000b
// 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 465b024..13ac4f2 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): 8000a
+// Generated by (magic number): 8000b
// 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 4fb9218..d861a43 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): 8000a
+// Generated by (magic number): 8000b
// 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 f1e3535..22acbad 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): 8000a
+// Generated by (magic number): 8000b
// 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 226f2c6..7e653a1 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): 8000a
+// Generated by (magic number): 8000b
// 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 3a521be..e7e7369 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): 8000a
+// Generated by (magic number): 8000b
// 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 cb2d31b..d239492 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): 8000a
+// Generated by (magic number): 8000b
// 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 993dc1c..6de9cb9 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 24916
Capability Shader
diff --git a/Test/baseResults/remap.similar_1a.none.frag.out b/Test/baseResults/remap.similar_1a.none.frag.out
index e46b8e1..6823448 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 86
Capability Shader
diff --git a/Test/baseResults/remap.similar_1b.everything.frag.out b/Test/baseResults/remap.similar_1b.everything.frag.out
index ffe5446..86e5ac7 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 24916
Capability Shader
diff --git a/Test/baseResults/remap.similar_1b.none.frag.out b/Test/baseResults/remap.similar_1b.none.frag.out
index 5f5241c..2433820 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 91
Capability Shader
diff --git a/Test/baseResults/remap.specconst.comp.out b/Test/baseResults/remap.specconst.comp.out
index 2bed3cf..905d85b 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): 8000a
+// Generated by (magic number): 8000b
// 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 443fe68..d257093 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): 8000a
+// Generated by (magic number): 8000b
// 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 3347dce..53d2739 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): 8000a
+// Generated by (magic number): 8000b
// 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 ee1daa7..902b597 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): 8000a
+// Generated by (magic number): 8000b
// 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 00e1f57..cc4fc7d 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 60
Capability Shader
diff --git a/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out b/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out
index d512639..858a0db 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): 8000a
+// Generated by (magic number): 8000b
// 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 1dce1ea..e7ec5ed 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): 8000a
+// Generated by (magic number): 8000b
// 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 d7a9d5e..6b15772 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): 8000a
+// Generated by (magic number): 8000b
// 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 0ffffd6..c3330fc 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): 8000a
+// Generated by (magic number): 8000b
// 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 da3b52c..d2b76b8 100644
--- 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): 8000a
+// Generated by (magic number): 8000b
// 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 018fd0a..ad0397b 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): 8000a
+// Generated by (magic number): 8000b
// 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 a2458ba..850ee91 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 59
Capability Shader
diff --git a/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out b/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out
index 7dcda62..7b52595 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): 8000a
+// Generated by (magic number): 8000b
// 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 e43e954..f37b0fd 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 64
Capability Shader
diff --git a/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out b/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out
index 835ab13..dff799f 100644
--- a/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out
+++ b/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out
@@ -1,6 +1,6 @@
spv.1.4.OpEntryPoint.opaqueParams.vert
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 45
Capability Shader
diff --git a/Test/baseResults/spv.1.4.OpSelect.frag.out b/Test/baseResults/spv.1.4.OpSelect.frag.out
index b3a5b4d..42f2ca7 100644
--- 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): 8000a
+// Generated by (magic number): 8000b
// 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 cbec381..e896cf8 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 27
Capability Shader
diff --git a/Test/baseResults/spv.1.4.funcall.array.frag.out b/Test/baseResults/spv.1.4.funcall.array.frag.out
index d976bb1..6a23f2a 100644
--- a/Test/baseResults/spv.1.4.funcall.array.frag.out
+++ b/Test/baseResults/spv.1.4.funcall.array.frag.out
@@ -1,6 +1,6 @@
spv.1.4.funcall.array.frag
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 42
Capability Shader
diff --git a/Test/baseResults/spv.1.4.image.frag.out b/Test/baseResults/spv.1.4.image.frag.out
index fadde97..059ed19 100644
--- 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 104
Capability Shader
diff --git a/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out b/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out
index 9f698db..fea83ab 100644
--- a/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out
+++ b/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out
@@ -1,7 +1,7 @@
spv.1.4.load.bool.array.interface.block.frag
Validation failed
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 64
Capability Shader
diff --git a/Test/baseResults/spv.1.4.sparseTexture.frag.out b/Test/baseResults/spv.1.4.sparseTexture.frag.out
index 965f4c8..a26ae66 100644
--- 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): 8000a
+// Generated by (magic number): 8000b
// 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 ac9f72f..6d28e1f 100644
--- 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 79
Capability Shader
diff --git a/Test/baseResults/spv.1.6.conditionalDiscard.frag.out b/Test/baseResults/spv.1.6.conditionalDiscard.frag.out
new file mode 100644
index 0000000..6364773
--- /dev/null
+++ b/Test/baseResults/spv.1.6.conditionalDiscard.frag.out
@@ -0,0 +1,60 @@
+spv.1.6.conditionalDiscard.frag
+// Module Version 10600
+// Generated by (magic number): 8000b
+// Id's are bound by 36
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 13 17 34
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 400
+ Name 4 "main"
+ Name 9 "v"
+ Name 13 "tex"
+ Name 17 "coord"
+ Name 34 "gl_FragColor"
+ Decorate 13(tex) DescriptorSet 0
+ Decorate 13(tex) Binding 0
+ Decorate 17(coord) Location 0
+ Decorate 34(gl_FragColor) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 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: TypePointer Input 15(fvec2)
+ 17(coord): 16(ptr) Variable Input
+ 21: 6(float) Constant 1036831949
+ 22: 6(float) Constant 1045220557
+ 23: 6(float) Constant 1050253722
+ 24: 6(float) Constant 1053609165
+ 25: 7(fvec4) ConstantComposite 21 22 23 24
+ 26: TypeBool
+ 27: TypeVector 26(bool) 4
+ 33: TypePointer Output 7(fvec4)
+34(gl_FragColor): 33(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(v): 8(ptr) Variable Function
+ 14: 11 Load 13(tex)
+ 18: 15(fvec2) Load 17(coord)
+ 19: 7(fvec4) ImageSampleImplicitLod 14 18
+ Store 9(v) 19
+ 20: 7(fvec4) Load 9(v)
+ 28: 27(bvec4) FOrdEqual 20 25
+ 29: 26(bool) All 28
+ SelectionMerge 31 None
+ BranchConditional 29 30 31
+ 30: Label
+ TerminateInvocation
+ 31: Label
+ 35: 7(fvec4) Load 9(v)
+ Store 34(gl_FragColor) 35
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.1.6.helperInvocation.frag.out b/Test/baseResults/spv.1.6.helperInvocation.frag.out
new file mode 100644
index 0000000..30a5c6a
--- /dev/null
+++ b/Test/baseResults/spv.1.6.helperInvocation.frag.out
@@ -0,0 +1,41 @@
+spv.1.6.helperInvocation.frag
+// Module Version 10600
+// Generated by (magic number): 8000b
+// Id's are bound by 20
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 8 15
+ ExecutionMode 4 OriginUpperLeft
+ Source ESSL 310
+ Name 4 "main"
+ Name 8 "gl_HelperInvocation"
+ Name 15 "outp"
+ Decorate 8(gl_HelperInvocation) BuiltIn HelperInvocation
+ Decorate 8(gl_HelperInvocation) Volatile
+ Decorate 15(outp) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeBool
+ 7: TypePointer Input 6(bool)
+8(gl_HelperInvocation): 7(ptr) Variable Input
+ 12: TypeFloat 32
+ 13: TypeVector 12(float) 4
+ 14: TypePointer Output 13(fvec4)
+ 15(outp): 14(ptr) Variable Output
+ 17: 12(float) Constant 1065353216
+ 4(main): 2 Function None 3
+ 5: Label
+ 9: 6(bool) Load 8(gl_HelperInvocation)
+ SelectionMerge 11 None
+ BranchConditional 9 10 11
+ 10: Label
+ 16: 13(fvec4) Load 15(outp)
+ 18: 13(fvec4) CompositeConstruct 17 17 17 17
+ 19: 13(fvec4) FAdd 16 18
+ Store 15(outp) 19
+ Branch 11
+ 11: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.1.6.samplerBuffer.frag.out b/Test/baseResults/spv.1.6.samplerBuffer.frag.out
new file mode 100644
index 0000000..1bd52da
--- /dev/null
+++ b/Test/baseResults/spv.1.6.samplerBuffer.frag.out
@@ -0,0 +1,43 @@
+spv.1.6.samplerBuffer.frag
+// Module Version 10600
+// Generated by (magic number): 8000b
+// Id's are bound by 23
+
+ Capability Shader
+ Capability SampledBuffer
+ Capability ImageQuery
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 9 13
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 140
+ Name 4 "main"
+ Name 9 "o"
+ Name 13 "sampB"
+ Decorate 9(o) Location 0
+ Decorate 13(sampB) DescriptorSet 0
+ Decorate 13(sampB) Binding 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(o): 8(ptr) Variable Output
+ 10: TypeInt 32 1
+ 11: TypeImage 10(int) Buffer sampled format:Unknown
+ 12: TypePointer UniformConstant 11
+ 13(sampB): 12(ptr) Variable UniformConstant
+ 17: 6(float) Constant 1120403456
+ 19: TypeInt 32 0
+ 20: 19(int) Constant 3
+ 21: TypePointer Output 6(float)
+ 4(main): 2 Function None 3
+ 5: Label
+ 14: 11 Load 13(sampB)
+ 15: 10(int) ImageQuerySize 14
+ 16: 6(float) ConvertSToF 15
+ 18: 6(float) FDiv 16 17
+ 22: 21(ptr) AccessChain 9(o) 20
+ Store 22 18
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.1.6.separate.frag.out b/Test/baseResults/spv.1.6.separate.frag.out
new file mode 100644
index 0000000..f485fad
--- /dev/null
+++ b/Test/baseResults/spv.1.6.separate.frag.out
@@ -0,0 +1,52 @@
+spv.1.6.separate.frag
+// Module Version 10600
+// Generated by (magic number): 8000b
+// Id's are bound by 27
+
+ Capability Shader
+ Capability SampledBuffer
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 9 13 18 24
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 400
+ Name 4 "main"
+ Name 9 "texBuffer"
+ Name 13 "s"
+ Name 18 "itexBuffer"
+ Name 24 "utexBuffer"
+ Decorate 9(texBuffer) DescriptorSet 0
+ Decorate 9(texBuffer) Binding 1
+ Decorate 13(s) DescriptorSet 0
+ Decorate 13(s) Binding 0
+ Decorate 18(itexBuffer) DescriptorSet 0
+ Decorate 18(itexBuffer) Binding 2
+ Decorate 24(utexBuffer) DescriptorSet 0
+ Decorate 24(utexBuffer) Binding 3
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeImage 6(float) Buffer sampled format:Unknown
+ 8: TypePointer UniformConstant 7
+ 9(texBuffer): 8(ptr) Variable UniformConstant
+ 11: TypeSampler
+ 12: TypePointer UniformConstant 11
+ 13(s): 12(ptr) Variable UniformConstant
+ 15: TypeInt 32 1
+ 16: TypeImage 15(int) Buffer sampled format:Unknown
+ 17: TypePointer UniformConstant 16
+ 18(itexBuffer): 17(ptr) Variable UniformConstant
+ 21: TypeInt 32 0
+ 22: TypeImage 21(int) Buffer sampled format:Unknown
+ 23: TypePointer UniformConstant 22
+ 24(utexBuffer): 23(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 10: 7 Load 9(texBuffer)
+ 14: 11 Load 13(s)
+ 19: 16 Load 18(itexBuffer)
+ 20: 11 Load 13(s)
+ 25: 22 Load 24(utexBuffer)
+ 26: 11 Load 13(s)
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.1.6.specConstant.comp.out b/Test/baseResults/spv.1.6.specConstant.comp.out
new file mode 100644
index 0000000..2c32fbd
--- /dev/null
+++ b/Test/baseResults/spv.1.6.specConstant.comp.out
@@ -0,0 +1,69 @@
+spv.1.6.specConstant.comp
+// Module Version 10600
+// Generated by (magic number): 8000b
+// Id's are bound by 39
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 18
+ ExecutionModeId 4 LocalSizeId 7 8 9
+ Source GLSL 450
+ Name 4 "main"
+ Name 14 "foo(vu3;"
+ Name 13 "wgs"
+ Name 16 "bn"
+ MemberName 16(bn) 0 "a"
+ Name 18 "bi"
+ Name 37 "param"
+ Decorate 7 SpecId 18
+ Decorate 9 SpecId 19
+ MemberDecorate 16(bn) 0 Offset 0
+ Decorate 16(bn) Block
+ Decorate 18(bi) DescriptorSet 0
+ Decorate 18(bi) Binding 0
+ Decorate 25 SpecId 18
+ Decorate 26 SpecId 19
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: 6(int) SpecConstant 32
+ 8: 6(int) Constant 32
+ 9: 6(int) SpecConstant 1
+ 10: TypeVector 6(int) 3
+ 11: TypePointer Function 10(ivec3)
+ 12: TypeFunction 2 11(ptr)
+ 16(bn): TypeStruct 6(int)
+ 17: TypePointer StorageBuffer 16(bn)
+ 18(bi): 17(ptr) Variable StorageBuffer
+ 19: TypeInt 32 1
+ 20: 19(int) Constant 0
+ 21: 6(int) Constant 0
+ 22: TypePointer Function 6(int)
+ 25: 6(int) SpecConstant 32
+ 26: 6(int) SpecConstant 1
+ 27: 10(ivec3) SpecConstantComposite 25 8 26
+ 28: 6(int) Constant 1
+ 31: 6(int) Constant 2
+ 35: TypePointer StorageBuffer 6(int)
+ 4(main): 2 Function None 3
+ 5: Label
+ 37(param): 11(ptr) Variable Function
+ Store 37(param) 27
+ 38: 2 FunctionCall 14(foo(vu3;) 37(param)
+ Return
+ FunctionEnd
+ 14(foo(vu3;): 2 Function None 12
+ 13(wgs): 11(ptr) FunctionParameter
+ 15: Label
+ 23: 22(ptr) AccessChain 13(wgs) 21
+ 24: 6(int) Load 23
+ 29: 6(int) CompositeExtract 27 1
+ 30: 6(int) IMul 24 29
+ 32: 22(ptr) AccessChain 13(wgs) 31
+ 33: 6(int) Load 32
+ 34: 6(int) IMul 30 33
+ 36: 35(ptr) AccessChain 18(bi) 20
+ Store 36 34
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.100ops.frag.out b/Test/baseResults/spv.100ops.frag.out
index 42c9995..8c28d91 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): 8000a
+// Generated by (magic number): 8000b
// 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 29c7d85..84fa9a3 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): 8000a
+// Generated by (magic number): 8000b
// 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 a517882..a4401a2 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): 8000a
+// Generated by (magic number): 8000b
// 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 0ad3337..b6e22e1 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): 8000a
+// Generated by (magic number): 8000b
// 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 2b09f4b..167a15e 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): 8000a
+// Generated by (magic number): 8000b
// 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 a91b4e4..d14519b 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): 8000a
+// Generated by (magic number): 8000b
// 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 f90d0c1..ea935ce 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): 8000a
+// Generated by (magic number): 8000b
// 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 2d934f4..c19f607 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): 8000a
+// Generated by (magic number): 8000b
// 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 f4d66ef..2dd93d4 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): 8000a
+// Generated by (magic number): 8000b
// 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 2201788..10f115b 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): 8000a
+// Generated by (magic number): 8000b
// 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 3b691e2..156a6e2 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): 8000a
+// Generated by (magic number): 8000b
// 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 3db50b0..6345aa1 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): 8000a
+// Generated by (magic number): 8000b
// 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 315605d..d986fb5 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): 8000a
+// Generated by (magic number): 8000b
// 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 f4322ab..fa354be 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 179
Capability Shader
diff --git a/Test/baseResults/spv.310.comp.out b/Test/baseResults/spv.310.comp.out
index 931d038..459c689 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): 8000a
+// Generated by (magic number): 8000b
// 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 a4d8413..197fe60 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 143
Capability MeshShadingNV
diff --git a/Test/baseResults/spv.330.geom.out b/Test/baseResults/spv.330.geom.out
index 1166508..f9e69e5 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): 8000a
+// Generated by (magic number): 8000b
// 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 cf1ffb0..f03e938 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 1122
Capability Shader
diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out
index 6786885..aa42d28 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 1122
Capability Shader
diff --git a/Test/baseResults/spv.400.tesc.out b/Test/baseResults/spv.400.tesc.out
index a07c9b1..b6f0ddf 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): 8000a
+// Generated by (magic number): 8000b
// 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 58f4b97..0b8abf6 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): 8000a
+// Generated by (magic number): 8000b
// 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 17f2749..d814d1a 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): 8000a
+// Generated by (magic number): 8000b
// 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 15da382..bc00fa1 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): 8000a
+// Generated by (magic number): 8000b
// 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 a6b2e34..eada8d0 100644
--- a/Test/baseResults/spv.430.vert.out
+++ b/Test/baseResults/spv.430.vert.out
@@ -1,7 +1,7 @@
spv.430.vert
Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// 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 3e7ac45..5398b3c 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): 8000a
+// Generated by (magic number): 8000b
// 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 0925119..dcf0a9f 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): 8000a
+// Generated by (magic number): 8000b
// 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 c18ab3f..eabb9e7 100644
--- a/Test/baseResults/spv.450.tesc.out
+++ b/Test/baseResults/spv.450.tesc.out
@@ -1,7 +1,7 @@
spv.450.tesc
Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// 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 d53efde..c6abaca 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): 8000a
+// Generated by (magic number): 8000b
// 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 a8bec34..4201fbb 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 32
Capability Shader
diff --git a/Test/baseResults/spv.460.subgroupEXT.mesh.out b/Test/baseResults/spv.460.subgroupEXT.mesh.out
new file mode 100644
index 0000000..be234ae
--- /dev/null
+++ b/Test/baseResults/spv.460.subgroupEXT.mesh.out
@@ -0,0 +1,448 @@
+spv.460.subgroupEXT.mesh
+// Module Version 10400
+// Generated by (magic number): 8000b
+// Id's are bound by 280
+
+ Capability ClipDistance
+ Capability CullDistance
+ Capability GroupNonUniform
+ Capability GroupNonUniformVote
+ Capability GroupNonUniformArithmetic
+ Capability GroupNonUniformBallot
+ Capability GroupNonUniformShuffle
+ Capability GroupNonUniformShuffleRelative
+ Capability GroupNonUniformClustered
+ Capability GroupNonUniformQuad
+ Capability FragmentShadingRateKHR
+ Capability MeshShadingEXT
+ Extension "SPV_EXT_mesh_shader"
+ Extension "SPV_KHR_fragment_shading_rate"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint MeshEXT 4 "main" 35 41 57 109 148 162 163 168 169 172 173 174 175 176
+ ExecutionMode 4 LocalSize 32 1 1
+ ExecutionMode 4 OutputVertices 81
+ ExecutionMode 4 OutputPrimitivesNV 32
+ ExecutionMode 4 OutputTrianglesNV
+ Source GLSL 460
+ SourceExtension "GL_EXT_mesh_shader"
+ SourceExtension "GL_KHR_shader_subgroup_arithmetic"
+ SourceExtension "GL_KHR_shader_subgroup_ballot"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_KHR_shader_subgroup_clustered"
+ SourceExtension "GL_KHR_shader_subgroup_quad"
+ SourceExtension "GL_KHR_shader_subgroup_shuffle"
+ SourceExtension "GL_KHR_shader_subgroup_shuffle_relative"
+ SourceExtension "GL_KHR_shader_subgroup_vote"
+ Name 4 "main"
+ Name 6 "basic_works("
+ Name 13 "ballot_works(vf4;"
+ Name 12 "f4"
+ Name 16 "vote_works(vf4;"
+ Name 15 "f4"
+ Name 19 "shuffle_works(vf4;"
+ Name 18 "f4"
+ Name 22 "arith_works(vf4;"
+ Name 21 "f4"
+ Name 25 "clustered_works(vf4;"
+ Name 24 "f4"
+ Name 28 "quad_works(vf4;"
+ Name 27 "f4"
+ Name 32 "iid"
+ Name 35 "gl_LocalInvocationID"
+ Name 40 "gid"
+ Name 41 "gl_WorkGroupID"
+ Name 44 "vertexCount"
+ Name 46 "primitiveCount"
+ Name 54 "gl_MeshPerVertexEXT"
+ MemberName 54(gl_MeshPerVertexEXT) 0 "gl_Position"
+ MemberName 54(gl_MeshPerVertexEXT) 1 "gl_PointSize"
+ MemberName 54(gl_MeshPerVertexEXT) 2 "gl_ClipDistance"
+ MemberName 54(gl_MeshPerVertexEXT) 3 "gl_CullDistance"
+ Name 57 "gl_MeshVerticesEXT"
+ Name 106 "gl_MeshPerPrimitiveEXT"
+ MemberName 106(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID"
+ MemberName 106(gl_MeshPerPrimitiveEXT) 1 "gl_Layer"
+ MemberName 106(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex"
+ MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
+ MemberName 106(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT"
+ Name 109 "gl_MeshPrimitivesEXT"
+ Name 148 "gl_PrimitiveTriangleIndicesEXT"
+ Name 162 "gl_SubgroupSize"
+ Name 163 "gl_SubgroupInvocationID"
+ Name 168 "gl_NumSubgroups"
+ Name 169 "gl_SubgroupID"
+ Name 172 "gl_SubgroupEqMask"
+ Name 173 "gl_SubgroupGeMask"
+ Name 174 "gl_SubgroupGtMask"
+ Name 175 "gl_SubgroupLeMask"
+ Name 176 "gl_SubgroupLtMask"
+ Name 182 "ballot"
+ Name 219 "ballot"
+ Name 254 "ballot"
+ Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId
+ Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId
+ MemberDecorate 54(gl_MeshPerVertexEXT) 0 BuiltIn Position
+ MemberDecorate 54(gl_MeshPerVertexEXT) 1 BuiltIn PointSize
+ MemberDecorate 54(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance
+ MemberDecorate 54(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance
+ Decorate 54(gl_MeshPerVertexEXT) Block
+ MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV
+ MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId
+ MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV
+ MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer
+ MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV
+ MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex
+ MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV
+ MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT
+ MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV
+ MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR
+ Decorate 106(gl_MeshPerPrimitiveEXT) Block
+ Decorate 148(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT
+ Decorate 162(gl_SubgroupSize) RelaxedPrecision
+ Decorate 162(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 163(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 163(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 168(gl_NumSubgroups) BuiltIn NumSubgroups
+ Decorate 169(gl_SubgroupID) BuiltIn SubgroupId
+ Decorate 172(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
+ Decorate 173(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR
+ Decorate 174(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
+ Decorate 175(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
+ Decorate 176(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR
+ Decorate 279 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 8: TypeFloat 32
+ 9: TypeVector 8(float) 4
+ 10: TypePointer Function 9(fvec4)
+ 11: TypeFunction 2 10(ptr)
+ 30: TypeInt 32 0
+ 31: TypePointer Function 30(int)
+ 33: TypeVector 30(int) 3
+ 34: TypePointer Input 33(ivec3)
+35(gl_LocalInvocationID): 34(ptr) Variable Input
+ 36: 30(int) Constant 0
+ 37: TypePointer Input 30(int)
+41(gl_WorkGroupID): 34(ptr) Variable Input
+ 45: 30(int) Constant 81
+ 47: 30(int) Constant 32
+ 50: 30(int) Constant 4
+ 51: TypeArray 8(float) 50
+ 52: 30(int) Constant 3
+ 53: TypeArray 8(float) 52
+54(gl_MeshPerVertexEXT): TypeStruct 9(fvec4) 8(float) 51 53
+ 55: TypeArray 54(gl_MeshPerVertexEXT) 45
+ 56: TypePointer Output 55
+57(gl_MeshVerticesEXT): 56(ptr) Variable Output
+ 59: TypeInt 32 1
+ 60: 59(int) Constant 0
+ 61: 8(float) Constant 1065353216
+ 62: 9(fvec4) ConstantComposite 61 61 61 61
+ 63: TypePointer Output 9(fvec4)
+ 66: 59(int) Constant 1
+ 67: 8(float) Constant 1073741824
+ 68: TypePointer Output 8(float)
+ 71: 59(int) Constant 2
+ 72: 59(int) Constant 3
+ 73: 8(float) Constant 1077936128
+ 76: 8(float) Constant 1082130432
+ 78: 30(int) Constant 1
+ 79: 30(int) Constant 264
+ 80: 30(int) Constant 2
+ 105: TypeBool
+106(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 105(bool) 59(int)
+ 107: TypeArray 106(gl_MeshPerPrimitiveEXT) 47
+ 108: TypePointer Output 107
+109(gl_MeshPrimitivesEXT): 108(ptr) Variable Output
+ 111: 59(int) Constant 6
+ 112: TypePointer Output 59(int)
+ 115: 59(int) Constant 7
+ 118: 59(int) Constant 8
+ 121: 105(bool) ConstantFalse
+ 122: TypePointer Output 105(bool)
+ 145: 30(int) Constant 96
+ 146: TypeArray 33(ivec3) 145
+ 147: TypePointer Output 146
+148(gl_PrimitiveTriangleIndicesEXT): 147(ptr) Variable Output
+ 149: 33(ivec3) ConstantComposite 78 78 78
+ 150: TypePointer Output 33(ivec3)
+ 154: 33(ivec3) ConstantComposite 80 80 80
+162(gl_SubgroupSize): 37(ptr) Variable Input
+163(gl_SubgroupInvocationID): 37(ptr) Variable Input
+ 164: 30(int) Constant 3400
+ 165: 30(int) Constant 72
+ 166: 30(int) Constant 2056
+168(gl_NumSubgroups): 37(ptr) Variable Input
+169(gl_SubgroupID): 37(ptr) Variable Input
+ 170: TypeVector 30(int) 4
+ 171: TypePointer Input 170(ivec4)
+172(gl_SubgroupEqMask): 171(ptr) Variable Input
+173(gl_SubgroupGeMask): 171(ptr) Variable Input
+174(gl_SubgroupGtMask): 171(ptr) Variable Input
+175(gl_SubgroupLeMask): 171(ptr) Variable Input
+176(gl_SubgroupLtMask): 171(ptr) Variable Input
+ 181: TypePointer Function 170(ivec4)
+ 184: 170(ivec4) ConstantComposite 78 78 78 78
+ 198: 105(bool) ConstantTrue
+ 255: 30(int) Constant 85
+ 256: 170(ivec4) ConstantComposite 255 36 36 36
+ 279: 33(ivec3) ConstantComposite 47 78 78
+ 4(main): 2 Function None 3
+ 5: Label
+ 32(iid): 31(ptr) Variable Function
+ 40(gid): 31(ptr) Variable Function
+ 44(vertexCount): 31(ptr) Variable Function
+46(primitiveCount): 31(ptr) Variable Function
+ 38: 37(ptr) AccessChain 35(gl_LocalInvocationID) 36
+ 39: 30(int) Load 38
+ Store 32(iid) 39
+ 42: 37(ptr) AccessChain 41(gl_WorkGroupID) 36
+ 43: 30(int) Load 42
+ Store 40(gid) 43
+ Store 44(vertexCount) 45
+ Store 46(primitiveCount) 47
+ 48: 30(int) Load 44(vertexCount)
+ 49: 30(int) Load 46(primitiveCount)
+ SetMeshOutputsEXT 48 49
+ 58: 30(int) Load 32(iid)
+ 64: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 58 60
+ Store 64 62
+ 65: 30(int) Load 32(iid)
+ 69: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 65 66
+ Store 69 67
+ 70: 30(int) Load 32(iid)
+ 74: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 70 71 72
+ Store 74 73
+ 75: 30(int) Load 32(iid)
+ 77: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 75 72 71
+ Store 77 76
+ MemoryBarrier 78 79
+ ControlBarrier 80 80 79
+ 81: 30(int) Load 32(iid)
+ 82: 30(int) IAdd 81 78
+ 83: 30(int) Load 32(iid)
+ 84: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 83 60
+ 85: 9(fvec4) Load 84
+ 86: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 82 60
+ Store 86 85
+ 87: 30(int) Load 32(iid)
+ 88: 30(int) IAdd 87 78
+ 89: 30(int) Load 32(iid)
+ 90: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 89 66
+ 91: 8(float) Load 90
+ 92: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 88 66
+ Store 92 91
+ 93: 30(int) Load 32(iid)
+ 94: 30(int) IAdd 93 78
+ 95: 30(int) Load 32(iid)
+ 96: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 95 71 72
+ 97: 8(float) Load 96
+ 98: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 94 71 72
+ Store 98 97
+ 99: 30(int) Load 32(iid)
+ 100: 30(int) IAdd 99 78
+ 101: 30(int) Load 32(iid)
+ 102: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 101 72 71
+ 103: 8(float) Load 102
+ 104: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 100 72 71
+ Store 104 103
+ MemoryBarrier 78 79
+ ControlBarrier 80 80 79
+ 110: 30(int) Load 32(iid)
+ 113: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 110 60
+ Store 113 111
+ 114: 30(int) Load 32(iid)
+ 116: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 114 66
+ Store 116 115
+ 117: 30(int) Load 32(iid)
+ 119: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 117 71
+ Store 119 118
+ 120: 30(int) Load 32(iid)
+ 123: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 120 72
+ Store 123 121
+ MemoryBarrier 78 79
+ ControlBarrier 80 80 79
+ 124: 30(int) Load 32(iid)
+ 125: 30(int) IAdd 124 78
+ 126: 30(int) Load 32(iid)
+ 127: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 126 60
+ 128: 59(int) Load 127
+ 129: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 125 60
+ Store 129 128
+ 130: 30(int) Load 32(iid)
+ 131: 30(int) IAdd 130 78
+ 132: 30(int) Load 32(iid)
+ 133: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 132 66
+ 134: 59(int) Load 133
+ 135: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 131 66
+ Store 135 134
+ 136: 30(int) Load 32(iid)
+ 137: 30(int) IAdd 136 78
+ 138: 30(int) Load 32(iid)
+ 139: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 138 71
+ 140: 59(int) Load 139
+ 141: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 137 71
+ Store 141 140
+ 142: 30(int) Load 32(iid)
+ 143: 30(int) IAdd 142 78
+ 144: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 143 72
+ Store 144 121
+ MemoryBarrier 78 79
+ ControlBarrier 80 80 79
+ 151: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 60
+ Store 151 149
+ 152: 30(int) Load 46(primitiveCount)
+ 153: 30(int) ISub 152 78
+ 155: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 153
+ Store 155 154
+ 156: 30(int) Load 40(gid)
+ 157: 30(int) Load 40(gid)
+ 158: 30(int) ISub 157 78
+ 159: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 158
+ 160: 33(ivec3) Load 159
+ 161: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 156
+ Store 161 160
+ MemoryBarrier 78 79
+ ControlBarrier 80 80 79
+ Return
+ FunctionEnd
+ 6(basic_works(): 2 Function None 3
+ 7: Label
+ ControlBarrier 52 52 164
+ MemoryBarrier 52 164
+ MemoryBarrier 52 165
+ MemoryBarrier 52 166
+ 167: 105(bool) GroupNonUniformElect 52
+ MemoryBarrier 52 79
+ Return
+ FunctionEnd
+13(ballot_works(vf4;): 2 Function None 11
+ 12(f4): 10(ptr) FunctionParameter
+ 14: Label
+ 182(ballot): 181(ptr) Variable Function
+ 177: 9(fvec4) Load 12(f4)
+ 178: 9(fvec4) GroupNonUniformBroadcast 52 177 36
+ 179: 9(fvec4) Load 12(f4)
+ 180: 9(fvec4) GroupNonUniformBroadcastFirst 52 179
+ 183: 170(ivec4) GroupNonUniformBallot 52 121
+ Store 182(ballot) 183
+ 185: 105(bool) GroupNonUniformInverseBallot 52 184
+ 186: 170(ivec4) Load 182(ballot)
+ 187: 105(bool) GroupNonUniformBallotBitExtract 52 186 36
+ 188: 170(ivec4) Load 182(ballot)
+ 189: 30(int) GroupNonUniformBallotBitCount 52 Reduce 188
+ 190: 170(ivec4) Load 182(ballot)
+ 191: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 190
+ 192: 170(ivec4) Load 182(ballot)
+ 193: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 192
+ 194: 170(ivec4) Load 182(ballot)
+ 195: 30(int) GroupNonUniformBallotFindLSB 52 194
+ 196: 170(ivec4) Load 182(ballot)
+ 197: 30(int) GroupNonUniformBallotFindMSB 52 196
+ Return
+ FunctionEnd
+16(vote_works(vf4;): 2 Function None 11
+ 15(f4): 10(ptr) FunctionParameter
+ 17: Label
+ 199: 105(bool) GroupNonUniformAll 52 198
+ 200: 105(bool) GroupNonUniformAny 52 121
+ 201: 9(fvec4) Load 15(f4)
+ 202: 105(bool) GroupNonUniformAllEqual 52 201
+ Return
+ FunctionEnd
+19(shuffle_works(vf4;): 2 Function None 11
+ 18(f4): 10(ptr) FunctionParameter
+ 20: Label
+ 203: 9(fvec4) Load 18(f4)
+ 204: 9(fvec4) GroupNonUniformShuffle 52 203 36
+ 205: 9(fvec4) Load 18(f4)
+ 206: 9(fvec4) GroupNonUniformShuffleXor 52 205 78
+ 207: 9(fvec4) Load 18(f4)
+ 208: 9(fvec4) GroupNonUniformShuffleUp 52 207 78
+ 209: 9(fvec4) Load 18(f4)
+ 210: 9(fvec4) GroupNonUniformShuffleDown 52 209 78
+ Return
+ FunctionEnd
+22(arith_works(vf4;): 2 Function None 11
+ 21(f4): 10(ptr) FunctionParameter
+ 23: Label
+ 219(ballot): 181(ptr) Variable Function
+ 211: 9(fvec4) Load 21(f4)
+ 212: 9(fvec4) GroupNonUniformFAdd 52 Reduce 211
+ 213: 9(fvec4) Load 21(f4)
+ 214: 9(fvec4) GroupNonUniformFMul 52 Reduce 213
+ 215: 9(fvec4) Load 21(f4)
+ 216: 9(fvec4) GroupNonUniformFMin 52 Reduce 215
+ 217: 9(fvec4) Load 21(f4)
+ 218: 9(fvec4) GroupNonUniformFMax 52 Reduce 217
+ 220: 170(ivec4) Load 219(ballot)
+ 221: 170(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 220
+ 222: 170(ivec4) Load 219(ballot)
+ 223: 170(ivec4) GroupNonUniformBitwiseOr 52 Reduce 222
+ 224: 170(ivec4) Load 219(ballot)
+ 225: 170(ivec4) GroupNonUniformBitwiseXor 52 Reduce 224
+ 226: 9(fvec4) Load 21(f4)
+ 227: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 226
+ 228: 9(fvec4) Load 21(f4)
+ 229: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 228
+ 230: 9(fvec4) Load 21(f4)
+ 231: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 230
+ 232: 9(fvec4) Load 21(f4)
+ 233: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 232
+ 234: 170(ivec4) Load 219(ballot)
+ 235: 170(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 234
+ 236: 170(ivec4) Load 219(ballot)
+ 237: 170(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 236
+ 238: 170(ivec4) Load 219(ballot)
+ 239: 170(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 238
+ 240: 9(fvec4) Load 21(f4)
+ 241: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 240
+ 242: 9(fvec4) Load 21(f4)
+ 243: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 242
+ 244: 9(fvec4) Load 21(f4)
+ 245: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 244
+ 246: 9(fvec4) Load 21(f4)
+ 247: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 246
+ 248: 170(ivec4) Load 219(ballot)
+ 249: 170(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 248
+ 250: 170(ivec4) Load 219(ballot)
+ 251: 170(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 250
+ 252: 170(ivec4) Load 219(ballot)
+ 253: 170(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 252
+ Return
+ FunctionEnd
+25(clustered_works(vf4;): 2 Function None 11
+ 24(f4): 10(ptr) FunctionParameter
+ 26: Label
+ 254(ballot): 181(ptr) Variable Function
+ Store 254(ballot) 256
+ 257: 9(fvec4) Load 24(f4)
+ 258: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 257 80
+ 259: 9(fvec4) Load 24(f4)
+ 260: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 259 80
+ 261: 9(fvec4) Load 24(f4)
+ 262: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 261 80
+ 263: 9(fvec4) Load 24(f4)
+ 264: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 263 80
+ 265: 170(ivec4) Load 254(ballot)
+ 266: 170(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 265 80
+ 267: 170(ivec4) Load 254(ballot)
+ 268: 170(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 267 80
+ 269: 170(ivec4) Load 254(ballot)
+ 270: 170(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 269 80
+ Return
+ FunctionEnd
+28(quad_works(vf4;): 2 Function None 11
+ 27(f4): 10(ptr) FunctionParameter
+ 29: Label
+ 271: 9(fvec4) Load 27(f4)
+ 272: 9(fvec4) GroupNonUniformQuadBroadcast 52 271 36
+ 273: 9(fvec4) Load 27(f4)
+ 274: 9(fvec4) GroupNonUniformQuadSwap 52 273 36
+ 275: 9(fvec4) Load 27(f4)
+ 276: 9(fvec4) GroupNonUniformQuadSwap 52 275 78
+ 277: 9(fvec4) Load 27(f4)
+ 278: 9(fvec4) GroupNonUniformQuadSwap 52 277 80
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.460.subgroupEXT.task.out b/Test/baseResults/spv.460.subgroupEXT.task.out
new file mode 100644
index 0000000..efe30b7
--- /dev/null
+++ b/Test/baseResults/spv.460.subgroupEXT.task.out
@@ -0,0 +1,375 @@
+spv.460.subgroupEXT.task
+// Module Version 10400
+// Generated by (magic number): 8000b
+// Id's are bound by 243
+
+ Capability StorageImageWriteWithoutFormat
+ Capability GroupNonUniform
+ Capability GroupNonUniformVote
+ Capability GroupNonUniformArithmetic
+ Capability GroupNonUniformBallot
+ Capability GroupNonUniformShuffle
+ Capability GroupNonUniformShuffleRelative
+ Capability GroupNonUniformClustered
+ Capability GroupNonUniformQuad
+ Capability MeshShadingEXT
+ Extension "SPV_EXT_mesh_shader"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TaskEXT 4 "main" 35 41 56 61 77 102 123 124 129 130 133 134 135 136 137
+ ExecutionMode 4 LocalSize 32 1 1
+ Source GLSL 460
+ SourceExtension "GL_EXT_mesh_shader"
+ SourceExtension "GL_KHR_shader_subgroup_arithmetic"
+ SourceExtension "GL_KHR_shader_subgroup_ballot"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_KHR_shader_subgroup_clustered"
+ SourceExtension "GL_KHR_shader_subgroup_quad"
+ SourceExtension "GL_KHR_shader_subgroup_shuffle"
+ SourceExtension "GL_KHR_shader_subgroup_shuffle_relative"
+ SourceExtension "GL_KHR_shader_subgroup_vote"
+ Name 4 "main"
+ Name 6 "basic_works("
+ Name 13 "ballot_works(vf4;"
+ Name 12 "f4"
+ Name 16 "vote_works(vf4;"
+ Name 15 "f4"
+ Name 19 "shuffle_works(vf4;"
+ Name 18 "f4"
+ Name 22 "arith_works(vf4;"
+ Name 21 "f4"
+ Name 25 "clustered_works(vf4;"
+ Name 24 "f4"
+ Name 28 "quad_works(vf4;"
+ Name 27 "f4"
+ Name 32 "iid"
+ Name 35 "gl_LocalInvocationID"
+ Name 40 "gid"
+ Name 41 "gl_WorkGroupID"
+ Name 44 "i"
+ Name 56 "mem"
+ Name 59 "block0"
+ MemberName 59(block0) 0 "uni_value"
+ Name 61 ""
+ Name 77 "uni_image"
+ Name 100 "Task"
+ MemberName 100(Task) 0 "dummy"
+ MemberName 100(Task) 1 "submesh"
+ Name 102 "mytask"
+ Name 123 "gl_SubgroupSize"
+ Name 124 "gl_SubgroupInvocationID"
+ Name 129 "gl_NumSubgroups"
+ Name 130 "gl_SubgroupID"
+ Name 133 "gl_SubgroupEqMask"
+ Name 134 "gl_SubgroupGeMask"
+ Name 135 "gl_SubgroupGtMask"
+ Name 136 "gl_SubgroupLeMask"
+ Name 137 "gl_SubgroupLtMask"
+ Name 143 "ballot"
+ Name 181 "ballot"
+ Name 216 "ballot"
+ Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId
+ Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId
+ MemberDecorate 59(block0) 0 Offset 0
+ Decorate 59(block0) Block
+ Decorate 61 DescriptorSet 0
+ Decorate 61 Binding 1
+ Decorate 77(uni_image) DescriptorSet 0
+ Decorate 77(uni_image) Binding 0
+ Decorate 77(uni_image) NonReadable
+ Decorate 123(gl_SubgroupSize) RelaxedPrecision
+ Decorate 123(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 124(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 124(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 129(gl_NumSubgroups) BuiltIn NumSubgroups
+ Decorate 130(gl_SubgroupID) BuiltIn SubgroupId
+ Decorate 133(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
+ Decorate 134(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR
+ Decorate 135(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
+ Decorate 136(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
+ Decorate 137(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR
+ Decorate 242 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 8: TypeFloat 32
+ 9: TypeVector 8(float) 4
+ 10: TypePointer Function 9(fvec4)
+ 11: TypeFunction 2 10(ptr)
+ 30: TypeInt 32 0
+ 31: TypePointer Function 30(int)
+ 33: TypeVector 30(int) 3
+ 34: TypePointer Input 33(ivec3)
+35(gl_LocalInvocationID): 34(ptr) Variable Input
+ 36: 30(int) Constant 0
+ 37: TypePointer Input 30(int)
+41(gl_WorkGroupID): 34(ptr) Variable Input
+ 51: 30(int) Constant 10
+ 52: TypeBool
+ 54: TypeArray 9(fvec4) 51
+ 55: TypePointer Workgroup 54
+ 56(mem): 55(ptr) Variable Workgroup
+ 59(block0): TypeStruct 30(int)
+ 60: TypePointer Uniform 59(block0)
+ 61: 60(ptr) Variable Uniform
+ 62: TypeInt 32 1
+ 63: 62(int) Constant 0
+ 64: TypePointer Uniform 30(int)
+ 70: TypePointer Workgroup 9(fvec4)
+ 73: 62(int) Constant 1
+ 75: TypeImage 8(float) 2D nonsampled format:Unknown
+ 76: TypePointer UniformConstant 75
+ 77(uni_image): 76(ptr) Variable UniformConstant
+ 81: TypeVector 62(int) 2
+ 91: 30(int) Constant 1
+ 95: 30(int) Constant 264
+ 96: 30(int) Constant 2
+ 97: TypeVector 8(float) 2
+ 98: 30(int) Constant 3
+ 99: TypeArray 97(fvec2) 98
+ 100(Task): TypeStruct 97(fvec2) 99
+ 101: TypePointer TaskPayloadWorkgroupEXT 100(Task)
+ 102(mytask): 101(ptr) Variable TaskPayloadWorkgroupEXT
+ 103: 8(float) Constant 1106247680
+ 104: 8(float) Constant 1106771968
+ 105: 97(fvec2) ConstantComposite 103 104
+ 106: TypePointer TaskPayloadWorkgroupEXT 97(fvec2)
+ 108: 8(float) Constant 1107296256
+ 109: 8(float) Constant 1107558400
+ 110: 97(fvec2) ConstantComposite 108 109
+ 112: 8(float) Constant 1107820544
+ 113: 8(float) Constant 1108082688
+ 114: 97(fvec2) ConstantComposite 112 113
+ 116: 62(int) Constant 2
+123(gl_SubgroupSize): 37(ptr) Variable Input
+124(gl_SubgroupInvocationID): 37(ptr) Variable Input
+ 125: 30(int) Constant 3400
+ 126: 30(int) Constant 72
+ 127: 30(int) Constant 2056
+129(gl_NumSubgroups): 37(ptr) Variable Input
+130(gl_SubgroupID): 37(ptr) Variable Input
+ 131: TypeVector 30(int) 4
+ 132: TypePointer Input 131(ivec4)
+133(gl_SubgroupEqMask): 132(ptr) Variable Input
+134(gl_SubgroupGeMask): 132(ptr) Variable Input
+135(gl_SubgroupGtMask): 132(ptr) Variable Input
+136(gl_SubgroupLeMask): 132(ptr) Variable Input
+137(gl_SubgroupLtMask): 132(ptr) Variable Input
+ 142: TypePointer Function 131(ivec4)
+ 144: 52(bool) ConstantFalse
+ 146: 131(ivec4) ConstantComposite 91 91 91 91
+ 160: 52(bool) ConstantTrue
+ 217: 30(int) Constant 85
+ 218: 131(ivec4) ConstantComposite 217 36 36 36
+ 241: 30(int) Constant 32
+ 242: 33(ivec3) ConstantComposite 241 91 91
+ 4(main): 2 Function None 3
+ 5: Label
+ 32(iid): 31(ptr) Variable Function
+ 40(gid): 31(ptr) Variable Function
+ 44(i): 31(ptr) Variable Function
+ 38: 37(ptr) AccessChain 35(gl_LocalInvocationID) 36
+ 39: 30(int) Load 38
+ Store 32(iid) 39
+ 42: 37(ptr) AccessChain 41(gl_WorkGroupID) 36
+ 43: 30(int) Load 42
+ Store 40(gid) 43
+ Store 44(i) 36
+ Branch 45
+ 45: Label
+ LoopMerge 47 48 None
+ Branch 49
+ 49: Label
+ 50: 30(int) Load 44(i)
+ 53: 52(bool) ULessThan 50 51
+ BranchConditional 53 46 47
+ 46: Label
+ 57: 30(int) Load 44(i)
+ 58: 30(int) Load 44(i)
+ 65: 64(ptr) AccessChain 61 63
+ 66: 30(int) Load 65
+ 67: 30(int) IAdd 58 66
+ 68: 8(float) ConvertUToF 67
+ 69: 9(fvec4) CompositeConstruct 68 68 68 68
+ 71: 70(ptr) AccessChain 56(mem) 57
+ Store 71 69
+ Branch 48
+ 48: Label
+ 72: 30(int) Load 44(i)
+ 74: 30(int) IAdd 72 73
+ Store 44(i) 74
+ Branch 45
+ 47: Label
+ 78: 75 Load 77(uni_image)
+ 79: 30(int) Load 32(iid)
+ 80: 62(int) Bitcast 79
+ 82: 81(ivec2) CompositeConstruct 80 80
+ 83: 30(int) Load 40(gid)
+ 84: 70(ptr) AccessChain 56(mem) 83
+ 85: 9(fvec4) Load 84
+ ImageWrite 78 82 85
+ 86: 75 Load 77(uni_image)
+ 87: 30(int) Load 32(iid)
+ 88: 62(int) Bitcast 87
+ 89: 81(ivec2) CompositeConstruct 88 88
+ 90: 30(int) Load 40(gid)
+ 92: 30(int) IAdd 90 91
+ 93: 70(ptr) AccessChain 56(mem) 92
+ 94: 9(fvec4) Load 93
+ ImageWrite 86 89 94
+ MemoryBarrier 91 95
+ ControlBarrier 96 96 95
+ 107: 106(ptr) AccessChain 102(mytask) 63
+ Store 107 105
+ 111: 106(ptr) AccessChain 102(mytask) 73 63
+ Store 111 110
+ 115: 106(ptr) AccessChain 102(mytask) 73 73
+ Store 115 114
+ 117: 30(int) Load 40(gid)
+ 118: 30(int) UMod 117 96
+ 119: 106(ptr) AccessChain 102(mytask) 73 118
+ 120: 97(fvec2) Load 119
+ 121: 106(ptr) AccessChain 102(mytask) 73 116
+ Store 121 120
+ MemoryBarrier 91 95
+ ControlBarrier 96 96 95
+ EmitMeshTasksEXT 98 91 91 102(mytask)
+ FunctionEnd
+ 6(basic_works(): 2 Function None 3
+ 7: Label
+ ControlBarrier 98 98 125
+ MemoryBarrier 98 125
+ MemoryBarrier 98 126
+ MemoryBarrier 98 127
+ 128: 52(bool) GroupNonUniformElect 98
+ MemoryBarrier 98 95
+ Return
+ FunctionEnd
+13(ballot_works(vf4;): 2 Function None 11
+ 12(f4): 10(ptr) FunctionParameter
+ 14: Label
+ 143(ballot): 142(ptr) Variable Function
+ 138: 9(fvec4) Load 12(f4)
+ 139: 9(fvec4) GroupNonUniformBroadcast 98 138 36
+ 140: 9(fvec4) Load 12(f4)
+ 141: 9(fvec4) GroupNonUniformBroadcastFirst 98 140
+ 145: 131(ivec4) GroupNonUniformBallot 98 144
+ Store 143(ballot) 145
+ 147: 52(bool) GroupNonUniformInverseBallot 98 146
+ 148: 131(ivec4) Load 143(ballot)
+ 149: 52(bool) GroupNonUniformBallotBitExtract 98 148 36
+ 150: 131(ivec4) Load 143(ballot)
+ 151: 30(int) GroupNonUniformBallotBitCount 98 Reduce 150
+ 152: 131(ivec4) Load 143(ballot)
+ 153: 30(int) GroupNonUniformBallotBitCount 98 InclusiveScan 152
+ 154: 131(ivec4) Load 143(ballot)
+ 155: 30(int) GroupNonUniformBallotBitCount 98 ExclusiveScan 154
+ 156: 131(ivec4) Load 143(ballot)
+ 157: 30(int) GroupNonUniformBallotFindLSB 98 156
+ 158: 131(ivec4) Load 143(ballot)
+ 159: 30(int) GroupNonUniformBallotFindMSB 98 158
+ Return
+ FunctionEnd
+16(vote_works(vf4;): 2 Function None 11
+ 15(f4): 10(ptr) FunctionParameter
+ 17: Label
+ 161: 52(bool) GroupNonUniformAll 98 160
+ 162: 52(bool) GroupNonUniformAny 98 144
+ 163: 9(fvec4) Load 15(f4)
+ 164: 52(bool) GroupNonUniformAllEqual 98 163
+ Return
+ FunctionEnd
+19(shuffle_works(vf4;): 2 Function None 11
+ 18(f4): 10(ptr) FunctionParameter
+ 20: Label
+ 165: 9(fvec4) Load 18(f4)
+ 166: 9(fvec4) GroupNonUniformShuffle 98 165 36
+ 167: 9(fvec4) Load 18(f4)
+ 168: 9(fvec4) GroupNonUniformShuffleXor 98 167 91
+ 169: 9(fvec4) Load 18(f4)
+ 170: 9(fvec4) GroupNonUniformShuffleUp 98 169 91
+ 171: 9(fvec4) Load 18(f4)
+ 172: 9(fvec4) GroupNonUniformShuffleDown 98 171 91
+ Return
+ FunctionEnd
+22(arith_works(vf4;): 2 Function None 11
+ 21(f4): 10(ptr) FunctionParameter
+ 23: Label
+ 181(ballot): 142(ptr) Variable Function
+ 173: 9(fvec4) Load 21(f4)
+ 174: 9(fvec4) GroupNonUniformFAdd 98 Reduce 173
+ 175: 9(fvec4) Load 21(f4)
+ 176: 9(fvec4) GroupNonUniformFMul 98 Reduce 175
+ 177: 9(fvec4) Load 21(f4)
+ 178: 9(fvec4) GroupNonUniformFMin 98 Reduce 177
+ 179: 9(fvec4) Load 21(f4)
+ 180: 9(fvec4) GroupNonUniformFMax 98 Reduce 179
+ 182: 131(ivec4) Load 181(ballot)
+ 183: 131(ivec4) GroupNonUniformBitwiseAnd 98 Reduce 182
+ 184: 131(ivec4) Load 181(ballot)
+ 185: 131(ivec4) GroupNonUniformBitwiseOr 98 Reduce 184
+ 186: 131(ivec4) Load 181(ballot)
+ 187: 131(ivec4) GroupNonUniformBitwiseXor 98 Reduce 186
+ 188: 9(fvec4) Load 21(f4)
+ 189: 9(fvec4) GroupNonUniformFAdd 98 InclusiveScan 188
+ 190: 9(fvec4) Load 21(f4)
+ 191: 9(fvec4) GroupNonUniformFMul 98 InclusiveScan 190
+ 192: 9(fvec4) Load 21(f4)
+ 193: 9(fvec4) GroupNonUniformFMin 98 InclusiveScan 192
+ 194: 9(fvec4) Load 21(f4)
+ 195: 9(fvec4) GroupNonUniformFMax 98 InclusiveScan 194
+ 196: 131(ivec4) Load 181(ballot)
+ 197: 131(ivec4) GroupNonUniformBitwiseAnd 98 InclusiveScan 196
+ 198: 131(ivec4) Load 181(ballot)
+ 199: 131(ivec4) GroupNonUniformBitwiseOr 98 InclusiveScan 198
+ 200: 131(ivec4) Load 181(ballot)
+ 201: 131(ivec4) GroupNonUniformBitwiseXor 98 InclusiveScan 200
+ 202: 9(fvec4) Load 21(f4)
+ 203: 9(fvec4) GroupNonUniformFAdd 98 ExclusiveScan 202
+ 204: 9(fvec4) Load 21(f4)
+ 205: 9(fvec4) GroupNonUniformFMul 98 ExclusiveScan 204
+ 206: 9(fvec4) Load 21(f4)
+ 207: 9(fvec4) GroupNonUniformFMin 98 ExclusiveScan 206
+ 208: 9(fvec4) Load 21(f4)
+ 209: 9(fvec4) GroupNonUniformFMax 98 ExclusiveScan 208
+ 210: 131(ivec4) Load 181(ballot)
+ 211: 131(ivec4) GroupNonUniformBitwiseAnd 98 ExclusiveScan 210
+ 212: 131(ivec4) Load 181(ballot)
+ 213: 131(ivec4) GroupNonUniformBitwiseOr 98 ExclusiveScan 212
+ 214: 131(ivec4) Load 181(ballot)
+ 215: 131(ivec4) GroupNonUniformBitwiseXor 98 ExclusiveScan 214
+ Return
+ FunctionEnd
+25(clustered_works(vf4;): 2 Function None 11
+ 24(f4): 10(ptr) FunctionParameter
+ 26: Label
+ 216(ballot): 142(ptr) Variable Function
+ Store 216(ballot) 218
+ 219: 9(fvec4) Load 24(f4)
+ 220: 9(fvec4) GroupNonUniformFAdd 98 ClusteredReduce 219 96
+ 221: 9(fvec4) Load 24(f4)
+ 222: 9(fvec4) GroupNonUniformFMul 98 ClusteredReduce 221 96
+ 223: 9(fvec4) Load 24(f4)
+ 224: 9(fvec4) GroupNonUniformFMin 98 ClusteredReduce 223 96
+ 225: 9(fvec4) Load 24(f4)
+ 226: 9(fvec4) GroupNonUniformFMax 98 ClusteredReduce 225 96
+ 227: 131(ivec4) Load 216(ballot)
+ 228: 131(ivec4) GroupNonUniformBitwiseAnd 98 ClusteredReduce 227 96
+ 229: 131(ivec4) Load 216(ballot)
+ 230: 131(ivec4) GroupNonUniformBitwiseOr 98 ClusteredReduce 229 96
+ 231: 131(ivec4) Load 216(ballot)
+ 232: 131(ivec4) GroupNonUniformBitwiseXor 98 ClusteredReduce 231 96
+ Return
+ FunctionEnd
+28(quad_works(vf4;): 2 Function None 11
+ 27(f4): 10(ptr) FunctionParameter
+ 29: Label
+ 233: 9(fvec4) Load 27(f4)
+ 234: 9(fvec4) GroupNonUniformQuadBroadcast 98 233 36
+ 235: 9(fvec4) Load 27(f4)
+ 236: 9(fvec4) GroupNonUniformQuadSwap 98 235 36
+ 237: 9(fvec4) Load 27(f4)
+ 238: 9(fvec4) GroupNonUniformQuadSwap 98 237 91
+ 239: 9(fvec4) Load 27(f4)
+ 240: 9(fvec4) GroupNonUniformQuadSwap 98 239 96
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.460.vert.out b/Test/baseResults/spv.460.vert.out
index e15f364..eb75ab8 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): 8000a
+// Generated by (magic number): 8000b
// 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
index 4eb9021..9a85a6a 100644
--- a/Test/baseResults/spv.8bit-16bit-construction.frag.out
+++ b/Test/baseResults/spv.8bit-16bit-construction.frag.out
@@ -1,7 +1,7 @@
spv.8bit-16bit-construction.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 43
Capability Shader
diff --git a/Test/baseResults/spv.8bitstorage-int.frag.out b/Test/baseResults/spv.8bitstorage-int.frag.out
index 00ef309..830b3e3 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): 8000a
+// Generated by (magic number): 8000b
// 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 863eb68..e8e9ca3 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): 8000a
+// Generated by (magic number): 8000b
// 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 c64945f..f41f63e 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): 8000a
+// Generated by (magic number): 8000b
// 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 5809991..f372baf 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): 8000a
+// Generated by (magic number): 8000b
// 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 c893f88..d075b36 100644
--- a/Test/baseResults/spv.AnyHitShader.rahit.out
+++ b/Test/baseResults/spv.AnyHitShader.rahit.out
@@ -1,6 +1,6 @@
spv.AnyHitShader.rahit
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 81
Capability RayTracingNV
diff --git a/Test/baseResults/spv.AnyHitShaderMotion.rahit.out b/Test/baseResults/spv.AnyHitShaderMotion.rahit.out
index f9e1e1b..3d859db 100644
--- a/Test/baseResults/spv.AnyHitShaderMotion.rahit.out
+++ b/Test/baseResults/spv.AnyHitShaderMotion.rahit.out
@@ -1,6 +1,6 @@
spv.AnyHitShaderMotion.rahit
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 14
Capability RayTracingKHR
diff --git a/Test/baseResults/spv.AofA.frag.out b/Test/baseResults/spv.AofA.frag.out
index 57cdcb0..b2df36a 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): 8000a
+// Generated by (magic number): 8000b
// 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 b76629c..80b5115 100644
--- a/Test/baseResults/spv.ClosestHitShader.rchit.out
+++ b/Test/baseResults/spv.ClosestHitShader.rchit.out
@@ -1,6 +1,6 @@
spv.ClosestHitShader.rchit
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 88
Capability RayTracingNV
diff --git a/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out b/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out
index e89abb4..e20df80 100644
--- a/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out
+++ b/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out
@@ -1,6 +1,6 @@
spv.ClosestHitShaderMotion.rchit
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 33
Capability RayTracingKHR
@@ -21,7 +21,6 @@
Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV
Decorate 16(accEXT) DescriptorSet 0
Decorate 16(accEXT) Binding 0
- Decorate 32(incomingPayloadEXT) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/Test/baseResults/spv.GeometryShaderPassthrough.geom.out b/Test/baseResults/spv.GeometryShaderPassthrough.geom.out
index 4b29238..57fa691 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): 8000a
+// Generated by (magic number): 8000b
// 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 7b0058c..81d86cd 100644
--- a/Test/baseResults/spv.IntersectShader.rint.out
+++ b/Test/baseResults/spv.IntersectShader.rint.out
@@ -1,6 +1,6 @@
spv.IntersectShader.rint
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 71
Capability RayTracingNV
diff --git a/Test/baseResults/spv.IntersectShaderMotion.rint.out b/Test/baseResults/spv.IntersectShaderMotion.rint.out
index f77c9a8..b3326ee 100644
--- a/Test/baseResults/spv.IntersectShaderMotion.rint.out
+++ b/Test/baseResults/spv.IntersectShaderMotion.rint.out
@@ -1,6 +1,6 @@
spv.IntersectShaderMotion.rint
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 14
Capability RayTracingKHR
diff --git a/Test/baseResults/spv.MissShader.rmiss.out b/Test/baseResults/spv.MissShader.rmiss.out
index e573bba..581c0c6 100644
--- a/Test/baseResults/spv.MissShader.rmiss.out
+++ b/Test/baseResults/spv.MissShader.rmiss.out
@@ -1,6 +1,6 @@
spv.MissShader.rmiss
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 59
Capability RayTracingNV
diff --git a/Test/baseResults/spv.MissShaderMotion.rmiss.out b/Test/baseResults/spv.MissShaderMotion.rmiss.out
index 2f18338..220dda9 100644
--- a/Test/baseResults/spv.MissShaderMotion.rmiss.out
+++ b/Test/baseResults/spv.MissShaderMotion.rmiss.out
@@ -1,6 +1,6 @@
spv.MissShaderMotion.rmiss
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 33
Capability RayTracingKHR
@@ -21,7 +21,6 @@
Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV
Decorate 16(accEXT) DescriptorSet 0
Decorate 16(accEXT) Binding 0
- Decorate 32(localPayloadEXT) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/Test/baseResults/spv.OVR_multiview.vert.out b/Test/baseResults/spv.OVR_multiview.vert.out
index 90afed2..df7d949 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): 8000a
+// Generated by (magic number): 8000b
// 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 fc8e241..f9059c6 100644
--- a/Test/baseResults/spv.Operations.frag.out
+++ b/Test/baseResults/spv.Operations.frag.out
@@ -1,6 +1,6 @@
spv.Operations.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 591
Capability Shader
diff --git a/Test/baseResults/spv.RayCallable.rcall.out b/Test/baseResults/spv.RayCallable.rcall.out
index 75698fc..1eff1fa 100644
--- a/Test/baseResults/spv.RayCallable.rcall.out
+++ b/Test/baseResults/spv.RayCallable.rcall.out
@@ -1,6 +1,6 @@
spv.RayCallable.rcall
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 30
Capability RayTracingNV
diff --git a/Test/baseResults/spv.RayConstants.rgen.out b/Test/baseResults/spv.RayConstants.rgen.out
index 962aeb7..ebdcb50 100644
--- a/Test/baseResults/spv.RayConstants.rgen.out
+++ b/Test/baseResults/spv.RayConstants.rgen.out
@@ -1,6 +1,6 @@
spv.RayConstants.rgen
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 27
Capability RayTracingNV
diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out
index b708537..01fdbf0 100644
--- a/Test/baseResults/spv.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.RayGenShader.rgen.out
@@ -1,6 +1,6 @@
spv.RayGenShader.rgen
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 54
Capability RayTracingNV
diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out
index 48509b0..ae55e65 100644
--- a/Test/baseResults/spv.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.RayGenShader11.rgen.out
@@ -1,6 +1,6 @@
spv.RayGenShader11.rgen
// Module Version 10300
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 53
Capability RayTracingNV
diff --git a/Test/baseResults/spv.RayGenShaderArray.rgen.out b/Test/baseResults/spv.RayGenShaderArray.rgen.out
index 8ddfca9..c3bd191 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 89
Capability ShaderNonUniformEXT
diff --git a/Test/baseResults/spv.RayGenShaderMotion.rgen.out b/Test/baseResults/spv.RayGenShaderMotion.rgen.out
index f9b9fa5..9a3421c 100644
--- a/Test/baseResults/spv.RayGenShaderMotion.rgen.out
+++ b/Test/baseResults/spv.RayGenShaderMotion.rgen.out
@@ -1,6 +1,6 @@
spv.RayGenShaderMotion.rgen
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 47
Capability RayTracingKHR
@@ -26,7 +26,6 @@
Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
Decorate 29(accEXT) DescriptorSet 0
Decorate 29(accEXT) Binding 0
- Decorate 46(payloadEXT) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out
index 31dd2dd..4001462 100644
--- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out
@@ -1,6 +1,6 @@
spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 25
Capability Shader
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out
index 3447791..d0906a4 100644
--- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out
@@ -1,6 +1,6 @@
spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 20
Capability Shader
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out
index b578bd3..2a15286 100644
--- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out
@@ -1,6 +1,6 @@
spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 24
Capability Shader
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out
index 19bcff6..9a9e919 100644
--- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out
@@ -1,6 +1,6 @@
spv.WorkgroupMemoryExplicitLayout.NonBlock.comp
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 17
Capability Shader
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out
index 413fd2e..cb3bd31 100644
--- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out
@@ -1,6 +1,6 @@
spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 19
Capability Shader
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out
index 6a43e23..3d7ece1 100644
--- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out
@@ -1,6 +1,6 @@
spv.WorkgroupMemoryExplicitLayout.scalar.comp
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 29
Capability Shader
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out
index df4b8ae..5c8f86d 100644
--- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out
@@ -1,6 +1,6 @@
spv.WorkgroupMemoryExplicitLayout.std140.comp
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 29
Capability Shader
diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out
index e782784..bfc35e9 100644
--- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out
+++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out
@@ -1,6 +1,6 @@
spv.WorkgroupMemoryExplicitLayout.std430.comp
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 29
Capability Shader
diff --git a/Test/baseResults/spv.accessChain.frag.out b/Test/baseResults/spv.accessChain.frag.out
index 379131b..2426999 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 228
Capability Shader
diff --git a/Test/baseResults/spv.aggOps.frag.out b/Test/baseResults/spv.aggOps.frag.out
index 05b14ea..bc19f23 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): 8000a
+// Generated by (magic number): 8000b
// 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 ed21b38..ba3331a 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): 8000a
+// Generated by (magic number): 8000b
// 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 5e7ac9f..60262f7 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): 8000a
+// Generated by (magic number): 8000b
// 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 9b911cf..5daa156 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 18
Capability Shader
diff --git a/Test/baseResults/spv.atomiAddEXT.error.mesh.out b/Test/baseResults/spv.atomiAddEXT.error.mesh.out
new file mode 100644
index 0000000..ce8f3d7
--- /dev/null
+++ b/Test/baseResults/spv.atomiAddEXT.error.mesh.out
@@ -0,0 +1,7 @@
+spv.atomiAddEXT.error.mesh
+ERROR: 0:21: 'assign' : l-value required "mytask" (can't modify variable with storage qualifier taskPayloadSharedEXT in mesh shaders)
+ERROR: 0:21: 'out' : Non-L-value cannot be passed for 'out' or 'inout' parameters.
+ERROR: 2 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.atomiAddEXT.task.out b/Test/baseResults/spv.atomiAddEXT.task.out
new file mode 100644
index 0000000..9ff35aa
--- /dev/null
+++ b/Test/baseResults/spv.atomiAddEXT.task.out
@@ -0,0 +1,71 @@
+spv.atomiAddEXT.task
+// Module Version 10400
+// Generated by (magic number): 8000b
+// Id's are bound by 34
+
+ Capability MeshShadingEXT
+ Extension "SPV_EXT_mesh_shader"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TaskEXT 4 "main" 9 23 28
+ ExecutionMode 4 LocalSize 1 1 1
+ Source GLSL 460
+ SourceExtension "GL_EXT_mesh_shader"
+ Name 4 "main"
+ Name 7 "Buffer"
+ MemberName 7(Buffer) 0 "x"
+ Name 9 ""
+ Name 20 "structType"
+ MemberName 20(structType) 0 "y"
+ Name 21 "t2"
+ MemberName 21(t2) 0 "f"
+ Name 23 "t"
+ Name 26 "taskBlock"
+ MemberName 26(taskBlock) 0 "atom1"
+ Name 28 "mytask"
+ MemberDecorate 7(Buffer) 0 Coherent
+ MemberDecorate 7(Buffer) 0 Offset 0
+ Decorate 7(Buffer) Block
+ Decorate 9 DescriptorSet 0
+ Decorate 9 Binding 1
+ Decorate 19 ArrayStride 4
+ MemberDecorate 20(structType) 0 Offset 0
+ MemberDecorate 21(t2) 0 Offset 0
+ Decorate 21(t2) Block
+ Decorate 23(t) DescriptorSet 0
+ Decorate 23(t) Binding 0
+ Decorate 33 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7(Buffer): TypeStruct 6(int)
+ 8: TypePointer StorageBuffer 7(Buffer)
+ 9: 8(ptr) Variable StorageBuffer
+ 10: 6(int) Constant 0
+ 11: TypePointer StorageBuffer 6(int)
+ 13: 6(int) Constant 1
+ 14: TypeInt 32 0
+ 15: 14(int) Constant 1
+ 16: 14(int) Constant 0
+ 18: 14(int) Constant 3
+ 19: TypeArray 6(int) 18
+ 20(structType): TypeStruct 19
+ 21(t2): TypeStruct 20(structType)
+ 22: TypePointer StorageBuffer 21(t2)
+ 23(t): 22(ptr) Variable StorageBuffer
+ 26(taskBlock): TypeStruct 6(int)
+ 27: TypePointer TaskPayloadWorkgroupEXT 26(taskBlock)
+ 28(mytask): 27(ptr) Variable TaskPayloadWorkgroupEXT
+ 29: TypePointer TaskPayloadWorkgroupEXT 6(int)
+ 32: TypeVector 14(int) 3
+ 33: 32(ivec3) ConstantComposite 15 15 15
+ 4(main): 2 Function None 3
+ 5: Label
+ 12: 11(ptr) AccessChain 9 10
+ 17: 6(int) AtomicIAdd 12 15 16 13
+ 24: 11(ptr) AccessChain 23(t) 10 10 13
+ 25: 6(int) AtomicIAdd 24 15 16 13
+ 30: 29(ptr) AccessChain 28(mytask) 10
+ 31: 6(int) AtomicIAdd 30 15 16 13
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.atomic.comp.out b/Test/baseResults/spv.atomic.comp.out
index e74066c..7c001ae 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 74
Capability Shader
diff --git a/Test/baseResults/spv.atomicAdd.bufferReference.comp.out b/Test/baseResults/spv.atomicAdd.bufferReference.comp.out
index 9ecc742..a00c45a 100644
--- a/Test/baseResults/spv.atomicAdd.bufferReference.comp.out
+++ b/Test/baseResults/spv.atomicAdd.bufferReference.comp.out
@@ -1,6 +1,6 @@
spv.atomicAdd.bufferReference.comp
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 188
Capability Shader
diff --git a/Test/baseResults/spv.atomicFloat.comp.out b/Test/baseResults/spv.atomicFloat.comp.out
index 3799557..acb5d81 100644
--- a/Test/baseResults/spv.atomicFloat.comp.out
+++ b/Test/baseResults/spv.atomicFloat.comp.out
@@ -1,6 +1,6 @@
spv.atomicFloat.comp
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 470
Capability Shader
diff --git a/Test/baseResults/spv.atomicInt64.comp.out b/Test/baseResults/spv.atomicInt64.comp.out
index 5b2e134..24805cc 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 149
Capability Shader
diff --git a/Test/baseResults/spv.atomicStoreInt64.comp.out b/Test/baseResults/spv.atomicStoreInt64.comp.out
index 3adadcb..c2b3f30 100644
--- a/Test/baseResults/spv.atomicStoreInt64.comp.out
+++ b/Test/baseResults/spv.atomicStoreInt64.comp.out
@@ -1,6 +1,6 @@
spv.atomicStoreInt64.comp
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 25
Capability Shader
diff --git a/Test/baseResults/spv.barrier.vert.out b/Test/baseResults/spv.barrier.vert.out
index 7199882..5208412 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): 8000a
+// Generated by (magic number): 8000b
// 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 88b2a09..9b3c9ec 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 198
Capability Shader
diff --git a/Test/baseResults/spv.bool.vert.out b/Test/baseResults/spv.bool.vert.out
index fb7c686..265d900 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): 8000a
+// Generated by (magic number): 8000b
// 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 004c204..c234cb4 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): 8000a
+// Generated by (magic number): 8000b
// 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 30918ab..53ef876 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): 8000a
+// Generated by (magic number): 8000b
// 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 3475266..3afe643 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): 8000a
+// Generated by (magic number): 8000b
// 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 b49c129..c44ad2a 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): 8000a
+// Generated by (magic number): 8000b
// 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 f9ab60d..93c3f70 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): 8000a
+// Generated by (magic number): 8000b
// 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 9dd1c7b..eec3cf3 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): 8000a
+// Generated by (magic number): 8000b
// 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 7cd5cb5..319684f 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): 8000a
+// Generated by (magic number): 8000b
// 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 5ce24ac..dd43089 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): 8000a
+// Generated by (magic number): 8000b
// 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 34df753..4f994e1 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): 8000a
+// Generated by (magic number): 8000b
// 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 ab1b4db..34d3d59 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): 8000a
+// Generated by (magic number): 8000b
// 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 a9d9dcf..ee04d36 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): 8000a
+// Generated by (magic number): 8000b
// 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 59ad6d0..97c961a 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): 8000a
+// Generated by (magic number): 8000b
// 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 e20f3b7..31a39f2 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): 8000a
+// Generated by (magic number): 8000b
// 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 65ad1ca..9f66b5c 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): 8000a
+// Generated by (magic number): 8000b
// 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 e06bca4..1ccb609 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): 8000a
+// Generated by (magic number): 8000b
// 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 bf4d3a2..0bcb34b 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): 8000a
+// Generated by (magic number): 8000b
// 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 abc9187..758a30b 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): 8000a
+// Generated by (magic number): 8000b
// 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 4282a36..070adb7 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): 8000a
+// Generated by (magic number): 8000b
// 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 65d4665..4960144 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): 8000a
+// Generated by (magic number): 8000b
// 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 1e5091c..ff7ede7 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): 8000a
+// Generated by (magic number): 8000b
// 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 fbdbb6a..133190e 100644
--- 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 71
Capability Shader
diff --git a/Test/baseResults/spv.builtInXFB.vert.out b/Test/baseResults/spv.builtInXFB.vert.out
index 1f612e2..b3a3e12 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 21
Capability Shader
diff --git a/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out b/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out
index 8daa79e..0191185 100644
--- a/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out
+++ b/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out
@@ -1,6 +1,6 @@
spv.builtin.PrimitiveShadingRateEXT.vert
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 26
Capability Shader
diff --git a/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out b/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out
index 95b94d2..5707fb9 100644
--- a/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out
+++ b/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out
@@ -3,7 +3,7 @@
"precision mediump int; precision highp float;"
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 12
Capability Shader
diff --git a/Test/baseResults/spv.computeShaderDerivatives.comp.out b/Test/baseResults/spv.computeShaderDerivatives.comp.out
index a713845..4761078 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): 8000a
+// Generated by (magic number): 8000b
// 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 3c3d54e..52b5474 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): 8000a
+// Generated by (magic number): 8000b
// 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 dfd4596..84c816b 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): 8000a
+// Generated by (magic number): 8000b
// 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 2e53e9b..f31fa85 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): 8000a
+// Generated by (magic number): 8000b
// 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 db637a9..3dc42ed 100644
--- a/Test/baseResults/spv.constConstruct.vert.out
+++ b/Test/baseResults/spv.constConstruct.vert.out
@@ -1,12 +1,14 @@
spv.constConstruct.vert
-Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 150
Capability Shader
+ Capability Float16
Capability Float64
Capability Int64
+ Capability Int16
+ Capability Int8
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main"
diff --git a/Test/baseResults/spv.constStruct.vert.out b/Test/baseResults/spv.constStruct.vert.out
index 61d0e54..6abc009 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): 8000a
+// Generated by (magic number): 8000b
// 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 73d663b..491a33f 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): 8000a
+// Generated by (magic number): 8000b
// 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 cf34ae2..038711d 100644
--- a/Test/baseResults/spv.controlFlowAttributes.frag.out
+++ b/Test/baseResults/spv.controlFlowAttributes.frag.out
@@ -9,7 +9,7 @@
Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 123
Capability Shader
diff --git a/Test/baseResults/spv.conversion.frag.out b/Test/baseResults/spv.conversion.frag.out
index b600b38..5ddf7db 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): 8000a
+// Generated by (magic number): 8000b
// 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 0a609df..b594af2 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): 8000a
+// Generated by (magic number): 8000b
// 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 980d1bd..b3bc623 100644
--- a/Test/baseResults/spv.dataOut.frag.out
+++ b/Test/baseResults/spv.dataOut.frag.out
@@ -1,7 +1,7 @@
spv.dataOut.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// 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 a75e8d5..d07cfe9 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): 8000a
+// Generated by (magic number): 8000b
// 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 1c29410..712cd13 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 38
Capability Shader
diff --git a/Test/baseResults/spv.dead-after-continue.vert.out b/Test/baseResults/spv.dead-after-continue.vert.out
index 6d8d7d9..1102481 100644
--- a/Test/baseResults/spv.dead-after-continue.vert.out
+++ b/Test/baseResults/spv.dead-after-continue.vert.out
@@ -1,6 +1,6 @@
spv.dead-after-continue.vert
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 29
Capability Shader
diff --git a/Test/baseResults/spv.dead-after-discard.frag.out b/Test/baseResults/spv.dead-after-discard.frag.out
index 987f5a2..2948e22 100644
--- a/Test/baseResults/spv.dead-after-discard.frag.out
+++ b/Test/baseResults/spv.dead-after-discard.frag.out
@@ -1,6 +1,6 @@
spv.dead-after-discard.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 15
Capability Shader
diff --git a/Test/baseResults/spv.dead-after-loop-break.vert.out b/Test/baseResults/spv.dead-after-loop-break.vert.out
index 2d9e35a..490dbcc 100644
--- a/Test/baseResults/spv.dead-after-loop-break.vert.out
+++ b/Test/baseResults/spv.dead-after-loop-break.vert.out
@@ -1,6 +1,6 @@
spv.dead-after-loop-break.vert
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 36
Capability Shader
diff --git a/Test/baseResults/spv.dead-after-return.vert.out b/Test/baseResults/spv.dead-after-return.vert.out
index d6ba2c7..0969363 100644
--- a/Test/baseResults/spv.dead-after-return.vert.out
+++ b/Test/baseResults/spv.dead-after-return.vert.out
@@ -1,6 +1,6 @@
spv.dead-after-return.vert
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 14
Capability Shader
diff --git a/Test/baseResults/spv.dead-after-switch-break.vert.out b/Test/baseResults/spv.dead-after-switch-break.vert.out
index f8bc4d0..744355d 100644
--- a/Test/baseResults/spv.dead-after-switch-break.vert.out
+++ b/Test/baseResults/spv.dead-after-switch-break.vert.out
@@ -1,6 +1,6 @@
spv.dead-after-switch-break.vert
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 21
Capability Shader
diff --git a/Test/baseResults/spv.dead-complex-continue-after-return.vert.out b/Test/baseResults/spv.dead-complex-continue-after-return.vert.out
index 3db78ec..3c41ff8 100644
--- a/Test/baseResults/spv.dead-complex-continue-after-return.vert.out
+++ b/Test/baseResults/spv.dead-complex-continue-after-return.vert.out
@@ -1,6 +1,6 @@
spv.dead-complex-continue-after-return.vert
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 31
Capability Shader
diff --git a/Test/baseResults/spv.dead-complex-merge-after-return.vert.out b/Test/baseResults/spv.dead-complex-merge-after-return.vert.out
index cc1b25c..52431a3 100644
--- a/Test/baseResults/spv.dead-complex-merge-after-return.vert.out
+++ b/Test/baseResults/spv.dead-complex-merge-after-return.vert.out
@@ -1,6 +1,6 @@
spv.dead-complex-merge-after-return.vert
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 36
Capability Shader
diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out
index 78044ff..67175de 100644
--- a/Test/baseResults/spv.debugInfo.1.1.frag.out
+++ b/Test/baseResults/spv.debugInfo.1.1.frag.out
@@ -1,6 +1,6 @@
spv.debugInfo.frag
// Module Version 10300
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 124
Capability Shader
@@ -136,6 +136,7 @@
109: 7(int) Constant 1
111: TypePointer Output 10(float)
114: 10(float) Constant 1092616192
+ Line 1 28 11
5(main): 3 Function None 4
6: Label
57(param): 9(ptr) Variable Function
@@ -195,9 +196,11 @@
Store 97(i) 18
Branch 98
98: Label
+ Line 1 46 0
LoopMerge 100 101 None
Branch 102
102: Label
+ Line 1 46 0
103: 7(int) Load 97(i)
105: 37(bool) SLessThan 103 104
BranchConditional 105 99 100
@@ -237,6 +240,7 @@
118: Label
Return
FunctionEnd
+ Line 1 16 13
14(foo(struct-S-i11;): 11(fvec4) Function None 12
13(s): 9(ptr) FunctionParameter
15: Label
diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out
index e146398..b9eb496 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 124
Capability Shader
@@ -137,6 +137,7 @@
109: 7(int) Constant 1
111: TypePointer Output 10(float)
114: 10(float) Constant 1092616192
+ Line 1 28 11
5(main): 3 Function None 4
6: Label
57(param): 9(ptr) Variable Function
@@ -196,9 +197,11 @@
Store 97(i) 18
Branch 98
98: Label
+ Line 1 46 0
LoopMerge 100 101 None
Branch 102
102: Label
+ Line 1 46 0
103: 7(int) Load 97(i)
105: 37(bool) SLessThan 103 104
BranchConditional 105 99 100
@@ -238,6 +241,7 @@
118: Label
Return
FunctionEnd
+ Line 1 16 13
14(foo(struct-S-i11;): 11(fvec4) Function None 12
13(s): 9(ptr) FunctionParameter
15: Label
diff --git a/Test/baseResults/spv.debugPrintf.frag.out b/Test/baseResults/spv.debugPrintf.frag.out
index 6517415..428e598 100644
--- a/Test/baseResults/spv.debugPrintf.frag.out
+++ b/Test/baseResults/spv.debugPrintf.frag.out
@@ -1,6 +1,6 @@
spv.debugPrintf.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 17
Capability Shader
diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out
new file mode 100644
index 0000000..9e46450
--- /dev/null
+++ b/Test/baseResults/spv.debuginfo.glsl.comp.out
@@ -0,0 +1,1063 @@
+spv.debuginfo.glsl.comp
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 817
+
+ Capability Shader
+ Extension "SPV_KHR_non_semantic_info"
+ 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 13 "main" 118
+ ExecutionMode 13 LocalSize 10 10 1
+ 8: String "uint"
+ 14: String "main"
+ 17: String ""
+ 24: String "float"
+ 36: String "springForce"
+ 42: String "p0"
+ 46: String "p1"
+ 49: String "restDist"
+ 54: String "dist"
+ 65: String "int"
+ 71: String "sphereRadius"
+ 82: String "gravity"
+ 87: String "particleCount"
+ 90: String "UBO"
+ 95: String "params"
+ 114: String "id"
+ 120: String "gl_GlobalInvocationID"
+ 125: String "index"
+ 147: String "bool"
+ 155: String "normal"
+ 161: String "pinned"
+ 163: String "Particle"
+ 169: String "particleIn"
+ 173: String "ParticleIn"
+ 191: String "particleOut"
+ 194: String "ParticleOut"
+ 213: String "force"
+ 225: String "pos"
+ 234: String "vel"
+ 487: String "f"
+ 531: String "sphereDist"
+ 575: String "calculateNormals"
+ 578: String "PushConsts"
+ 583: String "pushConsts"
+ 610: String "a"
+ 622: String "b"
+ 638: String "c"
+ Name 13 "main"
+ Name 35 "springForce(vf3;vf3;f1;"
+ Name 32 "p0"
+ Name 33 "p1"
+ Name 34 "restDist"
+ Name 52 "dist"
+ Name 69 "UBO"
+ MemberName 69(UBO) 0 "deltaT"
+ MemberName 69(UBO) 1 "particleMass"
+ MemberName 69(UBO) 2 "springStiffness"
+ MemberName 69(UBO) 3 "damping"
+ MemberName 69(UBO) 4 "restDistH"
+ MemberName 69(UBO) 5 "restDistV"
+ MemberName 69(UBO) 6 "restDistD"
+ MemberName 69(UBO) 7 "sphereRadius"
+ MemberName 69(UBO) 8 "spherePos"
+ MemberName 69(UBO) 9 "gravity"
+ MemberName 69(UBO) 10 "particleCount"
+ Name 93 "params"
+ Name 112 "id"
+ Name 118 "gl_GlobalInvocationID"
+ Name 123 "index"
+ Name 153 "Particle"
+ MemberName 153(Particle) 0 "pos"
+ MemberName 153(Particle) 1 "vel"
+ MemberName 153(Particle) 2 "uv"
+ MemberName 153(Particle) 3 "normal"
+ MemberName 153(Particle) 4 "pinned"
+ Name 167 "ParticleIn"
+ MemberName 167(ParticleIn) 0 "particleIn"
+ Name 175 ""
+ Name 189 "ParticleOut"
+ MemberName 189(ParticleOut) 0 "particleOut"
+ Name 197 ""
+ Name 211 "force"
+ Name 223 "pos"
+ Name 232 "vel"
+ Name 249 "param"
+ Name 253 "param"
+ Name 255 "param"
+ Name 273 "param"
+ Name 277 "param"
+ Name 279 "param"
+ Name 301 "param"
+ Name 305 "param"
+ Name 307 "param"
+ Name 324 "param"
+ Name 328 "param"
+ Name 330 "param"
+ Name 360 "param"
+ Name 364 "param"
+ Name 366 "param"
+ Name 391 "param"
+ Name 395 "param"
+ Name 397 "param"
+ Name 430 "param"
+ Name 434 "param"
+ Name 436 "param"
+ Name 465 "param"
+ Name 469 "param"
+ Name 471 "param"
+ Name 485 "f"
+ Name 529 "sphereDist"
+ Name 573 "PushConsts"
+ MemberName 573(PushConsts) 0 "calculateNormals"
+ Name 581 "pushConsts"
+ Name 591 "normal"
+ Name 608 "a"
+ Name 620 "b"
+ Name 636 "c"
+ MemberDecorate 69(UBO) 0 Offset 0
+ MemberDecorate 69(UBO) 1 Offset 4
+ MemberDecorate 69(UBO) 2 Offset 8
+ MemberDecorate 69(UBO) 3 Offset 12
+ MemberDecorate 69(UBO) 4 Offset 16
+ MemberDecorate 69(UBO) 5 Offset 20
+ MemberDecorate 69(UBO) 6 Offset 24
+ MemberDecorate 69(UBO) 7 Offset 28
+ MemberDecorate 69(UBO) 8 Offset 32
+ MemberDecorate 69(UBO) 9 Offset 48
+ MemberDecorate 69(UBO) 10 Offset 64
+ Decorate 69(UBO) Block
+ Decorate 93(params) DescriptorSet 0
+ Decorate 93(params) Binding 2
+ Decorate 118(gl_GlobalInvocationID) BuiltIn GlobalInvocationId
+ MemberDecorate 153(Particle) 0 Offset 0
+ MemberDecorate 153(Particle) 1 Offset 16
+ MemberDecorate 153(Particle) 2 Offset 32
+ MemberDecorate 153(Particle) 3 Offset 48
+ MemberDecorate 153(Particle) 4 Offset 64
+ Decorate 165 ArrayStride 80
+ MemberDecorate 167(ParticleIn) 0 Offset 0
+ Decorate 167(ParticleIn) BufferBlock
+ Decorate 175 DescriptorSet 0
+ Decorate 175 Binding 0
+ Decorate 187 ArrayStride 80
+ MemberDecorate 189(ParticleOut) 0 Offset 0
+ Decorate 189(ParticleOut) BufferBlock
+ Decorate 197 DescriptorSet 0
+ Decorate 197 Binding 1
+ MemberDecorate 573(PushConsts) 0 Offset 0
+ Decorate 573(PushConsts) Block
+ Decorate 816 BuiltIn WorkgroupSize
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 6: TypeInt 32 0
+ 9: 6(int) Constant 32
+ 10: 6(int) Constant 6
+ 11: 6(int) Constant 0
+ 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11
+ 12: 6(int) Constant 3
+ 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3
+ 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17
+ 19: 6(int) Constant 1
+ 20: 6(int) Constant 4
+ 21: 6(int) Constant 2
+ 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21
+ 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11
+ 23: TypeFloat 32
+ 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11
+ 26: TypeVector 23(float) 3
+ 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12
+ 28: TypePointer Function 26(fvec3)
+ 29: TypePointer Function 23(float)
+ 30: TypeFunction 26(fvec3) 28(ptr) 28(ptr) 29(ptr)
+ 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 27 27 27 25
+ 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 36 31 16 11 11 18 36 12 11
+ 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 42 27 16 11 11 37 20 19
+ 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
+ 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 46 27 16 11 11 37 20 21
+ 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 25 16 11 11 37 20 12
+ 55: 6(int) Constant 68
+ 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 54 27 16 55 11 37 20
+ 62: TypeVector 23(float) 4
+ 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20
+ 64: TypeInt 32 1
+ 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 65 9 20 11
+ 67: TypeVector 64(int) 2
+ 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 66 21
+ 69(UBO): TypeStruct 23(float) 23(float) 23(float) 23(float) 23(float) 23(float) 23(float) 23(float) 62(fvec4) 62(fvec4) 67(ivec2)
+ 72: 6(int) Constant 56
+ 73: 6(int) Constant 8
+ 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12
+ 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12
+ 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12
+ 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12
+ 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12
+ 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12
+ 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12
+ 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12
+ 83: 6(int) Constant 58
+ 84: 6(int) Constant 7
+ 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 82 63 16 83 84 11 11 12
+ 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 82 63 16 83 84 11 11 12
+ 88: 6(int) Constant 59
+ 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 87 68 16 88 73 11 11 12
+ 91: 6(int) Constant 69
+ 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 90 19 16 91 11 18 90 11 12 70 74 75 76 77 78 79 80 81 85 86
+ 92: TypePointer Uniform 69(UBO)
+ 93(params): 92(ptr) Variable Uniform
+ 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 95 89 16 91 11 18 95 93(params) 73
+ 96: 64(int) Constant 2
+ 97: TypePointer Uniform 23(float)
+ 109: TypeVector 6(int) 3
+ 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 7 12
+ 111: TypePointer Function 109(ivec3)
+ 115: 6(int) Constant 74
+ 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 114 110 16 115 11 15 20
+ 117: TypePointer Input 109(ivec3)
+118(gl_GlobalInvocationID): 117(ptr) Variable Input
+ 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 120 110 16 115 11 18 120 118(gl_GlobalInvocationID) 73
+ 122: TypePointer Function 6(int)
+ 126: 6(int) Constant 76
+ 124: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 125 7 16 126 11 15 20
+ 130: 64(int) Constant 10
+ 131: TypePointer Uniform 64(int)
+ 146: TypeBool
+ 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 153(Particle): TypeStruct 62(fvec4) 62(fvec4) 62(fvec4) 62(fvec4) 23(float)
+ 156: 6(int) Constant 31
+ 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 155 63 16 156 84 11 11 12
+ 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 155 63 16 156 84 11 11 12
+ 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 155 63 16 156 84 11 11 12
+ 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 155 63 16 156 84 11 11 12
+ 160: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 161 25 16 9 73 11 11 12
+ 164: 6(int) Constant 81
+ 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 163 19 16 164 11 18 163 11 12 154 157 158 159 160
+ 165: TypeRuntimeArray 153(Particle)
+ 166: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 162 11
+ 167(ParticleIn): TypeStruct 165
+ 170: 6(int) Constant 36
+ 171: 6(int) Constant 11
+ 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 169 166 16 170 171 11 11 12
+ 172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 173 19 16 164 11 18 173 11 12 168
+ 174: TypePointer Uniform 167(ParticleIn)
+ 175: 174(ptr) Variable Uniform
+ 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 172 16 164 11 18 17 175 73
+ 177: 64(int) Constant 0
+ 179: 64(int) Constant 4
+ 182: 23(float) Constant 1065353216
+ 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 187: TypeRuntimeArray 153(Particle)
+ 188: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 162 11
+189(ParticleOut): TypeStruct 187
+ 192: 6(int) Constant 40
+ 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 191 188 16 192 171 11 11 12
+ 195: 6(int) Constant 82
+ 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 194 19 16 195 11 18 194 11 12 190
+ 196: TypePointer Uniform 189(ParticleOut)
+ 197: 196(ptr) Variable Uniform
+ 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 193 16 195 11 18 17 197 73
+ 201: TypePointer Uniform 62(fvec4)
+ 206: 64(int) Constant 1
+ 207: 23(float) Constant 0
+ 208: 62(fvec4) ConstantComposite 207 207 207 207
+ 214: 6(int) Constant 88
+ 212: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 213 27 16 214 11 15 20
+ 216: 64(int) Constant 9
+ 226: 6(int) Constant 90
+ 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 225 27 16 226 11 15 20
+ 235: 6(int) Constant 91
+ 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 234 27 16 235 11 15 20
+ 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 267: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 300: 64(int) Constant 5
+ 315: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 338: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 359: 64(int) Constant 6
+ 374: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 380: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 409: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 419: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 477: 64(int) Constant 3
+ 488: 6(int) Constant 130
+ 486: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 487 27 16 488 11 15 20
+ 502: 23(float) Constant 1056964608
+ 532: 6(int) Constant 135
+ 530: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 531 27 16 532 11 15 20
+ 538: 64(int) Constant 8
+ 545: 64(int) Constant 7
+ 548: 23(float) Constant 1008981770
+ 550: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 573(PushConsts): TypeStruct 6(int)
+ 576: 6(int) Constant 63
+ 574: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 575 7 16 576 84 11 11 12
+ 579: 6(int) Constant 144
+ 577: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 578 19 16 579 11 18 578 11 12 574
+ 580: TypePointer PushConstant 573(PushConsts)
+ 581(pushConsts): 580(ptr) Variable PushConstant
+ 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 583 577 16 579 11 18 583 581(pushConsts) 73
+ 584: TypePointer PushConstant 6(int)
+ 587: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 593: 6(int) Constant 145
+ 592: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 155 27 16 593 11 15 20
+ 595: 26(fvec3) ConstantComposite 207 207 207
+ 598: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 604: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 611: 6(int) Constant 149
+ 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 610 27 16 611 11 15 20
+ 623: 6(int) Constant 150
+ 621: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 622 27 16 623 11 15 20
+ 639: 6(int) Constant 151
+ 637: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 638 27 16 639 11 15 20
+ 666: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 713: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 719: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 766: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11
+ 815: 6(int) Constant 10
+ 816: 109(ivec3) ConstantComposite 815 815 19
+ 13(main): 3 Function None 4
+ 22: Label
+ 112(id): 111(ptr) Variable Function
+ 123(index): 122(ptr) Variable Function
+ 211(force): 28(ptr) Variable Function
+ 223(pos): 28(ptr) Variable Function
+ 232(vel): 28(ptr) Variable Function
+ 249(param): 28(ptr) Variable Function
+ 253(param): 28(ptr) Variable Function
+ 255(param): 29(ptr) Variable Function
+ 273(param): 28(ptr) Variable Function
+ 277(param): 28(ptr) Variable Function
+ 279(param): 29(ptr) Variable Function
+ 301(param): 28(ptr) Variable Function
+ 305(param): 28(ptr) Variable Function
+ 307(param): 29(ptr) Variable Function
+ 324(param): 28(ptr) Variable Function
+ 328(param): 28(ptr) Variable Function
+ 330(param): 29(ptr) Variable Function
+ 360(param): 28(ptr) Variable Function
+ 364(param): 28(ptr) Variable Function
+ 366(param): 29(ptr) Variable Function
+ 391(param): 28(ptr) Variable Function
+ 395(param): 28(ptr) Variable Function
+ 397(param): 29(ptr) Variable Function
+ 430(param): 28(ptr) Variable Function
+ 434(param): 28(ptr) Variable Function
+ 436(param): 29(ptr) Variable Function
+ 465(param): 28(ptr) Variable Function
+ 469(param): 28(ptr) Variable Function
+ 471(param): 29(ptr) Variable Function
+ 485(f): 28(ptr) Variable Function
+ 529(sphereDist): 28(ptr) Variable Function
+ 591(normal): 28(ptr) Variable Function
+ 608(a): 28(ptr) Variable Function
+ 620(b): 28(ptr) Variable Function
+ 636(c): 28(ptr) Variable Function
+ 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main)
+ 116: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 113 112(id) 44
+ 121: 109(ivec3) Load 118(gl_GlobalInvocationID)
+ Store 112(id) 121
+ 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 124 123(index) 44
+ 128: 122(ptr) AccessChain 112(id) 19
+ 129: 6(int) Load 128
+ 132: 131(ptr) AccessChain 93(params) 130 11
+ 133: 64(int) Load 132
+ 134: 6(int) Bitcast 133
+ 135: 6(int) IMul 129 134
+ 136: 122(ptr) AccessChain 112(id) 11
+ 137: 6(int) Load 136
+ 138: 6(int) IAdd 135 137
+ Store 123(index) 138
+ 139: 6(int) Load 123(index)
+ 140: 131(ptr) AccessChain 93(params) 130 11
+ 141: 64(int) Load 140
+ 142: 131(ptr) AccessChain 93(params) 130 19
+ 143: 64(int) Load 142
+ 144: 64(int) IMul 141 143
+ 145: 6(int) Bitcast 144
+ 149: 146(bool) UGreaterThan 139 145
+ SelectionMerge 151 None
+ BranchConditional 149 150 151
+ 150: Label
+ Return
+ 151: Label
+ 178: 6(int) Load 123(index)
+ 180: 97(ptr) AccessChain 175 177 178 179
+ 181: 23(float) Load 180
+ 184: 146(bool) FOrdEqual 181 182
+ SelectionMerge 186 None
+ BranchConditional 184 185 186
+ 185: Label
+ 199: 6(int) Load 123(index)
+ 200: 6(int) Load 123(index)
+ 202: 201(ptr) AccessChain 197 177 200 177
+ 203: 62(fvec4) Load 202
+ 204: 201(ptr) AccessChain 197 177 199 177
+ Store 204 203
+ 205: 6(int) Load 123(index)
+ 209: 201(ptr) AccessChain 197 177 205 206
+ Store 209 208
+ Return
+ 186: Label
+ 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 212 211(force) 44
+ 217: 201(ptr) AccessChain 93(params) 216
+ 218: 62(fvec4) Load 217
+ 219: 26(fvec3) VectorShuffle 218 218 0 1 2
+ 220: 97(ptr) AccessChain 93(params) 206
+ 221: 23(float) Load 220
+ 222: 26(fvec3) VectorTimesScalar 219 221
+ Store 211(force) 222
+ 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 224 223(pos) 44
+ 228: 6(int) Load 123(index)
+ 229: 201(ptr) AccessChain 175 177 228 177
+ 230: 62(fvec4) Load 229
+ 231: 26(fvec3) VectorShuffle 230 230 0 1 2
+ Store 223(pos) 231
+ 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 233 232(vel) 44
+ 237: 6(int) Load 123(index)
+ 238: 201(ptr) AccessChain 175 177 237 206
+ 239: 62(fvec4) Load 238
+ 240: 26(fvec3) VectorShuffle 239 239 0 1 2
+ Store 232(vel) 240
+ 241: 122(ptr) AccessChain 112(id) 11
+ 242: 6(int) Load 241
+ 244: 146(bool) UGreaterThan 242 11
+ SelectionMerge 246 None
+ BranchConditional 244 245 246
+ 245: Label
+ 247: 6(int) Load 123(index)
+ 248: 6(int) ISub 247 19
+ 250: 201(ptr) AccessChain 175 177 248 177
+ 251: 62(fvec4) Load 250
+ 252: 26(fvec3) VectorShuffle 251 251 0 1 2
+ Store 249(param) 252
+ 254: 26(fvec3) Load 223(pos)
+ Store 253(param) 254
+ 256: 97(ptr) AccessChain 93(params) 179
+ 257: 23(float) Load 256
+ Store 255(param) 257
+ 258: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 249(param) 253(param) 255(param)
+ 259: 26(fvec3) Load 211(force)
+ 260: 26(fvec3) FAdd 259 258
+ Store 211(force) 260
+ Branch 246
+ 246: Label
+ 261: 122(ptr) AccessChain 112(id) 11
+ 262: 6(int) Load 261
+ 263: 131(ptr) AccessChain 93(params) 130 11
+ 264: 64(int) Load 263
+ 265: 64(int) ISub 264 206
+ 266: 6(int) Bitcast 265
+ 268: 146(bool) ULessThan 262 266
+ SelectionMerge 270 None
+ BranchConditional 268 269 270
+ 269: Label
+ 271: 6(int) Load 123(index)
+ 272: 6(int) IAdd 271 19
+ 274: 201(ptr) AccessChain 175 177 272 177
+ 275: 62(fvec4) Load 274
+ 276: 26(fvec3) VectorShuffle 275 275 0 1 2
+ Store 273(param) 276
+ 278: 26(fvec3) Load 223(pos)
+ Store 277(param) 278
+ 280: 97(ptr) AccessChain 93(params) 179
+ 281: 23(float) Load 280
+ Store 279(param) 281
+ 282: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 273(param) 277(param) 279(param)
+ 283: 26(fvec3) Load 211(force)
+ 284: 26(fvec3) FAdd 283 282
+ Store 211(force) 284
+ Branch 270
+ 270: Label
+ 285: 122(ptr) AccessChain 112(id) 19
+ 286: 6(int) Load 285
+ 287: 131(ptr) AccessChain 93(params) 130 19
+ 288: 64(int) Load 287
+ 289: 64(int) ISub 288 206
+ 290: 6(int) Bitcast 289
+ 292: 146(bool) ULessThan 286 290
+ SelectionMerge 294 None
+ BranchConditional 292 293 294
+ 293: Label
+ 295: 6(int) Load 123(index)
+ 296: 131(ptr) AccessChain 93(params) 130 11
+ 297: 64(int) Load 296
+ 298: 6(int) Bitcast 297
+ 299: 6(int) IAdd 295 298
+ 302: 201(ptr) AccessChain 175 177 299 177
+ 303: 62(fvec4) Load 302
+ 304: 26(fvec3) VectorShuffle 303 303 0 1 2
+ Store 301(param) 304
+ 306: 26(fvec3) Load 223(pos)
+ Store 305(param) 306
+ 308: 97(ptr) AccessChain 93(params) 300
+ 309: 23(float) Load 308
+ Store 307(param) 309
+ 310: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 301(param) 305(param) 307(param)
+ 311: 26(fvec3) Load 211(force)
+ 312: 26(fvec3) FAdd 311 310
+ Store 211(force) 312
+ Branch 294
+ 294: Label
+ 313: 122(ptr) AccessChain 112(id) 19
+ 314: 6(int) Load 313
+ 316: 146(bool) UGreaterThan 314 11
+ SelectionMerge 318 None
+ BranchConditional 316 317 318
+ 317: Label
+ 319: 6(int) Load 123(index)
+ 320: 131(ptr) AccessChain 93(params) 130 11
+ 321: 64(int) Load 320
+ 322: 6(int) Bitcast 321
+ 323: 6(int) ISub 319 322
+ 325: 201(ptr) AccessChain 175 177 323 177
+ 326: 62(fvec4) Load 325
+ 327: 26(fvec3) VectorShuffle 326 326 0 1 2
+ Store 324(param) 327
+ 329: 26(fvec3) Load 223(pos)
+ Store 328(param) 329
+ 331: 97(ptr) AccessChain 93(params) 300
+ 332: 23(float) Load 331
+ Store 330(param) 332
+ 333: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 324(param) 328(param) 330(param)
+ 334: 26(fvec3) Load 211(force)
+ 335: 26(fvec3) FAdd 334 333
+ Store 211(force) 335
+ Branch 318
+ 318: Label
+ 336: 122(ptr) AccessChain 112(id) 11
+ 337: 6(int) Load 336
+ 339: 146(bool) UGreaterThan 337 11
+ SelectionMerge 341 None
+ BranchConditional 339 340 341
+ 340: Label
+ 342: 122(ptr) AccessChain 112(id) 19
+ 343: 6(int) Load 342
+ 344: 131(ptr) AccessChain 93(params) 130 19
+ 345: 64(int) Load 344
+ 346: 64(int) ISub 345 206
+ 347: 6(int) Bitcast 346
+ 349: 146(bool) ULessThan 343 347
+ Branch 341
+ 341: Label
+ 350: 146(bool) Phi 339 318 349 340
+ SelectionMerge 352 None
+ BranchConditional 350 351 352
+ 351: Label
+ 353: 6(int) Load 123(index)
+ 354: 131(ptr) AccessChain 93(params) 130 11
+ 355: 64(int) Load 354
+ 356: 6(int) Bitcast 355
+ 357: 6(int) IAdd 353 356
+ 358: 6(int) ISub 357 19
+ 361: 201(ptr) AccessChain 175 177 358 177
+ 362: 62(fvec4) Load 361
+ 363: 26(fvec3) VectorShuffle 362 362 0 1 2
+ Store 360(param) 363
+ 365: 26(fvec3) Load 223(pos)
+ Store 364(param) 365
+ 367: 97(ptr) AccessChain 93(params) 359
+ 368: 23(float) Load 367
+ Store 366(param) 368
+ 369: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 360(param) 364(param) 366(param)
+ 370: 26(fvec3) Load 211(force)
+ 371: 26(fvec3) FAdd 370 369
+ Store 211(force) 371
+ Branch 352
+ 352: Label
+ 372: 122(ptr) AccessChain 112(id) 11
+ 373: 6(int) Load 372
+ 375: 146(bool) UGreaterThan 373 11
+ SelectionMerge 377 None
+ BranchConditional 375 376 377
+ 376: Label
+ 378: 122(ptr) AccessChain 112(id) 19
+ 379: 6(int) Load 378
+ 381: 146(bool) UGreaterThan 379 11
+ Branch 377
+ 377: Label
+ 382: 146(bool) Phi 375 352 381 376
+ SelectionMerge 384 None
+ BranchConditional 382 383 384
+ 383: Label
+ 385: 6(int) Load 123(index)
+ 386: 131(ptr) AccessChain 93(params) 130 11
+ 387: 64(int) Load 386
+ 388: 6(int) Bitcast 387
+ 389: 6(int) ISub 385 388
+ 390: 6(int) ISub 389 19
+ 392: 201(ptr) AccessChain 175 177 390 177
+ 393: 62(fvec4) Load 392
+ 394: 26(fvec3) VectorShuffle 393 393 0 1 2
+ Store 391(param) 394
+ 396: 26(fvec3) Load 223(pos)
+ Store 395(param) 396
+ 398: 97(ptr) AccessChain 93(params) 359
+ 399: 23(float) Load 398
+ Store 397(param) 399
+ 400: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 391(param) 395(param) 397(param)
+ 401: 26(fvec3) Load 211(force)
+ 402: 26(fvec3) FAdd 401 400
+ Store 211(force) 402
+ Branch 384
+ 384: Label
+ 403: 122(ptr) AccessChain 112(id) 11
+ 404: 6(int) Load 403
+ 405: 131(ptr) AccessChain 93(params) 130 11
+ 406: 64(int) Load 405
+ 407: 64(int) ISub 406 206
+ 408: 6(int) Bitcast 407
+ 410: 146(bool) ULessThan 404 408
+ SelectionMerge 412 None
+ BranchConditional 410 411 412
+ 411: Label
+ 413: 122(ptr) AccessChain 112(id) 19
+ 414: 6(int) Load 413
+ 415: 131(ptr) AccessChain 93(params) 130 19
+ 416: 64(int) Load 415
+ 417: 64(int) ISub 416 206
+ 418: 6(int) Bitcast 417
+ 420: 146(bool) ULessThan 414 418
+ Branch 412
+ 412: Label
+ 421: 146(bool) Phi 410 384 420 411
+ SelectionMerge 423 None
+ BranchConditional 421 422 423
+ 422: Label
+ 424: 6(int) Load 123(index)
+ 425: 131(ptr) AccessChain 93(params) 130 11
+ 426: 64(int) Load 425
+ 427: 6(int) Bitcast 426
+ 428: 6(int) IAdd 424 427
+ 429: 6(int) IAdd 428 19
+ 431: 201(ptr) AccessChain 175 177 429 177
+ 432: 62(fvec4) Load 431
+ 433: 26(fvec3) VectorShuffle 432 432 0 1 2
+ Store 430(param) 433
+ 435: 26(fvec3) Load 223(pos)
+ Store 434(param) 435
+ 437: 97(ptr) AccessChain 93(params) 359
+ 438: 23(float) Load 437
+ Store 436(param) 438
+ 439: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 430(param) 434(param) 436(param)
+ 440: 26(fvec3) Load 211(force)
+ 441: 26(fvec3) FAdd 440 439
+ Store 211(force) 441
+ Branch 423
+ 423: Label
+ 442: 122(ptr) AccessChain 112(id) 11
+ 443: 6(int) Load 442
+ 444: 131(ptr) AccessChain 93(params) 130 11
+ 445: 64(int) Load 444
+ 446: 64(int) ISub 445 206
+ 447: 6(int) Bitcast 446
+ 449: 146(bool) ULessThan 443 447
+ SelectionMerge 451 None
+ BranchConditional 449 450 451
+ 450: Label
+ 452: 122(ptr) AccessChain 112(id) 19
+ 453: 6(int) Load 452
+ 455: 146(bool) UGreaterThan 453 11
+ Branch 451
+ 451: Label
+ 456: 146(bool) Phi 449 423 455 450
+ SelectionMerge 458 None
+ BranchConditional 456 457 458
+ 457: Label
+ 459: 6(int) Load 123(index)
+ 460: 131(ptr) AccessChain 93(params) 130 11
+ 461: 64(int) Load 460
+ 462: 6(int) Bitcast 461
+ 463: 6(int) ISub 459 462
+ 464: 6(int) IAdd 463 19
+ 466: 201(ptr) AccessChain 175 177 464 177
+ 467: 62(fvec4) Load 466
+ 468: 26(fvec3) VectorShuffle 467 467 0 1 2
+ Store 465(param) 468
+ 470: 26(fvec3) Load 223(pos)
+ Store 469(param) 470
+ 472: 97(ptr) AccessChain 93(params) 359
+ 473: 23(float) Load 472
+ Store 471(param) 473
+ 474: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 465(param) 469(param) 471(param)
+ 475: 26(fvec3) Load 211(force)
+ 476: 26(fvec3) FAdd 475 474
+ Store 211(force) 476
+ Branch 458
+ 458: Label
+ 478: 97(ptr) AccessChain 93(params) 477
+ 479: 23(float) Load 478
+ 480: 23(float) FNegate 479
+ 481: 26(fvec3) Load 232(vel)
+ 482: 26(fvec3) VectorTimesScalar 481 480
+ 483: 26(fvec3) Load 211(force)
+ 484: 26(fvec3) FAdd 483 482
+ Store 211(force) 484
+ 489: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 486 485(f) 44
+ 490: 26(fvec3) Load 211(force)
+ 491: 97(ptr) AccessChain 93(params) 206
+ 492: 23(float) Load 491
+ 493: 23(float) FDiv 182 492
+ 494: 26(fvec3) VectorTimesScalar 490 493
+ Store 485(f) 494
+ 495: 6(int) Load 123(index)
+ 496: 26(fvec3) Load 223(pos)
+ 497: 26(fvec3) Load 232(vel)
+ 498: 97(ptr) AccessChain 93(params) 177
+ 499: 23(float) Load 498
+ 500: 26(fvec3) VectorTimesScalar 497 499
+ 501: 26(fvec3) FAdd 496 500
+ 503: 26(fvec3) Load 485(f)
+ 504: 26(fvec3) VectorTimesScalar 503 502
+ 505: 97(ptr) AccessChain 93(params) 177
+ 506: 23(float) Load 505
+ 507: 26(fvec3) VectorTimesScalar 504 506
+ 508: 97(ptr) AccessChain 93(params) 177
+ 509: 23(float) Load 508
+ 510: 26(fvec3) VectorTimesScalar 507 509
+ 511: 26(fvec3) FAdd 501 510
+ 512: 23(float) CompositeExtract 511 0
+ 513: 23(float) CompositeExtract 511 1
+ 514: 23(float) CompositeExtract 511 2
+ 515: 62(fvec4) CompositeConstruct 512 513 514 182
+ 516: 201(ptr) AccessChain 197 177 495 177
+ Store 516 515
+ 517: 6(int) Load 123(index)
+ 518: 26(fvec3) Load 232(vel)
+ 519: 26(fvec3) Load 485(f)
+ 520: 97(ptr) AccessChain 93(params) 177
+ 521: 23(float) Load 520
+ 522: 26(fvec3) VectorTimesScalar 519 521
+ 523: 26(fvec3) FAdd 518 522
+ 524: 23(float) CompositeExtract 523 0
+ 525: 23(float) CompositeExtract 523 1
+ 526: 23(float) CompositeExtract 523 2
+ 527: 62(fvec4) CompositeConstruct 524 525 526 207
+ 528: 201(ptr) AccessChain 197 177 517 206
+ Store 528 527
+ 533: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 530 529(sphereDist) 44
+ 534: 6(int) Load 123(index)
+ 535: 201(ptr) AccessChain 197 177 534 177
+ 536: 62(fvec4) Load 535
+ 537: 26(fvec3) VectorShuffle 536 536 0 1 2
+ 539: 201(ptr) AccessChain 93(params) 538
+ 540: 62(fvec4) Load 539
+ 541: 26(fvec3) VectorShuffle 540 540 0 1 2
+ 542: 26(fvec3) FSub 537 541
+ Store 529(sphereDist) 542
+ 543: 26(fvec3) Load 529(sphereDist)
+ 544: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 543
+ 546: 97(ptr) AccessChain 93(params) 545
+ 547: 23(float) Load 546
+ 549: 23(float) FAdd 547 548
+ 551: 146(bool) FOrdLessThan 544 549
+ SelectionMerge 553 None
+ BranchConditional 551 552 553
+ 552: Label
+ 554: 6(int) Load 123(index)
+ 555: 201(ptr) AccessChain 93(params) 538
+ 556: 62(fvec4) Load 555
+ 557: 26(fvec3) VectorShuffle 556 556 0 1 2
+ 558: 26(fvec3) Load 529(sphereDist)
+ 559: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 558
+ 560: 97(ptr) AccessChain 93(params) 545
+ 561: 23(float) Load 560
+ 562: 23(float) FAdd 561 548
+ 563: 26(fvec3) VectorTimesScalar 559 562
+ 564: 26(fvec3) FAdd 557 563
+ 565: 97(ptr) AccessChain 197 177 554 177 11
+ 566: 23(float) CompositeExtract 564 0
+ Store 565 566
+ 567: 97(ptr) AccessChain 197 177 554 177 19
+ 568: 23(float) CompositeExtract 564 1
+ Store 567 568
+ 569: 97(ptr) AccessChain 197 177 554 177 21
+ 570: 23(float) CompositeExtract 564 2
+ Store 569 570
+ 571: 6(int) Load 123(index)
+ 572: 201(ptr) AccessChain 197 177 571 206
+ Store 572 208
+ Branch 553
+ 553: Label
+ 585: 584(ptr) AccessChain 581(pushConsts) 177
+ 586: 6(int) Load 585
+ 588: 146(bool) IEqual 586 19
+ SelectionMerge 590 None
+ BranchConditional 588 589 590
+ 589: Label
+ 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 592 591(normal) 44
+ Store 591(normal) 595
+ 596: 122(ptr) AccessChain 112(id) 19
+ 597: 6(int) Load 596
+ 599: 146(bool) UGreaterThan 597 11
+ SelectionMerge 601 None
+ BranchConditional 599 600 601
+ 600: Label
+ 602: 122(ptr) AccessChain 112(id) 11
+ 603: 6(int) Load 602
+ 605: 146(bool) UGreaterThan 603 11
+ SelectionMerge 607 None
+ BranchConditional 605 606 607
+ 606: Label
+ 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 609 608(a) 44
+ 613: 6(int) Load 123(index)
+ 614: 6(int) ISub 613 19
+ 615: 201(ptr) AccessChain 175 177 614 177
+ 616: 62(fvec4) Load 615
+ 617: 26(fvec3) VectorShuffle 616 616 0 1 2
+ 618: 26(fvec3) Load 223(pos)
+ 619: 26(fvec3) FSub 617 618
+ Store 608(a) 619
+ 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 621 620(b) 44
+ 625: 6(int) Load 123(index)
+ 626: 131(ptr) AccessChain 93(params) 130 11
+ 627: 64(int) Load 626
+ 628: 6(int) Bitcast 627
+ 629: 6(int) ISub 625 628
+ 630: 6(int) ISub 629 19
+ 631: 201(ptr) AccessChain 175 177 630 177
+ 632: 62(fvec4) Load 631
+ 633: 26(fvec3) VectorShuffle 632 632 0 1 2
+ 634: 26(fvec3) Load 223(pos)
+ 635: 26(fvec3) FSub 633 634
+ Store 620(b) 635
+ 640: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 637 636(c) 44
+ 641: 6(int) Load 123(index)
+ 642: 131(ptr) AccessChain 93(params) 130 11
+ 643: 64(int) Load 642
+ 644: 6(int) Bitcast 643
+ 645: 6(int) ISub 641 644
+ 646: 201(ptr) AccessChain 175 177 645 177
+ 647: 62(fvec4) Load 646
+ 648: 26(fvec3) VectorShuffle 647 647 0 1 2
+ 649: 26(fvec3) Load 223(pos)
+ 650: 26(fvec3) FSub 648 649
+ Store 636(c) 650
+ 651: 26(fvec3) Load 608(a)
+ 652: 26(fvec3) Load 620(b)
+ 653: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 651 652
+ 654: 26(fvec3) Load 620(b)
+ 655: 26(fvec3) Load 636(c)
+ 656: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 654 655
+ 657: 26(fvec3) FAdd 653 656
+ 658: 26(fvec3) Load 591(normal)
+ 659: 26(fvec3) FAdd 658 657
+ Store 591(normal) 659
+ Branch 607
+ 607: Label
+ 660: 122(ptr) AccessChain 112(id) 11
+ 661: 6(int) Load 660
+ 662: 131(ptr) AccessChain 93(params) 130 11
+ 663: 64(int) Load 662
+ 664: 64(int) ISub 663 206
+ 665: 6(int) Bitcast 664
+ 667: 146(bool) ULessThan 661 665
+ SelectionMerge 669 None
+ BranchConditional 667 668 669
+ 668: Label
+ 670: 6(int) Load 123(index)
+ 671: 131(ptr) AccessChain 93(params) 130 11
+ 672: 64(int) Load 671
+ 673: 6(int) Bitcast 672
+ 674: 6(int) ISub 670 673
+ 675: 201(ptr) AccessChain 175 177 674 177
+ 676: 62(fvec4) Load 675
+ 677: 26(fvec3) VectorShuffle 676 676 0 1 2
+ 678: 26(fvec3) Load 223(pos)
+ 679: 26(fvec3) FSub 677 678
+ Store 608(a) 679
+ 680: 6(int) Load 123(index)
+ 681: 131(ptr) AccessChain 93(params) 130 11
+ 682: 64(int) Load 681
+ 683: 6(int) Bitcast 682
+ 684: 6(int) ISub 680 683
+ 685: 6(int) IAdd 684 19
+ 686: 201(ptr) AccessChain 175 177 685 177
+ 687: 62(fvec4) Load 686
+ 688: 26(fvec3) VectorShuffle 687 687 0 1 2
+ 689: 26(fvec3) Load 223(pos)
+ 690: 26(fvec3) FSub 688 689
+ Store 620(b) 690
+ 691: 6(int) Load 123(index)
+ 692: 6(int) IAdd 691 19
+ 693: 201(ptr) AccessChain 175 177 692 177
+ 694: 62(fvec4) Load 693
+ 695: 26(fvec3) VectorShuffle 694 694 0 1 2
+ 696: 26(fvec3) Load 223(pos)
+ 697: 26(fvec3) FSub 695 696
+ Store 636(c) 697
+ 698: 26(fvec3) Load 608(a)
+ 699: 26(fvec3) Load 620(b)
+ 700: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 698 699
+ 701: 26(fvec3) Load 620(b)
+ 702: 26(fvec3) Load 636(c)
+ 703: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 701 702
+ 704: 26(fvec3) FAdd 700 703
+ 705: 26(fvec3) Load 591(normal)
+ 706: 26(fvec3) FAdd 705 704
+ Store 591(normal) 706
+ Branch 669
+ 669: Label
+ Branch 601
+ 601: Label
+ 707: 122(ptr) AccessChain 112(id) 19
+ 708: 6(int) Load 707
+ 709: 131(ptr) AccessChain 93(params) 130 19
+ 710: 64(int) Load 709
+ 711: 64(int) ISub 710 206
+ 712: 6(int) Bitcast 711
+ 714: 146(bool) ULessThan 708 712
+ SelectionMerge 716 None
+ BranchConditional 714 715 716
+ 715: Label
+ 717: 122(ptr) AccessChain 112(id) 11
+ 718: 6(int) Load 717
+ 720: 146(bool) UGreaterThan 718 11
+ SelectionMerge 722 None
+ BranchConditional 720 721 722
+ 721: Label
+ 723: 6(int) Load 123(index)
+ 724: 131(ptr) AccessChain 93(params) 130 11
+ 725: 64(int) Load 724
+ 726: 6(int) Bitcast 725
+ 727: 6(int) IAdd 723 726
+ 728: 201(ptr) AccessChain 175 177 727 177
+ 729: 62(fvec4) Load 728
+ 730: 26(fvec3) VectorShuffle 729 729 0 1 2
+ 731: 26(fvec3) Load 223(pos)
+ 732: 26(fvec3) FSub 730 731
+ Store 608(a) 732
+ 733: 6(int) Load 123(index)
+ 734: 131(ptr) AccessChain 93(params) 130 11
+ 735: 64(int) Load 734
+ 736: 6(int) Bitcast 735
+ 737: 6(int) IAdd 733 736
+ 738: 6(int) ISub 737 19
+ 739: 201(ptr) AccessChain 175 177 738 177
+ 740: 62(fvec4) Load 739
+ 741: 26(fvec3) VectorShuffle 740 740 0 1 2
+ 742: 26(fvec3) Load 223(pos)
+ 743: 26(fvec3) FSub 741 742
+ Store 620(b) 743
+ 744: 6(int) Load 123(index)
+ 745: 6(int) ISub 744 19
+ 746: 201(ptr) AccessChain 175 177 745 177
+ 747: 62(fvec4) Load 746
+ 748: 26(fvec3) VectorShuffle 747 747 0 1 2
+ 749: 26(fvec3) Load 223(pos)
+ 750: 26(fvec3) FSub 748 749
+ Store 636(c) 750
+ 751: 26(fvec3) Load 608(a)
+ 752: 26(fvec3) Load 620(b)
+ 753: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 751 752
+ 754: 26(fvec3) Load 620(b)
+ 755: 26(fvec3) Load 636(c)
+ 756: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 754 755
+ 757: 26(fvec3) FAdd 753 756
+ 758: 26(fvec3) Load 591(normal)
+ 759: 26(fvec3) FAdd 758 757
+ Store 591(normal) 759
+ Branch 722
+ 722: Label
+ 760: 122(ptr) AccessChain 112(id) 11
+ 761: 6(int) Load 760
+ 762: 131(ptr) AccessChain 93(params) 130 11
+ 763: 64(int) Load 762
+ 764: 64(int) ISub 763 206
+ 765: 6(int) Bitcast 764
+ 767: 146(bool) ULessThan 761 765
+ SelectionMerge 769 None
+ BranchConditional 767 768 769
+ 768: Label
+ 770: 6(int) Load 123(index)
+ 771: 6(int) IAdd 770 19
+ 772: 201(ptr) AccessChain 175 177 771 177
+ 773: 62(fvec4) Load 772
+ 774: 26(fvec3) VectorShuffle 773 773 0 1 2
+ 775: 26(fvec3) Load 223(pos)
+ 776: 26(fvec3) FSub 774 775
+ Store 608(a) 776
+ 777: 6(int) Load 123(index)
+ 778: 131(ptr) AccessChain 93(params) 130 11
+ 779: 64(int) Load 778
+ 780: 6(int) Bitcast 779
+ 781: 6(int) IAdd 777 780
+ 782: 6(int) IAdd 781 19
+ 783: 201(ptr) AccessChain 175 177 782 177
+ 784: 62(fvec4) Load 783
+ 785: 26(fvec3) VectorShuffle 784 784 0 1 2
+ 786: 26(fvec3) Load 223(pos)
+ 787: 26(fvec3) FSub 785 786
+ Store 620(b) 787
+ 788: 6(int) Load 123(index)
+ 789: 131(ptr) AccessChain 93(params) 130 11
+ 790: 64(int) Load 789
+ 791: 6(int) Bitcast 790
+ 792: 6(int) IAdd 788 791
+ 793: 201(ptr) AccessChain 175 177 792 177
+ 794: 62(fvec4) Load 793
+ 795: 26(fvec3) VectorShuffle 794 794 0 1 2
+ 796: 26(fvec3) Load 223(pos)
+ 797: 26(fvec3) FSub 795 796
+ Store 636(c) 797
+ 798: 26(fvec3) Load 608(a)
+ 799: 26(fvec3) Load 620(b)
+ 800: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 798 799
+ 801: 26(fvec3) Load 620(b)
+ 802: 26(fvec3) Load 636(c)
+ 803: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 801 802
+ 804: 26(fvec3) FAdd 800 803
+ 805: 26(fvec3) Load 591(normal)
+ 806: 26(fvec3) FAdd 805 804
+ Store 591(normal) 806
+ Branch 769
+ 769: Label
+ Branch 716
+ 716: Label
+ 807: 6(int) Load 123(index)
+ 808: 26(fvec3) Load 591(normal)
+ 809: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 808
+ 810: 23(float) CompositeExtract 809 0
+ 811: 23(float) CompositeExtract 809 1
+ 812: 23(float) CompositeExtract 809 2
+ 813: 62(fvec4) CompositeConstruct 810 811 812 207
+ 814: 201(ptr) AccessChain 197 177 807 477
+ Store 814 813
+ Branch 590
+ 590: Label
+ Return
+ FunctionEnd
+35(springForce(vf3;vf3;f1;): 26(fvec3) Function None 30
+ 32(p0): 28(ptr) FunctionParameter
+ 33(p1): 28(ptr) FunctionParameter
+ 34(restDist): 29(ptr) FunctionParameter
+ 38: Label
+ 52(dist): 28(ptr) Variable Function
+ 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 37
+ 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11
+ 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 41 32(p0) 44
+ 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 45 33(p1) 44
+ 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 48 34(restDist) 44
+ 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 37 35(springForce(vf3;vf3;f1;)
+ 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 53 52(dist) 44
+ 57: 26(fvec3) Load 32(p0)
+ 58: 26(fvec3) Load 33(p1)
+ 59: 26(fvec3) FSub 57 58
+ Store 52(dist) 59
+ 60: 26(fvec3) Load 52(dist)
+ 61: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 60
+ 98: 97(ptr) AccessChain 93(params) 96
+ 99: 23(float) Load 98
+ 100: 26(fvec3) VectorTimesScalar 61 99
+ 101: 26(fvec3) Load 52(dist)
+ 102: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 101
+ 103: 23(float) Load 34(restDist)
+ 104: 23(float) FSub 102 103
+ 105: 26(fvec3) VectorTimesScalar 100 104
+ ReturnValue 105
+ FunctionEnd
diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out
new file mode 100644
index 0000000..22b1731
--- /dev/null
+++ b/Test/baseResults/spv.debuginfo.glsl.frag.out
@@ -0,0 +1,937 @@
+spv.debuginfo.glsl.frag
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 704
+
+ Capability Shader
+ Capability ImageQuery
+ Extension "SPV_KHR_non_semantic_info"
+ 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 13 "main" 400 445
+ ExecutionMode 13 OriginUpperLeft
+ 8: String "uint"
+ 14: String "main"
+ 17: String ""
+ 24: String "float"
+ 39: String "textureProj"
+ 45: String "P"
+ 49: String "layer"
+ 52: String "offset"
+ 59: String "filterPCF"
+ 65: String "sc"
+ 77: String "shadow"
+ 83: String "fragcolor"
+ 86: String "fragpos"
+ 96: String "shadowCoord"
+ 118: String "bool"
+ 132: String "dist"
+ 137: String "type.2d.image"
+ 138: String "@type.2d.image"
+ 142: String "type.sampled.image"
+ 143: String "@type.sampled.image"
+ 147: String "samplerShadowMap"
+ 181: String "int"
+ 188: String "texDim"
+ 200: String "scale"
+ 206: String "dx"
+ 218: String "dy"
+ 229: String "shadowFactor"
+ 234: String "count"
+ 239: String "range"
+ 245: String "x"
+ 261: String "y"
+ 307: String "i"
+ 321: String "shadowClip"
+ 329: String "color"
+ 335: String "viewMatrix"
+ 338: String "Light"
+ 344: String "lights"
+ 347: String "debugDisplayTarget"
+ 351: String "UBO"
+ 355: String "ubo"
+ 387: String "fragPos"
+ 397: String "samplerposition"
+ 402: String "inUV"
+ 408: String "normal"
+ 413: String "samplerNormal"
+ 420: String "albedo"
+ 425: String "samplerAlbedo"
+ 447: String "outFragColor"
+ 509: String "N"
+ 528: String "L"
+ 548: String "V"
+ 560: String "lightCosInnerAngle"
+ 566: String "lightCosOuterAngle"
+ 572: String "lightRange"
+ 578: String "dir"
+ 593: String "cosDir"
+ 601: String "spotEffect"
+ 610: String "heightAttenuation"
+ 618: String "NdotL"
+ 627: String "diff"
+ 634: String "R"
+ 643: String "NdotR"
+ 652: String "spec"
+ Name 13 "main"
+ Name 38 "textureProj(vf4;f1;vf2;"
+ Name 35 "P"
+ Name 36 "layer"
+ Name 37 "offset"
+ Name 58 "filterPCF(vf4;f1;"
+ Name 56 "sc"
+ Name 57 "layer"
+ Name 76 "shadow(vf3;vf3;"
+ Name 74 "fragcolor"
+ Name 75 "fragpos"
+ Name 89 "shadow"
+ Name 94 "shadowCoord"
+ Name 130 "dist"
+ Name 145 "samplerShadowMap"
+ Name 186 "texDim"
+ Name 198 "scale"
+ Name 204 "dx"
+ Name 216 "dy"
+ Name 227 "shadowFactor"
+ Name 232 "count"
+ Name 237 "range"
+ Name 243 "x"
+ Name 259 "y"
+ Name 284 "param"
+ Name 286 "param"
+ Name 288 "param"
+ Name 305 "i"
+ Name 319 "shadowClip"
+ Name 327 "Light"
+ MemberName 327(Light) 0 "position"
+ MemberName 327(Light) 1 "target"
+ MemberName 327(Light) 2 "color"
+ MemberName 327(Light) 3 "viewMatrix"
+ Name 341 "UBO"
+ MemberName 341(UBO) 0 "viewPos"
+ MemberName 341(UBO) 1 "lights"
+ MemberName 341(UBO) 2 "useShadows"
+ MemberName 341(UBO) 3 "debugDisplayTarget"
+ Name 353 "ubo"
+ Name 366 "shadowFactor"
+ Name 372 "param"
+ Name 374 "param"
+ Name 385 "fragPos"
+ Name 395 "samplerposition"
+ Name 400 "inUV"
+ Name 406 "normal"
+ Name 411 "samplerNormal"
+ Name 418 "albedo"
+ Name 423 "samplerAlbedo"
+ Name 445 "outFragColor"
+ Name 450 "param"
+ Name 451 "param"
+ Name 499 "fragcolor"
+ Name 507 "N"
+ Name 514 "i"
+ Name 526 "L"
+ Name 538 "dist"
+ Name 546 "V"
+ Name 558 "lightCosInnerAngle"
+ Name 564 "lightCosOuterAngle"
+ Name 570 "lightRange"
+ Name 576 "dir"
+ Name 591 "cosDir"
+ Name 599 "spotEffect"
+ Name 608 "heightAttenuation"
+ Name 616 "NdotL"
+ Name 625 "diff"
+ Name 632 "R"
+ Name 641 "NdotR"
+ Name 650 "spec"
+ Name 694 "param"
+ Name 696 "param"
+ Decorate 145(samplerShadowMap) DescriptorSet 0
+ Decorate 145(samplerShadowMap) Binding 5
+ MemberDecorate 327(Light) 0 Offset 0
+ MemberDecorate 327(Light) 1 Offset 16
+ MemberDecorate 327(Light) 2 Offset 32
+ MemberDecorate 327(Light) 3 ColMajor
+ MemberDecorate 327(Light) 3 Offset 48
+ MemberDecorate 327(Light) 3 MatrixStride 16
+ Decorate 339 ArrayStride 112
+ MemberDecorate 341(UBO) 0 Offset 0
+ MemberDecorate 341(UBO) 1 Offset 16
+ MemberDecorate 341(UBO) 2 Offset 352
+ MemberDecorate 341(UBO) 3 Offset 356
+ Decorate 341(UBO) Block
+ Decorate 353(ubo) DescriptorSet 0
+ Decorate 353(ubo) Binding 4
+ Decorate 395(samplerposition) DescriptorSet 0
+ Decorate 395(samplerposition) Binding 1
+ Decorate 400(inUV) Location 0
+ Decorate 411(samplerNormal) DescriptorSet 0
+ Decorate 411(samplerNormal) Binding 2
+ Decorate 423(samplerAlbedo) DescriptorSet 0
+ Decorate 423(samplerAlbedo) Binding 3
+ Decorate 445(outFragColor) Location 0
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 6: TypeInt 32 0
+ 9: 6(int) Constant 32
+ 10: 6(int) Constant 6
+ 11: 6(int) Constant 0
+ 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11
+ 12: 6(int) Constant 3
+ 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3
+ 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17
+ 19: 6(int) Constant 1
+ 20: 6(int) Constant 4
+ 21: 6(int) Constant 2
+ 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21
+ 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11
+ 23: TypeFloat 32
+ 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11
+ 26: TypeVector 23(float) 4
+ 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20
+ 28: TypePointer Function 26(fvec4)
+ 29: TypePointer Function 23(float)
+ 30: TypeVector 23(float) 2
+ 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 21
+ 32: TypePointer Function 30(fvec2)
+ 33: TypeFunction 23(float) 28(ptr) 29(ptr) 32(ptr)
+ 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 25 27 25 31
+ 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 39 34 16 11 11 18 39 12 11
+ 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 45 27 16 11 11 40 20 19
+ 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
+ 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 25 16 11 11 40 20 21
+ 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 52 31 16 11 11 40 20 12
+ 54: TypeFunction 23(float) 28(ptr) 29(ptr)
+ 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 25 27 25
+ 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 59 55 16 11 11 18 59 12 11
+ 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 65 27 16 11 11 60 20 19
+ 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 25 16 11 11 60 20 21
+ 69: TypeVector 23(float) 3
+ 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12
+ 71: TypePointer Function 69(fvec3)
+ 72: TypeFunction 69(fvec3) 71(ptr) 71(ptr)
+ 73: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 70 70 70
+ 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 77 73 16 11 11 18 77 12 11
+ 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 83 70 16 11 11 78 20 19
+ 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 86 70 16 11 11 78 20 21
+ 91: 6(int) Constant 59
+ 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 77 25 16 91 11 40 20
+ 93: 23(float) Constant 1065353216
+ 97: 6(int) Constant 60
+ 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 96 27 16 97 11 40 20
+ 106: 23(float) Constant 1056964608
+ 114: TypeBool
+ 117: 23(float) Constant 3212836864
+ 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
+ 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
+ 133: 6(int) Constant 65
+ 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 132 25 16 133 11 40 20
+ 135: TypeImage 23(float) 2D array sampled format:Unknown
+ 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown)
+ 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 137 11 16 133 11 18 138 139 12
+ 140: TypeSampledImage 135
+ 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 11 16 133 11 18 143 139 12
+ 144: TypePointer UniformConstant 140
+145(samplerShadowMap): 144(ptr) Variable UniformConstant
+ 148: 6(int) Constant 8
+ 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 147 141 16 133 11 18 147 145(samplerShadowMap) 148
+ 162: 23(float) Constant 0
+ 163: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
+ 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
+ 175: 23(float) Constant 1048576000
+ 180: TypeInt 32 1
+ 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 181 9 20 11
+ 183: TypeVector 180(int) 2
+ 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 182 21
+ 185: TypePointer Function 183(ivec2)
+ 189: 6(int) Constant 76
+ 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 188 184 16 189 11 60 20
+ 192: 180(int) Constant 0
+ 194: TypeVector 180(int) 3
+ 195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 182 12
+ 201: 6(int) Constant 77
+ 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 200 25 16 201 11 60 20
+ 203: 23(float) Constant 1069547520
+ 207: 6(int) Constant 78
+ 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 206 25 16 207 11 60 20
+ 211: TypePointer Function 180(int)
+ 219: 6(int) Constant 79
+ 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 218 25 16 219 11 60 20
+ 230: 6(int) Constant 81
+ 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 229 25 16 230 11 60 20
+ 235: 6(int) Constant 82
+ 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 234 182 16 235 11 60 20
+ 240: 6(int) Constant 83
+ 238: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 239 182 16 240 11 60 20
+ 242: 180(int) Constant 1
+ 246: 6(int) Constant 85
+ 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 245 182 16 246 11 60 20
+ 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
+ 262: 6(int) Constant 87
+ 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 261 182 16 262 11 60 20
+ 273: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
+ 308: 6(int) Constant 98
+ 306: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 307 182 16 308 11 78 20
+ 316: 180(int) Constant 3
+ 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
+ 322: 6(int) Constant 100
+ 320: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 321 27 16 322 11 78 20
+ 324: TypeMatrix 26(fvec4) 4
+ 326: 114(bool) ConstantTrue
+ 325: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 27 20 326
+ 327(Light): TypeStruct 26(fvec4) 26(fvec4) 26(fvec4) 324
+ 330: 6(int) Constant 45
+ 331: 6(int) Constant 7
+ 328: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 329 27 16 330 331 11 11 12
+ 332: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 329 27 16 330 331 11 11 12
+ 333: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 329 27 16 330 331 11 11 12
+ 336: 6(int) Constant 46
+ 334: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 335 325 16 336 331 11 11 12
+ 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 338 19 16 322 11 18 338 11 12 328 332 333 334
+ 339: TypeArray 327(Light) 12
+ 340: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 337 12
+ 341(UBO): TypeStruct 26(fvec4) 339 180(int) 180(int)
+ 342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 329 27 16 330 331 11 11 12
+ 345: 6(int) Constant 52
+ 343: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 344 340 16 345 148 11 11 12
+ 348: 6(int) Constant 54
+ 346: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 347 182 16 348 10 11 11 12
+ 349: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 347 182 16 348 10 11 11 12
+ 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 351 19 16 322 11 18 351 11 12 342 343 346 349
+ 352: TypePointer Uniform 341(UBO)
+ 353(ubo): 352(ptr) Variable Uniform
+ 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 355 350 16 322 11 18 355 353(ubo) 148
+ 357: TypePointer Uniform 324
+ 368: 6(int) Constant 104
+ 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 229 25 16 368 11 78 20
+ 388: 6(int) Constant 117
+ 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 387 70 16 388 11 15 20
+ 390: TypeImage 23(float) 2D sampled format:Unknown
+ 391: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 137 11 16 388 11 18 138 139 12
+ 392: TypeSampledImage 390
+ 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 11 16 388 11 18 143 139 12
+ 394: TypePointer UniformConstant 392
+395(samplerposition): 394(ptr) Variable UniformConstant
+ 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 397 393 16 388 11 18 397 395(samplerposition) 148
+ 399: TypePointer Input 30(fvec2)
+ 400(inUV): 399(ptr) Variable Input
+ 401: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 402 31 16 388 11 18 402 400(inUV) 148
+ 409: 6(int) Constant 118
+ 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 408 70 16 409 11 15 20
+411(samplerNormal): 394(ptr) Variable UniformConstant
+ 412: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 413 393 16 409 11 18 413 411(samplerNormal) 148
+ 421: 6(int) Constant 119
+ 419: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 420 27 16 421 11 15 20
+423(samplerAlbedo): 394(ptr) Variable UniformConstant
+ 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 425 393 16 421 11 18 425 423(samplerAlbedo) 148
+ 429: TypePointer Uniform 180(int)
+ 432: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
+ 444: TypePointer Output 26(fvec4)
+445(outFragColor): 444(ptr) Variable Output
+ 448: 6(int) Constant 125
+ 446: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 447 27 16 448 11 18 447 445(outFragColor) 148
+ 449: 69(fvec3) ConstantComposite 93 93 93
+ 454: TypePointer Output 23(float)
+ 501: 6(int) Constant 145
+ 500: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 83 70 16 501 11 15 20
+ 505: 23(float) Constant 1036831949
+ 510: 6(int) Constant 147
+ 508: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 509 70 16 510 11 15 20
+ 516: 6(int) Constant 149
+ 515: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 307 182 16 516 11 15 20
+ 524: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
+ 529: 6(int) Constant 152
+ 527: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 528 70 16 529 11 15 20
+ 532: TypePointer Uniform 26(fvec4)
+ 540: 6(int) Constant 154
+ 539: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 132 25 16 540 11 15 20
+ 549: 6(int) Constant 158
+ 547: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 548 70 16 549 11 15 20
+ 561: 6(int) Constant 161
+ 559: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 560 25 16 561 11 15 20
+ 563: 23(float) Constant 1064781546
+ 567: 6(int) Constant 162
+ 565: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 566 25 16 567 11 15 20
+ 569: 23(float) Constant 1063781322
+ 573: 6(int) Constant 163
+ 571: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 572 25 16 573 11 15 20
+ 575: 23(float) Constant 1120403456
+ 579: 6(int) Constant 166
+ 577: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 578 70 16 579 11 15 20
+ 594: 6(int) Constant 169
+ 592: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 593 25 16 594 11 15 20
+ 602: 6(int) Constant 170
+ 600: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 601 25 16 602 11 15 20
+ 611: 6(int) Constant 171
+ 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 610 25 16 611 11 15 20
+ 619: 6(int) Constant 174
+ 617: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 618 25 16 619 11 15 20
+ 628: 6(int) Constant 175
+ 626: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 627 70 16 628 11 15 20
+ 635: 6(int) Constant 178
+ 633: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 634 70 16 635 11 15 20
+ 644: 6(int) Constant 179
+ 642: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 643 25 16 644 11 15 20
+ 653: 6(int) Constant 180
+ 651: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 652 70 16 653 11 15 20
+ 656: 23(float) Constant 1098907648
+ 661: 23(float) Constant 1075838976
+ 676: 180(int) Constant 2
+ 690: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11
+ 13(main): 3 Function None 4
+ 22: Label
+ 385(fragPos): 71(ptr) Variable Function
+ 406(normal): 71(ptr) Variable Function
+ 418(albedo): 28(ptr) Variable Function
+ 450(param): 71(ptr) Variable Function
+ 451(param): 71(ptr) Variable Function
+ 499(fragcolor): 71(ptr) Variable Function
+ 507(N): 71(ptr) Variable Function
+ 514(i): 211(ptr) Variable Function
+ 526(L): 71(ptr) Variable Function
+ 538(dist): 29(ptr) Variable Function
+ 546(V): 71(ptr) Variable Function
+558(lightCosInnerAngle): 29(ptr) Variable Function
+564(lightCosOuterAngle): 29(ptr) Variable Function
+ 570(lightRange): 29(ptr) Variable Function
+ 576(dir): 71(ptr) Variable Function
+ 591(cosDir): 29(ptr) Variable Function
+ 599(spotEffect): 29(ptr) Variable Function
+608(heightAttenuation): 29(ptr) Variable Function
+ 616(NdotL): 29(ptr) Variable Function
+ 625(diff): 71(ptr) Variable Function
+ 632(R): 71(ptr) Variable Function
+ 641(NdotR): 29(ptr) Variable Function
+ 650(spec): 71(ptr) Variable Function
+ 694(param): 71(ptr) Variable Function
+ 696(param): 71(ptr) Variable Function
+ 384: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main)
+ 389: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 386 385(fragPos) 47
+ 398: 392 Load 395(samplerposition)
+ 403: 30(fvec2) Load 400(inUV)
+ 404: 26(fvec4) ImageSampleImplicitLod 398 403
+ 405: 69(fvec3) VectorShuffle 404 404 0 1 2
+ Store 385(fragPos) 405
+ 410: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 407 406(normal) 47
+ 414: 392 Load 411(samplerNormal)
+ 415: 30(fvec2) Load 400(inUV)
+ 416: 26(fvec4) ImageSampleImplicitLod 414 415
+ 417: 69(fvec3) VectorShuffle 416 416 0 1 2
+ Store 406(normal) 417
+ 422: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 419 418(albedo) 47
+ 426: 392 Load 423(samplerAlbedo)
+ 427: 30(fvec2) Load 400(inUV)
+ 428: 26(fvec4) ImageSampleImplicitLod 426 427
+ Store 418(albedo) 428
+ 430: 429(ptr) AccessChain 353(ubo) 316
+ 431: 180(int) Load 430
+ 433: 114(bool) SGreaterThan 431 192
+ SelectionMerge 435 None
+ BranchConditional 433 434 435
+ 434: Label
+ 436: 429(ptr) AccessChain 353(ubo) 316
+ 437: 180(int) Load 436
+ SelectionMerge 443 None
+ Switch 437 443
+ case 1: 438
+ case 2: 439
+ case 3: 440
+ case 4: 441
+ case 5: 442
+ 438: Label
+ Store 450(param) 449
+ 452: 69(fvec3) Load 385(fragPos)
+ Store 451(param) 452
+ 453: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 450(param) 451(param)
+ 455: 454(ptr) AccessChain 445(outFragColor) 11
+ 456: 23(float) CompositeExtract 453 0
+ Store 455 456
+ 457: 454(ptr) AccessChain 445(outFragColor) 19
+ 458: 23(float) CompositeExtract 453 1
+ Store 457 458
+ 459: 454(ptr) AccessChain 445(outFragColor) 21
+ 460: 23(float) CompositeExtract 453 2
+ Store 459 460
+ Branch 443
+ 439: Label
+ 462: 69(fvec3) Load 385(fragPos)
+ 463: 454(ptr) AccessChain 445(outFragColor) 11
+ 464: 23(float) CompositeExtract 462 0
+ Store 463 464
+ 465: 454(ptr) AccessChain 445(outFragColor) 19
+ 466: 23(float) CompositeExtract 462 1
+ Store 465 466
+ 467: 454(ptr) AccessChain 445(outFragColor) 21
+ 468: 23(float) CompositeExtract 462 2
+ Store 467 468
+ Branch 443
+ 440: Label
+ 470: 69(fvec3) Load 406(normal)
+ 471: 454(ptr) AccessChain 445(outFragColor) 11
+ 472: 23(float) CompositeExtract 470 0
+ Store 471 472
+ 473: 454(ptr) AccessChain 445(outFragColor) 19
+ 474: 23(float) CompositeExtract 470 1
+ Store 473 474
+ 475: 454(ptr) AccessChain 445(outFragColor) 21
+ 476: 23(float) CompositeExtract 470 2
+ Store 475 476
+ Branch 443
+ 441: Label
+ 478: 26(fvec4) Load 418(albedo)
+ 479: 69(fvec3) VectorShuffle 478 478 0 1 2
+ 480: 454(ptr) AccessChain 445(outFragColor) 11
+ 481: 23(float) CompositeExtract 479 0
+ Store 480 481
+ 482: 454(ptr) AccessChain 445(outFragColor) 19
+ 483: 23(float) CompositeExtract 479 1
+ Store 482 483
+ 484: 454(ptr) AccessChain 445(outFragColor) 21
+ 485: 23(float) CompositeExtract 479 2
+ Store 484 485
+ Branch 443
+ 442: Label
+ 487: 26(fvec4) Load 418(albedo)
+ 488: 69(fvec3) VectorShuffle 487 487 3 3 3
+ 489: 454(ptr) AccessChain 445(outFragColor) 11
+ 490: 23(float) CompositeExtract 488 0
+ Store 489 490
+ 491: 454(ptr) AccessChain 445(outFragColor) 19
+ 492: 23(float) CompositeExtract 488 1
+ Store 491 492
+ 493: 454(ptr) AccessChain 445(outFragColor) 21
+ 494: 23(float) CompositeExtract 488 2
+ Store 493 494
+ Branch 443
+ 443: Label
+ 497: 454(ptr) AccessChain 445(outFragColor) 12
+ Store 497 93
+ Return
+ 435: Label
+ 502: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 500 499(fragcolor) 47
+ 503: 26(fvec4) Load 418(albedo)
+ 504: 69(fvec3) VectorShuffle 503 503 0 1 2
+ 506: 69(fvec3) VectorTimesScalar 504 505
+ Store 499(fragcolor) 506
+ 511: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 508 507(N) 47
+ 512: 69(fvec3) Load 406(normal)
+ 513: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 512
+ Store 507(N) 513
+ 517: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 515 514(i) 47
+ Store 514(i) 192
+ Branch 518
+ 518: Label
+ LoopMerge 520 521 None
+ Branch 522
+ 522: Label
+ 523: 180(int) Load 514(i)
+ 525: 114(bool) SLessThan 523 316
+ BranchConditional 525 519 520
+ 519: Label
+ 530: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 527 526(L) 47
+ 531: 180(int) Load 514(i)
+ 533: 532(ptr) AccessChain 353(ubo) 242 531 192
+ 534: 26(fvec4) Load 533
+ 535: 69(fvec3) VectorShuffle 534 534 0 1 2
+ 536: 69(fvec3) Load 385(fragPos)
+ 537: 69(fvec3) FSub 535 536
+ Store 526(L) 537
+ 541: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 539 538(dist) 47
+ 542: 69(fvec3) Load 526(L)
+ 543: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 542
+ Store 538(dist) 543
+ 544: 69(fvec3) Load 526(L)
+ 545: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 544
+ Store 526(L) 545
+ 550: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 547 546(V) 47
+ 551: 532(ptr) AccessChain 353(ubo) 192
+ 552: 26(fvec4) Load 551
+ 553: 69(fvec3) VectorShuffle 552 552 0 1 2
+ 554: 69(fvec3) Load 385(fragPos)
+ 555: 69(fvec3) FSub 553 554
+ Store 546(V) 555
+ 556: 69(fvec3) Load 546(V)
+ 557: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 556
+ Store 546(V) 557
+ 562: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 559 558(lightCosInnerAngle) 47
+ Store 558(lightCosInnerAngle) 563
+ 568: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 565 564(lightCosOuterAngle) 47
+ Store 564(lightCosOuterAngle) 569
+ 574: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 571 570(lightRange) 47
+ Store 570(lightRange) 575
+ 580: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 577 576(dir) 47
+ 581: 180(int) Load 514(i)
+ 582: 532(ptr) AccessChain 353(ubo) 242 581 192
+ 583: 26(fvec4) Load 582
+ 584: 69(fvec3) VectorShuffle 583 583 0 1 2
+ 585: 180(int) Load 514(i)
+ 586: 532(ptr) AccessChain 353(ubo) 242 585 242
+ 587: 26(fvec4) Load 586
+ 588: 69(fvec3) VectorShuffle 587 587 0 1 2
+ 589: 69(fvec3) FSub 584 588
+ 590: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 589
+ Store 576(dir) 590
+ 595: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 592 591(cosDir) 47
+ 596: 69(fvec3) Load 526(L)
+ 597: 69(fvec3) Load 576(dir)
+ 598: 23(float) Dot 596 597
+ Store 591(cosDir) 598
+ 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 600 599(spotEffect) 47
+ 604: 23(float) Load 564(lightCosOuterAngle)
+ 605: 23(float) Load 558(lightCosInnerAngle)
+ 606: 23(float) Load 591(cosDir)
+ 607: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 604 605 606
+ Store 599(spotEffect) 607
+ 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 609 608(heightAttenuation) 47
+ 613: 23(float) Load 570(lightRange)
+ 614: 23(float) Load 538(dist)
+ 615: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 613 162 614
+ Store 608(heightAttenuation) 615
+ 620: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 617 616(NdotL) 47
+ 621: 69(fvec3) Load 507(N)
+ 622: 69(fvec3) Load 526(L)
+ 623: 23(float) Dot 621 622
+ 624: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 623
+ Store 616(NdotL) 624
+ 629: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 626 625(diff) 47
+ 630: 23(float) Load 616(NdotL)
+ 631: 69(fvec3) CompositeConstruct 630 630 630
+ Store 625(diff) 631
+ 636: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 633 632(R) 47
+ 637: 69(fvec3) Load 526(L)
+ 638: 69(fvec3) FNegate 637
+ 639: 69(fvec3) Load 507(N)
+ 640: 69(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 638 639
+ Store 632(R) 640
+ 645: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 642 641(NdotR) 47
+ 646: 69(fvec3) Load 632(R)
+ 647: 69(fvec3) Load 546(V)
+ 648: 23(float) Dot 646 647
+ 649: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 648
+ Store 641(NdotR) 649
+ 654: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 651 650(spec) 47
+ 655: 23(float) Load 641(NdotR)
+ 657: 23(float) ExtInst 2(GLSL.std.450) 26(Pow) 655 656
+ 658: 29(ptr) AccessChain 418(albedo) 12
+ 659: 23(float) Load 658
+ 660: 23(float) FMul 657 659
+ 662: 23(float) FMul 660 661
+ 663: 69(fvec3) CompositeConstruct 662 662 662
+ Store 650(spec) 663
+ 664: 69(fvec3) Load 625(diff)
+ 665: 69(fvec3) Load 650(spec)
+ 666: 69(fvec3) FAdd 664 665
+ 667: 23(float) Load 599(spotEffect)
+ 668: 69(fvec3) VectorTimesScalar 666 667
+ 669: 23(float) Load 608(heightAttenuation)
+ 670: 69(fvec3) VectorTimesScalar 668 669
+ 671: 23(float) CompositeExtract 670 0
+ 672: 23(float) CompositeExtract 670 1
+ 673: 23(float) CompositeExtract 670 2
+ 674: 69(fvec3) CompositeConstruct 671 672 673
+ 675: 180(int) Load 514(i)
+ 677: 532(ptr) AccessChain 353(ubo) 242 675 676
+ 678: 26(fvec4) Load 677
+ 679: 69(fvec3) VectorShuffle 678 678 0 1 2
+ 680: 69(fvec3) FMul 674 679
+ 681: 26(fvec4) Load 418(albedo)
+ 682: 69(fvec3) VectorShuffle 681 681 0 1 2
+ 683: 69(fvec3) FMul 680 682
+ 684: 69(fvec3) Load 499(fragcolor)
+ 685: 69(fvec3) FAdd 684 683
+ Store 499(fragcolor) 685
+ Branch 521
+ 521: Label
+ 686: 180(int) Load 514(i)
+ 687: 180(int) IAdd 686 242
+ Store 514(i) 687
+ Branch 518
+ 520: Label
+ 688: 429(ptr) AccessChain 353(ubo) 676
+ 689: 180(int) Load 688
+ 691: 114(bool) SGreaterThan 689 192
+ SelectionMerge 693 None
+ BranchConditional 691 692 693
+ 692: Label
+ 695: 69(fvec3) Load 499(fragcolor)
+ Store 694(param) 695
+ 697: 69(fvec3) Load 385(fragPos)
+ Store 696(param) 697
+ 698: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 694(param) 696(param)
+ Store 499(fragcolor) 698
+ Branch 693
+ 693: Label
+ 699: 69(fvec3) Load 499(fragcolor)
+ 700: 23(float) CompositeExtract 699 0
+ 701: 23(float) CompositeExtract 699 1
+ 702: 23(float) CompositeExtract 699 2
+ 703: 26(fvec4) CompositeConstruct 700 701 702 93
+ Store 445(outFragColor) 703
+ Return
+ FunctionEnd
+38(textureProj(vf4;f1;vf2;): 23(float) Function None 33
+ 35(P): 28(ptr) FunctionParameter
+ 36(layer): 29(ptr) FunctionParameter
+ 37(offset): 32(ptr) FunctionParameter
+ 41: Label
+ 89(shadow): 29(ptr) Variable Function
+ 94(shadowCoord): 28(ptr) Variable Function
+ 130(dist): 29(ptr) Variable Function
+ 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 40
+ 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11
+ 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 44 35(P) 47
+ 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 48 36(layer) 47
+ 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 51 37(offset) 47
+ 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 40 38(textureProj(vf4;f1;vf2;)
+ 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 90 89(shadow) 47
+ Store 89(shadow) 93
+ 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 95 94(shadowCoord) 47
+ 99: 26(fvec4) Load 35(P)
+ 100: 29(ptr) AccessChain 35(P) 12
+ 101: 23(float) Load 100
+ 102: 26(fvec4) CompositeConstruct 101 101 101 101
+ 103: 26(fvec4) FDiv 99 102
+ Store 94(shadowCoord) 103
+ 104: 26(fvec4) Load 94(shadowCoord)
+ 105: 30(fvec2) VectorShuffle 104 104 0 1
+ 107: 30(fvec2) VectorTimesScalar 105 106
+ 108: 30(fvec2) CompositeConstruct 106 106
+ 109: 30(fvec2) FAdd 107 108
+ 110: 29(ptr) AccessChain 94(shadowCoord) 11
+ 111: 23(float) CompositeExtract 109 0
+ Store 110 111
+ 112: 29(ptr) AccessChain 94(shadowCoord) 19
+ 113: 23(float) CompositeExtract 109 1
+ Store 112 113
+ 115: 29(ptr) AccessChain 94(shadowCoord) 21
+ 116: 23(float) Load 115
+ 120: 114(bool) FOrdGreaterThan 116 117
+ SelectionMerge 122 None
+ BranchConditional 120 121 122
+ 121: Label
+ 123: 29(ptr) AccessChain 94(shadowCoord) 21
+ 124: 23(float) Load 123
+ 126: 114(bool) FOrdLessThan 124 93
+ Branch 122
+ 122: Label
+ 127: 114(bool) Phi 120 41 126 121
+ SelectionMerge 129 None
+ BranchConditional 127 128 129
+ 128: Label
+ 134: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 131 130(dist) 47
+ 149: 140 Load 145(samplerShadowMap)
+ 150: 26(fvec4) Load 94(shadowCoord)
+ 151: 30(fvec2) VectorShuffle 150 150 0 1
+ 152: 30(fvec2) Load 37(offset)
+ 153: 30(fvec2) FAdd 151 152
+ 154: 23(float) Load 36(layer)
+ 155: 23(float) CompositeExtract 153 0
+ 156: 23(float) CompositeExtract 153 1
+ 157: 69(fvec3) CompositeConstruct 155 156 154
+ 158: 26(fvec4) ImageSampleImplicitLod 149 157
+ 159: 23(float) CompositeExtract 158 0
+ Store 130(dist) 159
+ 160: 29(ptr) AccessChain 94(shadowCoord) 12
+ 161: 23(float) Load 160
+ 164: 114(bool) FOrdGreaterThan 161 162
+ SelectionMerge 166 None
+ BranchConditional 164 165 166
+ 165: Label
+ 167: 23(float) Load 130(dist)
+ 168: 29(ptr) AccessChain 94(shadowCoord) 21
+ 169: 23(float) Load 168
+ 171: 114(bool) FOrdLessThan 167 169
+ Branch 166
+ 166: Label
+ 172: 114(bool) Phi 164 128 171 165
+ SelectionMerge 174 None
+ BranchConditional 172 173 174
+ 173: Label
+ Store 89(shadow) 175
+ Branch 174
+ 174: Label
+ Branch 129
+ 129: Label
+ 176: 23(float) Load 89(shadow)
+ ReturnValue 176
+ FunctionEnd
+58(filterPCF(vf4;f1;): 23(float) Function None 54
+ 56(sc): 28(ptr) FunctionParameter
+ 57(layer): 29(ptr) FunctionParameter
+ 61: Label
+ 186(texDim): 185(ptr) Variable Function
+ 198(scale): 29(ptr) Variable Function
+ 204(dx): 29(ptr) Variable Function
+ 216(dy): 29(ptr) Variable Function
+227(shadowFactor): 29(ptr) Variable Function
+ 232(count): 211(ptr) Variable Function
+ 237(range): 211(ptr) Variable Function
+ 243(x): 211(ptr) Variable Function
+ 259(y): 211(ptr) Variable Function
+ 284(param): 28(ptr) Variable Function
+ 286(param): 29(ptr) Variable Function
+ 288(param): 32(ptr) Variable Function
+ 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 60
+ 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11
+ 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 64 56(sc) 47
+ 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 67 57(layer) 47
+ 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 60 58(filterPCF(vf4;f1;)
+ 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 187 186(texDim) 47
+ 191: 140 Load 145(samplerShadowMap)
+ 193: 135 Image 191
+ 196: 194(ivec3) ImageQuerySizeLod 193 192
+ 197: 183(ivec2) VectorShuffle 196 196 0 1
+ Store 186(texDim) 197
+ 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 199 198(scale) 47
+ Store 198(scale) 203
+ 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 205 204(dx) 47
+ 209: 23(float) Load 198(scale)
+ 210: 23(float) FMul 209 93
+ 212: 211(ptr) AccessChain 186(texDim) 11
+ 213: 180(int) Load 212
+ 214: 23(float) ConvertSToF 213
+ 215: 23(float) FDiv 210 214
+ Store 204(dx) 215
+ 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 217 216(dy) 47
+ 221: 23(float) Load 198(scale)
+ 222: 23(float) FMul 221 93
+ 223: 211(ptr) AccessChain 186(texDim) 19
+ 224: 180(int) Load 223
+ 225: 23(float) ConvertSToF 224
+ 226: 23(float) FDiv 222 225
+ Store 216(dy) 226
+ 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 228 227(shadowFactor) 47
+ Store 227(shadowFactor) 162
+ 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 233 232(count) 47
+ Store 232(count) 192
+ 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 238 237(range) 47
+ Store 237(range) 242
+ 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 244 243(x) 47
+ 248: 180(int) Load 237(range)
+ 249: 180(int) SNegate 248
+ Store 243(x) 249
+ Branch 250
+ 250: Label
+ LoopMerge 252 253 None
+ Branch 254
+ 254: Label
+ 255: 180(int) Load 243(x)
+ 256: 180(int) Load 237(range)
+ 258: 114(bool) SLessThanEqual 255 256
+ BranchConditional 258 251 252
+ 251: Label
+ 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 260 259(y) 47
+ 264: 180(int) Load 237(range)
+ 265: 180(int) SNegate 264
+ Store 259(y) 265
+ Branch 266
+ 266: Label
+ LoopMerge 268 269 None
+ Branch 270
+ 270: Label
+ 271: 180(int) Load 259(y)
+ 272: 180(int) Load 237(range)
+ 274: 114(bool) SLessThanEqual 271 272
+ BranchConditional 274 267 268
+ 267: Label
+ 275: 23(float) Load 204(dx)
+ 276: 180(int) Load 243(x)
+ 277: 23(float) ConvertSToF 276
+ 278: 23(float) FMul 275 277
+ 279: 23(float) Load 216(dy)
+ 280: 180(int) Load 259(y)
+ 281: 23(float) ConvertSToF 280
+ 282: 23(float) FMul 279 281
+ 283: 30(fvec2) CompositeConstruct 278 282
+ 285: 26(fvec4) Load 56(sc)
+ Store 284(param) 285
+ 287: 23(float) Load 57(layer)
+ Store 286(param) 287
+ Store 288(param) 283
+ 289: 23(float) FunctionCall 38(textureProj(vf4;f1;vf2;) 284(param) 286(param) 288(param)
+ 290: 23(float) Load 227(shadowFactor)
+ 291: 23(float) FAdd 290 289
+ Store 227(shadowFactor) 291
+ 292: 180(int) Load 232(count)
+ 293: 180(int) IAdd 292 242
+ Store 232(count) 293
+ Branch 269
+ 269: Label
+ 294: 180(int) Load 259(y)
+ 295: 180(int) IAdd 294 242
+ Store 259(y) 295
+ Branch 266
+ 268: Label
+ Branch 253
+ 253: Label
+ 296: 180(int) Load 243(x)
+ 297: 180(int) IAdd 296 242
+ Store 243(x) 297
+ Branch 250
+ 252: Label
+ 298: 23(float) Load 227(shadowFactor)
+ 299: 180(int) Load 232(count)
+ 300: 23(float) ConvertSToF 299
+ 301: 23(float) FDiv 298 300
+ ReturnValue 301
+ FunctionEnd
+76(shadow(vf3;vf3;): 69(fvec3) Function None 72
+ 74(fragcolor): 71(ptr) FunctionParameter
+ 75(fragpos): 71(ptr) FunctionParameter
+ 79: Label
+ 305(i): 211(ptr) Variable Function
+ 319(shadowClip): 28(ptr) Variable Function
+366(shadowFactor): 29(ptr) Variable Function
+ 372(param): 28(ptr) Variable Function
+ 374(param): 29(ptr) Variable Function
+ 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 78
+ 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11
+ 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 82 74(fragcolor) 47
+ 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 85 75(fragpos) 47
+ 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 78 76(shadow(vf3;vf3;)
+ 309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 306 305(i) 47
+ Store 305(i) 192
+ Branch 310
+ 310: Label
+ LoopMerge 312 313 None
+ Branch 314
+ 314: Label
+ 315: 180(int) Load 305(i)
+ 318: 114(bool) SLessThan 315 316
+ BranchConditional 318 311 312
+ 311: Label
+ 323: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 320 319(shadowClip) 47
+ 356: 180(int) Load 305(i)
+ 358: 357(ptr) AccessChain 353(ubo) 242 356 316
+ 359: 324 Load 358
+ 360: 69(fvec3) Load 75(fragpos)
+ 361: 23(float) CompositeExtract 360 0
+ 362: 23(float) CompositeExtract 360 1
+ 363: 23(float) CompositeExtract 360 2
+ 364: 26(fvec4) CompositeConstruct 361 362 363 93
+ 365: 26(fvec4) MatrixTimesVector 359 364
+ Store 319(shadowClip) 365
+ 369: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 367 366(shadowFactor) 47
+ 370: 180(int) Load 305(i)
+ 371: 23(float) ConvertSToF 370
+ 373: 26(fvec4) Load 319(shadowClip)
+ Store 372(param) 373
+ Store 374(param) 371
+ 375: 23(float) FunctionCall 58(filterPCF(vf4;f1;) 372(param) 374(param)
+ Store 366(shadowFactor) 375
+ 376: 23(float) Load 366(shadowFactor)
+ 377: 69(fvec3) Load 74(fragcolor)
+ 378: 69(fvec3) VectorTimesScalar 377 376
+ Store 74(fragcolor) 378
+ Branch 313
+ 313: Label
+ 379: 180(int) Load 305(i)
+ 380: 180(int) IAdd 379 242
+ Store 305(i) 380
+ Branch 310
+ 312: Label
+ 381: 69(fvec3) Load 74(fragcolor)
+ ReturnValue 381
+ FunctionEnd
diff --git a/Test/baseResults/spv.debuginfo.glsl.geom.out b/Test/baseResults/spv.debuginfo.glsl.geom.out
new file mode 100644
index 0000000..07f8f52
--- /dev/null
+++ b/Test/baseResults/spv.debuginfo.glsl.geom.out
@@ -0,0 +1,332 @@
+spv.debuginfo.glsl.geom
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 231
+
+ Capability Geometry
+ Capability MultiViewport
+ Extension "SPV_KHR_non_semantic_info"
+ 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Geometry 13 "main" 52 85 104 112 116 146 181 189 206 216 221 225
+ ExecutionMode 13 Triangles
+ ExecutionMode 13 Invocations 2
+ ExecutionMode 13 OutputTriangleStrip
+ ExecutionMode 13 OutputVertices 3
+ 8: String "uint"
+ 14: String "main"
+ 17: String ""
+ 25: String "int"
+ 30: String "i"
+ 43: String "bool"
+ 47: String "float"
+ 54: String "outNormal"
+ 68: String "projection"
+ 72: String "modelview"
+ 75: String "lightPos"
+ 78: String "UBO"
+ 82: String "ubo"
+ 87: String "gl_InvocationID"
+ 106: String "inNormal"
+ 114: String "outColor"
+ 118: String "inColor"
+ 125: String "pos"
+ 132: String "gl_Position"
+ 135: String "gl_PointSize"
+ 138: String "gl_CullDistance"
+ 142: String "gl_PerVertex"
+ 148: String "gl_in"
+ 155: String "worldPos"
+ 166: String "lPos"
+ 183: String "outLightVec"
+ 191: String "outViewVec"
+ 218: String "gl_ViewportIndex"
+ 223: String "gl_PrimitiveID"
+ 227: String "gl_PrimitiveIDIn"
+ SourceExtension "GL_ARB_viewport_array"
+ Name 13 "main"
+ Name 28 "i"
+ Name 52 "outNormal"
+ Name 66 "UBO"
+ MemberName 66(UBO) 0 "projection"
+ MemberName 66(UBO) 1 "modelview"
+ MemberName 66(UBO) 2 "lightPos"
+ Name 80 "ubo"
+ Name 85 "gl_InvocationID"
+ Name 104 "inNormal"
+ Name 112 "outColor"
+ Name 116 "inColor"
+ Name 123 "pos"
+ Name 130 "gl_PerVertex"
+ MemberName 130(gl_PerVertex) 0 "gl_Position"
+ MemberName 130(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 130(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 130(gl_PerVertex) 3 "gl_CullDistance"
+ Name 146 "gl_in"
+ Name 153 "worldPos"
+ Name 164 "lPos"
+ Name 181 "outLightVec"
+ Name 189 "outViewVec"
+ Name 196 "gl_PerVertex"
+ MemberName 196(gl_PerVertex) 0 "gl_Position"
+ MemberName 196(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 196(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 196(gl_PerVertex) 3 "gl_CullDistance"
+ Name 206 ""
+ Name 216 "gl_ViewportIndex"
+ Name 221 "gl_PrimitiveID"
+ Name 225 "gl_PrimitiveIDIn"
+ Decorate 52(outNormal) Location 0
+ Decorate 62 ArrayStride 64
+ Decorate 64 ArrayStride 64
+ MemberDecorate 66(UBO) 0 ColMajor
+ MemberDecorate 66(UBO) 0 Offset 0
+ MemberDecorate 66(UBO) 0 MatrixStride 16
+ MemberDecorate 66(UBO) 1 ColMajor
+ MemberDecorate 66(UBO) 1 Offset 128
+ MemberDecorate 66(UBO) 1 MatrixStride 16
+ MemberDecorate 66(UBO) 2 Offset 256
+ Decorate 66(UBO) Block
+ Decorate 80(ubo) DescriptorSet 0
+ Decorate 80(ubo) Binding 0
+ Decorate 85(gl_InvocationID) BuiltIn InvocationId
+ Decorate 104(inNormal) Location 0
+ Decorate 112(outColor) Location 1
+ Decorate 116(inColor) Location 1
+ MemberDecorate 130(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 130(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 130(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 130(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 130(gl_PerVertex) Block
+ Decorate 181(outLightVec) Location 3
+ Decorate 189(outViewVec) Location 2
+ MemberDecorate 196(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 196(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 196(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 196(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 196(gl_PerVertex) Block
+ Decorate 216(gl_ViewportIndex) BuiltIn ViewportIndex
+ Decorate 221(gl_PrimitiveID) BuiltIn PrimitiveId
+ Decorate 225(gl_PrimitiveIDIn) BuiltIn PrimitiveId
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 6: TypeInt 32 0
+ 9: 6(int) Constant 32
+ 10: 6(int) Constant 6
+ 11: 6(int) Constant 0
+ 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11
+ 12: 6(int) Constant 3
+ 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3
+ 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17
+ 19: 6(int) Constant 1
+ 20: 6(int) Constant 4
+ 21: 6(int) Constant 2
+ 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21
+ 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11
+ 24: TypeInt 32 1
+ 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 25 9 20 11
+ 27: TypePointer Function 24(int)
+ 31: 6(int) Constant 49
+ 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 30 26 16 31 11 15 20
+ 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
+ 34: 24(int) Constant 0
+ 41: 24(int) Constant 3
+ 42: TypeBool
+ 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 43 9 21 11
+ 46: TypeFloat 32
+ 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 12 11
+ 49: TypeVector 46(float) 3
+ 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 48 12
+ 51: TypePointer Output 49(fvec3)
+ 52(outNormal): 51(ptr) Variable Output
+ 55: 6(int) Constant 51
+ 56: 6(int) Constant 8
+ 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 54 50 16 55 11 18 54 52(outNormal) 56
+ 57: TypeVector 46(float) 4
+ 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 48 20
+ 59: TypeMatrix 57(fvec4) 4
+ 61: 42(bool) ConstantTrue
+ 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 58 20 61
+ 62: TypeArray 59 21
+ 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 60 21
+ 64: TypeArray 59 21
+ 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 60 21
+ 66(UBO): TypeStruct 62 64 57(fvec4)
+ 69: 6(int) Constant 34
+ 70: 6(int) Constant 7
+ 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 68 63 16 69 70 11 11 12
+ 73: 6(int) Constant 35
+ 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 72 65 16 73 70 11 11 12
+ 76: 6(int) Constant 36
+ 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 75 58 16 76 70 11 11 12
+ 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 78 19 16 55 11 18 78 11 12 67 71 74
+ 79: TypePointer Uniform 66(UBO)
+ 80(ubo): 79(ptr) Variable Uniform
+ 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 82 77 16 55 11 18 82 80(ubo) 56
+ 83: 24(int) Constant 1
+ 84: TypePointer Input 24(int)
+85(gl_InvocationID): 84(ptr) Variable Input
+ 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 87 26 16 55 11 18 87 85(gl_InvocationID) 56
+ 89: TypePointer Uniform 59
+ 92: TypeMatrix 49(fvec3) 3
+ 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 50 12 61
+ 101: TypeArray 49(fvec3) 12
+ 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 50 12
+ 103: TypePointer Input 101
+ 104(inNormal): 103(ptr) Variable Input
+ 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 106 102 16 55 11 18 106 104(inNormal) 56
+ 108: TypePointer Input 49(fvec3)
+ 112(outColor): 51(ptr) Variable Output
+ 115: 6(int) Constant 52
+ 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 114 50 16 115 11 18 114 112(outColor) 56
+ 116(inColor): 103(ptr) Variable Input
+ 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 118 102 16 115 11 18 118 116(inColor) 56
+ 122: TypePointer Function 57(fvec4)
+ 126: 6(int) Constant 54
+ 124: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 125 58 16 126 11 15 20
+ 128: TypeArray 46(float) 19
+ 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 48 19
+130(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 128 128
+ 133: 6(int) Constant 23
+ 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 132 58 16 21 133 11 11 12
+ 136: 6(int) Constant 41
+ 134: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 135 48 16 21 136 11 11 12
+ 139: 6(int) Constant 84
+ 137: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 129 16 21 139 11 11 12
+ 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 129 16 21 139 11 11 12
+ 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 19 16 126 11 18 142 11 12 131 134 137 140
+ 143: TypeArray 130(gl_PerVertex) 12
+ 144: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 141 12
+ 145: TypePointer Input 143
+ 146(gl_in): 145(ptr) Variable Input
+ 147: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 148 144 16 126 11 18 148 146(gl_in) 56
+ 150: TypePointer Input 57(fvec4)
+ 156: 6(int) Constant 55
+ 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 155 58 16 156 11 15 20
+ 163: TypePointer Function 49(fvec3)
+ 167: 6(int) Constant 57
+ 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 166 50 16 167 11 15 20
+ 172: 24(int) Constant 2
+ 173: TypePointer Uniform 57(fvec4)
+181(outLightVec): 51(ptr) Variable Output
+ 184: 6(int) Constant 58
+ 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 183 50 16 184 11 18 183 181(outLightVec) 56
+ 189(outViewVec): 51(ptr) Variable Output
+ 192: 6(int) Constant 59
+ 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 191 50 16 192 11 18 191 189(outViewVec) 56
+196(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 128 128
+ 198: 6(int) Constant 215
+ 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 132 58 16 21 198 11 11 12
+ 200: 6(int) Constant 233
+ 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 135 48 16 21 200 11 11 12
+ 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 129 16 12 70 11 11 12
+ 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 129 16 12 70 11 11 12
+ 204: 6(int) Constant 61
+ 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 19 16 204 11 18 142 11 12 197 199 201 202
+ 205: TypePointer Output 196(gl_PerVertex)
+ 206: 205(ptr) Variable Output
+ 207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 203 16 204 11 18 17 206 56
+ 213: TypePointer Output 57(fvec4)
+ 215: TypePointer Output 24(int)
+216(gl_ViewportIndex): 215(ptr) Variable Output
+ 219: 6(int) Constant 64
+ 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 218 26 16 219 11 18 218 216(gl_ViewportIndex) 56
+221(gl_PrimitiveID): 215(ptr) Variable Output
+ 224: 6(int) Constant 65
+ 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 223 26 16 224 11 18 223 221(gl_PrimitiveID) 56
+225(gl_PrimitiveIDIn): 84(ptr) Variable Input
+ 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 227 26 16 224 11 18 227 225(gl_PrimitiveIDIn) 56
+ 13(main): 3 Function None 4
+ 22: Label
+ 28(i): 27(ptr) Variable Function
+ 123(pos): 122(ptr) Variable Function
+ 153(worldPos): 122(ptr) Variable Function
+ 164(lPos): 163(ptr) Variable Function
+ 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main)
+ 32: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 29 28(i) 33
+ Store 28(i) 34
+ Branch 35
+ 35: Label
+ LoopMerge 37 38 None
+ Branch 39
+ 39: Label
+ 40: 24(int) Load 28(i)
+ 45: 42(bool) SLessThan 40 41
+ BranchConditional 45 36 37
+ 36: Label
+ 88: 24(int) Load 85(gl_InvocationID)
+ 90: 89(ptr) AccessChain 80(ubo) 83 88
+ 91: 59 Load 90
+ 94: 57(fvec4) CompositeExtract 91 0
+ 95: 49(fvec3) VectorShuffle 94 94 0 1 2
+ 96: 57(fvec4) CompositeExtract 91 1
+ 97: 49(fvec3) VectorShuffle 96 96 0 1 2
+ 98: 57(fvec4) CompositeExtract 91 2
+ 99: 49(fvec3) VectorShuffle 98 98 0 1 2
+ 100: 92 CompositeConstruct 95 97 99
+ 107: 24(int) Load 28(i)
+ 109: 108(ptr) AccessChain 104(inNormal) 107
+ 110: 49(fvec3) Load 109
+ 111: 49(fvec3) MatrixTimesVector 100 110
+ Store 52(outNormal) 111
+ 119: 24(int) Load 28(i)
+ 120: 108(ptr) AccessChain 116(inColor) 119
+ 121: 49(fvec3) Load 120
+ Store 112(outColor) 121
+ 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 124 123(pos) 33
+ 149: 24(int) Load 28(i)
+ 151: 150(ptr) AccessChain 146(gl_in) 149 34
+ 152: 57(fvec4) Load 151
+ Store 123(pos) 152
+ 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 154 153(worldPos) 33
+ 158: 24(int) Load 85(gl_InvocationID)
+ 159: 89(ptr) AccessChain 80(ubo) 83 158
+ 160: 59 Load 159
+ 161: 57(fvec4) Load 123(pos)
+ 162: 57(fvec4) MatrixTimesVector 160 161
+ Store 153(worldPos) 162
+ 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 165 164(lPos) 33
+ 169: 24(int) Load 85(gl_InvocationID)
+ 170: 89(ptr) AccessChain 80(ubo) 83 169
+ 171: 59 Load 170
+ 174: 173(ptr) AccessChain 80(ubo) 172
+ 175: 57(fvec4) Load 174
+ 176: 57(fvec4) MatrixTimesVector 171 175
+ 177: 46(float) CompositeExtract 176 0
+ 178: 46(float) CompositeExtract 176 1
+ 179: 46(float) CompositeExtract 176 2
+ 180: 49(fvec3) CompositeConstruct 177 178 179
+ Store 164(lPos) 180
+ 185: 49(fvec3) Load 164(lPos)
+ 186: 57(fvec4) Load 153(worldPos)
+ 187: 49(fvec3) VectorShuffle 186 186 0 1 2
+ 188: 49(fvec3) FSub 185 187
+ Store 181(outLightVec) 188
+ 193: 57(fvec4) Load 153(worldPos)
+ 194: 49(fvec3) VectorShuffle 193 193 0 1 2
+ 195: 49(fvec3) FNegate 194
+ Store 189(outViewVec) 195
+ 208: 24(int) Load 85(gl_InvocationID)
+ 209: 89(ptr) AccessChain 80(ubo) 34 208
+ 210: 59 Load 209
+ 211: 57(fvec4) Load 153(worldPos)
+ 212: 57(fvec4) MatrixTimesVector 210 211
+ 214: 213(ptr) AccessChain 206 34
+ Store 214 212
+ 220: 24(int) Load 85(gl_InvocationID)
+ Store 216(gl_ViewportIndex) 220
+ 228: 24(int) Load 225(gl_PrimitiveIDIn)
+ Store 221(gl_PrimitiveID) 228
+ EmitVertex
+ Branch 38
+ 38: Label
+ 229: 24(int) Load 28(i)
+ 230: 24(int) IAdd 229 83
+ Store 28(i) 230
+ Branch 35
+ 37: Label
+ EndPrimitive
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out
new file mode 100644
index 0000000..ae9bfad
--- /dev/null
+++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out
@@ -0,0 +1,619 @@
+spv.debuginfo.glsl.tesc
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 457
+
+ Capability Tessellation
+ Extension "SPV_KHR_non_semantic_info"
+ 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationControl 13 "main" 230 234 259 325 335 415 427 435 447
+ ExecutionMode 13 OutputVertices 4
+ 8: String "uint"
+ 14: String "main"
+ 17: String ""
+ 24: String "float"
+ 34: String "screenSpaceTessFactor"
+ 40: String "p0"
+ 44: String "p1"
+ 47: String "bool"
+ 52: String "frustumCheck"
+ 58: String "midPoint"
+ 69: String "radius"
+ 79: String "v0"
+ 91: String "modelview"
+ 96: String "lightPos"
+ 99: String "frustumPlanes"
+ 101: String "tessellatedEdgeSize"
+ 106: String "viewportDim"
+ 110: String "UBO"
+ 114: String "ubo"
+ 116: String "int"
+ 126: String "clip0"
+ 146: String "clip1"
+ 209: String "pos"
+ 216: String "gl_Position"
+ 219: String "gl_PointSize"
+ 222: String "gl_CullDistance"
+ 226: String "gl_PerVertex"
+ 232: String "gl_in"
+ 236: String "gl_InvocationID"
+ 243: String "type.2d.image"
+ 245: String "@type.2d.image"
+ 249: String "type.sampled.image"
+ 250: String "@type.sampled.image"
+ 254: String "samplerHeight"
+ 261: String "inUV"
+ 278: String "i"
+ 327: String "gl_TessLevelInner"
+ 337: String "gl_TessLevelOuter"
+ 417: String "gl_out"
+ 429: String "outNormal"
+ 437: String "inNormal"
+ 449: String "outUV"
+ Name 13 "main"
+ Name 33 "screenSpaceTessFactor(vf4;vf4;"
+ Name 31 "p0"
+ Name 32 "p1"
+ Name 51 "frustumCheck("
+ Name 56 "midPoint"
+ Name 67 "radius"
+ Name 77 "v0"
+ Name 89 "UBO"
+ MemberName 89(UBO) 0 "projection"
+ MemberName 89(UBO) 1 "modelview"
+ MemberName 89(UBO) 2 "lightPos"
+ MemberName 89(UBO) 3 "frustumPlanes"
+ MemberName 89(UBO) 4 "displacementFactor"
+ MemberName 89(UBO) 5 "tessellationFactor"
+ MemberName 89(UBO) 6 "viewportDim"
+ MemberName 89(UBO) 7 "tessellatedEdgeSize"
+ Name 112 "ubo"
+ Name 124 "clip0"
+ Name 144 "clip1"
+ Name 207 "pos"
+ Name 214 "gl_PerVertex"
+ MemberName 214(gl_PerVertex) 0 "gl_Position"
+ MemberName 214(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 214(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 214(gl_PerVertex) 3 "gl_CullDistance"
+ Name 230 "gl_in"
+ Name 234 "gl_InvocationID"
+ Name 252 "samplerHeight"
+ Name 259 "inUV"
+ Name 276 "i"
+ Name 325 "gl_TessLevelInner"
+ Name 335 "gl_TessLevelOuter"
+ Name 351 "param"
+ Name 354 "param"
+ Name 359 "param"
+ Name 362 "param"
+ Name 367 "param"
+ Name 370 "param"
+ Name 375 "param"
+ Name 378 "param"
+ Name 402 "gl_PerVertex"
+ MemberName 402(gl_PerVertex) 0 "gl_Position"
+ MemberName 402(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 402(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 402(gl_PerVertex) 3 "gl_CullDistance"
+ Name 415 "gl_out"
+ Name 427 "outNormal"
+ Name 435 "inNormal"
+ Name 447 "outUV"
+ Decorate 85 ArrayStride 16
+ MemberDecorate 89(UBO) 0 ColMajor
+ MemberDecorate 89(UBO) 0 Offset 0
+ MemberDecorate 89(UBO) 0 MatrixStride 16
+ MemberDecorate 89(UBO) 1 ColMajor
+ MemberDecorate 89(UBO) 1 Offset 64
+ MemberDecorate 89(UBO) 1 MatrixStride 16
+ MemberDecorate 89(UBO) 2 Offset 128
+ MemberDecorate 89(UBO) 3 Offset 144
+ MemberDecorate 89(UBO) 4 Offset 240
+ MemberDecorate 89(UBO) 5 Offset 244
+ MemberDecorate 89(UBO) 6 Offset 248
+ MemberDecorate 89(UBO) 7 Offset 256
+ Decorate 89(UBO) Block
+ Decorate 112(ubo) DescriptorSet 0
+ Decorate 112(ubo) Binding 0
+ MemberDecorate 214(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 214(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 214(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 214(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 214(gl_PerVertex) Block
+ Decorate 234(gl_InvocationID) BuiltIn InvocationId
+ Decorate 252(samplerHeight) DescriptorSet 0
+ Decorate 252(samplerHeight) Binding 1
+ Decorate 259(inUV) Location 1
+ Decorate 325(gl_TessLevelInner) Patch
+ Decorate 325(gl_TessLevelInner) BuiltIn TessLevelInner
+ Decorate 335(gl_TessLevelOuter) Patch
+ Decorate 335(gl_TessLevelOuter) BuiltIn TessLevelOuter
+ MemberDecorate 402(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 402(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 402(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 402(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 402(gl_PerVertex) Block
+ Decorate 427(outNormal) Location 0
+ Decorate 435(inNormal) Location 0
+ Decorate 447(outUV) Location 1
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 6: TypeInt 32 0
+ 9: 6(int) Constant 32
+ 10: 6(int) Constant 6
+ 11: 6(int) Constant 0
+ 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11
+ 12: 6(int) Constant 3
+ 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3
+ 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17
+ 19: 6(int) Constant 1
+ 20: 6(int) Constant 4
+ 21: 6(int) Constant 2
+ 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21
+ 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11
+ 23: TypeFloat 32
+ 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11
+ 26: TypeVector 23(float) 4
+ 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20
+ 28: TypePointer Function 26(fvec4)
+ 29: TypeFunction 23(float) 28(ptr) 28(ptr)
+ 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 25 27 27
+ 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 34 30 16 11 11 18 34 12 11
+ 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 40 27 16 11 11 35 20 19
+ 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
+ 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 44 27 16 11 11 35 20 21
+ 46: TypeBool
+ 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
+ 49: TypeFunction 46(bool)
+ 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 48
+ 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 52 50 16 11 11 18 52 12 11
+ 59: 6(int) Constant 54
+ 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 58 27 16 59 11 35 20
+ 61: 23(float) Constant 1056964608
+ 66: TypePointer Function 23(float)
+ 70: 6(int) Constant 56
+ 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 69 25 16 70 11 35 20
+ 75: 23(float) Constant 1073741824
+ 80: 6(int) Constant 59
+ 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 79 27 16 80 11 35 20
+ 82: TypeMatrix 26(fvec4) 4
+ 84: 46(bool) ConstantTrue
+ 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 27 20 84
+ 85: TypeArray 26(fvec4) 10
+ 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 27 10
+ 87: TypeVector 23(float) 2
+ 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 21
+ 89(UBO): TypeStruct 82 82 26(fvec4) 85 23(float) 23(float) 87(fvec2) 23(float)
+ 92: 6(int) Constant 30
+ 93: 6(int) Constant 7
+ 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 91 83 16 92 93 11 11 12
+ 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 91 83 16 92 93 11 11 12
+ 97: 6(int) Constant 31
+ 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 96 27 16 97 93 11 11 12
+ 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 99 86 16 9 93 11 11 12
+ 102: 6(int) Constant 36
+ 103: 6(int) Constant 8
+ 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 101 25 16 102 103 11 11 12
+ 104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 101 25 16 102 103 11 11 12
+ 107: 6(int) Constant 35
+ 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 106 88 16 107 93 11 11 12
+ 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 101 25 16 102 103 11 11 12
+ 109: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 110 19 16 80 11 18 110 11 12 90 94 95 98 100 104 105 108
+ 111: TypePointer Uniform 89(UBO)
+ 112(ubo): 111(ptr) Variable Uniform
+ 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 114 109 16 80 11 18 114 112(ubo) 103
+ 115: TypeInt 32 1
+ 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 116 9 20 11
+ 118: 115(int) Constant 1
+ 119: TypePointer Uniform 82
+ 127: 6(int) Constant 62
+ 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 126 27 16 127 11 35 20
+ 129: 115(int) Constant 0
+ 134: TypeVector 23(float) 3
+ 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12
+ 136: 23(float) Constant 0
+ 137: 134(fvec3) ConstantComposite 136 136 136
+ 147: 6(int) Constant 63
+ 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 146 27 16 147 11 35 20
+ 169: 115(int) Constant 6
+ 170: TypePointer Uniform 87(fvec2)
+ 192: 115(int) Constant 7
+ 193: TypePointer Uniform 23(float)
+ 197: 115(int) Constant 5
+ 201: 23(float) Constant 1065353216
+ 202: 23(float) Constant 1115684864
+ 210: 6(int) Constant 85
+ 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 209 27 16 210 11 53 20
+ 212: TypeArray 23(float) 19
+ 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 19
+214(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 212 212
+ 217: 6(int) Constant 1756
+ 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 216 27 16 19 217 11 11 12
+ 220: 6(int) Constant 1774
+ 218: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 219 25 16 19 220 11 11 12
+ 223: 6(int) Constant 1817
+ 221: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 222 213 16 19 223 11 11 12
+ 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 222 213 16 19 223 11 11 12
+ 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 226 19 16 210 11 18 226 11 12 215 218 221 224
+ 227: TypeArray 214(gl_PerVertex) 9
+ 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 225 9
+ 229: TypePointer Input 227
+ 230(gl_in): 229(ptr) Variable Input
+ 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 232 228 16 210 11 18 232 230(gl_in) 103
+ 233: TypePointer Input 115(int)
+234(gl_InvocationID): 233(ptr) Variable Input
+ 235: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 236 117 16 210 11 18 236 234(gl_InvocationID) 103
+ 238: TypePointer Input 26(fvec4)
+ 241: TypeImage 23(float) 2D sampled format:Unknown
+ 244: 6(int) Constant 86
+ 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown)
+ 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 243 11 16 244 11 18 245 246 12
+ 247: TypeSampledImage 241
+ 248: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 249 11 16 244 11 18 250 246 12
+ 251: TypePointer UniformConstant 247
+252(samplerHeight): 251(ptr) Variable UniformConstant
+ 253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 254 248 16 244 11 18 254 252(samplerHeight) 103
+ 256: TypeArray 87(fvec2) 9
+ 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 88 9
+ 258: TypePointer Input 256
+ 259(inUV): 258(ptr) Variable Input
+ 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 261 257 16 244 11 18 261 259(inUV) 103
+ 262: TypePointer Input 87(fvec2)
+ 267: 115(int) Constant 4
+ 275: TypePointer Function 115(int)
+ 279: 6(int) Constant 89
+ 277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 278 117 16 279 11 53 20
+ 287: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
+ 290: 115(int) Constant 3
+ 292: TypePointer Uniform 26(fvec4)
+ 296: 23(float) Constant 1090519040
+ 298: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
+ 302: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
+ 303: 46(bool) ConstantFalse
+ 307: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
+ 312: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
+ 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
+ 318: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
+ 322: TypeArray 23(float) 21
+ 323: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 21
+ 324: TypePointer Output 322
+325(gl_TessLevelInner): 324(ptr) Variable Output
+ 328: 6(int) Constant 104
+ 326: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 327 323 16 328 11 18 327 325(gl_TessLevelInner) 103
+ 329: TypePointer Output 23(float)
+ 332: TypeArray 23(float) 20
+ 333: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 20
+ 334: TypePointer Output 332
+335(gl_TessLevelOuter): 334(ptr) Variable Output
+ 338: 6(int) Constant 106
+ 336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 337 333 16 338 11 18 337 335(gl_TessLevelOuter) 103
+ 341: 115(int) Constant 2
+ 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11
+402(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 212 212
+ 404: 6(int) Constant 110
+ 403: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 216 27 16 19 404 11 11 12
+ 406: 6(int) Constant 128
+ 405: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 219 25 16 19 406 11 11 12
+ 408: 6(int) Constant 171
+ 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 222 213 16 19 408 11 11 12
+ 409: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 222 213 16 19 408 11 11 12
+ 411: 6(int) Constant 137
+ 410: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 226 19 16 411 11 18 226 11 12 403 405 407 409
+ 412: TypeArray 402(gl_PerVertex) 20
+ 413: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 410 20
+ 414: TypePointer Output 412
+ 415(gl_out): 414(ptr) Variable Output
+ 416: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 417 413 16 411 11 18 417 415(gl_out) 103
+ 422: TypePointer Output 26(fvec4)
+ 424: TypeArray 134(fvec3) 20
+ 425: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 135 20
+ 426: TypePointer Output 424
+ 427(outNormal): 426(ptr) Variable Output
+ 430: 6(int) Constant 138
+ 428: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 429 425 16 430 11 18 429 427(outNormal) 103
+ 432: TypeArray 134(fvec3) 9
+ 433: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 135 9
+ 434: TypePointer Input 432
+ 435(inNormal): 434(ptr) Variable Input
+ 436: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 437 433 16 430 11 18 437 435(inNormal) 103
+ 439: TypePointer Input 134(fvec3)
+ 442: TypePointer Output 134(fvec3)
+ 444: TypeArray 87(fvec2) 20
+ 445: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 88 20
+ 446: TypePointer Output 444
+ 447(outUV): 446(ptr) Variable Output
+ 450: 6(int) Constant 139
+ 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 449 445 16 450 11 18 449 447(outUV) 103
+ 455: TypePointer Output 87(fvec2)
+ 13(main): 3 Function None 4
+ 22: Label
+ 351(param): 28(ptr) Variable Function
+ 354(param): 28(ptr) Variable Function
+ 359(param): 28(ptr) Variable Function
+ 362(param): 28(ptr) Variable Function
+ 367(param): 28(ptr) Variable Function
+ 370(param): 28(ptr) Variable Function
+ 375(param): 28(ptr) Variable Function
+ 378(param): 28(ptr) Variable Function
+ 310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main)
+ 311: 115(int) Load 234(gl_InvocationID)
+ 313: 46(bool) IEqual 311 129
+ SelectionMerge 315 None
+ BranchConditional 313 314 315
+ 314: Label
+ 316: 46(bool) FunctionCall 51(frustumCheck()
+ 319: 46(bool) LogicalNot 316
+ SelectionMerge 321 None
+ BranchConditional 319 320 344
+ 320: Label
+ 330: 329(ptr) AccessChain 325(gl_TessLevelInner) 129
+ Store 330 136
+ 331: 329(ptr) AccessChain 325(gl_TessLevelInner) 118
+ Store 331 136
+ 339: 329(ptr) AccessChain 335(gl_TessLevelOuter) 129
+ Store 339 136
+ 340: 329(ptr) AccessChain 335(gl_TessLevelOuter) 118
+ Store 340 136
+ 342: 329(ptr) AccessChain 335(gl_TessLevelOuter) 341
+ Store 342 136
+ 343: 329(ptr) AccessChain 335(gl_TessLevelOuter) 290
+ Store 343 136
+ Branch 321
+ 344: Label
+ 345: 193(ptr) AccessChain 112(ubo) 197
+ 346: 23(float) Load 345
+ 348: 46(bool) FOrdGreaterThan 346 136
+ SelectionMerge 350 None
+ BranchConditional 348 349 395
+ 349: Label
+ 352: 238(ptr) AccessChain 230(gl_in) 290 129
+ 353: 26(fvec4) Load 352
+ Store 351(param) 353
+ 355: 238(ptr) AccessChain 230(gl_in) 129 129
+ 356: 26(fvec4) Load 355
+ Store 354(param) 356
+ 357: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 351(param) 354(param)
+ 358: 329(ptr) AccessChain 335(gl_TessLevelOuter) 129
+ Store 358 357
+ 360: 238(ptr) AccessChain 230(gl_in) 129 129
+ 361: 26(fvec4) Load 360
+ Store 359(param) 361
+ 363: 238(ptr) AccessChain 230(gl_in) 118 129
+ 364: 26(fvec4) Load 363
+ Store 362(param) 364
+ 365: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 359(param) 362(param)
+ 366: 329(ptr) AccessChain 335(gl_TessLevelOuter) 118
+ Store 366 365
+ 368: 238(ptr) AccessChain 230(gl_in) 118 129
+ 369: 26(fvec4) Load 368
+ Store 367(param) 369
+ 371: 238(ptr) AccessChain 230(gl_in) 341 129
+ 372: 26(fvec4) Load 371
+ Store 370(param) 372
+ 373: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 367(param) 370(param)
+ 374: 329(ptr) AccessChain 335(gl_TessLevelOuter) 341
+ Store 374 373
+ 376: 238(ptr) AccessChain 230(gl_in) 341 129
+ 377: 26(fvec4) Load 376
+ Store 375(param) 377
+ 379: 238(ptr) AccessChain 230(gl_in) 290 129
+ 380: 26(fvec4) Load 379
+ Store 378(param) 380
+ 381: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 375(param) 378(param)
+ 382: 329(ptr) AccessChain 335(gl_TessLevelOuter) 290
+ Store 382 381
+ 383: 329(ptr) AccessChain 335(gl_TessLevelOuter) 129
+ 384: 23(float) Load 383
+ 385: 329(ptr) AccessChain 335(gl_TessLevelOuter) 290
+ 386: 23(float) Load 385
+ 387: 23(float) ExtInst 2(GLSL.std.450) 46(FMix) 384 386 61
+ 388: 329(ptr) AccessChain 325(gl_TessLevelInner) 129
+ Store 388 387
+ 389: 329(ptr) AccessChain 335(gl_TessLevelOuter) 341
+ 390: 23(float) Load 389
+ 391: 329(ptr) AccessChain 335(gl_TessLevelOuter) 118
+ 392: 23(float) Load 391
+ 393: 23(float) ExtInst 2(GLSL.std.450) 46(FMix) 390 392 61
+ 394: 329(ptr) AccessChain 325(gl_TessLevelInner) 118
+ Store 394 393
+ Branch 350
+ 395: Label
+ 396: 329(ptr) AccessChain 325(gl_TessLevelInner) 129
+ Store 396 201
+ 397: 329(ptr) AccessChain 325(gl_TessLevelInner) 118
+ Store 397 201
+ 398: 329(ptr) AccessChain 335(gl_TessLevelOuter) 129
+ Store 398 201
+ 399: 329(ptr) AccessChain 335(gl_TessLevelOuter) 118
+ Store 399 201
+ 400: 329(ptr) AccessChain 335(gl_TessLevelOuter) 341
+ Store 400 201
+ 401: 329(ptr) AccessChain 335(gl_TessLevelOuter) 290
+ Store 401 201
+ Branch 350
+ 350: Label
+ Branch 321
+ 321: Label
+ Branch 315
+ 315: Label
+ 418: 115(int) Load 234(gl_InvocationID)
+ 419: 115(int) Load 234(gl_InvocationID)
+ 420: 238(ptr) AccessChain 230(gl_in) 419 129
+ 421: 26(fvec4) Load 420
+ 423: 422(ptr) AccessChain 415(gl_out) 418 129
+ Store 423 421
+ 431: 115(int) Load 234(gl_InvocationID)
+ 438: 115(int) Load 234(gl_InvocationID)
+ 440: 439(ptr) AccessChain 435(inNormal) 438
+ 441: 134(fvec3) Load 440
+ 443: 442(ptr) AccessChain 427(outNormal) 431
+ Store 443 441
+ 451: 115(int) Load 234(gl_InvocationID)
+ 452: 115(int) Load 234(gl_InvocationID)
+ 453: 262(ptr) AccessChain 259(inUV) 452
+ 454: 87(fvec2) Load 453
+ 456: 455(ptr) AccessChain 447(outUV) 451
+ Store 456 454
+ Return
+ FunctionEnd
+33(screenSpaceTessFactor(vf4;vf4;): 23(float) Function None 29
+ 31(p0): 28(ptr) FunctionParameter
+ 32(p1): 28(ptr) FunctionParameter
+ 36: Label
+ 56(midPoint): 28(ptr) Variable Function
+ 67(radius): 66(ptr) Variable Function
+ 77(v0): 28(ptr) Variable Function
+ 124(clip0): 28(ptr) Variable Function
+ 144(clip1): 28(ptr) Variable Function
+ 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 35
+ 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11
+ 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 39 31(p0) 42
+ 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 43 32(p1) 42
+ 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 35 33(screenSpaceTessFactor(vf4;vf4;)
+ 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 57 56(midPoint) 42
+ 62: 26(fvec4) Load 31(p0)
+ 63: 26(fvec4) Load 32(p1)
+ 64: 26(fvec4) FAdd 62 63
+ 65: 26(fvec4) VectorTimesScalar 64 61
+ Store 56(midPoint) 65
+ 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 68 67(radius) 42
+ 72: 26(fvec4) Load 31(p0)
+ 73: 26(fvec4) Load 32(p1)
+ 74: 23(float) ExtInst 2(GLSL.std.450) 67(Distance) 72 73
+ 76: 23(float) FDiv 74 75
+ Store 67(radius) 76
+ 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 78 77(v0) 42
+ 120: 119(ptr) AccessChain 112(ubo) 118
+ 121: 82 Load 120
+ 122: 26(fvec4) Load 56(midPoint)
+ 123: 26(fvec4) MatrixTimesVector 121 122
+ Store 77(v0) 123
+ 128: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 125 124(clip0) 42
+ 130: 119(ptr) AccessChain 112(ubo) 129
+ 131: 82 Load 130
+ 132: 26(fvec4) Load 77(v0)
+ 133: 23(float) Load 67(radius)
+ 138: 23(float) CompositeExtract 137 0
+ 139: 23(float) CompositeExtract 137 1
+ 140: 23(float) CompositeExtract 137 2
+ 141: 26(fvec4) CompositeConstruct 133 138 139 140
+ 142: 26(fvec4) FSub 132 141
+ 143: 26(fvec4) MatrixTimesVector 131 142
+ Store 124(clip0) 143
+ 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 145 144(clip1) 42
+ 149: 119(ptr) AccessChain 112(ubo) 129
+ 150: 82 Load 149
+ 151: 26(fvec4) Load 77(v0)
+ 152: 23(float) Load 67(radius)
+ 153: 23(float) CompositeExtract 137 0
+ 154: 23(float) CompositeExtract 137 1
+ 155: 23(float) CompositeExtract 137 2
+ 156: 26(fvec4) CompositeConstruct 152 153 154 155
+ 157: 26(fvec4) FAdd 151 156
+ 158: 26(fvec4) MatrixTimesVector 150 157
+ Store 144(clip1) 158
+ 159: 66(ptr) AccessChain 124(clip0) 12
+ 160: 23(float) Load 159
+ 161: 26(fvec4) Load 124(clip0)
+ 162: 26(fvec4) CompositeConstruct 160 160 160 160
+ 163: 26(fvec4) FDiv 161 162
+ Store 124(clip0) 163
+ 164: 66(ptr) AccessChain 144(clip1) 12
+ 165: 23(float) Load 164
+ 166: 26(fvec4) Load 144(clip1)
+ 167: 26(fvec4) CompositeConstruct 165 165 165 165
+ 168: 26(fvec4) FDiv 166 167
+ Store 144(clip1) 168
+ 171: 170(ptr) AccessChain 112(ubo) 169
+ 172: 87(fvec2) Load 171
+ 173: 26(fvec4) Load 124(clip0)
+ 174: 87(fvec2) VectorShuffle 173 173 0 1
+ 175: 87(fvec2) FMul 174 172
+ 176: 66(ptr) AccessChain 124(clip0) 11
+ 177: 23(float) CompositeExtract 175 0
+ Store 176 177
+ 178: 66(ptr) AccessChain 124(clip0) 19
+ 179: 23(float) CompositeExtract 175 1
+ Store 178 179
+ 180: 170(ptr) AccessChain 112(ubo) 169
+ 181: 87(fvec2) Load 180
+ 182: 26(fvec4) Load 144(clip1)
+ 183: 87(fvec2) VectorShuffle 182 182 0 1
+ 184: 87(fvec2) FMul 183 181
+ 185: 66(ptr) AccessChain 144(clip1) 11
+ 186: 23(float) CompositeExtract 184 0
+ Store 185 186
+ 187: 66(ptr) AccessChain 144(clip1) 19
+ 188: 23(float) CompositeExtract 184 1
+ Store 187 188
+ 189: 26(fvec4) Load 124(clip0)
+ 190: 26(fvec4) Load 144(clip1)
+ 191: 23(float) ExtInst 2(GLSL.std.450) 67(Distance) 189 190
+ 194: 193(ptr) AccessChain 112(ubo) 192
+ 195: 23(float) Load 194
+ 196: 23(float) FDiv 191 195
+ 198: 193(ptr) AccessChain 112(ubo) 197
+ 199: 23(float) Load 198
+ 200: 23(float) FMul 196 199
+ 203: 23(float) ExtInst 2(GLSL.std.450) 43(FClamp) 200 201 202
+ ReturnValue 203
+ FunctionEnd
+51(frustumCheck(): 46(bool) Function None 49
+ 54: Label
+ 207(pos): 28(ptr) Variable Function
+ 276(i): 275(ptr) Variable Function
+ 206: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 53 51(frustumCheck()
+ 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 208 207(pos) 42
+ 237: 115(int) Load 234(gl_InvocationID)
+ 239: 238(ptr) AccessChain 230(gl_in) 237 129
+ 240: 26(fvec4) Load 239
+ Store 207(pos) 240
+ 255: 247 Load 252(samplerHeight)
+ 263: 262(ptr) AccessChain 259(inUV) 129
+ 264: 87(fvec2) Load 263
+ 265: 26(fvec4) ImageSampleExplicitLod 255 264 Lod 136
+ 266: 23(float) CompositeExtract 265 0
+ 268: 193(ptr) AccessChain 112(ubo) 267
+ 269: 23(float) Load 268
+ 270: 23(float) FMul 266 269
+ 271: 66(ptr) AccessChain 207(pos) 19
+ 272: 23(float) Load 271
+ 273: 23(float) FSub 272 270
+ 274: 66(ptr) AccessChain 207(pos) 19
+ Store 274 273
+ 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 277 276(i) 42
+ Store 276(i) 129
+ Branch 281
+ 281: Label
+ LoopMerge 283 284 None
+ Branch 285
+ 285: Label
+ 286: 115(int) Load 276(i)
+ 288: 46(bool) SLessThan 286 169
+ BranchConditional 288 282 283
+ 282: Label
+ 289: 26(fvec4) Load 207(pos)
+ 291: 115(int) Load 276(i)
+ 293: 292(ptr) AccessChain 112(ubo) 290 291
+ 294: 26(fvec4) Load 293
+ 295: 23(float) Dot 289 294
+ 297: 23(float) FAdd 295 296
+ 299: 46(bool) FOrdLessThan 297 136
+ SelectionMerge 301 None
+ BranchConditional 299 300 301
+ 300: Label
+ ReturnValue 303
+ 301: Label
+ Branch 284
+ 284: Label
+ 305: 115(int) Load 276(i)
+ 306: 115(int) IAdd 305 118
+ Store 276(i) 306
+ Branch 281
+ 283: Label
+ ReturnValue 84
+ FunctionEnd
diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out
new file mode 100644
index 0000000..d9d9681
--- /dev/null
+++ b/Test/baseResults/spv.debuginfo.glsl.tese.out
@@ -0,0 +1,421 @@
+spv.debuginfo.glsl.tese
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 315
+
+ Capability Tessellation
+ Extension "SPV_KHR_non_semantic_info"
+ 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationEvaluation 13 "main" 39 56 80 99 124 160 267 279 286 297 303
+ ExecutionMode 13 Quads
+ ExecutionMode 13 SpacingEqual
+ ExecutionMode 13 VertexOrderCw
+ 8: String "uint"
+ 14: String "main"
+ 17: String ""
+ 25: String "float"
+ 32: String "uv1"
+ 41: String "inUV"
+ 44: String "int"
+ 58: String "gl_TessCoord"
+ 66: String "uv2"
+ 82: String "outUV"
+ 93: String "n1"
+ 101: String "inNormal"
+ 112: String "n2"
+ 126: String "outNormal"
+ 139: String "pos1"
+ 146: String "gl_Position"
+ 149: String "gl_PointSize"
+ 152: String "gl_CullDistance"
+ 156: String "gl_PerVertex"
+ 162: String "gl_in"
+ 174: String "pos2"
+ 187: String "pos"
+ 198: String "type.2d.image"
+ 200: String "@type.2d.image"
+ 204: String "type.sampled.image"
+ 205: String "@type.sampled.image"
+ 209: String "displacementMap"
+ 223: String "modelview"
+ 228: String "lightPos"
+ 231: String "frustumPlanes"
+ 233: String "tessellatedEdgeSize"
+ 237: String "viewportDim"
+ 241: String "UBO"
+ 245: String "ubo"
+ 281: String "outViewVec"
+ 288: String "outLightVec"
+ 299: String "outWorldPos"
+ 305: String "outEyePos"
+ Name 13 "main"
+ Name 30 "uv1"
+ Name 39 "inUV"
+ Name 56 "gl_TessCoord"
+ Name 64 "uv2"
+ Name 80 "outUV"
+ Name 91 "n1"
+ Name 99 "inNormal"
+ Name 110 "n2"
+ Name 124 "outNormal"
+ Name 137 "pos1"
+ Name 144 "gl_PerVertex"
+ MemberName 144(gl_PerVertex) 0 "gl_Position"
+ MemberName 144(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 144(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 144(gl_PerVertex) 3 "gl_CullDistance"
+ Name 160 "gl_in"
+ Name 172 "pos2"
+ Name 185 "pos"
+ Name 207 "displacementMap"
+ Name 221 "UBO"
+ MemberName 221(UBO) 0 "projection"
+ MemberName 221(UBO) 1 "modelview"
+ MemberName 221(UBO) 2 "lightPos"
+ MemberName 221(UBO) 3 "frustumPlanes"
+ MemberName 221(UBO) 4 "displacementFactor"
+ MemberName 221(UBO) 5 "tessellationFactor"
+ MemberName 221(UBO) 6 "viewportDim"
+ MemberName 221(UBO) 7 "tessellatedEdgeSize"
+ Name 243 "ubo"
+ Name 256 "gl_PerVertex"
+ MemberName 256(gl_PerVertex) 0 "gl_Position"
+ MemberName 256(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 256(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 256(gl_PerVertex) 3 "gl_CullDistance"
+ Name 267 ""
+ Name 279 "outViewVec"
+ Name 286 "outLightVec"
+ Name 297 "outWorldPos"
+ Name 303 "outEyePos"
+ Decorate 39(inUV) Location 1
+ Decorate 56(gl_TessCoord) BuiltIn TessCoord
+ Decorate 80(outUV) Location 1
+ Decorate 99(inNormal) Location 0
+ Decorate 124(outNormal) Location 0
+ MemberDecorate 144(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 144(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 144(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 144(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 144(gl_PerVertex) Block
+ Decorate 207(displacementMap) DescriptorSet 0
+ Decorate 207(displacementMap) Binding 1
+ Decorate 219 ArrayStride 16
+ MemberDecorate 221(UBO) 0 ColMajor
+ MemberDecorate 221(UBO) 0 Offset 0
+ MemberDecorate 221(UBO) 0 MatrixStride 16
+ MemberDecorate 221(UBO) 1 ColMajor
+ MemberDecorate 221(UBO) 1 Offset 64
+ MemberDecorate 221(UBO) 1 MatrixStride 16
+ MemberDecorate 221(UBO) 2 Offset 128
+ MemberDecorate 221(UBO) 3 Offset 144
+ MemberDecorate 221(UBO) 4 Offset 240
+ MemberDecorate 221(UBO) 5 Offset 244
+ MemberDecorate 221(UBO) 6 Offset 248
+ MemberDecorate 221(UBO) 7 Offset 256
+ Decorate 221(UBO) Block
+ Decorate 243(ubo) DescriptorSet 0
+ Decorate 243(ubo) Binding 0
+ MemberDecorate 256(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 256(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 256(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 256(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 256(gl_PerVertex) Block
+ Decorate 279(outViewVec) Location 2
+ Decorate 286(outLightVec) Location 3
+ Decorate 297(outWorldPos) Location 5
+ Decorate 303(outEyePos) Location 4
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 6: TypeInt 32 0
+ 9: 6(int) Constant 32
+ 10: 6(int) Constant 6
+ 11: 6(int) Constant 0
+ 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11
+ 12: 6(int) Constant 3
+ 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3
+ 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17
+ 19: 6(int) Constant 1
+ 20: 6(int) Constant 4
+ 21: 6(int) Constant 2
+ 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21
+ 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11
+ 24: TypeFloat 32
+ 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 25 9 12 11
+ 27: TypeVector 24(float) 2
+ 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 21
+ 29: TypePointer Function 27(fvec2)
+ 33: 6(int) Constant 56
+ 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 32 28 16 33 11 15 20
+ 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
+ 36: TypeArray 27(fvec2) 9
+ 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 28 9
+ 38: TypePointer Input 36
+ 39(inUV): 38(ptr) Variable Input
+ 42: 6(int) Constant 8
+ 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 41 37 16 33 11 18 41 39(inUV) 42
+ 43: TypeInt 32 1
+ 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 44 9 20 11
+ 46: 43(int) Constant 0
+ 47: TypePointer Input 27(fvec2)
+ 50: 43(int) Constant 1
+ 53: TypeVector 24(float) 3
+ 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 12
+ 55: TypePointer Input 53(fvec3)
+56(gl_TessCoord): 55(ptr) Variable Input
+ 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 58 54 16 33 11 18 58 56(gl_TessCoord) 42
+ 59: TypePointer Input 24(float)
+ 67: 6(int) Constant 57
+ 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 66 28 16 67 11 15 20
+ 69: 43(int) Constant 3
+ 72: 43(int) Constant 2
+ 79: TypePointer Output 27(fvec2)
+ 80(outUV): 79(ptr) Variable Output
+ 83: 6(int) Constant 58
+ 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 82 28 16 83 11 18 82 80(outUV) 42
+ 90: TypePointer Function 53(fvec3)
+ 94: 6(int) Constant 60
+ 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 93 54 16 94 11 15 20
+ 96: TypeArray 53(fvec3) 9
+ 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 54 9
+ 98: TypePointer Input 96
+ 99(inNormal): 98(ptr) Variable Input
+ 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 101 97 16 94 11 18 101 99(inNormal) 42
+ 113: 6(int) Constant 61
+ 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 112 54 16 113 11 15 20
+ 123: TypePointer Output 53(fvec3)
+ 124(outNormal): 123(ptr) Variable Output
+ 127: 6(int) Constant 62
+ 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 126 54 16 127 11 18 126 124(outNormal) 42
+ 134: TypeVector 24(float) 4
+ 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 20
+ 136: TypePointer Function 134(fvec4)
+ 140: 6(int) Constant 65
+ 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 139 135 16 140 11 15 20
+ 142: TypeArray 24(float) 19
+ 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 26 19
+144(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 142 142
+ 147: 6(int) Constant 1756
+ 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 146 135 16 19 147 11 11 12
+ 150: 6(int) Constant 1774
+ 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 149 26 16 19 150 11 11 12
+ 153: 6(int) Constant 1817
+ 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 152 143 16 19 153 11 11 12
+ 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 152 143 16 19 153 11 11 12
+ 155: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 19 16 140 11 18 156 11 12 145 148 151 154
+ 157: TypeArray 144(gl_PerVertex) 9
+ 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 155 9
+ 159: TypePointer Input 157
+ 160(gl_in): 159(ptr) Variable Input
+ 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 162 158 16 140 11 18 162 160(gl_in) 42
+ 163: TypePointer Input 134(fvec4)
+ 175: 6(int) Constant 66
+ 173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 174 135 16 175 11 15 20
+ 188: 6(int) Constant 67
+ 186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 187 135 16 188 11 15 20
+ 196: TypeImage 24(float) 2D sampled format:Unknown
+ 199: 6(int) Constant 69
+ 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown)
+ 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 198 11 16 199 11 18 200 201 12
+ 202: TypeSampledImage 196
+ 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 204 11 16 199 11 18 205 201 12
+ 206: TypePointer UniformConstant 202
+207(displacementMap): 206(ptr) Variable UniformConstant
+ 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 209 203 16 199 11 18 209 207(displacementMap) 42
+ 212: 24(float) Constant 0
+ 215: TypeMatrix 134(fvec4) 4
+ 217: TypeBool
+ 218: 217(bool) ConstantTrue
+ 216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 135 20 218
+ 219: TypeArray 134(fvec4) 10
+ 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 135 10
+ 221(UBO): TypeStruct 215 215 134(fvec4) 219 24(float) 24(float) 27(fvec2) 24(float)
+ 224: 6(int) Constant 30
+ 225: 6(int) Constant 7
+ 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 216 16 224 225 11 11 12
+ 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 216 16 224 225 11 11 12
+ 229: 6(int) Constant 31
+ 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 228 135 16 229 225 11 11 12
+ 230: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 231 220 16 9 225 11 11 12
+ 234: 6(int) Constant 36
+ 232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 42 11 11 12
+ 235: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 42 11 11 12
+ 238: 6(int) Constant 35
+ 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 237 28 16 238 225 11 11 12
+ 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 42 11 11 12
+ 240: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 241 19 16 199 11 18 241 11 12 222 226 227 230 232 235 236 239
+ 242: TypePointer Uniform 221(UBO)
+ 243(ubo): 242(ptr) Variable Uniform
+ 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 245 240 16 199 11 18 245 243(ubo) 42
+ 246: 43(int) Constant 4
+ 247: TypePointer Uniform 24(float)
+ 251: TypePointer Function 24(float)
+256(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 142 142
+ 258: 6(int) Constant 165
+ 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 146 135 16 19 258 11 11 12
+ 260: 6(int) Constant 183
+ 259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 149 26 16 19 260 11 11 12
+ 262: 6(int) Constant 226
+ 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 152 143 16 19 262 11 11 12
+ 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 152 143 16 19 262 11 11 12
+ 265: 6(int) Constant 71
+ 264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 19 16 265 11 18 156 11 12 257 259 261 263
+ 266: TypePointer Output 256(gl_PerVertex)
+ 267: 266(ptr) Variable Output
+ 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 264 16 265 11 18 17 267 42
+ 269: TypePointer Uniform 215
+ 277: TypePointer Output 134(fvec4)
+ 279(outViewVec): 123(ptr) Variable Output
+ 282: 6(int) Constant 74
+ 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 281 54 16 282 11 18 281 279(outViewVec) 42
+286(outLightVec): 123(ptr) Variable Output
+ 289: 6(int) Constant 75
+ 287: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 288 54 16 289 11 18 288 286(outLightVec) 42
+ 290: TypePointer Uniform 134(fvec4)
+297(outWorldPos): 123(ptr) Variable Output
+ 300: 6(int) Constant 76
+ 298: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 299 54 16 300 11 18 299 297(outWorldPos) 42
+ 303(outEyePos): 123(ptr) Variable Output
+ 306: 6(int) Constant 77
+ 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 305 54 16 306 11 18 305 303(outEyePos) 42
+ 13(main): 3 Function None 4
+ 22: Label
+ 30(uv1): 29(ptr) Variable Function
+ 64(uv2): 29(ptr) Variable Function
+ 91(n1): 90(ptr) Variable Function
+ 110(n2): 90(ptr) Variable Function
+ 137(pos1): 136(ptr) Variable Function
+ 172(pos2): 136(ptr) Variable Function
+ 185(pos): 136(ptr) Variable Function
+ 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main)
+ 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 31 30(uv1) 35
+ 48: 47(ptr) AccessChain 39(inUV) 46
+ 49: 27(fvec2) Load 48
+ 51: 47(ptr) AccessChain 39(inUV) 50
+ 52: 27(fvec2) Load 51
+ 60: 59(ptr) AccessChain 56(gl_TessCoord) 11
+ 61: 24(float) Load 60
+ 62: 27(fvec2) CompositeConstruct 61 61
+ 63: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 49 52 62
+ Store 30(uv1) 63
+ 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 65 64(uv2) 35
+ 70: 47(ptr) AccessChain 39(inUV) 69
+ 71: 27(fvec2) Load 70
+ 73: 47(ptr) AccessChain 39(inUV) 72
+ 74: 27(fvec2) Load 73
+ 75: 59(ptr) AccessChain 56(gl_TessCoord) 11
+ 76: 24(float) Load 75
+ 77: 27(fvec2) CompositeConstruct 76 76
+ 78: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 71 74 77
+ Store 64(uv2) 78
+ 84: 27(fvec2) Load 30(uv1)
+ 85: 27(fvec2) Load 64(uv2)
+ 86: 59(ptr) AccessChain 56(gl_TessCoord) 19
+ 87: 24(float) Load 86
+ 88: 27(fvec2) CompositeConstruct 87 87
+ 89: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 84 85 88
+ Store 80(outUV) 89
+ 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 92 91(n1) 35
+ 102: 55(ptr) AccessChain 99(inNormal) 46
+ 103: 53(fvec3) Load 102
+ 104: 55(ptr) AccessChain 99(inNormal) 50
+ 105: 53(fvec3) Load 104
+ 106: 59(ptr) AccessChain 56(gl_TessCoord) 11
+ 107: 24(float) Load 106
+ 108: 53(fvec3) CompositeConstruct 107 107 107
+ 109: 53(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 103 105 108
+ Store 91(n1) 109
+ 114: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 111 110(n2) 35
+ 115: 55(ptr) AccessChain 99(inNormal) 69
+ 116: 53(fvec3) Load 115
+ 117: 55(ptr) AccessChain 99(inNormal) 72
+ 118: 53(fvec3) Load 117
+ 119: 59(ptr) AccessChain 56(gl_TessCoord) 11
+ 120: 24(float) Load 119
+ 121: 53(fvec3) CompositeConstruct 120 120 120
+ 122: 53(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 116 118 121
+ Store 110(n2) 122
+ 128: 53(fvec3) Load 91(n1)
+ 129: 53(fvec3) Load 110(n2)
+ 130: 59(ptr) AccessChain 56(gl_TessCoord) 19
+ 131: 24(float) Load 130
+ 132: 53(fvec3) CompositeConstruct 131 131 131
+ 133: 53(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 128 129 132
+ Store 124(outNormal) 133
+ 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 138 137(pos1) 35
+ 164: 163(ptr) AccessChain 160(gl_in) 46 46
+ 165: 134(fvec4) Load 164
+ 166: 163(ptr) AccessChain 160(gl_in) 50 46
+ 167: 134(fvec4) Load 166
+ 168: 59(ptr) AccessChain 56(gl_TessCoord) 11
+ 169: 24(float) Load 168
+ 170: 134(fvec4) CompositeConstruct 169 169 169 169
+ 171: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 165 167 170
+ Store 137(pos1) 171
+ 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 173 172(pos2) 35
+ 177: 163(ptr) AccessChain 160(gl_in) 69 46
+ 178: 134(fvec4) Load 177
+ 179: 163(ptr) AccessChain 160(gl_in) 72 46
+ 180: 134(fvec4) Load 179
+ 181: 59(ptr) AccessChain 56(gl_TessCoord) 11
+ 182: 24(float) Load 181
+ 183: 134(fvec4) CompositeConstruct 182 182 182 182
+ 184: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 178 180 183
+ Store 172(pos2) 184
+ 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 186 185(pos) 35
+ 190: 134(fvec4) Load 137(pos1)
+ 191: 134(fvec4) Load 172(pos2)
+ 192: 59(ptr) AccessChain 56(gl_TessCoord) 19
+ 193: 24(float) Load 192
+ 194: 134(fvec4) CompositeConstruct 193 193 193 193
+ 195: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 190 191 194
+ Store 185(pos) 195
+ 210: 202 Load 207(displacementMap)
+ 211: 27(fvec2) Load 80(outUV)
+ 213: 134(fvec4) ImageSampleExplicitLod 210 211 Lod 212
+ 214: 24(float) CompositeExtract 213 0
+ 248: 247(ptr) AccessChain 243(ubo) 246
+ 249: 24(float) Load 248
+ 250: 24(float) FMul 214 249
+ 252: 251(ptr) AccessChain 185(pos) 19
+ 253: 24(float) Load 252
+ 254: 24(float) FSub 253 250
+ 255: 251(ptr) AccessChain 185(pos) 19
+ Store 255 254
+ 270: 269(ptr) AccessChain 243(ubo) 46
+ 271: 215 Load 270
+ 272: 269(ptr) AccessChain 243(ubo) 50
+ 273: 215 Load 272
+ 274: 215 MatrixTimesMatrix 271 273
+ 275: 134(fvec4) Load 185(pos)
+ 276: 134(fvec4) MatrixTimesVector 274 275
+ 278: 277(ptr) AccessChain 267 46
+ Store 278 276
+ 283: 134(fvec4) Load 185(pos)
+ 284: 53(fvec3) VectorShuffle 283 283 0 1 2
+ 285: 53(fvec3) FNegate 284
+ Store 279(outViewVec) 285
+ 291: 290(ptr) AccessChain 243(ubo) 72
+ 292: 134(fvec4) Load 291
+ 293: 53(fvec3) VectorShuffle 292 292 0 1 2
+ 294: 53(fvec3) Load 279(outViewVec)
+ 295: 53(fvec3) FAdd 293 294
+ 296: 53(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 295
+ Store 286(outLightVec) 296
+ 301: 134(fvec4) Load 185(pos)
+ 302: 53(fvec3) VectorShuffle 301 301 0 1 2
+ Store 297(outWorldPos) 302
+ 307: 269(ptr) AccessChain 243(ubo) 50
+ 308: 215 Load 307
+ 309: 134(fvec4) Load 185(pos)
+ 310: 134(fvec4) MatrixTimesVector 308 309
+ 311: 24(float) CompositeExtract 310 0
+ 312: 24(float) CompositeExtract 310 1
+ 313: 24(float) CompositeExtract 310 2
+ 314: 53(fvec3) CompositeConstruct 311 312 313
+ Store 303(outEyePos) 314
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out
new file mode 100644
index 0000000..3d5352f
--- /dev/null
+++ b/Test/baseResults/spv.debuginfo.glsl.vert.out
@@ -0,0 +1,484 @@
+spv.debuginfo.glsl.vert
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 374
+
+ Capability Shader
+ Extension "SPV_KHR_non_semantic_info"
+ 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 13 "main" 30 36 40 47 55 70 247 264 269 293 307 325 359 367
+ 8: String "uint"
+ 14: String "main"
+ 17: String ""
+ 25: String "float"
+ 32: String "outColor"
+ 38: String "inColor"
+ 42: String "outUV"
+ 49: String "inUV"
+ 52: String "int"
+ 57: String "instanceTexIndex"
+ 66: String "s"
+ 72: String "instanceRot"
+ 84: String "modelview"
+ 89: String "lightPos"
+ 92: String "globSpeed"
+ 96: String "UBO"
+ 100: String "ubo"
+ 109: String "c"
+ 123: String "mx"
+ 157: String "my"
+ 185: String "mz"
+ 201: String "rotMat"
+ 225: String "gRotMat"
+ 244: String "locPos"
+ 249: String "inPos"
+ 259: String "pos"
+ 266: String "instanceScale"
+ 271: String "instancePos"
+ 282: String "gl_Position"
+ 285: String "gl_PointSize"
+ 287: String "gl_CullDistance"
+ 290: String "gl_PerVertex"
+ 309: String "outNormal"
+ 327: String "inNormal"
+ 342: String "lPos"
+ 361: String "outLightVec"
+ 369: String "outViewVec"
+ Name 13 "main"
+ Name 30 "outColor"
+ Name 36 "inColor"
+ Name 40 "outUV"
+ Name 47 "inUV"
+ Name 55 "instanceTexIndex"
+ Name 64 "s"
+ Name 70 "instanceRot"
+ Name 82 "UBO"
+ MemberName 82(UBO) 0 "projection"
+ MemberName 82(UBO) 1 "modelview"
+ MemberName 82(UBO) 2 "lightPos"
+ MemberName 82(UBO) 3 "locSpeed"
+ MemberName 82(UBO) 4 "globSpeed"
+ Name 98 "ubo"
+ Name 107 "c"
+ Name 121 "mx"
+ Name 155 "my"
+ Name 183 "mz"
+ Name 199 "rotMat"
+ Name 223 "gRotMat"
+ Name 242 "locPos"
+ Name 247 "inPos"
+ Name 257 "pos"
+ Name 264 "instanceScale"
+ Name 269 "instancePos"
+ Name 280 "gl_PerVertex"
+ MemberName 280(gl_PerVertex) 0 "gl_Position"
+ MemberName 280(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 280(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 280(gl_PerVertex) 3 "gl_CullDistance"
+ Name 293 ""
+ Name 307 "outNormal"
+ Name 325 "inNormal"
+ Name 340 "lPos"
+ Name 359 "outLightVec"
+ Name 367 "outViewVec"
+ Decorate 30(outColor) Location 1
+ Decorate 36(inColor) Location 3
+ Decorate 40(outUV) Location 2
+ Decorate 47(inUV) Location 2
+ Decorate 55(instanceTexIndex) Location 7
+ Decorate 70(instanceRot) Location 5
+ MemberDecorate 82(UBO) 0 ColMajor
+ MemberDecorate 82(UBO) 0 Offset 0
+ MemberDecorate 82(UBO) 0 MatrixStride 16
+ MemberDecorate 82(UBO) 1 ColMajor
+ MemberDecorate 82(UBO) 1 Offset 64
+ MemberDecorate 82(UBO) 1 MatrixStride 16
+ MemberDecorate 82(UBO) 2 Offset 128
+ MemberDecorate 82(UBO) 3 Offset 144
+ MemberDecorate 82(UBO) 4 Offset 148
+ Decorate 82(UBO) Block
+ Decorate 98(ubo) DescriptorSet 0
+ Decorate 98(ubo) Binding 0
+ Decorate 247(inPos) Location 0
+ Decorate 264(instanceScale) Location 6
+ Decorate 269(instancePos) Location 4
+ MemberDecorate 280(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 280(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 280(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 280(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 280(gl_PerVertex) Block
+ Decorate 307(outNormal) Location 0
+ Decorate 325(inNormal) Location 1
+ Decorate 359(outLightVec) Location 4
+ Decorate 367(outViewVec) Location 3
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 6: TypeInt 32 0
+ 9: 6(int) Constant 32
+ 10: 6(int) Constant 6
+ 11: 6(int) Constant 0
+ 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11
+ 12: 6(int) Constant 3
+ 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3
+ 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17
+ 19: 6(int) Constant 1
+ 20: 6(int) Constant 4
+ 21: 6(int) Constant 2
+ 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21
+ 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11
+ 24: TypeFloat 32
+ 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 25 9 12 11
+ 27: TypeVector 24(float) 3
+ 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 12
+ 29: TypePointer Output 27(fvec3)
+ 30(outColor): 29(ptr) Variable Output
+ 33: 6(int) Constant 56
+ 34: 6(int) Constant 8
+ 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 32 28 16 33 11 18 32 30(outColor) 34
+ 35: TypePointer Input 27(fvec3)
+ 36(inColor): 35(ptr) Variable Input
+ 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 38 28 16 33 11 18 38 36(inColor) 34
+ 40(outUV): 29(ptr) Variable Output
+ 43: 6(int) Constant 57
+ 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 42 28 16 43 11 18 42 40(outUV) 34
+ 44: TypeVector 24(float) 2
+ 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 21
+ 46: TypePointer Input 44(fvec2)
+ 47(inUV): 46(ptr) Variable Input
+ 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 49 45 16 43 11 18 49 47(inUV) 34
+ 51: TypeInt 32 1
+ 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 52 9 20 11
+ 54: TypePointer Input 51(int)
+55(instanceTexIndex): 54(ptr) Variable Input
+ 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 57 53 16 43 11 18 57 55(instanceTexIndex) 34
+ 63: TypePointer Function 24(float)
+ 67: 6(int) Constant 62
+ 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 66 26 16 67 11 15 20
+ 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
+ 70(instanceRot): 35(ptr) Variable Input
+ 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 72 28 16 67 11 18 72 70(instanceRot) 34
+ 73: TypePointer Input 24(float)
+ 76: TypeVector 24(float) 4
+ 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 20
+ 78: TypeMatrix 76(fvec4) 4
+ 80: TypeBool
+ 81: 80(bool) ConstantTrue
+ 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 77 20 81
+ 82(UBO): TypeStruct 78 78 76(fvec4) 24(float) 24(float)
+ 85: 6(int) Constant 42
+ 86: 6(int) Constant 7
+ 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 79 16 85 86 11 11 12
+ 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 79 16 85 86 11 11 12
+ 90: 6(int) Constant 43
+ 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 89 77 16 90 86 11 11 12
+ 93: 6(int) Constant 45
+ 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 92 26 16 93 34 11 11 12
+ 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 92 26 16 93 34 11 11 12
+ 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 96 19 16 67 11 18 96 11 12 83 87 88 91 94
+ 97: TypePointer Uniform 82(UBO)
+ 98(ubo): 97(ptr) Variable Uniform
+ 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 100 95 16 67 11 18 100 98(ubo) 34
+ 101: 51(int) Constant 3
+ 102: TypePointer Uniform 24(float)
+ 110: 6(int) Constant 63
+ 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 26 16 110 11 15 20
+ 118: TypeMatrix 27(fvec3) 3
+ 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 28 12 81
+ 120: TypePointer Function 118
+ 124: 6(int) Constant 65
+ 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 123 119 16 124 11 15 20
+ 126: 51(int) Constant 0
+ 129: 24(float) Constant 0
+ 131: TypePointer Function 27(fvec3)
+ 133: 51(int) Constant 1
+ 139: 51(int) Constant 2
+ 140: 24(float) Constant 1065353216
+ 141: 27(fvec3) ConstantComposite 129 129 140
+ 158: 6(int) Constant 73
+ 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 157 119 16 158 11 15 20
+ 164: 27(fvec3) ConstantComposite 129 140 129
+ 186: 6(int) Constant 81
+ 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 185 119 16 186 11 15 20
+ 188: 27(fvec3) ConstantComposite 140 129 129
+ 202: 6(int) Constant 85
+ 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 201 119 16 202 11 15 20
+ 211: 51(int) Constant 4
+ 222: TypePointer Function 78
+ 226: 6(int) Constant 90
+ 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 225 79 16 226 11 15 20
+ 231: TypePointer Function 76(fvec4)
+ 233: 76(fvec4) ConstantComposite 129 140 129 129
+ 240: 76(fvec4) ConstantComposite 129 129 129 140
+ 245: 6(int) Constant 95
+ 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 244 77 16 245 11 15 20
+ 247(inPos): 35(ptr) Variable Input
+ 248: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 249 28 16 245 11 18 249 247(inPos) 34
+ 260: 6(int) Constant 96
+ 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 259 77 16 260 11 15 20
+264(instanceScale): 73(ptr) Variable Input
+ 265: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 266 26 16 260 11 18 266 264(instanceScale) 34
+269(instancePos): 35(ptr) Variable Input
+ 270: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 271 28 16 260 11 18 271 269(instancePos) 34
+ 278: TypeArray 24(float) 19
+ 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 26 19
+280(gl_PerVertex): TypeStruct 76(fvec4) 24(float) 278 278
+ 283: 6(int) Constant 24
+ 281: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 282 77 16 19 283 11 11 12
+ 284: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 285 26 16 19 85 11 11 12
+ 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 287 279 16 19 202 11 11 12
+ 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 287 279 16 19 202 11 11 12
+ 291: 6(int) Constant 98
+ 289: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 290 19 16 291 11 18 290 11 12 281 284 286 288
+ 292: TypePointer Output 280(gl_PerVertex)
+ 293: 292(ptr) Variable Output
+ 294: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 289 16 291 11 18 17 293 34
+ 295: TypePointer Uniform 78
+ 305: TypePointer Output 76(fvec4)
+ 307(outNormal): 29(ptr) Variable Output
+ 310: 6(int) Constant 99
+ 308: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 309 28 16 310 11 18 309 307(outNormal) 34
+ 325(inNormal): 35(ptr) Variable Input
+ 326: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 327 28 16 310 11 18 327 325(inNormal) 34
+ 343: 6(int) Constant 102
+ 341: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 342 28 16 343 11 15 20
+ 354: TypePointer Uniform 76(fvec4)
+359(outLightVec): 29(ptr) Variable Output
+ 362: 6(int) Constant 103
+ 360: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 361 28 16 362 11 18 361 359(outLightVec) 34
+ 367(outViewVec): 29(ptr) Variable Output
+ 370: 6(int) Constant 104
+ 368: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 369 28 16 370 11 18 369 367(outViewVec) 34
+ 13(main): 3 Function None 4
+ 22: Label
+ 64(s): 63(ptr) Variable Function
+ 107(c): 63(ptr) Variable Function
+ 121(mx): 120(ptr) Variable Function
+ 155(my): 120(ptr) Variable Function
+ 183(mz): 120(ptr) Variable Function
+ 199(rotMat): 120(ptr) Variable Function
+ 223(gRotMat): 222(ptr) Variable Function
+ 242(locPos): 231(ptr) Variable Function
+ 257(pos): 231(ptr) Variable Function
+ 340(lPos): 131(ptr) Variable Function
+ 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main)
+ 39: 27(fvec3) Load 36(inColor)
+ Store 30(outColor) 39
+ 50: 44(fvec2) Load 47(inUV)
+ 58: 51(int) Load 55(instanceTexIndex)
+ 59: 24(float) ConvertSToF 58
+ 60: 24(float) CompositeExtract 50 0
+ 61: 24(float) CompositeExtract 50 1
+ 62: 27(fvec3) CompositeConstruct 60 61 59
+ Store 40(outUV) 62
+ 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 65 64(s) 69
+ 74: 73(ptr) AccessChain 70(instanceRot) 11
+ 75: 24(float) Load 74
+ 103: 102(ptr) AccessChain 98(ubo) 101
+ 104: 24(float) Load 103
+ 105: 24(float) FAdd 75 104
+ 106: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 105
+ Store 64(s) 106
+ 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 108 107(c) 69
+ 112: 73(ptr) AccessChain 70(instanceRot) 11
+ 113: 24(float) Load 112
+ 114: 102(ptr) AccessChain 98(ubo) 101
+ 115: 24(float) Load 114
+ 116: 24(float) FAdd 113 115
+ 117: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 116
+ Store 107(c) 117
+ 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 122 121(mx) 69
+ 127: 24(float) Load 107(c)
+ 128: 24(float) Load 64(s)
+ 130: 27(fvec3) CompositeConstruct 127 128 129
+ 132: 131(ptr) AccessChain 121(mx) 126
+ Store 132 130
+ 134: 24(float) Load 64(s)
+ 135: 24(float) FNegate 134
+ 136: 24(float) Load 107(c)
+ 137: 27(fvec3) CompositeConstruct 135 136 129
+ 138: 131(ptr) AccessChain 121(mx) 133
+ Store 138 137
+ 142: 131(ptr) AccessChain 121(mx) 139
+ Store 142 141
+ 143: 73(ptr) AccessChain 70(instanceRot) 19
+ 144: 24(float) Load 143
+ 145: 102(ptr) AccessChain 98(ubo) 101
+ 146: 24(float) Load 145
+ 147: 24(float) FAdd 144 146
+ 148: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 147
+ Store 64(s) 148
+ 149: 73(ptr) AccessChain 70(instanceRot) 19
+ 150: 24(float) Load 149
+ 151: 102(ptr) AccessChain 98(ubo) 101
+ 152: 24(float) Load 151
+ 153: 24(float) FAdd 150 152
+ 154: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 153
+ Store 107(c) 154
+ 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 156 155(my) 69
+ 160: 24(float) Load 107(c)
+ 161: 24(float) Load 64(s)
+ 162: 27(fvec3) CompositeConstruct 160 129 161
+ 163: 131(ptr) AccessChain 155(my) 126
+ Store 163 162
+ 165: 131(ptr) AccessChain 155(my) 133
+ Store 165 164
+ 166: 24(float) Load 64(s)
+ 167: 24(float) FNegate 166
+ 168: 24(float) Load 107(c)
+ 169: 27(fvec3) CompositeConstruct 167 129 168
+ 170: 131(ptr) AccessChain 155(my) 139
+ Store 170 169
+ 171: 73(ptr) AccessChain 70(instanceRot) 21
+ 172: 24(float) Load 171
+ 173: 102(ptr) AccessChain 98(ubo) 101
+ 174: 24(float) Load 173
+ 175: 24(float) FAdd 172 174
+ 176: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 175
+ Store 64(s) 176
+ 177: 73(ptr) AccessChain 70(instanceRot) 21
+ 178: 24(float) Load 177
+ 179: 102(ptr) AccessChain 98(ubo) 101
+ 180: 24(float) Load 179
+ 181: 24(float) FAdd 178 180
+ 182: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 181
+ Store 107(c) 182
+ 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 184 183(mz) 69
+ 189: 131(ptr) AccessChain 183(mz) 126
+ Store 189 188
+ 190: 24(float) Load 107(c)
+ 191: 24(float) Load 64(s)
+ 192: 27(fvec3) CompositeConstruct 129 190 191
+ 193: 131(ptr) AccessChain 183(mz) 133
+ Store 193 192
+ 194: 24(float) Load 64(s)
+ 195: 24(float) FNegate 194
+ 196: 24(float) Load 107(c)
+ 197: 27(fvec3) CompositeConstruct 129 195 196
+ 198: 131(ptr) AccessChain 183(mz) 139
+ Store 198 197
+ 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 200 199(rotMat) 69
+ 204: 118 Load 183(mz)
+ 205: 118 Load 155(my)
+ 206: 118 MatrixTimesMatrix 204 205
+ 207: 118 Load 121(mx)
+ 208: 118 MatrixTimesMatrix 206 207
+ Store 199(rotMat) 208
+ 209: 73(ptr) AccessChain 70(instanceRot) 19
+ 210: 24(float) Load 209
+ 212: 102(ptr) AccessChain 98(ubo) 211
+ 213: 24(float) Load 212
+ 214: 24(float) FAdd 210 213
+ 215: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 214
+ Store 64(s) 215
+ 216: 73(ptr) AccessChain 70(instanceRot) 19
+ 217: 24(float) Load 216
+ 218: 102(ptr) AccessChain 98(ubo) 211
+ 219: 24(float) Load 218
+ 220: 24(float) FAdd 217 219
+ 221: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 220
+ Store 107(c) 221
+ 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 224 223(gRotMat) 69
+ 228: 24(float) Load 107(c)
+ 229: 24(float) Load 64(s)
+ 230: 76(fvec4) CompositeConstruct 228 129 229 129
+ 232: 231(ptr) AccessChain 223(gRotMat) 126
+ Store 232 230
+ 234: 231(ptr) AccessChain 223(gRotMat) 133
+ Store 234 233
+ 235: 24(float) Load 64(s)
+ 236: 24(float) FNegate 235
+ 237: 24(float) Load 107(c)
+ 238: 76(fvec4) CompositeConstruct 236 129 237 129
+ 239: 231(ptr) AccessChain 223(gRotMat) 139
+ Store 239 238
+ 241: 231(ptr) AccessChain 223(gRotMat) 101
+ Store 241 240
+ 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 243 242(locPos) 69
+ 250: 27(fvec3) Load 247(inPos)
+ 251: 118 Load 199(rotMat)
+ 252: 27(fvec3) VectorTimesMatrix 250 251
+ 253: 24(float) CompositeExtract 252 0
+ 254: 24(float) CompositeExtract 252 1
+ 255: 24(float) CompositeExtract 252 2
+ 256: 76(fvec4) CompositeConstruct 253 254 255 140
+ Store 242(locPos) 256
+ 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 258 257(pos) 69
+ 262: 76(fvec4) Load 242(locPos)
+ 263: 27(fvec3) VectorShuffle 262 262 0 1 2
+ 267: 24(float) Load 264(instanceScale)
+ 268: 27(fvec3) VectorTimesScalar 263 267
+ 272: 27(fvec3) Load 269(instancePos)
+ 273: 27(fvec3) FAdd 268 272
+ 274: 24(float) CompositeExtract 273 0
+ 275: 24(float) CompositeExtract 273 1
+ 276: 24(float) CompositeExtract 273 2
+ 277: 76(fvec4) CompositeConstruct 274 275 276 140
+ Store 257(pos) 277
+ 296: 295(ptr) AccessChain 98(ubo) 126
+ 297: 78 Load 296
+ 298: 295(ptr) AccessChain 98(ubo) 133
+ 299: 78 Load 298
+ 300: 78 MatrixTimesMatrix 297 299
+ 301: 78 Load 223(gRotMat)
+ 302: 78 MatrixTimesMatrix 300 301
+ 303: 76(fvec4) Load 257(pos)
+ 304: 76(fvec4) MatrixTimesVector 302 303
+ 306: 305(ptr) AccessChain 293 126
+ Store 306 304
+ 311: 295(ptr) AccessChain 98(ubo) 133
+ 312: 78 Load 311
+ 313: 78 Load 223(gRotMat)
+ 314: 78 MatrixTimesMatrix 312 313
+ 315: 76(fvec4) CompositeExtract 314 0
+ 316: 27(fvec3) VectorShuffle 315 315 0 1 2
+ 317: 76(fvec4) CompositeExtract 314 1
+ 318: 27(fvec3) VectorShuffle 317 317 0 1 2
+ 319: 76(fvec4) CompositeExtract 314 2
+ 320: 27(fvec3) VectorShuffle 319 319 0 1 2
+ 321: 118 CompositeConstruct 316 318 320
+ 322: 118 Load 199(rotMat)
+ 323: 118 ExtInst 2(GLSL.std.450) 34(MatrixInverse) 322
+ 324: 118 MatrixTimesMatrix 321 323
+ 328: 27(fvec3) Load 325(inNormal)
+ 329: 27(fvec3) MatrixTimesVector 324 328
+ Store 307(outNormal) 329
+ 330: 295(ptr) AccessChain 98(ubo) 133
+ 331: 78 Load 330
+ 332: 27(fvec3) Load 247(inPos)
+ 333: 27(fvec3) Load 269(instancePos)
+ 334: 27(fvec3) FAdd 332 333
+ 335: 24(float) CompositeExtract 334 0
+ 336: 24(float) CompositeExtract 334 1
+ 337: 24(float) CompositeExtract 334 2
+ 338: 76(fvec4) CompositeConstruct 335 336 337 140
+ 339: 76(fvec4) MatrixTimesVector 331 338
+ Store 257(pos) 339
+ 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 341 340(lPos) 69
+ 345: 295(ptr) AccessChain 98(ubo) 133
+ 346: 78 Load 345
+ 347: 76(fvec4) CompositeExtract 346 0
+ 348: 27(fvec3) VectorShuffle 347 347 0 1 2
+ 349: 76(fvec4) CompositeExtract 346 1
+ 350: 27(fvec3) VectorShuffle 349 349 0 1 2
+ 351: 76(fvec4) CompositeExtract 346 2
+ 352: 27(fvec3) VectorShuffle 351 351 0 1 2
+ 353: 118 CompositeConstruct 348 350 352
+ 355: 354(ptr) AccessChain 98(ubo) 139
+ 356: 76(fvec4) Load 355
+ 357: 27(fvec3) VectorShuffle 356 356 0 1 2
+ 358: 27(fvec3) MatrixTimesVector 353 357
+ Store 340(lPos) 358
+ 363: 27(fvec3) Load 340(lPos)
+ 364: 76(fvec4) Load 257(pos)
+ 365: 27(fvec3) VectorShuffle 364 364 0 1 2
+ 366: 27(fvec3) FSub 363 365
+ Store 359(outLightVec) 366
+ 371: 76(fvec4) Load 257(pos)
+ 372: 27(fvec3) VectorShuffle 371 371 0 1 2
+ 373: 27(fvec3) FNegate 372
+ Store 367(outViewVec) 373
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out
new file mode 100644
index 0000000..44bf1a7
--- /dev/null
+++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out
@@ -0,0 +1,1081 @@
+spv.debuginfo.hlsl.comp
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 833
+
+ Capability Shader
+ Extension "SPV_KHR_non_semantic_info"
+ 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 5 "main" 828
+ ExecutionMode 5 LocalSize 10 10 1
+ 9: String "float"
+ 12: String "uint"
+ 27: String "springForce"
+ 30: String ""
+ 39: String "p0"
+ 43: String "p1"
+ 47: String "restDist"
+ 56: String "@main"
+ 62: String "id"
+ 67: String "dist"
+ 78: String "int"
+ 84: String "sphereRadius"
+ 95: String "gravity"
+ 100: String "particleCount"
+ 103: String "UBO"
+ 107: String "params"
+ 111: String "ubo"
+ 133: String "index"
+ 155: String "bool"
+ 163: String "normal"
+ 170: String "pinned"
+ 174: String "Particle"
+ 180: String "@data"
+ 184: String "particleIn"
+ 203: String "particleOut"
+ 222: String "force"
+ 234: String "pos"
+ 243: String "vel"
+ 492: String "f"
+ 536: String "sphereDist"
+ 580: String "calculateNormals"
+ 584: String "PushConstants"
+ 588: String "pushConstants"
+ 591: String "$Global"
+ 621: String "a"
+ 633: String "b"
+ 649: String "c"
+ Name 5 "main"
+ Name 26 "springForce(vf3;vf3;f1;"
+ Name 23 "p0"
+ Name 24 "p1"
+ Name 25 "restDist"
+ Name 55 "@main(vu3;"
+ Name 54 "id"
+ Name 65 "dist"
+ Name 82 "UBO"
+ MemberName 82(UBO) 0 "deltaT"
+ MemberName 82(UBO) 1 "particleMass"
+ MemberName 82(UBO) 2 "springStiffness"
+ MemberName 82(UBO) 3 "damping"
+ MemberName 82(UBO) 4 "restDistH"
+ MemberName 82(UBO) 5 "restDistV"
+ MemberName 82(UBO) 6 "restDistD"
+ MemberName 82(UBO) 7 "sphereRadius"
+ MemberName 82(UBO) 8 "spherePos"
+ MemberName 82(UBO) 9 "gravity"
+ MemberName 82(UBO) 10 "particleCount"
+ Name 105 "ubo"
+ MemberName 105(ubo) 0 "params"
+ Name 113 ""
+ Name 131 "index"
+ Name 161 "Particle"
+ MemberName 161(Particle) 0 "pos"
+ MemberName 161(Particle) 1 "vel"
+ MemberName 161(Particle) 2 "uv"
+ MemberName 161(Particle) 3 "normal"
+ MemberName 161(Particle) 4 "pinned"
+ Name 178 "particleIn"
+ MemberName 178(particleIn) 0 "@data"
+ Name 186 "particleIn"
+ Name 199 "particleOut"
+ MemberName 199(particleOut) 0 "@data"
+ Name 206 "particleOut"
+ Name 220 "force"
+ Name 232 "pos"
+ Name 241 "vel"
+ Name 258 "param"
+ Name 262 "param"
+ Name 264 "param"
+ Name 282 "param"
+ Name 286 "param"
+ Name 288 "param"
+ Name 310 "param"
+ Name 314 "param"
+ Name 316 "param"
+ Name 333 "param"
+ Name 337 "param"
+ Name 339 "param"
+ Name 368 "param"
+ Name 372 "param"
+ Name 374 "param"
+ Name 398 "param"
+ Name 402 "param"
+ Name 404 "param"
+ Name 436 "param"
+ Name 440 "param"
+ Name 442 "param"
+ Name 470 "param"
+ Name 474 "param"
+ Name 476 "param"
+ Name 490 "f"
+ Name 534 "sphereDist"
+ Name 578 "PushConstants"
+ MemberName 578(PushConstants) 0 "calculateNormals"
+ Name 586 "$Global"
+ MemberName 586($Global) 0 "pushConstants"
+ Name 593 ""
+ Name 602 "normal"
+ Name 619 "a"
+ Name 631 "b"
+ Name 647 "c"
+ Name 826 "id"
+ Name 828 "id"
+ Name 830 "param"
+ MemberDecorate 82(UBO) 0 Offset 0
+ MemberDecorate 82(UBO) 1 Offset 4
+ MemberDecorate 82(UBO) 2 Offset 8
+ MemberDecorate 82(UBO) 3 Offset 12
+ MemberDecorate 82(UBO) 4 Offset 16
+ MemberDecorate 82(UBO) 5 Offset 20
+ MemberDecorate 82(UBO) 6 Offset 24
+ MemberDecorate 82(UBO) 7 Offset 28
+ MemberDecorate 82(UBO) 8 Offset 32
+ MemberDecorate 82(UBO) 9 Offset 48
+ MemberDecorate 82(UBO) 10 Offset 64
+ MemberDecorate 105(ubo) 0 Offset 0
+ Decorate 105(ubo) Block
+ Decorate 113 DescriptorSet 0
+ Decorate 113 Binding 2
+ MemberDecorate 161(Particle) 0 Offset 0
+ MemberDecorate 161(Particle) 1 Offset 16
+ MemberDecorate 161(Particle) 2 Offset 32
+ MemberDecorate 161(Particle) 3 Offset 48
+ MemberDecorate 161(Particle) 4 Offset 64
+ Decorate 176 ArrayStride 80
+ MemberDecorate 178(particleIn) 0 NonWritable
+ MemberDecorate 178(particleIn) 0 Offset 0
+ Decorate 178(particleIn) BufferBlock
+ Decorate 186(particleIn) DescriptorSet 0
+ Decorate 186(particleIn) Binding 0
+ Decorate 197 ArrayStride 80
+ MemberDecorate 199(particleOut) 0 Offset 0
+ Decorate 199(particleOut) BufferBlock
+ Decorate 206(particleOut) DescriptorSet 0
+ Decorate 206(particleOut) Binding 1
+ MemberDecorate 578(PushConstants) 0 Offset 0
+ MemberDecorate 586($Global) 0 Offset 0
+ Decorate 586($Global) Block
+ Decorate 593 DescriptorSet 0
+ Decorate 593 Binding 3
+ Decorate 828(id) BuiltIn GlobalInvocationId
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 7: TypeFloat 32
+ 10: TypeInt 32 0
+ 13: 10(int) Constant 32
+ 14: 10(int) Constant 6
+ 15: 10(int) Constant 0
+ 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15
+ 16: 10(int) Constant 3
+ 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15
+ 17: TypeVector 7(float) 3
+ 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16
+ 19: TypePointer Function 17(fvec3)
+ 20: TypePointer Function 7(float)
+ 21: TypeFunction 17(fvec3) 19(ptr) 19(ptr) 20(ptr)
+ 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 18 18 18 8
+ 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 30
+ 32: 10(int) Constant 1
+ 33: 10(int) Constant 4
+ 34: 10(int) Constant 5
+ 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 32 33 29 34
+ 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 27 22 29 15 15 31 27 16 15
+ 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 39 18 29 15 15 28 33 32
+ 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
+ 44: 10(int) Constant 2
+ 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 43 18 29 15 15 28 33 44
+ 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 47 8 29 15 15 28 33 16
+ 49: TypeVector 10(int) 3
+ 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 11 16
+ 51: TypePointer Function 49(ivec3)
+ 52: TypeFunction 3 51(ptr)
+ 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 3 50
+ 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 56 53 29 15 15 31 56 16 15
+ 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 62 50 29 15 15 57 33 32
+ 68: 10(int) Constant 76
+ 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 67 18 29 68 15 28 33
+ 75: TypeVector 7(float) 4
+ 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 33
+ 77: TypeInt 32 1
+ 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 78 13 33 15
+ 80: TypeVector 77(int) 2
+ 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 79 44
+ 82(UBO): TypeStruct 7(float) 7(float) 7(float) 7(float) 7(float) 7(float) 7(float) 7(float) 75(fvec4) 75(fvec4) 80(ivec2)
+ 85: 10(int) Constant 48
+ 86: 10(int) Constant 20
+ 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16
+ 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16
+ 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16
+ 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16
+ 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16
+ 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16
+ 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16
+ 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16
+ 96: 10(int) Constant 50
+ 97: 10(int) Constant 16
+ 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 95 76 29 96 97 15 15 16
+ 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 95 76 29 96 97 15 15 16
+ 101: 10(int) Constant 51
+ 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 100 81 29 101 86 15 15 16
+ 104: 10(int) Constant 77
+ 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 103 32 29 104 15 31 103 15 16 83 87 88 89 90 91 92 93 94 98 99
+ 105(ubo): TypeStruct 82(UBO)
+ 108: 10(int) Constant 56
+ 109: 10(int) Constant 12
+ 106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 107 102 29 108 109 15 15 16
+ 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 111 32 29 104 15 31 111 15 16 106
+ 112: TypePointer Uniform 105(ubo)
+ 113: 112(ptr) Variable Uniform
+ 115: 10(int) Constant 8
+ 114: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 110 29 104 15 31 30 113 115
+ 116: 77(int) Constant 0
+ 117: 77(int) Constant 2
+ 118: TypePointer Uniform 7(float)
+ 130: TypePointer Function 10(int)
+ 134: 10(int) Constant 83
+ 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 133 11 29 134 15 57 33
+ 138: 77(int) Constant 10
+ 139: TypePointer Uniform 77(int)
+ 154: TypeBool
+ 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 161(Particle): TypeStruct 75(fvec4) 75(fvec4) 75(fvec4) 75(fvec4) 7(float)
+ 164: 10(int) Constant 30
+ 165: 10(int) Constant 15
+ 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 163 76 29 164 165 15 15 16
+ 166: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 163 76 29 164 165 15 15 16
+ 167: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 163 76 29 164 165 15 15 16
+ 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 163 76 29 164 165 15 15 16
+ 171: 10(int) Constant 31
+ 172: 10(int) Constant 14
+ 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 170 8 29 171 172 15 15 16
+ 175: 10(int) Constant 88
+ 173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 174 32 29 175 15 31 174 15 16 162 166 167 168 169
+ 176: TypeRuntimeArray 161(Particle)
+ 177: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 173 15
+ 178(particleIn): TypeStruct 176
+ 181: 10(int) Constant 35
+ 182: 10(int) Constant 28
+ 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 180 177 29 181 182 15 15 16
+ 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 184 32 29 175 15 31 184 15 16 179
+ 185: TypePointer Uniform 178(particleIn)
+ 186(particleIn): 185(ptr) Variable Uniform
+ 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 184 183 29 175 15 31 184 186(particleIn) 115
+ 189: 77(int) Constant 4
+ 192: 7(float) Constant 1065353216
+ 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 197: TypeRuntimeArray 161(Particle)
+ 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 173 15
+199(particleOut): TypeStruct 197
+ 201: 10(int) Constant 37
+ 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 180 198 29 201 164 15 15 16
+ 204: 10(int) Constant 89
+ 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 203 32 29 204 15 31 203 15 16 200
+ 205: TypePointer Uniform 199(particleOut)
+206(particleOut): 205(ptr) Variable Uniform
+ 207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 203 202 29 204 15 31 203 206(particleOut) 115
+ 210: TypePointer Uniform 75(fvec4)
+ 215: 77(int) Constant 1
+ 216: 7(float) Constant 0
+ 217: 75(fvec4) ConstantComposite 216 216 216 216
+ 223: 10(int) Constant 95
+ 221: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 222 18 29 223 15 57 33
+ 225: 77(int) Constant 9
+ 235: 10(int) Constant 97
+ 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 234 18 29 235 15 57 33
+ 244: 10(int) Constant 98
+ 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 243 18 29 244 15 57 33
+ 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 276: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 300: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 309: 77(int) Constant 5
+ 324: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 355: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 367: 77(int) Constant 6
+ 382: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 388: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 416: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 426: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 458: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 460: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 482: 77(int) Constant 3
+ 493: 10(int) Constant 137
+ 491: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 492 18 29 493 15 57 33
+ 507: 7(float) Constant 1056964608
+ 537: 10(int) Constant 142
+ 535: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 536 18 29 537 15 57 33
+ 543: 77(int) Constant 8
+ 550: 77(int) Constant 7
+ 553: 7(float) Constant 1008981770
+ 555: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+578(PushConstants): TypeStruct 10(int)
+ 581: 10(int) Constant 67
+ 582: 10(int) Constant 23
+ 579: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 580 11 29 581 582 15 15 16
+ 585: 10(int) Constant 151
+ 583: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 584 32 29 585 15 31 584 15 16 579
+ 586($Global): TypeStruct 578(PushConstants)
+ 589: 10(int) Constant 71
+ 587: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 588 583 29 589 165 15 15 16
+ 590: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 591 32 29 585 15 31 591 15 16 587
+ 592: TypePointer Uniform 586($Global)
+ 593: 592(ptr) Variable Uniform
+ 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 590 29 585 15 31 30 593 115
+ 595: TypePointer Uniform 10(int)
+ 598: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 604: 10(int) Constant 152
+ 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 163 18 29 604 15 57 33
+ 606: 17(fvec3) ConstantComposite 216 216 216
+ 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 615: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 622: 10(int) Constant 156
+ 620: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 621 18 29 622 15 57 33
+ 634: 10(int) Constant 157
+ 632: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 633 18 29 634 15 57 33
+ 650: 10(int) Constant 158
+ 648: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 649 18 29 650 15 57 33
+ 677: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 724: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 730: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 777: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15
+ 827: TypePointer Input 49(ivec3)
+ 828(id): 827(ptr) Variable Input
+ 5(main): 3 Function None 4
+ 6: Label
+ 826(id): 51(ptr) Variable Function
+ 830(param): 51(ptr) Variable Function
+ 829: 49(ivec3) Load 828(id)
+ Store 826(id) 829
+ 831: 49(ivec3) Load 826(id)
+ Store 830(param) 831
+ 832: 3 FunctionCall 55(@main(vu3;) 830(param)
+ Return
+ FunctionEnd
+26(springForce(vf3;vf3;f1;): 17(fvec3) Function None 21
+ 23(p0): 19(ptr) FunctionParameter
+ 24(p1): 19(ptr) FunctionParameter
+ 25(restDist): 20(ptr) FunctionParameter
+ 35: Label
+ 65(dist): 19(ptr) Variable Function
+ 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 28
+ 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 29 15 15 15 15
+ 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 38 23(p0) 41
+ 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 42 24(p1) 41
+ 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 46 25(restDist) 41
+ 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 28 26(springForce(vf3;vf3;f1;)
+ 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 66 65(dist) 41
+ 70: 17(fvec3) Load 23(p0)
+ 71: 17(fvec3) Load 24(p1)
+ 72: 17(fvec3) FSub 70 71
+ Store 65(dist) 72
+ 73: 17(fvec3) Load 65(dist)
+ 74: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 73
+ 119: 118(ptr) AccessChain 113 116 117
+ 120: 7(float) Load 119
+ 121: 17(fvec3) VectorTimesScalar 74 120
+ 122: 17(fvec3) Load 65(dist)
+ 123: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 122
+ 124: 7(float) Load 25(restDist)
+ 125: 7(float) FSub 123 124
+ 126: 17(fvec3) VectorTimesScalar 121 125
+ ReturnValue 126
+ FunctionEnd
+ 55(@main(vu3;): 3 Function None 52
+ 54(id): 51(ptr) FunctionParameter
+ 58: Label
+ 131(index): 130(ptr) Variable Function
+ 220(force): 19(ptr) Variable Function
+ 232(pos): 19(ptr) Variable Function
+ 241(vel): 19(ptr) Variable Function
+ 258(param): 19(ptr) Variable Function
+ 262(param): 19(ptr) Variable Function
+ 264(param): 20(ptr) Variable Function
+ 282(param): 19(ptr) Variable Function
+ 286(param): 19(ptr) Variable Function
+ 288(param): 20(ptr) Variable Function
+ 310(param): 19(ptr) Variable Function
+ 314(param): 19(ptr) Variable Function
+ 316(param): 20(ptr) Variable Function
+ 333(param): 19(ptr) Variable Function
+ 337(param): 19(ptr) Variable Function
+ 339(param): 20(ptr) Variable Function
+ 368(param): 19(ptr) Variable Function
+ 372(param): 19(ptr) Variable Function
+ 374(param): 20(ptr) Variable Function
+ 398(param): 19(ptr) Variable Function
+ 402(param): 19(ptr) Variable Function
+ 404(param): 20(ptr) Variable Function
+ 436(param): 19(ptr) Variable Function
+ 440(param): 19(ptr) Variable Function
+ 442(param): 20(ptr) Variable Function
+ 470(param): 19(ptr) Variable Function
+ 474(param): 19(ptr) Variable Function
+ 476(param): 20(ptr) Variable Function
+ 490(f): 19(ptr) Variable Function
+ 534(sphereDist): 19(ptr) Variable Function
+ 602(normal): 19(ptr) Variable Function
+ 619(a): 19(ptr) Variable Function
+ 631(b): 19(ptr) Variable Function
+ 647(c): 19(ptr) Variable Function
+ 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 57
+ 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 29 15 15 15 15
+ 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 61 54(id) 41
+ 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 57 55(@main(vu3;)
+ 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 132 131(index) 41
+ 136: 130(ptr) AccessChain 54(id) 32
+ 137: 10(int) Load 136
+ 140: 139(ptr) AccessChain 113 116 138 15
+ 141: 77(int) Load 140
+ 142: 10(int) Bitcast 141
+ 143: 10(int) IMul 137 142
+ 144: 130(ptr) AccessChain 54(id) 15
+ 145: 10(int) Load 144
+ 146: 10(int) IAdd 143 145
+ Store 131(index) 146
+ 147: 10(int) Load 131(index)
+ 148: 139(ptr) AccessChain 113 116 138 15
+ 149: 77(int) Load 148
+ 150: 139(ptr) AccessChain 113 116 138 32
+ 151: 77(int) Load 150
+ 152: 77(int) IMul 149 151
+ 153: 10(int) Bitcast 152
+ 157: 154(bool) UGreaterThan 147 153
+ SelectionMerge 159 None
+ BranchConditional 157 158 159
+ 158: Label
+ Return
+ 159: Label
+ 188: 10(int) Load 131(index)
+ 190: 118(ptr) AccessChain 186(particleIn) 116 188 189
+ 191: 7(float) Load 190
+ 194: 154(bool) FOrdEqual 191 192
+ SelectionMerge 196 None
+ BranchConditional 194 195 196
+ 195: Label
+ 208: 10(int) Load 131(index)
+ 209: 10(int) Load 131(index)
+ 211: 210(ptr) AccessChain 206(particleOut) 116 209 116
+ 212: 75(fvec4) Load 211
+ 213: 210(ptr) AccessChain 206(particleOut) 116 208 116
+ Store 213 212
+ 214: 10(int) Load 131(index)
+ 218: 210(ptr) AccessChain 206(particleOut) 116 214 215
+ Store 218 217
+ Return
+ 196: Label
+ 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 221 220(force) 41
+ 226: 210(ptr) AccessChain 113 116 225
+ 227: 75(fvec4) Load 226
+ 228: 17(fvec3) VectorShuffle 227 227 0 1 2
+ 229: 118(ptr) AccessChain 113 116 215
+ 230: 7(float) Load 229
+ 231: 17(fvec3) VectorTimesScalar 228 230
+ Store 220(force) 231
+ 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 233 232(pos) 41
+ 237: 10(int) Load 131(index)
+ 238: 210(ptr) AccessChain 186(particleIn) 116 237 116
+ 239: 75(fvec4) Load 238
+ 240: 17(fvec3) VectorShuffle 239 239 0 1 2
+ Store 232(pos) 240
+ 245: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 242 241(vel) 41
+ 246: 10(int) Load 131(index)
+ 247: 210(ptr) AccessChain 186(particleIn) 116 246 215
+ 248: 75(fvec4) Load 247
+ 249: 17(fvec3) VectorShuffle 248 248 0 1 2
+ Store 241(vel) 249
+ 250: 130(ptr) AccessChain 54(id) 15
+ 251: 10(int) Load 250
+ 253: 154(bool) UGreaterThan 251 15
+ SelectionMerge 255 None
+ BranchConditional 253 254 255
+ 254: Label
+ 256: 10(int) Load 131(index)
+ 257: 10(int) ISub 256 32
+ 259: 210(ptr) AccessChain 186(particleIn) 116 257 116
+ 260: 75(fvec4) Load 259
+ 261: 17(fvec3) VectorShuffle 260 260 0 1 2
+ Store 258(param) 261
+ 263: 17(fvec3) Load 232(pos)
+ Store 262(param) 263
+ 265: 118(ptr) AccessChain 113 116 189
+ 266: 7(float) Load 265
+ Store 264(param) 266
+ 267: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 258(param) 262(param) 264(param)
+ 268: 17(fvec3) Load 220(force)
+ 269: 17(fvec3) FAdd 268 267
+ Store 220(force) 269
+ Branch 255
+ 255: Label
+ 270: 130(ptr) AccessChain 54(id) 15
+ 271: 10(int) Load 270
+ 272: 139(ptr) AccessChain 113 116 138 15
+ 273: 77(int) Load 272
+ 274: 77(int) ISub 273 215
+ 275: 10(int) Bitcast 274
+ 277: 154(bool) ULessThan 271 275
+ SelectionMerge 279 None
+ BranchConditional 277 278 279
+ 278: Label
+ 280: 10(int) Load 131(index)
+ 281: 10(int) IAdd 280 32
+ 283: 210(ptr) AccessChain 186(particleIn) 116 281 116
+ 284: 75(fvec4) Load 283
+ 285: 17(fvec3) VectorShuffle 284 284 0 1 2
+ Store 282(param) 285
+ 287: 17(fvec3) Load 232(pos)
+ Store 286(param) 287
+ 289: 118(ptr) AccessChain 113 116 189
+ 290: 7(float) Load 289
+ Store 288(param) 290
+ 291: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 282(param) 286(param) 288(param)
+ 292: 17(fvec3) Load 220(force)
+ 293: 17(fvec3) FAdd 292 291
+ Store 220(force) 293
+ Branch 279
+ 279: Label
+ 294: 130(ptr) AccessChain 54(id) 32
+ 295: 10(int) Load 294
+ 296: 139(ptr) AccessChain 113 116 138 32
+ 297: 77(int) Load 296
+ 298: 77(int) ISub 297 215
+ 299: 10(int) Bitcast 298
+ 301: 154(bool) ULessThan 295 299
+ SelectionMerge 303 None
+ BranchConditional 301 302 303
+ 302: Label
+ 304: 10(int) Load 131(index)
+ 305: 139(ptr) AccessChain 113 116 138 15
+ 306: 77(int) Load 305
+ 307: 10(int) Bitcast 306
+ 308: 10(int) IAdd 304 307
+ 311: 210(ptr) AccessChain 186(particleIn) 116 308 116
+ 312: 75(fvec4) Load 311
+ 313: 17(fvec3) VectorShuffle 312 312 0 1 2
+ Store 310(param) 313
+ 315: 17(fvec3) Load 232(pos)
+ Store 314(param) 315
+ 317: 118(ptr) AccessChain 113 116 309
+ 318: 7(float) Load 317
+ Store 316(param) 318
+ 319: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 310(param) 314(param) 316(param)
+ 320: 17(fvec3) Load 220(force)
+ 321: 17(fvec3) FAdd 320 319
+ Store 220(force) 321
+ Branch 303
+ 303: Label
+ 322: 130(ptr) AccessChain 54(id) 32
+ 323: 10(int) Load 322
+ 325: 154(bool) UGreaterThan 323 15
+ SelectionMerge 327 None
+ BranchConditional 325 326 327
+ 326: Label
+ 328: 10(int) Load 131(index)
+ 329: 139(ptr) AccessChain 113 116 138 15
+ 330: 77(int) Load 329
+ 331: 10(int) Bitcast 330
+ 332: 10(int) ISub 328 331
+ 334: 210(ptr) AccessChain 186(particleIn) 116 332 116
+ 335: 75(fvec4) Load 334
+ 336: 17(fvec3) VectorShuffle 335 335 0 1 2
+ Store 333(param) 336
+ 338: 17(fvec3) Load 232(pos)
+ Store 337(param) 338
+ 340: 118(ptr) AccessChain 113 116 309
+ 341: 7(float) Load 340
+ Store 339(param) 341
+ 342: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 333(param) 337(param) 339(param)
+ 343: 17(fvec3) Load 220(force)
+ 344: 17(fvec3) FAdd 343 342
+ Store 220(force) 344
+ Branch 327
+ 327: Label
+ 345: 130(ptr) AccessChain 54(id) 15
+ 346: 10(int) Load 345
+ 348: 154(bool) UGreaterThan 346 15
+ 349: 130(ptr) AccessChain 54(id) 32
+ 350: 10(int) Load 349
+ 351: 139(ptr) AccessChain 113 116 138 32
+ 352: 77(int) Load 351
+ 353: 77(int) ISub 352 215
+ 354: 10(int) Bitcast 353
+ 356: 154(bool) ULessThan 350 354
+ 358: 154(bool) LogicalAnd 348 356
+ SelectionMerge 360 None
+ BranchConditional 358 359 360
+ 359: Label
+ 361: 10(int) Load 131(index)
+ 362: 139(ptr) AccessChain 113 116 138 15
+ 363: 77(int) Load 362
+ 364: 10(int) Bitcast 363
+ 365: 10(int) IAdd 361 364
+ 366: 10(int) ISub 365 32
+ 369: 210(ptr) AccessChain 186(particleIn) 116 366 116
+ 370: 75(fvec4) Load 369
+ 371: 17(fvec3) VectorShuffle 370 370 0 1 2
+ Store 368(param) 371
+ 373: 17(fvec3) Load 232(pos)
+ Store 372(param) 373
+ 375: 118(ptr) AccessChain 113 116 367
+ 376: 7(float) Load 375
+ Store 374(param) 376
+ 377: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 368(param) 372(param) 374(param)
+ 378: 17(fvec3) Load 220(force)
+ 379: 17(fvec3) FAdd 378 377
+ Store 220(force) 379
+ Branch 360
+ 360: Label
+ 380: 130(ptr) AccessChain 54(id) 15
+ 381: 10(int) Load 380
+ 383: 154(bool) UGreaterThan 381 15
+ 384: 130(ptr) AccessChain 54(id) 32
+ 385: 10(int) Load 384
+ 387: 154(bool) UGreaterThan 385 15
+ 389: 154(bool) LogicalAnd 383 387
+ SelectionMerge 391 None
+ BranchConditional 389 390 391
+ 390: Label
+ 392: 10(int) Load 131(index)
+ 393: 139(ptr) AccessChain 113 116 138 15
+ 394: 77(int) Load 393
+ 395: 10(int) Bitcast 394
+ 396: 10(int) ISub 392 395
+ 397: 10(int) ISub 396 32
+ 399: 210(ptr) AccessChain 186(particleIn) 116 397 116
+ 400: 75(fvec4) Load 399
+ 401: 17(fvec3) VectorShuffle 400 400 0 1 2
+ Store 398(param) 401
+ 403: 17(fvec3) Load 232(pos)
+ Store 402(param) 403
+ 405: 118(ptr) AccessChain 113 116 367
+ 406: 7(float) Load 405
+ Store 404(param) 406
+ 407: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 398(param) 402(param) 404(param)
+ 408: 17(fvec3) Load 220(force)
+ 409: 17(fvec3) FAdd 408 407
+ Store 220(force) 409
+ Branch 391
+ 391: Label
+ 410: 130(ptr) AccessChain 54(id) 15
+ 411: 10(int) Load 410
+ 412: 139(ptr) AccessChain 113 116 138 15
+ 413: 77(int) Load 412
+ 414: 77(int) ISub 413 215
+ 415: 10(int) Bitcast 414
+ 417: 154(bool) ULessThan 411 415
+ 418: 130(ptr) AccessChain 54(id) 32
+ 419: 10(int) Load 418
+ 420: 139(ptr) AccessChain 113 116 138 32
+ 421: 77(int) Load 420
+ 422: 77(int) ISub 421 215
+ 423: 10(int) Bitcast 422
+ 425: 154(bool) ULessThan 419 423
+ 427: 154(bool) LogicalAnd 417 425
+ SelectionMerge 429 None
+ BranchConditional 427 428 429
+ 428: Label
+ 430: 10(int) Load 131(index)
+ 431: 139(ptr) AccessChain 113 116 138 15
+ 432: 77(int) Load 431
+ 433: 10(int) Bitcast 432
+ 434: 10(int) IAdd 430 433
+ 435: 10(int) IAdd 434 32
+ 437: 210(ptr) AccessChain 186(particleIn) 116 435 116
+ 438: 75(fvec4) Load 437
+ 439: 17(fvec3) VectorShuffle 438 438 0 1 2
+ Store 436(param) 439
+ 441: 17(fvec3) Load 232(pos)
+ Store 440(param) 441
+ 443: 118(ptr) AccessChain 113 116 367
+ 444: 7(float) Load 443
+ Store 442(param) 444
+ 445: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 436(param) 440(param) 442(param)
+ 446: 17(fvec3) Load 220(force)
+ 447: 17(fvec3) FAdd 446 445
+ Store 220(force) 447
+ Branch 429
+ 429: Label
+ 448: 130(ptr) AccessChain 54(id) 15
+ 449: 10(int) Load 448
+ 450: 139(ptr) AccessChain 113 116 138 15
+ 451: 77(int) Load 450
+ 452: 77(int) ISub 451 215
+ 453: 10(int) Bitcast 452
+ 455: 154(bool) ULessThan 449 453
+ 456: 130(ptr) AccessChain 54(id) 32
+ 457: 10(int) Load 456
+ 459: 154(bool) UGreaterThan 457 15
+ 461: 154(bool) LogicalAnd 455 459
+ SelectionMerge 463 None
+ BranchConditional 461 462 463
+ 462: Label
+ 464: 10(int) Load 131(index)
+ 465: 139(ptr) AccessChain 113 116 138 15
+ 466: 77(int) Load 465
+ 467: 10(int) Bitcast 466
+ 468: 10(int) ISub 464 467
+ 469: 10(int) IAdd 468 32
+ 471: 210(ptr) AccessChain 186(particleIn) 116 469 116
+ 472: 75(fvec4) Load 471
+ 473: 17(fvec3) VectorShuffle 472 472 0 1 2
+ Store 470(param) 473
+ 475: 17(fvec3) Load 232(pos)
+ Store 474(param) 475
+ 477: 118(ptr) AccessChain 113 116 367
+ 478: 7(float) Load 477
+ Store 476(param) 478
+ 479: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 470(param) 474(param) 476(param)
+ 480: 17(fvec3) Load 220(force)
+ 481: 17(fvec3) FAdd 480 479
+ Store 220(force) 481
+ Branch 463
+ 463: Label
+ 483: 118(ptr) AccessChain 113 116 482
+ 484: 7(float) Load 483
+ 485: 7(float) FNegate 484
+ 486: 17(fvec3) Load 241(vel)
+ 487: 17(fvec3) VectorTimesScalar 486 485
+ 488: 17(fvec3) Load 220(force)
+ 489: 17(fvec3) FAdd 488 487
+ Store 220(force) 489
+ 494: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 491 490(f) 41
+ 495: 17(fvec3) Load 220(force)
+ 496: 118(ptr) AccessChain 113 116 215
+ 497: 7(float) Load 496
+ 498: 7(float) FDiv 192 497
+ 499: 17(fvec3) VectorTimesScalar 495 498
+ Store 490(f) 499
+ 500: 10(int) Load 131(index)
+ 501: 17(fvec3) Load 232(pos)
+ 502: 17(fvec3) Load 241(vel)
+ 503: 118(ptr) AccessChain 113 116 116
+ 504: 7(float) Load 503
+ 505: 17(fvec3) VectorTimesScalar 502 504
+ 506: 17(fvec3) FAdd 501 505
+ 508: 17(fvec3) Load 490(f)
+ 509: 17(fvec3) VectorTimesScalar 508 507
+ 510: 118(ptr) AccessChain 113 116 116
+ 511: 7(float) Load 510
+ 512: 17(fvec3) VectorTimesScalar 509 511
+ 513: 118(ptr) AccessChain 113 116 116
+ 514: 7(float) Load 513
+ 515: 17(fvec3) VectorTimesScalar 512 514
+ 516: 17(fvec3) FAdd 506 515
+ 517: 7(float) CompositeExtract 516 0
+ 518: 7(float) CompositeExtract 516 1
+ 519: 7(float) CompositeExtract 516 2
+ 520: 75(fvec4) CompositeConstruct 517 518 519 192
+ 521: 210(ptr) AccessChain 206(particleOut) 116 500 116
+ Store 521 520
+ 522: 10(int) Load 131(index)
+ 523: 17(fvec3) Load 241(vel)
+ 524: 17(fvec3) Load 490(f)
+ 525: 118(ptr) AccessChain 113 116 116
+ 526: 7(float) Load 525
+ 527: 17(fvec3) VectorTimesScalar 524 526
+ 528: 17(fvec3) FAdd 523 527
+ 529: 7(float) CompositeExtract 528 0
+ 530: 7(float) CompositeExtract 528 1
+ 531: 7(float) CompositeExtract 528 2
+ 532: 75(fvec4) CompositeConstruct 529 530 531 216
+ 533: 210(ptr) AccessChain 206(particleOut) 116 522 215
+ Store 533 532
+ 538: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 535 534(sphereDist) 41
+ 539: 10(int) Load 131(index)
+ 540: 210(ptr) AccessChain 206(particleOut) 116 539 116
+ 541: 75(fvec4) Load 540
+ 542: 17(fvec3) VectorShuffle 541 541 0 1 2
+ 544: 210(ptr) AccessChain 113 116 543
+ 545: 75(fvec4) Load 544
+ 546: 17(fvec3) VectorShuffle 545 545 0 1 2
+ 547: 17(fvec3) FSub 542 546
+ Store 534(sphereDist) 547
+ 548: 17(fvec3) Load 534(sphereDist)
+ 549: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 548
+ 551: 118(ptr) AccessChain 113 116 550
+ 552: 7(float) Load 551
+ 554: 7(float) FAdd 552 553
+ 556: 154(bool) FOrdLessThan 549 554
+ SelectionMerge 558 None
+ BranchConditional 556 557 558
+ 557: Label
+ 559: 10(int) Load 131(index)
+ 560: 210(ptr) AccessChain 113 116 543
+ 561: 75(fvec4) Load 560
+ 562: 17(fvec3) VectorShuffle 561 561 0 1 2
+ 563: 17(fvec3) Load 534(sphereDist)
+ 564: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 563
+ 565: 118(ptr) AccessChain 113 116 550
+ 566: 7(float) Load 565
+ 567: 7(float) FAdd 566 553
+ 568: 17(fvec3) VectorTimesScalar 564 567
+ 569: 17(fvec3) FAdd 562 568
+ 570: 118(ptr) AccessChain 206(particleOut) 116 559 116 15
+ 571: 7(float) CompositeExtract 569 0
+ Store 570 571
+ 572: 118(ptr) AccessChain 206(particleOut) 116 559 116 32
+ 573: 7(float) CompositeExtract 569 1
+ Store 572 573
+ 574: 118(ptr) AccessChain 206(particleOut) 116 559 116 44
+ 575: 7(float) CompositeExtract 569 2
+ Store 574 575
+ 576: 10(int) Load 131(index)
+ 577: 210(ptr) AccessChain 206(particleOut) 116 576 215
+ Store 577 217
+ Branch 558
+ 558: Label
+ 596: 595(ptr) AccessChain 593 116 116
+ 597: 10(int) Load 596
+ 599: 154(bool) IEqual 597 32
+ SelectionMerge 601 None
+ BranchConditional 599 600 601
+ 600: Label
+ 605: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 603 602(normal) 41
+ Store 602(normal) 606
+ 607: 130(ptr) AccessChain 54(id) 32
+ 608: 10(int) Load 607
+ 610: 154(bool) UGreaterThan 608 15
+ SelectionMerge 612 None
+ BranchConditional 610 611 612
+ 611: Label
+ 613: 130(ptr) AccessChain 54(id) 15
+ 614: 10(int) Load 613
+ 616: 154(bool) UGreaterThan 614 15
+ SelectionMerge 618 None
+ BranchConditional 616 617 618
+ 617: Label
+ 623: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 620 619(a) 41
+ 624: 10(int) Load 131(index)
+ 625: 10(int) ISub 624 32
+ 626: 210(ptr) AccessChain 186(particleIn) 116 625 116
+ 627: 75(fvec4) Load 626
+ 628: 17(fvec3) VectorShuffle 627 627 0 1 2
+ 629: 17(fvec3) Load 232(pos)
+ 630: 17(fvec3) FSub 628 629
+ Store 619(a) 630
+ 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 632 631(b) 41
+ 636: 10(int) Load 131(index)
+ 637: 139(ptr) AccessChain 113 116 138 15
+ 638: 77(int) Load 637
+ 639: 10(int) Bitcast 638
+ 640: 10(int) ISub 636 639
+ 641: 10(int) ISub 640 32
+ 642: 210(ptr) AccessChain 186(particleIn) 116 641 116
+ 643: 75(fvec4) Load 642
+ 644: 17(fvec3) VectorShuffle 643 643 0 1 2
+ 645: 17(fvec3) Load 232(pos)
+ 646: 17(fvec3) FSub 644 645
+ Store 631(b) 646
+ 651: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 648 647(c) 41
+ 652: 10(int) Load 131(index)
+ 653: 139(ptr) AccessChain 113 116 138 15
+ 654: 77(int) Load 653
+ 655: 10(int) Bitcast 654
+ 656: 10(int) ISub 652 655
+ 657: 210(ptr) AccessChain 186(particleIn) 116 656 116
+ 658: 75(fvec4) Load 657
+ 659: 17(fvec3) VectorShuffle 658 658 0 1 2
+ 660: 17(fvec3) Load 232(pos)
+ 661: 17(fvec3) FSub 659 660
+ Store 647(c) 661
+ 662: 17(fvec3) Load 619(a)
+ 663: 17(fvec3) Load 631(b)
+ 664: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 662 663
+ 665: 17(fvec3) Load 631(b)
+ 666: 17(fvec3) Load 647(c)
+ 667: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 665 666
+ 668: 17(fvec3) FAdd 664 667
+ 669: 17(fvec3) Load 602(normal)
+ 670: 17(fvec3) FAdd 669 668
+ Store 602(normal) 670
+ Branch 618
+ 618: Label
+ 671: 130(ptr) AccessChain 54(id) 15
+ 672: 10(int) Load 671
+ 673: 139(ptr) AccessChain 113 116 138 15
+ 674: 77(int) Load 673
+ 675: 77(int) ISub 674 215
+ 676: 10(int) Bitcast 675
+ 678: 154(bool) ULessThan 672 676
+ SelectionMerge 680 None
+ BranchConditional 678 679 680
+ 679: Label
+ 681: 10(int) Load 131(index)
+ 682: 139(ptr) AccessChain 113 116 138 15
+ 683: 77(int) Load 682
+ 684: 10(int) Bitcast 683
+ 685: 10(int) ISub 681 684
+ 686: 210(ptr) AccessChain 186(particleIn) 116 685 116
+ 687: 75(fvec4) Load 686
+ 688: 17(fvec3) VectorShuffle 687 687 0 1 2
+ 689: 17(fvec3) Load 232(pos)
+ 690: 17(fvec3) FSub 688 689
+ Store 619(a) 690
+ 691: 10(int) Load 131(index)
+ 692: 139(ptr) AccessChain 113 116 138 15
+ 693: 77(int) Load 692
+ 694: 10(int) Bitcast 693
+ 695: 10(int) ISub 691 694
+ 696: 10(int) IAdd 695 32
+ 697: 210(ptr) AccessChain 186(particleIn) 116 696 116
+ 698: 75(fvec4) Load 697
+ 699: 17(fvec3) VectorShuffle 698 698 0 1 2
+ 700: 17(fvec3) Load 232(pos)
+ 701: 17(fvec3) FSub 699 700
+ Store 631(b) 701
+ 702: 10(int) Load 131(index)
+ 703: 10(int) IAdd 702 32
+ 704: 210(ptr) AccessChain 186(particleIn) 116 703 116
+ 705: 75(fvec4) Load 704
+ 706: 17(fvec3) VectorShuffle 705 705 0 1 2
+ 707: 17(fvec3) Load 232(pos)
+ 708: 17(fvec3) FSub 706 707
+ Store 647(c) 708
+ 709: 17(fvec3) Load 619(a)
+ 710: 17(fvec3) Load 631(b)
+ 711: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 709 710
+ 712: 17(fvec3) Load 631(b)
+ 713: 17(fvec3) Load 647(c)
+ 714: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 712 713
+ 715: 17(fvec3) FAdd 711 714
+ 716: 17(fvec3) Load 602(normal)
+ 717: 17(fvec3) FAdd 716 715
+ Store 602(normal) 717
+ Branch 680
+ 680: Label
+ Branch 612
+ 612: Label
+ 718: 130(ptr) AccessChain 54(id) 32
+ 719: 10(int) Load 718
+ 720: 139(ptr) AccessChain 113 116 138 32
+ 721: 77(int) Load 720
+ 722: 77(int) ISub 721 215
+ 723: 10(int) Bitcast 722
+ 725: 154(bool) ULessThan 719 723
+ SelectionMerge 727 None
+ BranchConditional 725 726 727
+ 726: Label
+ 728: 130(ptr) AccessChain 54(id) 15
+ 729: 10(int) Load 728
+ 731: 154(bool) UGreaterThan 729 15
+ SelectionMerge 733 None
+ BranchConditional 731 732 733
+ 732: Label
+ 734: 10(int) Load 131(index)
+ 735: 139(ptr) AccessChain 113 116 138 15
+ 736: 77(int) Load 735
+ 737: 10(int) Bitcast 736
+ 738: 10(int) IAdd 734 737
+ 739: 210(ptr) AccessChain 186(particleIn) 116 738 116
+ 740: 75(fvec4) Load 739
+ 741: 17(fvec3) VectorShuffle 740 740 0 1 2
+ 742: 17(fvec3) Load 232(pos)
+ 743: 17(fvec3) FSub 741 742
+ Store 619(a) 743
+ 744: 10(int) Load 131(index)
+ 745: 139(ptr) AccessChain 113 116 138 15
+ 746: 77(int) Load 745
+ 747: 10(int) Bitcast 746
+ 748: 10(int) IAdd 744 747
+ 749: 10(int) ISub 748 32
+ 750: 210(ptr) AccessChain 186(particleIn) 116 749 116
+ 751: 75(fvec4) Load 750
+ 752: 17(fvec3) VectorShuffle 751 751 0 1 2
+ 753: 17(fvec3) Load 232(pos)
+ 754: 17(fvec3) FSub 752 753
+ Store 631(b) 754
+ 755: 10(int) Load 131(index)
+ 756: 10(int) ISub 755 32
+ 757: 210(ptr) AccessChain 186(particleIn) 116 756 116
+ 758: 75(fvec4) Load 757
+ 759: 17(fvec3) VectorShuffle 758 758 0 1 2
+ 760: 17(fvec3) Load 232(pos)
+ 761: 17(fvec3) FSub 759 760
+ Store 647(c) 761
+ 762: 17(fvec3) Load 619(a)
+ 763: 17(fvec3) Load 631(b)
+ 764: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 762 763
+ 765: 17(fvec3) Load 631(b)
+ 766: 17(fvec3) Load 647(c)
+ 767: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 765 766
+ 768: 17(fvec3) FAdd 764 767
+ 769: 17(fvec3) Load 602(normal)
+ 770: 17(fvec3) FAdd 769 768
+ Store 602(normal) 770
+ Branch 733
+ 733: Label
+ 771: 130(ptr) AccessChain 54(id) 15
+ 772: 10(int) Load 771
+ 773: 139(ptr) AccessChain 113 116 138 15
+ 774: 77(int) Load 773
+ 775: 77(int) ISub 774 215
+ 776: 10(int) Bitcast 775
+ 778: 154(bool) ULessThan 772 776
+ SelectionMerge 780 None
+ BranchConditional 778 779 780
+ 779: Label
+ 781: 10(int) Load 131(index)
+ 782: 10(int) IAdd 781 32
+ 783: 210(ptr) AccessChain 186(particleIn) 116 782 116
+ 784: 75(fvec4) Load 783
+ 785: 17(fvec3) VectorShuffle 784 784 0 1 2
+ 786: 17(fvec3) Load 232(pos)
+ 787: 17(fvec3) FSub 785 786
+ Store 619(a) 787
+ 788: 10(int) Load 131(index)
+ 789: 139(ptr) AccessChain 113 116 138 15
+ 790: 77(int) Load 789
+ 791: 10(int) Bitcast 790
+ 792: 10(int) IAdd 788 791
+ 793: 10(int) IAdd 792 32
+ 794: 210(ptr) AccessChain 186(particleIn) 116 793 116
+ 795: 75(fvec4) Load 794
+ 796: 17(fvec3) VectorShuffle 795 795 0 1 2
+ 797: 17(fvec3) Load 232(pos)
+ 798: 17(fvec3) FSub 796 797
+ Store 631(b) 798
+ 799: 10(int) Load 131(index)
+ 800: 139(ptr) AccessChain 113 116 138 15
+ 801: 77(int) Load 800
+ 802: 10(int) Bitcast 801
+ 803: 10(int) IAdd 799 802
+ 804: 210(ptr) AccessChain 186(particleIn) 116 803 116
+ 805: 75(fvec4) Load 804
+ 806: 17(fvec3) VectorShuffle 805 805 0 1 2
+ 807: 17(fvec3) Load 232(pos)
+ 808: 17(fvec3) FSub 806 807
+ Store 647(c) 808
+ 809: 17(fvec3) Load 619(a)
+ 810: 17(fvec3) Load 631(b)
+ 811: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 809 810
+ 812: 17(fvec3) Load 631(b)
+ 813: 17(fvec3) Load 647(c)
+ 814: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 812 813
+ 815: 17(fvec3) FAdd 811 814
+ 816: 17(fvec3) Load 602(normal)
+ 817: 17(fvec3) FAdd 816 815
+ Store 602(normal) 817
+ Branch 780
+ 780: Label
+ Branch 727
+ 727: Label
+ 818: 10(int) Load 131(index)
+ 819: 17(fvec3) Load 602(normal)
+ 820: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 819
+ 821: 7(float) CompositeExtract 820 0
+ 822: 7(float) CompositeExtract 820 1
+ 823: 7(float) CompositeExtract 820 2
+ 824: 75(fvec4) CompositeConstruct 821 822 823 216
+ 825: 210(ptr) AccessChain 206(particleOut) 116 818 482
+ Store 825 824
+ Branch 601
+ 601: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out
new file mode 100644
index 0000000..3c206a0
--- /dev/null
+++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out
@@ -0,0 +1,987 @@
+spv.debuginfo.hlsl.frag
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 743
+
+ Capability Shader
+ Capability ImageQuery
+ Extension "SPV_KHR_non_semantic_info"
+ 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 5 "main" 736 739
+ ExecutionMode 5 OriginUpperLeft
+ 9: String "float"
+ 12: String "uint"
+ 32: String "textureProj"
+ 35: String ""
+ 43: String "P"
+ 47: String "layer"
+ 50: String "offset"
+ 57: String "filterPCF"
+ 63: String "sc"
+ 75: String "shadow"
+ 81: String "fragcolor"
+ 84: String "fragPos"
+ 90: String "@main"
+ 96: String "inUV"
+ 106: String "shadowCoord"
+ 128: String "bool"
+ 141: String "dist"
+ 146: String "type.2d.image"
+ 147: String "@type.2d.image"
+ 152: String "textureShadowMap"
+ 157: String "type.sampler"
+ 158: String "@type.sampler"
+ 162: String "samplerShadowMap"
+ 166: String "type.sampled.image"
+ 167: String "@type.sampled.image"
+ 203: String "sizeQueryTemp"
+ 209: String "int"
+ 216: String "texDim"
+ 230: String "elements"
+ 237: String "levels"
+ 244: String "scale"
+ 250: String "dx"
+ 261: String "dy"
+ 272: String "shadowFactor"
+ 277: String "count"
+ 283: String "range"
+ 289: String "x"
+ 305: String "y"
+ 351: String "i"
+ 365: String "shadowClip"
+ 378: String "color"
+ 384: String "viewMatrix"
+ 388: String "Light"
+ 394: String "lights"
+ 397: String "displayDebugTarget"
+ 402: String "UBO"
+ 405: String "ubo"
+ 445: String "textureposition"
+ 450: String "samplerposition"
+ 460: String "normal"
+ 465: String "textureNormal"
+ 470: String "samplerNormal"
+ 478: String "albedo"
+ 483: String "textureAlbedo"
+ 488: String "samplerAlbedo"
+ 541: String "N"
+ 560: String "L"
+ 580: String "V"
+ 592: String "lightCosInnerAngle"
+ 598: String "lightCosOuterAngle"
+ 604: String "lightRange"
+ 610: String "dir"
+ 625: String "cosDir"
+ 633: String "spotEffect"
+ 642: String "heightAttenuation"
+ 650: String "NdotL"
+ 659: String "diff"
+ 666: String "R"
+ 675: String "NdotR"
+ 684: String "spec"
+ Name 5 "main"
+ Name 31 "textureProj(vf4;f1;vf2;"
+ Name 28 "P"
+ Name 29 "layer"
+ Name 30 "offset"
+ Name 56 "filterPCF(vf4;f1;"
+ Name 54 "sc"
+ Name 55 "layer"
+ Name 74 "shadow(vf3;vf3;"
+ Name 72 "fragcolor"
+ Name 73 "fragPos"
+ Name 89 "@main(vf2;"
+ Name 88 "inUV"
+ Name 99 "shadow"
+ Name 104 "shadowCoord"
+ Name 139 "dist"
+ Name 150 "textureShadowMap"
+ Name 160 "samplerShadowMap"
+ Name 201 "sizeQueryTemp"
+ Name 214 "texDim"
+ Name 228 "elements"
+ Name 235 "levels"
+ Name 242 "scale"
+ Name 248 "dx"
+ Name 259 "dy"
+ Name 270 "shadowFactor"
+ Name 275 "count"
+ Name 281 "range"
+ Name 287 "x"
+ Name 303 "y"
+ Name 328 "param"
+ Name 330 "param"
+ Name 332 "param"
+ Name 349 "i"
+ Name 363 "shadowClip"
+ Name 376 "Light"
+ MemberName 376(Light) 0 "position"
+ MemberName 376(Light) 1 "target"
+ MemberName 376(Light) 2 "color"
+ MemberName 376(Light) 3 "viewMatrix"
+ Name 391 "UBO"
+ MemberName 391(UBO) 0 "viewPos"
+ MemberName 391(UBO) 1 "lights"
+ MemberName 391(UBO) 2 "useShadows"
+ MemberName 391(UBO) 3 "displayDebugTarget"
+ Name 403 "ubo"
+ MemberName 403(ubo) 0 "ubo"
+ Name 410 ""
+ Name 417 "shadowFactor"
+ Name 423 "param"
+ Name 425 "param"
+ Name 436 "fragPos"
+ Name 443 "textureposition"
+ Name 448 "samplerposition"
+ Name 458 "normal"
+ Name 463 "textureNormal"
+ Name 468 "samplerNormal"
+ Name 476 "albedo"
+ Name 481 "textureAlbedo"
+ Name 486 "samplerAlbedo"
+ Name 508 "fragcolor"
+ Name 513 "param"
+ Name 514 "param"
+ Name 539 "N"
+ Name 546 "i"
+ Name 558 "L"
+ Name 570 "dist"
+ Name 578 "V"
+ Name 590 "lightCosInnerAngle"
+ Name 596 "lightCosOuterAngle"
+ Name 602 "lightRange"
+ Name 608 "dir"
+ Name 623 "cosDir"
+ Name 631 "spotEffect"
+ Name 640 "heightAttenuation"
+ Name 648 "NdotL"
+ Name 657 "diff"
+ Name 664 "R"
+ Name 673 "NdotR"
+ Name 682 "spec"
+ Name 722 "param"
+ Name 724 "param"
+ Name 734 "inUV"
+ Name 736 "inUV"
+ Name 739 "@entryPointOutput"
+ Name 740 "param"
+ Decorate 150(textureShadowMap) DescriptorSet 0
+ Decorate 150(textureShadowMap) Binding 5
+ Decorate 160(samplerShadowMap) DescriptorSet 0
+ Decorate 160(samplerShadowMap) Binding 5
+ MemberDecorate 376(Light) 0 Offset 0
+ MemberDecorate 376(Light) 1 Offset 16
+ MemberDecorate 376(Light) 2 Offset 32
+ MemberDecorate 376(Light) 3 RowMajor
+ MemberDecorate 376(Light) 3 Offset 48
+ MemberDecorate 376(Light) 3 MatrixStride 16
+ Decorate 389 ArrayStride 112
+ MemberDecorate 391(UBO) 0 Offset 0
+ MemberDecorate 391(UBO) 1 Offset 16
+ MemberDecorate 391(UBO) 2 Offset 352
+ MemberDecorate 391(UBO) 3 Offset 356
+ MemberDecorate 403(ubo) 0 Offset 0
+ Decorate 403(ubo) Block
+ Decorate 410 DescriptorSet 0
+ Decorate 410 Binding 4
+ Decorate 443(textureposition) DescriptorSet 0
+ Decorate 443(textureposition) Binding 1
+ Decorate 448(samplerposition) DescriptorSet 0
+ Decorate 448(samplerposition) Binding 1
+ Decorate 463(textureNormal) DescriptorSet 0
+ Decorate 463(textureNormal) Binding 2
+ Decorate 468(samplerNormal) DescriptorSet 0
+ Decorate 468(samplerNormal) Binding 2
+ Decorate 481(textureAlbedo) DescriptorSet 0
+ Decorate 481(textureAlbedo) Binding 3
+ Decorate 486(samplerAlbedo) DescriptorSet 0
+ Decorate 486(samplerAlbedo) Binding 3
+ Decorate 736(inUV) Location 0
+ Decorate 739(@entryPointOutput) Location 0
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 7: TypeFloat 32
+ 10: TypeInt 32 0
+ 13: 10(int) Constant 32
+ 14: 10(int) Constant 6
+ 15: 10(int) Constant 0
+ 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15
+ 16: 10(int) Constant 3
+ 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15
+ 17: TypeVector 7(float) 4
+ 18: 10(int) Constant 4
+ 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 18
+ 20: TypePointer Function 17(fvec4)
+ 21: TypePointer Function 7(float)
+ 22: TypeVector 7(float) 2
+ 23: 10(int) Constant 2
+ 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 23
+ 25: TypePointer Function 22(fvec2)
+ 26: TypeFunction 7(float) 20(ptr) 21(ptr) 25(ptr)
+ 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 8 19 8 24
+ 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 35
+ 37: 10(int) Constant 1
+ 38: 10(int) Constant 5
+ 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 37 18 34 38
+ 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 32 27 34 15 15 36 32 16 15
+ 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 43 19 34 15 15 33 18 37
+ 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
+ 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 47 8 34 15 15 33 18 23
+ 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 50 24 34 15 15 33 18 16
+ 52: TypeFunction 7(float) 20(ptr) 21(ptr)
+ 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 8 19 8
+ 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 57 53 34 15 15 36 57 16 15
+ 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 63 19 34 15 15 58 18 37
+ 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 47 8 34 15 15 58 18 23
+ 67: TypeVector 7(float) 3
+ 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16
+ 69: TypePointer Function 67(fvec3)
+ 70: TypeFunction 67(fvec3) 69(ptr) 69(ptr)
+ 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 68 68 68
+ 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 75 71 34 15 15 36 75 16 15
+ 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 68 34 15 15 76 18 37
+ 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 84 68 34 15 15 76 18 23
+ 86: TypeFunction 17(fvec4) 25(ptr)
+ 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 19 24
+ 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 90 87 34 15 15 36 90 16 15
+ 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 96 24 34 15 15 91 18 37
+ 101: 10(int) Constant 62
+ 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 75 8 34 101 15 33 18
+ 103: 7(float) Constant 1065353216
+ 107: 10(int) Constant 63
+ 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 106 19 34 107 15 33 18
+ 116: 7(float) Constant 1056964608
+ 126: 7(float) Constant 3212836864
+ 127: TypeBool
+ 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15
+ 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15
+ 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15
+ 142: 10(int) Constant 68
+ 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 141 8 34 142 15 33 18
+ 144: TypeImage 7(float) 2D array sampled format:Unknown
+ 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown)
+ 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 146 15 34 142 15 36 147 148 16
+ 149: TypePointer UniformConstant 144
+150(textureShadowMap): 149(ptr) Variable UniformConstant
+ 153: 10(int) Constant 8
+ 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 152 145 34 142 15 36 152 150(textureShadowMap) 153
+ 155: TypeSampler
+ 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 157 37 34 142 15 36 158 148 16
+ 159: TypePointer UniformConstant 155
+160(samplerShadowMap): 159(ptr) Variable UniformConstant
+ 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 162 156 34 142 15 36 162 160(samplerShadowMap) 153
+ 164: TypeSampledImage 144
+ 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 166 15 34 142 15 36 167 148 16
+ 181: 7(float) Constant 0
+ 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15
+ 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15
+ 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15
+ 193: 7(float) Constant 1048576000
+ 198: TypeVector 10(int) 3
+ 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 11 16
+ 200: TypePointer Function 198(ivec3)
+ 204: 10(int) Constant 80
+ 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 203 199 34 204 15 58 18
+ 208: TypeInt 32 1
+ 210: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 209 13 18 15
+ 211: TypeVector 208(int) 2
+ 212: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 210 23
+ 213: TypePointer Function 211(ivec2)
+ 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 216 212 34 204 15 58 18
+ 218: TypePointer Function 10(int)
+ 222: TypePointer Function 208(int)
+ 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 210 34 204 15 58 18
+ 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 237 210 34 204 15 58 18
+ 245: 10(int) Constant 81
+ 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 244 8 34 245 15 58 18
+ 247: 7(float) Constant 1069547520
+ 251: 10(int) Constant 82
+ 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 250 8 34 251 15 58 18
+ 262: 10(int) Constant 83
+ 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 261 8 34 262 15 58 18
+ 273: 10(int) Constant 85
+ 271: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 272 8 34 273 15 58 18
+ 278: 10(int) Constant 86
+ 276: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 277 210 34 278 15 58 18
+ 280: 208(int) Constant 0
+ 284: 10(int) Constant 87
+ 282: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 283 210 34 284 15 58 18
+ 286: 208(int) Constant 1
+ 290: 10(int) Constant 89
+ 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 289 210 34 290 15 58 18
+ 301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15
+ 306: 10(int) Constant 91
+ 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 305 210 34 306 15 58 18
+ 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15
+ 352: 10(int) Constant 102
+ 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 351 210 34 352 15 76 18
+ 360: 208(int) Constant 3
+ 361: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15
+ 366: 10(int) Constant 104
+ 364: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 365 19 34 366 15 76 18
+ 373: TypeMatrix 17(fvec4) 4
+ 375: 127(bool) ConstantTrue
+ 374: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 375
+ 376(Light): TypeStruct 17(fvec4) 17(fvec4) 17(fvec4) 373
+ 379: 10(int) Constant 46
+ 380: 10(int) Constant 14
+ 377: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 378 19 34 379 380 15 15 16
+ 381: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 378 19 34 379 380 15 15 16
+ 382: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 378 19 34 379 380 15 15 16
+ 385: 10(int) Constant 47
+ 386: 10(int) Constant 21
+ 383: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 384 374 34 385 386 15 15 16
+ 387: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 388 37 34 366 15 36 388 15 16 377 381 382 383
+ 389: TypeArray 376(Light) 16
+ 390: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 387 16
+ 391(UBO): TypeStruct 17(fvec4) 389 208(int) 208(int)
+ 392: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 378 19 34 379 380 15 15 16
+ 395: 10(int) Constant 53
+ 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 394 390 34 395 380 15 15 16
+ 398: 10(int) Constant 55
+ 399: 10(int) Constant 24
+ 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 397 210 34 398 399 15 15 16
+ 400: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 397 210 34 398 399 15 15 16
+ 401: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 402 37 34 366 15 36 402 15 16 392 393 396 400
+ 403(ubo): TypeStruct 391(UBO)
+ 406: 10(int) Constant 58
+ 407: 10(int) Constant 37
+ 404: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 405 401 34 406 407 15 15 16
+ 408: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 405 37 34 366 15 36 405 15 16 404
+ 409: TypePointer Uniform 403(ubo)
+ 410: 409(ptr) Variable Uniform
+ 411: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 35 408 34 366 15 36 35 410 153
+ 413: TypePointer Uniform 373
+ 419: 10(int) Constant 108
+ 418: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 272 8 34 419 15 76 18
+ 438: 10(int) Constant 121
+ 437: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 84 68 34 438 15 91 18
+ 440: TypeImage 7(float) 2D sampled format:Unknown
+ 441: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 146 15 34 438 15 36 147 148 16
+ 442: TypePointer UniformConstant 440
+443(textureposition): 442(ptr) Variable UniformConstant
+ 444: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 445 441 34 438 15 36 445 443(textureposition) 153
+ 447: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 157 37 34 438 15 36 158 148 16
+448(samplerposition): 159(ptr) Variable UniformConstant
+ 449: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 450 447 34 438 15 36 450 448(samplerposition) 153
+ 452: TypeSampledImage 440
+ 453: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 166 15 34 438 15 36 167 148 16
+ 461: 10(int) Constant 122
+ 459: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 460 68 34 461 15 91 18
+463(textureNormal): 442(ptr) Variable UniformConstant
+ 464: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 465 441 34 461 15 36 465 463(textureNormal) 153
+ 467: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 157 37 34 461 15 36 158 148 16
+468(samplerNormal): 159(ptr) Variable UniformConstant
+ 469: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 470 467 34 461 15 36 470 468(samplerNormal) 153
+ 479: 10(int) Constant 123
+ 477: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 478 19 34 479 15 91 18
+481(textureAlbedo): 442(ptr) Variable UniformConstant
+ 482: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 483 441 34 479 15 36 483 481(textureAlbedo) 153
+ 485: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 157 37 34 479 15 36 158 148 16
+486(samplerAlbedo): 159(ptr) Variable UniformConstant
+ 487: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 488 485 34 479 15 36 488 486(samplerAlbedo) 153
+ 493: TypePointer Uniform 208(int)
+ 496: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15
+ 510: 10(int) Constant 131
+ 509: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 68 34 510 15 91 18
+ 512: 67(fvec3) ConstantComposite 103 103 103
+ 537: 7(float) Constant 1036831949
+ 542: 10(int) Constant 152
+ 540: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 541 68 34 542 15 91 18
+ 548: 10(int) Constant 154
+ 547: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 351 210 34 548 15 91 18
+ 556: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15
+ 561: 10(int) Constant 157
+ 559: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 560 68 34 561 15 91 18
+ 564: TypePointer Uniform 17(fvec4)
+ 572: 10(int) Constant 159
+ 571: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 141 8 34 572 15 91 18
+ 581: 10(int) Constant 163
+ 579: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 580 68 34 581 15 91 18
+ 593: 10(int) Constant 166
+ 591: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 592 8 34 593 15 91 18
+ 595: 7(float) Constant 1064781546
+ 599: 10(int) Constant 167
+ 597: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 598 8 34 599 15 91 18
+ 601: 7(float) Constant 1063781322
+ 605: 10(int) Constant 168
+ 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 604 8 34 605 15 91 18
+ 607: 7(float) Constant 1120403456
+ 611: 10(int) Constant 171
+ 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 610 68 34 611 15 91 18
+ 626: 10(int) Constant 174
+ 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 625 8 34 626 15 91 18
+ 634: 10(int) Constant 175
+ 632: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 633 8 34 634 15 91 18
+ 643: 10(int) Constant 176
+ 641: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 642 8 34 643 15 91 18
+ 651: 10(int) Constant 179
+ 649: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 650 8 34 651 15 91 18
+ 660: 10(int) Constant 180
+ 658: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 659 68 34 660 15 91 18
+ 667: 10(int) Constant 183
+ 665: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 666 68 34 667 15 91 18
+ 676: 10(int) Constant 184
+ 674: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 675 8 34 676 15 91 18
+ 685: 10(int) Constant 185
+ 683: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 684 68 34 685 15 91 18
+ 688: 7(float) Constant 1098907648
+ 693: 7(float) Constant 1075838976
+ 704: 208(int) Constant 2
+ 718: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15
+ 735: TypePointer Input 22(fvec2)
+ 736(inUV): 735(ptr) Variable Input
+ 738: TypePointer Output 17(fvec4)
+739(@entryPointOutput): 738(ptr) Variable Output
+ 5(main): 3 Function None 4
+ 6: Label
+ 734(inUV): 25(ptr) Variable Function
+ 740(param): 25(ptr) Variable Function
+ 737: 22(fvec2) Load 736(inUV)
+ Store 734(inUV) 737
+ 741: 22(fvec2) Load 734(inUV)
+ Store 740(param) 741
+ 742: 17(fvec4) FunctionCall 89(@main(vf2;) 740(param)
+ Store 739(@entryPointOutput) 742
+ Return
+ FunctionEnd
+31(textureProj(vf4;f1;vf2;): 7(float) Function None 26
+ 28(P): 20(ptr) FunctionParameter
+ 29(layer): 21(ptr) FunctionParameter
+ 30(offset): 25(ptr) FunctionParameter
+ 39: Label
+ 99(shadow): 21(ptr) Variable Function
+104(shadowCoord): 20(ptr) Variable Function
+ 139(dist): 21(ptr) Variable Function
+ 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 33
+ 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15
+ 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 42 28(P) 45
+ 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 46 29(layer) 45
+ 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 49 30(offset) 45
+ 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 33 31(textureProj(vf4;f1;vf2;)
+ 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 100 99(shadow) 45
+ Store 99(shadow) 103
+ 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 105 104(shadowCoord) 45
+ 109: 17(fvec4) Load 28(P)
+ 110: 21(ptr) AccessChain 28(P) 16
+ 111: 7(float) Load 110
+ 112: 17(fvec4) CompositeConstruct 111 111 111 111
+ 113: 17(fvec4) FDiv 109 112
+ Store 104(shadowCoord) 113
+ 114: 17(fvec4) Load 104(shadowCoord)
+ 115: 22(fvec2) VectorShuffle 114 114 0 1
+ 117: 22(fvec2) VectorTimesScalar 115 116
+ 118: 22(fvec2) CompositeConstruct 116 116
+ 119: 22(fvec2) FAdd 117 118
+ 120: 21(ptr) AccessChain 104(shadowCoord) 15
+ 121: 7(float) CompositeExtract 119 0
+ Store 120 121
+ 122: 21(ptr) AccessChain 104(shadowCoord) 37
+ 123: 7(float) CompositeExtract 119 1
+ Store 122 123
+ 124: 21(ptr) AccessChain 104(shadowCoord) 23
+ 125: 7(float) Load 124
+ 130: 127(bool) FOrdGreaterThan 125 126
+ 131: 21(ptr) AccessChain 104(shadowCoord) 23
+ 132: 7(float) Load 131
+ 134: 127(bool) FOrdLessThan 132 103
+ 136: 127(bool) LogicalAnd 130 134
+ SelectionMerge 138 None
+ BranchConditional 136 137 138
+ 137: Label
+ 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 140 139(dist) 45
+ 154: 144 Load 150(textureShadowMap)
+ 163: 155 Load 160(samplerShadowMap)
+ 168: 164 SampledImage 154 163
+ 169: 17(fvec4) Load 104(shadowCoord)
+ 170: 22(fvec2) VectorShuffle 169 169 0 1
+ 171: 22(fvec2) Load 30(offset)
+ 172: 22(fvec2) FAdd 170 171
+ 173: 7(float) Load 29(layer)
+ 174: 7(float) CompositeExtract 172 0
+ 175: 7(float) CompositeExtract 172 1
+ 176: 67(fvec3) CompositeConstruct 174 175 173
+ 177: 17(fvec4) ImageSampleImplicitLod 168 176
+ 178: 7(float) CompositeExtract 177 0
+ Store 139(dist) 178
+ 179: 21(ptr) AccessChain 104(shadowCoord) 16
+ 180: 7(float) Load 179
+ 183: 127(bool) FOrdGreaterThan 180 181
+ 184: 7(float) Load 139(dist)
+ 185: 21(ptr) AccessChain 104(shadowCoord) 23
+ 186: 7(float) Load 185
+ 188: 127(bool) FOrdLessThan 184 186
+ 190: 127(bool) LogicalAnd 183 188
+ SelectionMerge 192 None
+ BranchConditional 190 191 192
+ 191: Label
+ Store 99(shadow) 193
+ Branch 192
+ 192: Label
+ Branch 138
+ 138: Label
+ 194: 7(float) Load 99(shadow)
+ ReturnValue 194
+ FunctionEnd
+56(filterPCF(vf4;f1;): 7(float) Function None 52
+ 54(sc): 20(ptr) FunctionParameter
+ 55(layer): 21(ptr) FunctionParameter
+ 59: Label
+201(sizeQueryTemp): 200(ptr) Variable Function
+ 214(texDim): 213(ptr) Variable Function
+ 228(elements): 222(ptr) Variable Function
+ 235(levels): 222(ptr) Variable Function
+ 242(scale): 21(ptr) Variable Function
+ 248(dx): 21(ptr) Variable Function
+ 259(dy): 21(ptr) Variable Function
+270(shadowFactor): 21(ptr) Variable Function
+ 275(count): 222(ptr) Variable Function
+ 281(range): 222(ptr) Variable Function
+ 287(x): 222(ptr) Variable Function
+ 303(y): 222(ptr) Variable Function
+ 328(param): 20(ptr) Variable Function
+ 330(param): 21(ptr) Variable Function
+ 332(param): 25(ptr) Variable Function
+ 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 58
+ 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15
+ 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 62 54(sc) 45
+ 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 65 55(layer) 45
+ 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 58 56(filterPCF(vf4;f1;)
+ 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 202 201(sizeQueryTemp) 45
+ 206: 144 Load 150(textureShadowMap)
+ 207: 198(ivec3) ImageQuerySizeLod 206 15
+ Store 201(sizeQueryTemp) 207
+ 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 215 214(texDim) 45
+ 219: 218(ptr) AccessChain 201(sizeQueryTemp) 15
+ 220: 10(int) Load 219
+ 221: 208(int) Bitcast 220
+ 223: 222(ptr) AccessChain 214(texDim) 15
+ Store 223 221
+ 224: 218(ptr) AccessChain 201(sizeQueryTemp) 37
+ 225: 10(int) Load 224
+ 226: 208(int) Bitcast 225
+ 227: 222(ptr) AccessChain 214(texDim) 37
+ Store 227 226
+ 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 229 228(elements) 45
+ 232: 218(ptr) AccessChain 201(sizeQueryTemp) 23
+ 233: 10(int) Load 232
+ 234: 208(int) Bitcast 233
+ Store 228(elements) 234
+ 238: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 236 235(levels) 45
+ 239: 144 Load 150(textureShadowMap)
+ 240: 10(int) ImageQueryLevels 239
+ 241: 208(int) Bitcast 240
+ Store 235(levels) 241
+ 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 243 242(scale) 45
+ Store 242(scale) 247
+ 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 249 248(dx) 45
+ 253: 7(float) Load 242(scale)
+ 254: 7(float) FMul 253 103
+ 255: 222(ptr) AccessChain 214(texDim) 15
+ 256: 208(int) Load 255
+ 257: 7(float) ConvertSToF 256
+ 258: 7(float) FDiv 254 257
+ Store 248(dx) 258
+ 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 260 259(dy) 45
+ 264: 7(float) Load 242(scale)
+ 265: 7(float) FMul 264 103
+ 266: 222(ptr) AccessChain 214(texDim) 37
+ 267: 208(int) Load 266
+ 268: 7(float) ConvertSToF 267
+ 269: 7(float) FDiv 265 268
+ Store 259(dy) 269
+ 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 271 270(shadowFactor) 45
+ Store 270(shadowFactor) 181
+ 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 276 275(count) 45
+ Store 275(count) 280
+ 285: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 282 281(range) 45
+ Store 281(range) 286
+ 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 288 287(x) 45
+ 292: 208(int) Load 281(range)
+ 293: 208(int) SNegate 292
+ Store 287(x) 293
+ Branch 294
+ 294: Label
+ LoopMerge 296 297 None
+ Branch 298
+ 298: Label
+ 299: 208(int) Load 287(x)
+ 300: 208(int) Load 281(range)
+ 302: 127(bool) SLessThanEqual 299 300
+ BranchConditional 302 295 296
+ 295: Label
+ 307: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 304 303(y) 45
+ 308: 208(int) Load 281(range)
+ 309: 208(int) SNegate 308
+ Store 303(y) 309
+ Branch 310
+ 310: Label
+ LoopMerge 312 313 None
+ Branch 314
+ 314: Label
+ 315: 208(int) Load 303(y)
+ 316: 208(int) Load 281(range)
+ 318: 127(bool) SLessThanEqual 315 316
+ BranchConditional 318 311 312
+ 311: Label
+ 319: 7(float) Load 248(dx)
+ 320: 208(int) Load 287(x)
+ 321: 7(float) ConvertSToF 320
+ 322: 7(float) FMul 319 321
+ 323: 7(float) Load 259(dy)
+ 324: 208(int) Load 303(y)
+ 325: 7(float) ConvertSToF 324
+ 326: 7(float) FMul 323 325
+ 327: 22(fvec2) CompositeConstruct 322 326
+ 329: 17(fvec4) Load 54(sc)
+ Store 328(param) 329
+ 331: 7(float) Load 55(layer)
+ Store 330(param) 331
+ Store 332(param) 327
+ 333: 7(float) FunctionCall 31(textureProj(vf4;f1;vf2;) 328(param) 330(param) 332(param)
+ 334: 7(float) Load 270(shadowFactor)
+ 335: 7(float) FAdd 334 333
+ Store 270(shadowFactor) 335
+ 336: 208(int) Load 275(count)
+ 337: 208(int) IAdd 336 286
+ Store 275(count) 337
+ Branch 313
+ 313: Label
+ 338: 208(int) Load 303(y)
+ 339: 208(int) IAdd 338 286
+ Store 303(y) 339
+ Branch 310
+ 312: Label
+ Branch 297
+ 297: Label
+ 340: 208(int) Load 287(x)
+ 341: 208(int) IAdd 340 286
+ Store 287(x) 341
+ Branch 294
+ 296: Label
+ 342: 7(float) Load 270(shadowFactor)
+ 343: 208(int) Load 275(count)
+ 344: 7(float) ConvertSToF 343
+ 345: 7(float) FDiv 342 344
+ ReturnValue 345
+ FunctionEnd
+74(shadow(vf3;vf3;): 67(fvec3) Function None 70
+ 72(fragcolor): 69(ptr) FunctionParameter
+ 73(fragPos): 69(ptr) FunctionParameter
+ 77: Label
+ 349(i): 222(ptr) Variable Function
+ 363(shadowClip): 20(ptr) Variable Function
+417(shadowFactor): 21(ptr) Variable Function
+ 423(param): 20(ptr) Variable Function
+ 425(param): 21(ptr) Variable Function
+ 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 76
+ 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15
+ 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 72(fragcolor) 45
+ 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 83 73(fragPos) 45
+ 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 76 74(shadow(vf3;vf3;)
+ 353: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 350 349(i) 45
+ Store 349(i) 280
+ Branch 354
+ 354: Label
+ LoopMerge 356 357 None
+ Branch 358
+ 358: Label
+ 359: 208(int) Load 349(i)
+ 362: 127(bool) SLessThan 359 360
+ BranchConditional 362 355 356
+ 355: Label
+ 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 364 363(shadowClip) 45
+ 368: 67(fvec3) Load 73(fragPos)
+ 369: 7(float) CompositeExtract 368 0
+ 370: 7(float) CompositeExtract 368 1
+ 371: 7(float) CompositeExtract 368 2
+ 372: 17(fvec4) CompositeConstruct 369 370 371 103
+ 412: 208(int) Load 349(i)
+ 414: 413(ptr) AccessChain 410 280 286 412 360
+ 415: 373 Load 414
+ 416: 17(fvec4) VectorTimesMatrix 372 415
+ Store 363(shadowClip) 416
+ 420: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 418 417(shadowFactor) 45
+ 421: 208(int) Load 349(i)
+ 422: 7(float) ConvertSToF 421
+ 424: 17(fvec4) Load 363(shadowClip)
+ Store 423(param) 424
+ Store 425(param) 422
+ 426: 7(float) FunctionCall 56(filterPCF(vf4;f1;) 423(param) 425(param)
+ Store 417(shadowFactor) 426
+ 427: 7(float) Load 417(shadowFactor)
+ 428: 67(fvec3) Load 72(fragcolor)
+ 429: 67(fvec3) VectorTimesScalar 428 427
+ Store 72(fragcolor) 429
+ Branch 357
+ 357: Label
+ 430: 208(int) Load 349(i)
+ 431: 208(int) IAdd 430 286
+ Store 349(i) 431
+ Branch 354
+ 356: Label
+ 432: 67(fvec3) Load 72(fragcolor)
+ ReturnValue 432
+ FunctionEnd
+ 89(@main(vf2;): 17(fvec4) Function None 86
+ 88(inUV): 25(ptr) FunctionParameter
+ 92: Label
+ 436(fragPos): 69(ptr) Variable Function
+ 458(normal): 69(ptr) Variable Function
+ 476(albedo): 20(ptr) Variable Function
+ 508(fragcolor): 69(ptr) Variable Function
+ 513(param): 69(ptr) Variable Function
+ 514(param): 69(ptr) Variable Function
+ 539(N): 69(ptr) Variable Function
+ 546(i): 222(ptr) Variable Function
+ 558(L): 69(ptr) Variable Function
+ 570(dist): 21(ptr) Variable Function
+ 578(V): 69(ptr) Variable Function
+590(lightCosInnerAngle): 21(ptr) Variable Function
+596(lightCosOuterAngle): 21(ptr) Variable Function
+ 602(lightRange): 21(ptr) Variable Function
+ 608(dir): 69(ptr) Variable Function
+ 623(cosDir): 21(ptr) Variable Function
+ 631(spotEffect): 21(ptr) Variable Function
+640(heightAttenuation): 21(ptr) Variable Function
+ 648(NdotL): 21(ptr) Variable Function
+ 657(diff): 69(ptr) Variable Function
+ 664(R): 69(ptr) Variable Function
+ 673(NdotR): 21(ptr) Variable Function
+ 682(spec): 69(ptr) Variable Function
+ 722(param): 69(ptr) Variable Function
+ 724(param): 69(ptr) Variable Function
+ 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 91
+ 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15
+ 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 95 88(inUV) 45
+ 435: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 91 89(@main(vf2;)
+ 439: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 437 436(fragPos) 45
+ 446: 440 Load 443(textureposition)
+ 451: 155 Load 448(samplerposition)
+ 454: 452 SampledImage 446 451
+ 455: 22(fvec2) Load 88(inUV)
+ 456: 17(fvec4) ImageSampleImplicitLod 454 455
+ 457: 67(fvec3) VectorShuffle 456 456 0 1 2
+ Store 436(fragPos) 457
+ 462: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 459 458(normal) 45
+ 466: 440 Load 463(textureNormal)
+ 471: 155 Load 468(samplerNormal)
+ 472: 452 SampledImage 466 471
+ 473: 22(fvec2) Load 88(inUV)
+ 474: 17(fvec4) ImageSampleImplicitLod 472 473
+ 475: 67(fvec3) VectorShuffle 474 474 0 1 2
+ Store 458(normal) 475
+ 480: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 477 476(albedo) 45
+ 484: 440 Load 481(textureAlbedo)
+ 489: 155 Load 486(samplerAlbedo)
+ 490: 452 SampledImage 484 489
+ 491: 22(fvec2) Load 88(inUV)
+ 492: 17(fvec4) ImageSampleImplicitLod 490 491
+ Store 476(albedo) 492
+ 494: 493(ptr) AccessChain 410 280 360
+ 495: 208(int) Load 494
+ 497: 127(bool) SGreaterThan 495 280
+ SelectionMerge 499 None
+ BranchConditional 497 498 499
+ 498: Label
+ 500: 493(ptr) AccessChain 410 280 360
+ 501: 208(int) Load 500
+ SelectionMerge 507 None
+ Switch 501 507
+ case 1: 502
+ case 2: 503
+ case 3: 504
+ case 4: 505
+ case 5: 506
+ 502: Label
+ 511: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 509 508(fragcolor) 45
+ Store 513(param) 512
+ 515: 67(fvec3) Load 436(fragPos)
+ Store 514(param) 515
+ 516: 67(fvec3) FunctionCall 74(shadow(vf3;vf3;) 513(param) 514(param)
+ Store 508(fragcolor) 516
+ Branch 507
+ 503: Label
+ 518: 67(fvec3) Load 436(fragPos)
+ Store 508(fragcolor) 518
+ Branch 507
+ 504: Label
+ 520: 67(fvec3) Load 458(normal)
+ Store 508(fragcolor) 520
+ Branch 507
+ 505: Label
+ 522: 17(fvec4) Load 476(albedo)
+ 523: 67(fvec3) VectorShuffle 522 522 0 1 2
+ Store 508(fragcolor) 523
+ Branch 507
+ 506: Label
+ 525: 17(fvec4) Load 476(albedo)
+ 526: 67(fvec3) VectorShuffle 525 525 3 3 3
+ Store 508(fragcolor) 526
+ Branch 507
+ 507: Label
+ 529: 67(fvec3) Load 508(fragcolor)
+ 530: 7(float) CompositeExtract 529 0
+ 531: 7(float) CompositeExtract 529 1
+ 532: 7(float) CompositeExtract 529 2
+ 533: 17(fvec4) CompositeConstruct 530 531 532 103
+ ReturnValue 533
+ 499: Label
+ 535: 17(fvec4) Load 476(albedo)
+ 536: 67(fvec3) VectorShuffle 535 535 0 1 2
+ 538: 67(fvec3) VectorTimesScalar 536 537
+ Store 508(fragcolor) 538
+ 543: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 540 539(N) 45
+ 544: 67(fvec3) Load 458(normal)
+ 545: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 544
+ Store 539(N) 545
+ 549: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 547 546(i) 45
+ Store 546(i) 280
+ Branch 550
+ 550: Label
+ LoopMerge 552 553 None
+ Branch 554
+ 554: Label
+ 555: 208(int) Load 546(i)
+ 557: 127(bool) SLessThan 555 360
+ BranchConditional 557 551 552
+ 551: Label
+ 562: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 559 558(L) 45
+ 563: 208(int) Load 546(i)
+ 565: 564(ptr) AccessChain 410 280 286 563 280
+ 566: 17(fvec4) Load 565
+ 567: 67(fvec3) VectorShuffle 566 566 0 1 2
+ 568: 67(fvec3) Load 436(fragPos)
+ 569: 67(fvec3) FSub 567 568
+ Store 558(L) 569
+ 573: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 571 570(dist) 45
+ 574: 67(fvec3) Load 558(L)
+ 575: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 574
+ Store 570(dist) 575
+ 576: 67(fvec3) Load 558(L)
+ 577: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 576
+ Store 558(L) 577
+ 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 579 578(V) 45
+ 583: 564(ptr) AccessChain 410 280 280
+ 584: 17(fvec4) Load 583
+ 585: 67(fvec3) VectorShuffle 584 584 0 1 2
+ 586: 67(fvec3) Load 436(fragPos)
+ 587: 67(fvec3) FSub 585 586
+ Store 578(V) 587
+ 588: 67(fvec3) Load 578(V)
+ 589: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 588
+ Store 578(V) 589
+ 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 591 590(lightCosInnerAngle) 45
+ Store 590(lightCosInnerAngle) 595
+ 600: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 597 596(lightCosOuterAngle) 45
+ Store 596(lightCosOuterAngle) 601
+ 606: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 603 602(lightRange) 45
+ Store 602(lightRange) 607
+ 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 609 608(dir) 45
+ 613: 208(int) Load 546(i)
+ 614: 564(ptr) AccessChain 410 280 286 613 280
+ 615: 17(fvec4) Load 614
+ 616: 67(fvec3) VectorShuffle 615 615 0 1 2
+ 617: 208(int) Load 546(i)
+ 618: 564(ptr) AccessChain 410 280 286 617 286
+ 619: 17(fvec4) Load 618
+ 620: 67(fvec3) VectorShuffle 619 619 0 1 2
+ 621: 67(fvec3) FSub 616 620
+ 622: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 621
+ Store 608(dir) 622
+ 627: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 624 623(cosDir) 45
+ 628: 67(fvec3) Load 558(L)
+ 629: 67(fvec3) Load 608(dir)
+ 630: 7(float) Dot 628 629
+ Store 623(cosDir) 630
+ 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 632 631(spotEffect) 45
+ 636: 7(float) Load 596(lightCosOuterAngle)
+ 637: 7(float) Load 590(lightCosInnerAngle)
+ 638: 7(float) Load 623(cosDir)
+ 639: 7(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 636 637 638
+ Store 631(spotEffect) 639
+ 644: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 641 640(heightAttenuation) 45
+ 645: 7(float) Load 602(lightRange)
+ 646: 7(float) Load 570(dist)
+ 647: 7(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 645 181 646
+ Store 640(heightAttenuation) 647
+ 652: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 649 648(NdotL) 45
+ 653: 67(fvec3) Load 539(N)
+ 654: 67(fvec3) Load 558(L)
+ 655: 7(float) Dot 653 654
+ 656: 7(float) ExtInst 2(GLSL.std.450) 40(FMax) 181 655
+ Store 648(NdotL) 656
+ 661: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 658 657(diff) 45
+ 662: 7(float) Load 648(NdotL)
+ 663: 67(fvec3) CompositeConstruct 662 662 662
+ Store 657(diff) 663
+ 668: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 665 664(R) 45
+ 669: 67(fvec3) Load 558(L)
+ 670: 67(fvec3) FNegate 669
+ 671: 67(fvec3) Load 539(N)
+ 672: 67(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 670 671
+ Store 664(R) 672
+ 677: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 674 673(NdotR) 45
+ 678: 67(fvec3) Load 664(R)
+ 679: 67(fvec3) Load 578(V)
+ 680: 7(float) Dot 678 679
+ 681: 7(float) ExtInst 2(GLSL.std.450) 40(FMax) 181 680
+ Store 673(NdotR) 681
+ 686: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 683 682(spec) 45
+ 687: 7(float) Load 673(NdotR)
+ 689: 7(float) ExtInst 2(GLSL.std.450) 26(Pow) 687 688
+ 690: 21(ptr) AccessChain 476(albedo) 16
+ 691: 7(float) Load 690
+ 692: 7(float) FMul 689 691
+ 694: 7(float) FMul 692 693
+ 695: 67(fvec3) CompositeConstruct 694 694 694
+ Store 682(spec) 695
+ 696: 67(fvec3) Load 657(diff)
+ 697: 67(fvec3) Load 682(spec)
+ 698: 67(fvec3) FAdd 696 697
+ 699: 7(float) Load 631(spotEffect)
+ 700: 67(fvec3) VectorTimesScalar 698 699
+ 701: 7(float) Load 640(heightAttenuation)
+ 702: 67(fvec3) VectorTimesScalar 700 701
+ 703: 208(int) Load 546(i)
+ 705: 564(ptr) AccessChain 410 280 286 703 704
+ 706: 17(fvec4) Load 705
+ 707: 67(fvec3) VectorShuffle 706 706 0 1 2
+ 708: 67(fvec3) FMul 702 707
+ 709: 17(fvec4) Load 476(albedo)
+ 710: 67(fvec3) VectorShuffle 709 709 0 1 2
+ 711: 67(fvec3) FMul 708 710
+ 712: 67(fvec3) Load 508(fragcolor)
+ 713: 67(fvec3) FAdd 712 711
+ Store 508(fragcolor) 713
+ Branch 553
+ 553: Label
+ 714: 208(int) Load 546(i)
+ 715: 208(int) IAdd 714 286
+ Store 546(i) 715
+ Branch 550
+ 552: Label
+ 716: 493(ptr) AccessChain 410 280 704
+ 717: 208(int) Load 716
+ 719: 127(bool) SGreaterThan 717 280
+ SelectionMerge 721 None
+ BranchConditional 719 720 721
+ 720: Label
+ 723: 67(fvec3) Load 508(fragcolor)
+ Store 722(param) 723
+ 725: 67(fvec3) Load 436(fragPos)
+ Store 724(param) 725
+ 726: 67(fvec3) FunctionCall 74(shadow(vf3;vf3;) 722(param) 724(param)
+ Store 508(fragcolor) 726
+ Branch 721
+ 721: Label
+ 727: 67(fvec3) Load 508(fragcolor)
+ 728: 7(float) CompositeExtract 727 0
+ 729: 7(float) CompositeExtract 727 1
+ 730: 7(float) CompositeExtract 727 2
+ 731: 17(fvec4) CompositeConstruct 728 729 730 103
+ ReturnValue 731
+ FunctionEnd
diff --git a/Test/baseResults/spv.debuginfo.hlsl.geom.out b/Test/baseResults/spv.debuginfo.hlsl.geom.out
new file mode 100644
index 0000000..c747d3a
--- /dev/null
+++ b/Test/baseResults/spv.debuginfo.hlsl.geom.out
@@ -0,0 +1,458 @@
+spv.debuginfo.hlsl.geom
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 322
+
+ Capability Geometry
+ Capability MultiViewport
+ Extension "SPV_KHR_non_semantic_info"
+ 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Geometry 5 "main" 228 235 240 246 251 256 261 271 278 283 307 310
+ ExecutionMode 5 Triangles
+ ExecutionMode 5 Invocations 2
+ ExecutionMode 5 OutputTriangleStrip
+ ExecutionMode 5 OutputVertices 3
+ 9: String "float"
+ 12: String "uint"
+ 24: String "Pos"
+ 26: String ""
+ 30: String "Color"
+ 35: String "VSOutput"
+ 46: String "PrimitiveID"
+ 51: String "LightVec"
+ 57: String "GSOutput"
+ 67: String "@main"
+ 73: String "input"
+ 77: String "outStream"
+ 81: String "InvocationID"
+ 87: String "int"
+ 92: String "i"
+ 104: String "bool"
+ 109: String "output"
+ 130: String "projection"
+ 134: String "modelview"
+ 138: String "lightPos"
+ 142: String "UBO"
+ 146: String "ubo"
+ 177: String "pos"
+ 185: String "worldPos"
+ 195: String "lPos"
+ 230: String "outStream.Pos"
+ 237: String "outStream.ViewportIndex"
+ 242: String "outStream.PrimitiveID"
+ 248: String "outStream.Normal"
+ 253: String "outStream.Color"
+ 258: String "outStream.ViewVec"
+ 263: String "outStream.LightVec"
+ Name 5 "main"
+ Name 22 "VSOutput"
+ MemberName 22(VSOutput) 0 "Pos"
+ MemberName 22(VSOutput) 1 "Normal"
+ MemberName 22(VSOutput) 2 "Color"
+ Name 42 "GSOutput"
+ MemberName 42(GSOutput) 0 "Pos"
+ MemberName 42(GSOutput) 1 "ViewportIndex"
+ MemberName 42(GSOutput) 2 "PrimitiveID"
+ MemberName 42(GSOutput) 3 "Normal"
+ MemberName 42(GSOutput) 4 "Color"
+ MemberName 42(GSOutput) 5 "ViewVec"
+ MemberName 42(GSOutput) 6 "LightVec"
+ Name 66 "@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;"
+ Name 62 "input"
+ Name 63 "outStream"
+ Name 64 "InvocationID"
+ Name 65 "PrimitiveID"
+ Name 90 "i"
+ Name 107 "output"
+ Name 128 "UBO"
+ MemberName 128(UBO) 0 "projection"
+ MemberName 128(UBO) 1 "modelview"
+ MemberName 128(UBO) 2 "lightPos"
+ Name 144 "ubo"
+ MemberName 144(ubo) 0 "ubo"
+ Name 150 ""
+ Name 175 "pos"
+ Name 183 "worldPos"
+ Name 193 "lPos"
+ Name 228 "outStream.Pos"
+ Name 235 "outStream.ViewportIndex"
+ Name 240 "outStream.PrimitiveID"
+ Name 246 "outStream.Normal"
+ Name 251 "outStream.Color"
+ Name 256 "outStream.ViewVec"
+ Name 261 "outStream.LightVec"
+ Name 268 "input"
+ Name 271 "input.Pos"
+ Name 278 "input.Normal"
+ Name 283 "input.Color"
+ Name 305 "InvocationID"
+ Name 307 "InvocationID"
+ Name 309 "PrimitiveID"
+ Name 310 "PrimitiveID"
+ Name 312 "outStream"
+ Name 313 "param"
+ Name 315 "param"
+ Name 316 "param"
+ Name 318 "param"
+ Decorate 124 ArrayStride 64
+ Decorate 126 ArrayStride 64
+ MemberDecorate 128(UBO) 0 RowMajor
+ MemberDecorate 128(UBO) 0 Offset 0
+ MemberDecorate 128(UBO) 0 MatrixStride 16
+ MemberDecorate 128(UBO) 1 RowMajor
+ MemberDecorate 128(UBO) 1 Offset 128
+ MemberDecorate 128(UBO) 1 MatrixStride 16
+ MemberDecorate 128(UBO) 2 Offset 256
+ MemberDecorate 144(ubo) 0 Offset 0
+ Decorate 144(ubo) Block
+ Decorate 150 DescriptorSet 0
+ Decorate 150 Binding 0
+ Decorate 228(outStream.Pos) BuiltIn Position
+ Decorate 235(outStream.ViewportIndex) BuiltIn ViewportIndex
+ Decorate 240(outStream.PrimitiveID) BuiltIn PrimitiveId
+ Decorate 246(outStream.Normal) Location 0
+ Decorate 251(outStream.Color) Location 1
+ Decorate 256(outStream.ViewVec) Location 2
+ Decorate 261(outStream.LightVec) Location 3
+ Decorate 271(input.Pos) BuiltIn Position
+ Decorate 278(input.Normal) Location 0
+ Decorate 283(input.Color) Location 1
+ Decorate 307(InvocationID) BuiltIn InvocationId
+ Decorate 310(PrimitiveID) BuiltIn PrimitiveId
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 7: TypeFloat 32
+ 10: TypeInt 32 0
+ 13: 10(int) Constant 32
+ 14: 10(int) Constant 6
+ 15: 10(int) Constant 0
+ 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15
+ 16: 10(int) Constant 3
+ 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15
+ 17: TypeVector 7(float) 4
+ 18: 10(int) Constant 4
+ 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 18
+ 20: TypeVector 7(float) 3
+ 21: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16
+ 22(VSOutput): TypeStruct 17(fvec4) 20(fvec3) 20(fvec3)
+ 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 26
+ 27: 10(int) Constant 37
+ 28: 10(int) Constant 13
+ 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 24 19 25 27 28 15 15 16
+ 31: 10(int) Constant 39
+ 32: 10(int) Constant 34
+ 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 30 21 25 31 32 15 15 16
+ 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 30 21 25 31 32 15 15 16
+ 36: 10(int) Constant 1
+ 38: 10(int) Constant 5
+ 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 36 18 25 38
+ 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 35 36 25 15 15 37 35 15 16 23 29 33
+ 39: TypeArray 22(VSOutput) 16
+ 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 34 16
+ 41: TypePointer Function 39
+ 42(GSOutput): TypeStruct 17(fvec4) 10(int) 10(int) 20(fvec3) 20(fvec3) 20(fvec3) 20(fvec3)
+ 44: 10(int) Constant 44
+ 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 24 19 25 44 28 15 15 16
+ 47: 10(int) Constant 46
+ 48: 10(int) Constant 19
+ 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 46 11 25 47 48 15 15 16
+ 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 46 11 25 47 48 15 15 16
+ 52: 10(int) Constant 50
+ 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16
+ 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16
+ 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16
+ 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16
+ 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 57 36 25 15 15 37 57 15 16 43 45 49 50 53 54 55
+ 58: TypePointer Function 42(GSOutput)
+ 59: TypePointer Function 10(int)
+ 60: TypeFunction 3 41(ptr) 58(ptr) 59(ptr) 59(ptr)
+ 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 3 40 56 11 11
+ 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 67 61 25 15 15 37 67 16 15
+ 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 73 40 25 15 15 68 18 36
+ 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
+ 78: 10(int) Constant 2
+ 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 77 56 25 15 15 68 18 78
+ 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 11 25 15 15 68 18 16
+ 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 46 11 25 15 15 68 18 18
+ 86: TypeInt 32 1
+ 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 87 13 18 15
+ 89: TypePointer Function 86(int)
+ 93: 10(int) Constant 57
+ 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 92 88 25 93 15 68 18
+ 95: 86(int) Constant 0
+ 102: 86(int) Constant 3
+ 103: TypeBool
+ 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 104 13 78 15
+ 110: 10(int) Constant 59
+ 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 56 25 110 15 68 18
+ 112: 7(float) Constant 0
+ 113: 17(fvec4) ConstantComposite 112 112 112 112
+ 114: 20(fvec3) ConstantComposite 112 112 112
+ 115:42(GSOutput) ConstantComposite 113 15 15 114 114 114 114
+ 117: 86(int) Constant 1
+ 118: TypePointer Function 20(fvec3)
+ 121: TypeMatrix 17(fvec4) 4
+ 123: 103(bool) ConstantTrue
+ 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 123
+ 124: TypeArray 121 78
+ 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 122 78
+ 126: TypeArray 121 78
+ 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 122 78
+ 128(UBO): TypeStruct 124 126 17(fvec4)
+ 131: 10(int) Constant 28
+ 132: 10(int) Constant 21
+ 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 130 125 25 131 132 15 15 16
+ 135: 10(int) Constant 29
+ 136: 10(int) Constant 20
+ 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 134 127 25 135 136 15 15 16
+ 139: 10(int) Constant 30
+ 140: 10(int) Constant 17
+ 137: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 19 25 139 140 15 15 16
+ 143: 10(int) Constant 60
+ 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 36 25 143 15 37 142 15 16 129 133 137
+ 144(ubo): TypeStruct 128(UBO)
+ 147: 10(int) Constant 33
+ 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 146 141 25 147 27 15 15 16
+ 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 146 36 25 143 15 37 146 15 16 145
+ 149: TypePointer Uniform 144(ubo)
+ 150: 149(ptr) Variable Uniform
+ 152: 10(int) Constant 8
+ 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 26 148 25 143 15 37 26 150 152
+ 154: TypePointer Uniform 121
+ 157: TypeMatrix 20(fvec3) 3
+ 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 21 16 123
+ 168: 86(int) Constant 4
+ 170: 86(int) Constant 2
+ 174: TypePointer Function 17(fvec4)
+ 178: 10(int) Constant 63
+ 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 177 19 25 178 15 68 18
+ 186: 10(int) Constant 64
+ 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 185 19 25 186 15 68 18
+ 196: 10(int) Constant 66
+ 194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 195 21 25 196 15 68 18
+ 198: TypePointer Uniform 17(fvec4)
+ 206: 86(int) Constant 6
+ 212: 86(int) Constant 5
+ 227: TypePointer Output 17(fvec4)
+228(outStream.Pos): 227(ptr) Variable Output
+ 231: 10(int) Constant 75
+ 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 230 19 25 231 15 37 230 228(outStream.Pos) 152
+ 234: TypePointer Output 10(int)
+235(outStream.ViewportIndex): 234(ptr) Variable Output
+ 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 237 11 25 231 15 37 237 235(outStream.ViewportIndex) 152
+240(outStream.PrimitiveID): 234(ptr) Variable Output
+ 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 242 11 25 231 15 37 242 240(outStream.PrimitiveID) 152
+ 245: TypePointer Output 20(fvec3)
+246(outStream.Normal): 245(ptr) Variable Output
+ 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 248 21 25 231 15 37 248 246(outStream.Normal) 152
+251(outStream.Color): 245(ptr) Variable Output
+ 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 253 21 25 231 15 37 253 251(outStream.Color) 152
+256(outStream.ViewVec): 245(ptr) Variable Output
+ 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 258 21 25 231 15 37 258 256(outStream.ViewVec) 152
+261(outStream.LightVec): 245(ptr) Variable Output
+ 262: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 263 21 25 231 15 37 263 261(outStream.LightVec) 152
+ 269: TypeArray 17(fvec4) 16
+ 270: TypePointer Input 269
+ 271(input.Pos): 270(ptr) Variable Input
+ 272: TypePointer Input 17(fvec4)
+ 276: TypeArray 20(fvec3) 16
+ 277: TypePointer Input 276
+278(input.Normal): 277(ptr) Variable Input
+ 279: TypePointer Input 20(fvec3)
+283(input.Color): 277(ptr) Variable Input
+ 306: TypePointer Input 10(int)
+307(InvocationID): 306(ptr) Variable Input
+310(PrimitiveID): 306(ptr) Variable Input
+ 5(main): 3 Function None 4
+ 6: Label
+ 268(input): 41(ptr) Variable Function
+305(InvocationID): 59(ptr) Variable Function
+309(PrimitiveID): 59(ptr) Variable Function
+ 312(outStream): 58(ptr) Variable Function
+ 313(param): 41(ptr) Variable Function
+ 315(param): 58(ptr) Variable Function
+ 316(param): 59(ptr) Variable Function
+ 318(param): 59(ptr) Variable Function
+ 273: 272(ptr) AccessChain 271(input.Pos) 95
+ 274: 17(fvec4) Load 273
+ 275: 174(ptr) AccessChain 268(input) 95 95
+ Store 275 274
+ 280: 279(ptr) AccessChain 278(input.Normal) 95
+ 281: 20(fvec3) Load 280
+ 282: 118(ptr) AccessChain 268(input) 95 117
+ Store 282 281
+ 284: 279(ptr) AccessChain 283(input.Color) 95
+ 285: 20(fvec3) Load 284
+ 286: 118(ptr) AccessChain 268(input) 95 170
+ Store 286 285
+ 287: 272(ptr) AccessChain 271(input.Pos) 117
+ 288: 17(fvec4) Load 287
+ 289: 174(ptr) AccessChain 268(input) 117 95
+ Store 289 288
+ 290: 279(ptr) AccessChain 278(input.Normal) 117
+ 291: 20(fvec3) Load 290
+ 292: 118(ptr) AccessChain 268(input) 117 117
+ Store 292 291
+ 293: 279(ptr) AccessChain 283(input.Color) 117
+ 294: 20(fvec3) Load 293
+ 295: 118(ptr) AccessChain 268(input) 117 170
+ Store 295 294
+ 296: 272(ptr) AccessChain 271(input.Pos) 170
+ 297: 17(fvec4) Load 296
+ 298: 174(ptr) AccessChain 268(input) 170 95
+ Store 298 297
+ 299: 279(ptr) AccessChain 278(input.Normal) 170
+ 300: 20(fvec3) Load 299
+ 301: 118(ptr) AccessChain 268(input) 170 117
+ Store 301 300
+ 302: 279(ptr) AccessChain 283(input.Color) 170
+ 303: 20(fvec3) Load 302
+ 304: 118(ptr) AccessChain 268(input) 170 170
+ Store 304 303
+ 308: 10(int) Load 307(InvocationID)
+ Store 305(InvocationID) 308
+ 311: 10(int) Load 310(PrimitiveID)
+ Store 309(PrimitiveID) 311
+ 314: 39 Load 268(input)
+ Store 313(param) 314
+ 317: 10(int) Load 305(InvocationID)
+ Store 316(param) 317
+ 319: 10(int) Load 309(PrimitiveID)
+ Store 318(param) 319
+ 320: 3 FunctionCall 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 313(param) 315(param) 316(param) 318(param)
+ 321:42(GSOutput) Load 315(param)
+ Store 312(outStream) 321
+ Return
+ FunctionEnd
+66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;): 3 Function None 60
+ 62(input): 41(ptr) FunctionParameter
+ 63(outStream): 58(ptr) FunctionParameter
+64(InvocationID): 59(ptr) FunctionParameter
+ 65(PrimitiveID): 59(ptr) FunctionParameter
+ 69: Label
+ 90(i): 89(ptr) Variable Function
+ 107(output): 58(ptr) Variable Function
+ 175(pos): 174(ptr) Variable Function
+ 183(worldPos): 174(ptr) Variable Function
+ 193(lPos): 118(ptr) Variable Function
+ 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 68
+ 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 25 15 15 15 15
+ 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 72 62(input) 75
+ 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 76 63(outStream) 75
+ 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 64(InvocationID) 75
+ 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 83 65(PrimitiveID) 75
+ 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 68 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;)
+ 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 91 90(i) 75
+ Store 90(i) 95
+ Branch 96
+ 96: Label
+ LoopMerge 98 99 None
+ Branch 100
+ 100: Label
+ 101: 86(int) Load 90(i)
+ 106: 103(bool) SLessThan 101 102
+ BranchConditional 106 97 98
+ 97: Label
+ 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 108 107(output) 75
+ Store 107(output) 115
+ 116: 86(int) Load 90(i)
+ 119: 118(ptr) AccessChain 62(input) 116 117
+ 120: 20(fvec3) Load 119
+ 153: 10(int) Load 64(InvocationID)
+ 155: 154(ptr) AccessChain 150 95 117 153
+ 156: 121 Load 155
+ 159: 17(fvec4) CompositeExtract 156 0
+ 160: 20(fvec3) VectorShuffle 159 159 0 1 2
+ 161: 17(fvec4) CompositeExtract 156 1
+ 162: 20(fvec3) VectorShuffle 161 161 0 1 2
+ 163: 17(fvec4) CompositeExtract 156 2
+ 164: 20(fvec3) VectorShuffle 163 163 0 1 2
+ 165: 157 CompositeConstruct 160 162 164
+ 166: 20(fvec3) VectorTimesMatrix 120 165
+ 167: 118(ptr) AccessChain 107(output) 102
+ Store 167 166
+ 169: 86(int) Load 90(i)
+ 171: 118(ptr) AccessChain 62(input) 169 170
+ 172: 20(fvec3) Load 171
+ 173: 118(ptr) AccessChain 107(output) 168
+ Store 173 172
+ 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 176 175(pos) 75
+ 180: 86(int) Load 90(i)
+ 181: 174(ptr) AccessChain 62(input) 180 95
+ 182: 17(fvec4) Load 181
+ Store 175(pos) 182
+ 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 184 183(worldPos) 75
+ 188: 17(fvec4) Load 175(pos)
+ 189: 10(int) Load 64(InvocationID)
+ 190: 154(ptr) AccessChain 150 95 117 189
+ 191: 121 Load 190
+ 192: 17(fvec4) VectorTimesMatrix 188 191
+ Store 183(worldPos) 192
+ 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 194 193(lPos) 75
+ 199: 198(ptr) AccessChain 150 95 170
+ 200: 17(fvec4) Load 199
+ 201: 10(int) Load 64(InvocationID)
+ 202: 154(ptr) AccessChain 150 95 117 201
+ 203: 121 Load 202
+ 204: 17(fvec4) VectorTimesMatrix 200 203
+ 205: 20(fvec3) VectorShuffle 204 204 0 1 2
+ Store 193(lPos) 205
+ 207: 20(fvec3) Load 193(lPos)
+ 208: 17(fvec4) Load 183(worldPos)
+ 209: 20(fvec3) VectorShuffle 208 208 0 1 2
+ 210: 20(fvec3) FSub 207 209
+ 211: 118(ptr) AccessChain 107(output) 206
+ Store 211 210
+ 213: 17(fvec4) Load 183(worldPos)
+ 214: 20(fvec3) VectorShuffle 213 213 0 1 2
+ 215: 20(fvec3) FNegate 214
+ 216: 118(ptr) AccessChain 107(output) 212
+ Store 216 215
+ 217: 17(fvec4) Load 183(worldPos)
+ 218: 10(int) Load 64(InvocationID)
+ 219: 154(ptr) AccessChain 150 95 95 218
+ 220: 121 Load 219
+ 221: 17(fvec4) VectorTimesMatrix 217 220
+ 222: 174(ptr) AccessChain 107(output) 95
+ Store 222 221
+ 223: 10(int) Load 64(InvocationID)
+ 224: 59(ptr) AccessChain 107(output) 117
+ Store 224 223
+ 225: 10(int) Load 65(PrimitiveID)
+ 226: 59(ptr) AccessChain 107(output) 170
+ Store 226 225
+ 232: 174(ptr) AccessChain 107(output) 95
+ 233: 17(fvec4) Load 232
+ Store 228(outStream.Pos) 233
+ 238: 59(ptr) AccessChain 107(output) 117
+ 239: 10(int) Load 238
+ Store 235(outStream.ViewportIndex) 239
+ 243: 59(ptr) AccessChain 107(output) 170
+ 244: 10(int) Load 243
+ Store 240(outStream.PrimitiveID) 244
+ 249: 118(ptr) AccessChain 107(output) 102
+ 250: 20(fvec3) Load 249
+ Store 246(outStream.Normal) 250
+ 254: 118(ptr) AccessChain 107(output) 168
+ 255: 20(fvec3) Load 254
+ Store 251(outStream.Color) 255
+ 259: 118(ptr) AccessChain 107(output) 212
+ 260: 20(fvec3) Load 259
+ Store 256(outStream.ViewVec) 260
+ 264: 118(ptr) AccessChain 107(output) 206
+ 265: 20(fvec3) Load 264
+ Store 261(outStream.LightVec) 265
+ EmitVertex
+ Branch 99
+ 99: Label
+ 266: 86(int) Load 90(i)
+ 267: 86(int) IAdd 266 117
+ Store 90(i) 267
+ Branch 96
+ 98: Label
+ EndPrimitive
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out
new file mode 100644
index 0000000..a389bba
--- /dev/null
+++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out
@@ -0,0 +1,809 @@
+spv.debuginfo.hlsl.tesc
+WARNING: 0:158: '' : attribute does not apply to entry point
+
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 593
+
+ Capability Tessellation
+ Extension "SPV_KHR_non_semantic_info"
+ 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationControl 5 "main" 485 492 499 533 542 549 556 571 586
+ ExecutionMode 5 OutputVertices 4
+ ExecutionMode 5 Quads
+ ExecutionMode 5 SpacingEqual
+ ExecutionMode 5 VertexOrderCw
+ 9: String "float"
+ 12: String "uint"
+ 26: String "screenSpaceTessFactor"
+ 29: String ""
+ 37: String "p0"
+ 41: String "p1"
+ 48: String "bool"
+ 55: String "frustumCheck"
+ 61: String "Pos"
+ 64: String "inUV"
+ 73: String "Normal"
+ 77: String "UV"
+ 81: String "VSOutput"
+ 91: String "TessLevelOuter"
+ 95: String "TessLevelInner"
+ 98: String "ConstantsHSOutput"
+ 103: String "ConstantsHS"
+ 109: String "patch"
+ 120: String "HSOutput"
+ 126: String "@main"
+ 134: String "InvocationID"
+ 139: String "midPoint"
+ 150: String "radius"
+ 160: String "v0"
+ 171: String "modelview"
+ 176: String "lightPos"
+ 180: String "frustumPlanes"
+ 183: String "tessellatedEdgeSize"
+ 187: String "viewportDim"
+ 191: String "UBO"
+ 194: String "ubo"
+ 202: String "int"
+ 212: String "clip0"
+ 229: String "clip1"
+ 292: String "pos"
+ 298: String "type.2d.image"
+ 300: String "@type.2d.image"
+ 305: String "textureHeight"
+ 309: String "type.sampler"
+ 310: String "@type.sampler"
+ 314: String "samplerHeight"
+ 318: String "type.sampled.image"
+ 319: String "@type.sampled.image"
+ 335: String "i"
+ 371: String "output"
+ Name 5 "main"
+ Name 25 "screenSpaceTessFactor(vf4;vf4;"
+ Name 23 "p0"
+ Name 24 "p1"
+ Name 54 "frustumCheck(vf4;vf2;"
+ Name 52 "Pos"
+ Name 53 "inUV"
+ Name 68 "VSOutput"
+ MemberName 68(VSOutput) 0 "Pos"
+ MemberName 68(VSOutput) 1 "Normal"
+ MemberName 68(VSOutput) 2 "UV"
+ Name 89 "ConstantsHSOutput"
+ MemberName 89(ConstantsHSOutput) 0 "TessLevelOuter"
+ MemberName 89(ConstantsHSOutput) 1 "TessLevelInner"
+ Name 102 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];"
+ Name 101 "patch"
+ Name 112 "HSOutput"
+ MemberName 112(HSOutput) 0 "Pos"
+ MemberName 112(HSOutput) 1 "Normal"
+ MemberName 112(HSOutput) 2 "UV"
+ Name 125 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;"
+ Name 123 "patch"
+ Name 124 "InvocationID"
+ Name 137 "midPoint"
+ Name 148 "radius"
+ Name 158 "v0"
+ Name 169 "UBO"
+ MemberName 169(UBO) 0 "projection"
+ MemberName 169(UBO) 1 "modelview"
+ MemberName 169(UBO) 2 "lightPos"
+ MemberName 169(UBO) 3 "frustumPlanes"
+ MemberName 169(UBO) 4 "displacementFactor"
+ MemberName 169(UBO) 5 "tessellationFactor"
+ MemberName 169(UBO) 6 "viewportDim"
+ MemberName 169(UBO) 7 "tessellatedEdgeSize"
+ Name 192 "ubo"
+ MemberName 192(ubo) 0 "ubo"
+ Name 198 ""
+ Name 210 "clip0"
+ Name 227 "clip1"
+ Name 290 "pos"
+ Name 303 "textureHeight"
+ Name 312 "samplerHeight"
+ Name 333 "i"
+ Name 369 "output"
+ Name 378 "param"
+ Name 381 "param"
+ Name 403 "param"
+ Name 406 "param"
+ Name 411 "param"
+ Name 414 "param"
+ Name 419 "param"
+ Name 422 "param"
+ Name 427 "param"
+ Name 430 "param"
+ Name 459 "output"
+ Name 482 "patch"
+ Name 485 "patch.Pos"
+ Name 492 "patch.Normal"
+ Name 499 "patch.UV"
+ Name 531 "InvocationID"
+ Name 533 "InvocationID"
+ Name 535 "flattenTemp"
+ Name 536 "param"
+ Name 538 "param"
+ Name 542 "@entryPointOutput.Pos"
+ Name 549 "@entryPointOutput.Normal"
+ Name 556 "@entryPointOutput.UV"
+ Name 566 "@patchConstantResult"
+ Name 567 "param"
+ Name 571 "@patchConstantOutput.TessLevelOuter"
+ Name 586 "@patchConstantOutput.TessLevelInner"
+ Decorate 167 ArrayStride 16
+ MemberDecorate 169(UBO) 0 RowMajor
+ MemberDecorate 169(UBO) 0 Offset 0
+ MemberDecorate 169(UBO) 0 MatrixStride 16
+ MemberDecorate 169(UBO) 1 RowMajor
+ MemberDecorate 169(UBO) 1 Offset 64
+ MemberDecorate 169(UBO) 1 MatrixStride 16
+ MemberDecorate 169(UBO) 2 Offset 128
+ MemberDecorate 169(UBO) 3 Offset 144
+ MemberDecorate 169(UBO) 4 Offset 240
+ MemberDecorate 169(UBO) 5 Offset 244
+ MemberDecorate 169(UBO) 6 Offset 248
+ MemberDecorate 169(UBO) 7 Offset 256
+ MemberDecorate 192(ubo) 0 Offset 0
+ Decorate 192(ubo) Block
+ Decorate 198 DescriptorSet 0
+ Decorate 198 Binding 0
+ Decorate 303(textureHeight) DescriptorSet 0
+ Decorate 303(textureHeight) Binding 1
+ Decorate 312(samplerHeight) DescriptorSet 0
+ Decorate 312(samplerHeight) Binding 1
+ Decorate 485(patch.Pos) BuiltIn Position
+ Decorate 492(patch.Normal) Location 0
+ Decorate 499(patch.UV) Location 1
+ Decorate 533(InvocationID) BuiltIn InvocationId
+ Decorate 542(@entryPointOutput.Pos) BuiltIn Position
+ Decorate 549(@entryPointOutput.Normal) Location 0
+ Decorate 556(@entryPointOutput.UV) Location 1
+ Decorate 571(@patchConstantOutput.TessLevelOuter) Patch
+ Decorate 571(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter
+ Decorate 586(@patchConstantOutput.TessLevelInner) Patch
+ Decorate 586(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 7: TypeFloat 32
+ 10: TypeInt 32 0
+ 13: 10(int) Constant 32
+ 14: 10(int) Constant 6
+ 15: 10(int) Constant 0
+ 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15
+ 16: 10(int) Constant 3
+ 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15
+ 17: TypeVector 7(float) 4
+ 18: 10(int) Constant 4
+ 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 18
+ 20: TypePointer Function 17(fvec4)
+ 21: TypeFunction 7(float) 20(ptr) 20(ptr)
+ 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 8 19 19
+ 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 29
+ 31: 10(int) Constant 1
+ 32: 10(int) Constant 5
+ 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 31 18 28 32
+ 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 26 22 28 15 15 30 26 16 15
+ 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 37 19 28 15 15 27 18 31
+ 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
+ 42: 10(int) Constant 2
+ 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 41 19 28 15 15 27 18 42
+ 44: TypeVector 7(float) 2
+ 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 42
+ 46: TypePointer Function 44(fvec2)
+ 47: TypeBool
+ 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
+ 50: TypeFunction 47(bool) 20(ptr) 46(ptr)
+ 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 49 19 45
+ 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 55 51 28 15 15 30 55 16 15
+ 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 61 19 28 15 15 56 18 31
+ 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 64 45 28 15 15 56 18 42
+ 66: TypeVector 7(float) 3
+ 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16
+ 68(VSOutput): TypeStruct 17(fvec4) 66(fvec3) 44(fvec2)
+ 70: 10(int) Constant 44
+ 71: 10(int) Constant 13
+ 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 61 19 28 70 71 15 15 16
+ 74: 10(int) Constant 45
+ 75: 10(int) Constant 35
+ 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 73 67 28 74 75 15 15 16
+ 78: 10(int) Constant 46
+ 79: 10(int) Constant 31
+ 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 77 45 28 78 79 15 15 16
+ 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 81 31 28 15 15 30 81 15 16 69 72 76
+ 82: TypeArray 68(VSOutput) 18
+ 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 80 18
+ 84: TypePointer Function 82
+ 85: TypeArray 7(float) 18
+ 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 18
+ 87: TypeArray 7(float) 42
+ 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 42
+89(ConstantsHSOutput): TypeStruct 85 87
+ 92: 10(int) Constant 58
+ 93: 10(int) Constant 25
+ 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 91 86 28 92 93 15 15 16
+ 96: 10(int) Constant 59
+ 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 95 88 28 96 93 15 15 16
+ 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 98 31 28 15 15 30 98 15 16 90 94
+ 99: TypeFunction 89(ConstantsHSOutput) 84(ptr)
+ 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 97 83
+ 104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 103 100 28 15 15 30 103 16 15
+ 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 83 28 15 15 104 18 31
+ 111: TypePointer Function 10(int)
+ 112(HSOutput): TypeStruct 17(fvec4) 66(fvec3) 44(fvec2)
+ 114: 10(int) Constant 51
+ 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 61 19 28 114 13 15 15 16
+ 116: 10(int) Constant 52
+ 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 73 67 28 116 75 15 15 16
+ 118: 10(int) Constant 53
+ 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 77 45 28 118 79 15 15 16
+ 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 120 31 28 15 15 30 120 15 16 113 115 117
+ 121: TypeFunction 112(HSOutput) 84(ptr) 111(ptr)
+ 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 119 83 11
+ 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 126 122 28 15 15 30 126 16 15
+ 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 83 28 15 15 127 18 31
+ 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 134 11 28 15 15 127 18 42
+ 140: 10(int) Constant 67
+ 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 139 19 28 140 15 27 18
+ 142: 7(float) Constant 1056964608
+ 147: TypePointer Function 7(float)
+ 151: 10(int) Constant 69
+ 149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 150 8 28 151 15 27 18
+ 156: 7(float) Constant 1073741824
+ 161: 10(int) Constant 72
+ 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 160 19 28 161 15 27 18
+ 164: TypeMatrix 17(fvec4) 4
+ 166: 47(bool) ConstantTrue
+ 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 166
+ 167: TypeArray 17(fvec4) 14
+ 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 19 14
+ 169(UBO): TypeStruct 164 164 17(fvec4) 167 7(float) 7(float) 44(fvec2) 7(float)
+ 172: 10(int) Constant 29
+ 173: 10(int) Constant 20
+ 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 171 165 28 172 173 15 15 16
+ 174: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 171 165 28 172 173 15 15 16
+ 177: 10(int) Constant 30
+ 178: 10(int) Constant 17
+ 175: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 176 19 28 177 178 15 15 16
+ 181: 10(int) Constant 22
+ 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 180 168 28 79 181 15 15 16
+ 184: 10(int) Constant 27
+ 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 183 8 28 75 184 15 15 16
+ 185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 183 8 28 75 184 15 15 16
+ 188: 10(int) Constant 34
+ 186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 187 45 28 188 173 15 15 16
+ 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 183 8 28 75 184 15 15 16
+ 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 191 31 28 161 15 30 191 15 16 170 174 175 179 182 185 186 189
+ 192(ubo): TypeStruct 169(UBO)
+ 195: 10(int) Constant 37
+ 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 194 190 28 195 195 15 15 16
+ 196: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 194 31 28 161 15 30 194 15 16 193
+ 197: TypePointer Uniform 192(ubo)
+ 198: 197(ptr) Variable Uniform
+ 200: 10(int) Constant 8
+ 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 29 196 28 161 15 30 29 198 200
+ 201: TypeInt 32 1
+ 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 202 13 18 15
+ 204: 201(int) Constant 0
+ 205: 201(int) Constant 1
+ 206: TypePointer Uniform 164
+ 213: 10(int) Constant 75
+ 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 212 19 28 213 15 27 18
+ 217: 7(float) Constant 0
+ 218: 66(fvec3) ConstantComposite 217 217 217
+ 230: 10(int) Constant 76
+ 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 229 19 28 230 15 27 18
+ 252: 201(int) Constant 6
+ 253: TypePointer Uniform 44(fvec2)
+ 275: 201(int) Constant 7
+ 276: TypePointer Uniform 7(float)
+ 280: 201(int) Constant 5
+ 284: 7(float) Constant 1065353216
+ 285: 7(float) Constant 1115684864
+ 293: 10(int) Constant 98
+ 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 292 19 28 293 15 56 18
+ 296: TypeImage 7(float) 2D sampled format:Unknown
+ 299: 10(int) Constant 99
+ 301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown)
+ 297: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 298 15 28 299 15 30 300 301 16
+ 302: TypePointer UniformConstant 296
+303(textureHeight): 302(ptr) Variable UniformConstant
+ 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 305 297 28 299 15 30 305 303(textureHeight) 200
+ 307: TypeSampler
+ 308: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 309 31 28 299 15 30 310 301 16
+ 311: TypePointer UniformConstant 307
+312(samplerHeight): 311(ptr) Variable UniformConstant
+ 313: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 314 308 28 299 15 30 314 312(samplerHeight) 200
+ 316: TypeSampledImage 296
+ 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 318 15 28 299 15 30 319 301 16
+ 324: 201(int) Constant 4
+ 332: TypePointer Function 201(int)
+ 336: 10(int) Constant 102
+ 334: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 335 203 28 336 15 56 18
+ 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
+ 347: 201(int) Constant 3
+ 349: TypePointer Uniform 17(fvec4)
+ 353: 7(float) Constant 1090519040
+ 355: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
+ 359: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
+ 360: 47(bool) ConstantFalse
+ 364: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
+ 368: TypePointer Function 89(ConstantsHSOutput)
+ 372: 10(int) Constant 113
+ 370: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 371 97 28 372 15 104 18
+ 374: 85 ConstantComposite 217 217 217 217
+ 375: 87 ConstantComposite 217 217
+ 376:89(ConstantsHSOutput) ConstantComposite 374 375
+ 377: 201(int) Constant 2
+ 385: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
+ 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
+ 399: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15
+ 458: TypePointer Function 112(HSOutput)
+ 461: 10(int) Constant 159
+ 460: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 371 119 28 461 15 127 18
+ 463: 17(fvec4) ConstantComposite 217 217 217 217
+ 464: 44(fvec2) ConstantComposite 217 217
+ 465:112(HSOutput) ConstantComposite 463 218 464
+ 471: TypePointer Function 66(fvec3)
+ 483: TypeArray 17(fvec4) 18
+ 484: TypePointer Input 483
+ 485(patch.Pos): 484(ptr) Variable Input
+ 486: TypePointer Input 17(fvec4)
+ 490: TypeArray 66(fvec3) 18
+ 491: TypePointer Input 490
+492(patch.Normal): 491(ptr) Variable Input
+ 493: TypePointer Input 66(fvec3)
+ 497: TypeArray 44(fvec2) 18
+ 498: TypePointer Input 497
+ 499(patch.UV): 498(ptr) Variable Input
+ 500: TypePointer Input 44(fvec2)
+ 532: TypePointer Input 10(int)
+533(InvocationID): 532(ptr) Variable Input
+ 541: TypePointer Output 483
+542(@entryPointOutput.Pos): 541(ptr) Variable Output
+ 546: TypePointer Output 17(fvec4)
+ 548: TypePointer Output 490
+549(@entryPointOutput.Normal): 548(ptr) Variable Output
+ 553: TypePointer Output 66(fvec3)
+ 555: TypePointer Output 497
+556(@entryPointOutput.UV): 555(ptr) Variable Output
+ 560: TypePointer Output 44(fvec2)
+ 570: TypePointer Output 85
+571(@patchConstantOutput.TessLevelOuter): 570(ptr) Variable Output
+ 574: TypePointer Output 7(float)
+ 585: TypePointer Output 87
+586(@patchConstantOutput.TessLevelInner): 585(ptr) Variable Output
+ 5(main): 3 Function None 4
+ 6: Label
+ 482(patch): 84(ptr) Variable Function
+531(InvocationID): 111(ptr) Variable Function
+535(flattenTemp): 458(ptr) Variable Function
+ 536(param): 84(ptr) Variable Function
+ 538(param): 111(ptr) Variable Function
+566(@patchConstantResult): 368(ptr) Variable Function
+ 567(param): 84(ptr) Variable Function
+ 487: 486(ptr) AccessChain 485(patch.Pos) 204
+ 488: 17(fvec4) Load 487
+ 489: 20(ptr) AccessChain 482(patch) 204 204
+ Store 489 488
+ 494: 493(ptr) AccessChain 492(patch.Normal) 204
+ 495: 66(fvec3) Load 494
+ 496: 471(ptr) AccessChain 482(patch) 204 205
+ Store 496 495
+ 501: 500(ptr) AccessChain 499(patch.UV) 204
+ 502: 44(fvec2) Load 501
+ 503: 46(ptr) AccessChain 482(patch) 204 377
+ Store 503 502
+ 504: 486(ptr) AccessChain 485(patch.Pos) 205
+ 505: 17(fvec4) Load 504
+ 506: 20(ptr) AccessChain 482(patch) 205 204
+ Store 506 505
+ 507: 493(ptr) AccessChain 492(patch.Normal) 205
+ 508: 66(fvec3) Load 507
+ 509: 471(ptr) AccessChain 482(patch) 205 205
+ Store 509 508
+ 510: 500(ptr) AccessChain 499(patch.UV) 205
+ 511: 44(fvec2) Load 510
+ 512: 46(ptr) AccessChain 482(patch) 205 377
+ Store 512 511
+ 513: 486(ptr) AccessChain 485(patch.Pos) 377
+ 514: 17(fvec4) Load 513
+ 515: 20(ptr) AccessChain 482(patch) 377 204
+ Store 515 514
+ 516: 493(ptr) AccessChain 492(patch.Normal) 377
+ 517: 66(fvec3) Load 516
+ 518: 471(ptr) AccessChain 482(patch) 377 205
+ Store 518 517
+ 519: 500(ptr) AccessChain 499(patch.UV) 377
+ 520: 44(fvec2) Load 519
+ 521: 46(ptr) AccessChain 482(patch) 377 377
+ Store 521 520
+ 522: 486(ptr) AccessChain 485(patch.Pos) 347
+ 523: 17(fvec4) Load 522
+ 524: 20(ptr) AccessChain 482(patch) 347 204
+ Store 524 523
+ 525: 493(ptr) AccessChain 492(patch.Normal) 347
+ 526: 66(fvec3) Load 525
+ 527: 471(ptr) AccessChain 482(patch) 347 205
+ Store 527 526
+ 528: 500(ptr) AccessChain 499(patch.UV) 347
+ 529: 44(fvec2) Load 528
+ 530: 46(ptr) AccessChain 482(patch) 347 377
+ Store 530 529
+ 534: 10(int) Load 533(InvocationID)
+ Store 531(InvocationID) 534
+ 537: 82 Load 482(patch)
+ Store 536(param) 537
+ 539: 10(int) Load 531(InvocationID)
+ Store 538(param) 539
+ 540:112(HSOutput) FunctionCall 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 536(param) 538(param)
+ Store 535(flattenTemp) 540
+ 543: 10(int) Load 533(InvocationID)
+ 544: 20(ptr) AccessChain 535(flattenTemp) 204
+ 545: 17(fvec4) Load 544
+ 547: 546(ptr) AccessChain 542(@entryPointOutput.Pos) 543
+ Store 547 545
+ 550: 10(int) Load 533(InvocationID)
+ 551: 471(ptr) AccessChain 535(flattenTemp) 205
+ 552: 66(fvec3) Load 551
+ 554: 553(ptr) AccessChain 549(@entryPointOutput.Normal) 550
+ Store 554 552
+ 557: 10(int) Load 533(InvocationID)
+ 558: 46(ptr) AccessChain 535(flattenTemp) 377
+ 559: 44(fvec2) Load 558
+ 561: 560(ptr) AccessChain 556(@entryPointOutput.UV) 557
+ Store 561 559
+ ControlBarrier 42 18 15
+ 562: 10(int) Load 533(InvocationID)
+ 563: 47(bool) IEqual 562 204
+ SelectionMerge 565 None
+ BranchConditional 563 564 565
+ 564: Label
+ 568: 82 Load 482(patch)
+ Store 567(param) 568
+ 569:89(ConstantsHSOutput) FunctionCall 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 567(param)
+ Store 566(@patchConstantResult) 569
+ 572: 147(ptr) AccessChain 566(@patchConstantResult) 204 204
+ 573: 7(float) Load 572
+ 575: 574(ptr) AccessChain 571(@patchConstantOutput.TessLevelOuter) 204
+ Store 575 573
+ 576: 147(ptr) AccessChain 566(@patchConstantResult) 204 205
+ 577: 7(float) Load 576
+ 578: 574(ptr) AccessChain 571(@patchConstantOutput.TessLevelOuter) 205
+ Store 578 577
+ 579: 147(ptr) AccessChain 566(@patchConstantResult) 204 377
+ 580: 7(float) Load 579
+ 581: 574(ptr) AccessChain 571(@patchConstantOutput.TessLevelOuter) 377
+ Store 581 580
+ 582: 147(ptr) AccessChain 566(@patchConstantResult) 204 347
+ 583: 7(float) Load 582
+ 584: 574(ptr) AccessChain 571(@patchConstantOutput.TessLevelOuter) 347
+ Store 584 583
+ 587: 147(ptr) AccessChain 566(@patchConstantResult) 205 204
+ 588: 7(float) Load 587
+ 589: 574(ptr) AccessChain 586(@patchConstantOutput.TessLevelInner) 204
+ Store 589 588
+ 590: 147(ptr) AccessChain 566(@patchConstantResult) 205 205
+ 591: 7(float) Load 590
+ 592: 574(ptr) AccessChain 586(@patchConstantOutput.TessLevelInner) 205
+ Store 592 591
+ Branch 565
+ 565: Label
+ Return
+ FunctionEnd
+25(screenSpaceTessFactor(vf4;vf4;): 7(float) Function None 21
+ 23(p0): 20(ptr) FunctionParameter
+ 24(p1): 20(ptr) FunctionParameter
+ 33: Label
+ 137(midPoint): 20(ptr) Variable Function
+ 148(radius): 147(ptr) Variable Function
+ 158(v0): 20(ptr) Variable Function
+ 210(clip0): 20(ptr) Variable Function
+ 227(clip1): 20(ptr) Variable Function
+ 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 27
+ 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15
+ 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 36 23(p0) 39
+ 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 40 24(p1) 39
+ 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 27 25(screenSpaceTessFactor(vf4;vf4;)
+ 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 138 137(midPoint) 39
+ 143: 17(fvec4) Load 23(p0)
+ 144: 17(fvec4) Load 24(p1)
+ 145: 17(fvec4) FAdd 143 144
+ 146: 17(fvec4) VectorTimesScalar 145 142
+ Store 137(midPoint) 146
+ 152: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 149 148(radius) 39
+ 153: 17(fvec4) Load 23(p0)
+ 154: 17(fvec4) Load 24(p1)
+ 155: 7(float) ExtInst 2(GLSL.std.450) 67(Distance) 153 154
+ 157: 7(float) FDiv 155 156
+ Store 148(radius) 157
+ 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 159 158(v0) 39
+ 163: 17(fvec4) Load 137(midPoint)
+ 207: 206(ptr) AccessChain 198 204 205
+ 208: 164 Load 207
+ 209: 17(fvec4) VectorTimesMatrix 163 208
+ Store 158(v0) 209
+ 214: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 211 210(clip0) 39
+ 215: 17(fvec4) Load 158(v0)
+ 216: 7(float) Load 148(radius)
+ 219: 7(float) CompositeExtract 218 0
+ 220: 7(float) CompositeExtract 218 1
+ 221: 7(float) CompositeExtract 218 2
+ 222: 17(fvec4) CompositeConstruct 216 219 220 221
+ 223: 17(fvec4) FSub 215 222
+ 224: 206(ptr) AccessChain 198 204 204
+ 225: 164 Load 224
+ 226: 17(fvec4) VectorTimesMatrix 223 225
+ Store 210(clip0) 226
+ 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 228 227(clip1) 39
+ 232: 17(fvec4) Load 158(v0)
+ 233: 7(float) Load 148(radius)
+ 234: 7(float) CompositeExtract 218 0
+ 235: 7(float) CompositeExtract 218 1
+ 236: 7(float) CompositeExtract 218 2
+ 237: 17(fvec4) CompositeConstruct 233 234 235 236
+ 238: 17(fvec4) FAdd 232 237
+ 239: 206(ptr) AccessChain 198 204 204
+ 240: 164 Load 239
+ 241: 17(fvec4) VectorTimesMatrix 238 240
+ Store 227(clip1) 241
+ 242: 147(ptr) AccessChain 210(clip0) 16
+ 243: 7(float) Load 242
+ 244: 17(fvec4) Load 210(clip0)
+ 245: 17(fvec4) CompositeConstruct 243 243 243 243
+ 246: 17(fvec4) FDiv 244 245
+ Store 210(clip0) 246
+ 247: 147(ptr) AccessChain 227(clip1) 16
+ 248: 7(float) Load 247
+ 249: 17(fvec4) Load 227(clip1)
+ 250: 17(fvec4) CompositeConstruct 248 248 248 248
+ 251: 17(fvec4) FDiv 249 250
+ Store 227(clip1) 251
+ 254: 253(ptr) AccessChain 198 204 252
+ 255: 44(fvec2) Load 254
+ 256: 17(fvec4) Load 210(clip0)
+ 257: 44(fvec2) VectorShuffle 256 256 0 1
+ 258: 44(fvec2) FMul 257 255
+ 259: 147(ptr) AccessChain 210(clip0) 15
+ 260: 7(float) CompositeExtract 258 0
+ Store 259 260
+ 261: 147(ptr) AccessChain 210(clip0) 31
+ 262: 7(float) CompositeExtract 258 1
+ Store 261 262
+ 263: 253(ptr) AccessChain 198 204 252
+ 264: 44(fvec2) Load 263
+ 265: 17(fvec4) Load 227(clip1)
+ 266: 44(fvec2) VectorShuffle 265 265 0 1
+ 267: 44(fvec2) FMul 266 264
+ 268: 147(ptr) AccessChain 227(clip1) 15
+ 269: 7(float) CompositeExtract 267 0
+ Store 268 269
+ 270: 147(ptr) AccessChain 227(clip1) 31
+ 271: 7(float) CompositeExtract 267 1
+ Store 270 271
+ 272: 17(fvec4) Load 210(clip0)
+ 273: 17(fvec4) Load 227(clip1)
+ 274: 7(float) ExtInst 2(GLSL.std.450) 67(Distance) 272 273
+ 277: 276(ptr) AccessChain 198 204 275
+ 278: 7(float) Load 277
+ 279: 7(float) FDiv 274 278
+ 281: 276(ptr) AccessChain 198 204 280
+ 282: 7(float) Load 281
+ 283: 7(float) FMul 279 282
+ 286: 7(float) ExtInst 2(GLSL.std.450) 43(FClamp) 283 284 285
+ ReturnValue 286
+ FunctionEnd
+54(frustumCheck(vf4;vf2;): 47(bool) Function None 50
+ 52(Pos): 20(ptr) FunctionParameter
+ 53(inUV): 46(ptr) FunctionParameter
+ 57: Label
+ 290(pos): 20(ptr) Variable Function
+ 333(i): 332(ptr) Variable Function
+ 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 56
+ 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15
+ 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 60 52(Pos) 39
+ 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 63 53(inUV) 39
+ 289: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 56 54(frustumCheck(vf4;vf2;)
+ 294: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 291 290(pos) 39
+ 295: 17(fvec4) Load 52(Pos)
+ Store 290(pos) 295
+ 306: 296 Load 303(textureHeight)
+ 315: 307 Load 312(samplerHeight)
+ 320: 316 SampledImage 306 315
+ 321: 44(fvec2) Load 53(inUV)
+ 322: 17(fvec4) ImageSampleExplicitLod 320 321 Lod 217
+ 323: 7(float) CompositeExtract 322 0
+ 325: 276(ptr) AccessChain 198 204 324
+ 326: 7(float) Load 325
+ 327: 7(float) FMul 323 326
+ 328: 147(ptr) AccessChain 290(pos) 31
+ 329: 7(float) Load 328
+ 330: 7(float) FSub 329 327
+ 331: 147(ptr) AccessChain 290(pos) 31
+ Store 331 330
+ 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 334 333(i) 39
+ Store 333(i) 204
+ Branch 338
+ 338: Label
+ LoopMerge 340 341 None
+ Branch 342
+ 342: Label
+ 343: 201(int) Load 333(i)
+ 345: 47(bool) SLessThan 343 252
+ BranchConditional 345 339 340
+ 339: Label
+ 346: 17(fvec4) Load 290(pos)
+ 348: 201(int) Load 333(i)
+ 350: 349(ptr) AccessChain 198 204 347 348
+ 351: 17(fvec4) Load 350
+ 352: 7(float) Dot 346 351
+ 354: 7(float) FAdd 352 353
+ 356: 47(bool) FOrdLessThan 354 217
+ SelectionMerge 358 None
+ BranchConditional 356 357 358
+ 357: Label
+ ReturnValue 360
+ 358: Label
+ Branch 341
+ 341: Label
+ 362: 201(int) Load 333(i)
+ 363: 201(int) IAdd 362 205
+ Store 333(i) 363
+ Branch 338
+ 340: Label
+ ReturnValue 166
+ FunctionEnd
+102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):89(ConstantsHSOutput) Function None 99
+ 101(patch): 84(ptr) FunctionParameter
+ 105: Label
+ 369(output): 368(ptr) Variable Function
+ 378(param): 20(ptr) Variable Function
+ 381(param): 46(ptr) Variable Function
+ 403(param): 20(ptr) Variable Function
+ 406(param): 20(ptr) Variable Function
+ 411(param): 20(ptr) Variable Function
+ 414(param): 20(ptr) Variable Function
+ 419(param): 20(ptr) Variable Function
+ 422(param): 20(ptr) Variable Function
+ 427(param): 20(ptr) Variable Function
+ 430(param): 20(ptr) Variable Function
+ 106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 104
+ 107: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15
+ 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 108 101(patch) 39
+ 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 104 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];)
+ 373: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 370 369(output) 39
+ Store 369(output) 376
+ 379: 20(ptr) AccessChain 101(patch) 204 204
+ 380: 17(fvec4) Load 379
+ Store 378(param) 380
+ 382: 46(ptr) AccessChain 101(patch) 204 377
+ 383: 44(fvec2) Load 382
+ Store 381(param) 383
+ 384: 47(bool) FunctionCall 54(frustumCheck(vf4;vf2;) 378(param) 381(param)
+ 387: 47(bool) LogicalNot 384
+ SelectionMerge 389 None
+ BranchConditional 387 388 396
+ 388: Label
+ 390: 147(ptr) AccessChain 369(output) 205 204
+ Store 390 217
+ 391: 147(ptr) AccessChain 369(output) 205 205
+ Store 391 217
+ 392: 147(ptr) AccessChain 369(output) 204 204
+ Store 392 217
+ 393: 147(ptr) AccessChain 369(output) 204 205
+ Store 393 217
+ 394: 147(ptr) AccessChain 369(output) 204 377
+ Store 394 217
+ 395: 147(ptr) AccessChain 369(output) 204 347
+ Store 395 217
+ Branch 389
+ 396: Label
+ 397: 276(ptr) AccessChain 198 204 280
+ 398: 7(float) Load 397
+ 400: 47(bool) FOrdGreaterThan 398 217
+ SelectionMerge 402 None
+ BranchConditional 400 401 447
+ 401: Label
+ 404: 20(ptr) AccessChain 101(patch) 347 204
+ 405: 17(fvec4) Load 404
+ Store 403(param) 405
+ 407: 20(ptr) AccessChain 101(patch) 204 204
+ 408: 17(fvec4) Load 407
+ Store 406(param) 408
+ 409: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 403(param) 406(param)
+ 410: 147(ptr) AccessChain 369(output) 204 204
+ Store 410 409
+ 412: 20(ptr) AccessChain 101(patch) 204 204
+ 413: 17(fvec4) Load 412
+ Store 411(param) 413
+ 415: 20(ptr) AccessChain 101(patch) 205 204
+ 416: 17(fvec4) Load 415
+ Store 414(param) 416
+ 417: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 411(param) 414(param)
+ 418: 147(ptr) AccessChain 369(output) 204 205
+ Store 418 417
+ 420: 20(ptr) AccessChain 101(patch) 205 204
+ 421: 17(fvec4) Load 420
+ Store 419(param) 421
+ 423: 20(ptr) AccessChain 101(patch) 377 204
+ 424: 17(fvec4) Load 423
+ Store 422(param) 424
+ 425: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 419(param) 422(param)
+ 426: 147(ptr) AccessChain 369(output) 204 377
+ Store 426 425
+ 428: 20(ptr) AccessChain 101(patch) 377 204
+ 429: 17(fvec4) Load 428
+ Store 427(param) 429
+ 431: 20(ptr) AccessChain 101(patch) 347 204
+ 432: 17(fvec4) Load 431
+ Store 430(param) 432
+ 433: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 427(param) 430(param)
+ 434: 147(ptr) AccessChain 369(output) 204 347
+ Store 434 433
+ 435: 147(ptr) AccessChain 369(output) 204 204
+ 436: 7(float) Load 435
+ 437: 147(ptr) AccessChain 369(output) 204 347
+ 438: 7(float) Load 437
+ 439: 7(float) ExtInst 2(GLSL.std.450) 46(FMix) 436 438 142
+ 440: 147(ptr) AccessChain 369(output) 205 204
+ Store 440 439
+ 441: 147(ptr) AccessChain 369(output) 204 377
+ 442: 7(float) Load 441
+ 443: 147(ptr) AccessChain 369(output) 204 205
+ 444: 7(float) Load 443
+ 445: 7(float) ExtInst 2(GLSL.std.450) 46(FMix) 442 444 142
+ 446: 147(ptr) AccessChain 369(output) 205 205
+ Store 446 445
+ Branch 402
+ 447: Label
+ 448: 147(ptr) AccessChain 369(output) 205 204
+ Store 448 284
+ 449: 147(ptr) AccessChain 369(output) 205 205
+ Store 449 284
+ 450: 147(ptr) AccessChain 369(output) 204 204
+ Store 450 284
+ 451: 147(ptr) AccessChain 369(output) 204 205
+ Store 451 284
+ 452: 147(ptr) AccessChain 369(output) 204 377
+ Store 452 284
+ 453: 147(ptr) AccessChain 369(output) 204 347
+ Store 453 284
+ Branch 402
+ 402: Label
+ Branch 389
+ 389: Label
+ 454:89(ConstantsHSOutput) Load 369(output)
+ ReturnValue 454
+ FunctionEnd
+125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):112(HSOutput) Function None 121
+ 123(patch): 84(ptr) FunctionParameter
+124(InvocationID): 111(ptr) FunctionParameter
+ 128: Label
+ 459(output): 458(ptr) Variable Function
+ 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 127
+ 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15
+ 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 131 123(patch) 39
+ 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 133 124(InvocationID) 39
+ 457: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 127 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;)
+ 462: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 460 459(output) 39
+ Store 459(output) 465
+ 466: 10(int) Load 124(InvocationID)
+ 467: 20(ptr) AccessChain 123(patch) 466 204
+ 468: 17(fvec4) Load 467
+ 469: 20(ptr) AccessChain 459(output) 204
+ Store 469 468
+ 470: 10(int) Load 124(InvocationID)
+ 472: 471(ptr) AccessChain 123(patch) 470 205
+ 473: 66(fvec3) Load 472
+ 474: 471(ptr) AccessChain 459(output) 205
+ Store 474 473
+ 475: 10(int) Load 124(InvocationID)
+ 476: 46(ptr) AccessChain 123(patch) 475 377
+ 477: 44(fvec2) Load 476
+ 478: 46(ptr) AccessChain 459(output) 377
+ Store 478 477
+ 479:112(HSOutput) Load 459(output)
+ ReturnValue 479
+ FunctionEnd
diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out
new file mode 100644
index 0000000..939f64a
--- /dev/null
+++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out
@@ -0,0 +1,589 @@
+spv.debuginfo.hlsl.tese
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 434
+
+ Capability Tessellation
+ Extension "SPV_KHR_non_semantic_info"
+ 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationEvaluation 5 "main" 325 340 349 358 365 371 411 415 419 422 425 428 431
+ ExecutionMode 5 Quads
+ 9: String "float"
+ 12: String "uint"
+ 25: String "TessLevelOuter"
+ 27: String ""
+ 31: String "TessLevelInner"
+ 34: String "ConstantsHSOutput"
+ 48: String "Pos"
+ 51: String "Normal"
+ 55: String "UV"
+ 59: String "HSOutput"
+ 67: String "WorldPos"
+ 77: String "DSOutput"
+ 84: String "@main"
+ 90: String "input"
+ 94: String "TessCoord"
+ 97: String "patch"
+ 103: String "output"
+ 113: String "uv1"
+ 117: String "int"
+ 131: String "uv2"
+ 151: String "n1"
+ 162: String "n2"
+ 181: String "pos1"
+ 192: String "pos2"
+ 203: String "pos"
+ 214: String "type.2d.image"
+ 216: String "@type.2d.image"
+ 221: String "displacementMapTexture"
+ 226: String "type.sampler"
+ 227: String "@type.sampler"
+ 231: String "displacementMapSampler"
+ 235: String "type.sampled.image"
+ 236: String "@type.sampled.image"
+ 250: String "modelview"
+ 255: String "lightPos"
+ 259: String "frustumPlanes"
+ 262: String "tessellatedEdgeSize"
+ 266: String "viewportDim"
+ 270: String "UBO"
+ 273: String "ubo"
+ Name 5 "main"
+ Name 23 "ConstantsHSOutput"
+ MemberName 23(ConstantsHSOutput) 0 "TessLevelOuter"
+ MemberName 23(ConstantsHSOutput) 1 "TessLevelInner"
+ Name 46 "HSOutput"
+ MemberName 46(HSOutput) 0 "Pos"
+ MemberName 46(HSOutput) 1 "Normal"
+ MemberName 46(HSOutput) 2 "UV"
+ Name 62 "DSOutput"
+ MemberName 62(DSOutput) 0 "Pos"
+ MemberName 62(DSOutput) 1 "Normal"
+ MemberName 62(DSOutput) 2 "UV"
+ MemberName 62(DSOutput) 3 "ViewVec"
+ MemberName 62(DSOutput) 4 "LightVec"
+ MemberName 62(DSOutput) 5 "EyePos"
+ MemberName 62(DSOutput) 6 "WorldPos"
+ Name 83 "@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];"
+ Name 80 "input"
+ Name 81 "TessCoord"
+ Name 82 "patch"
+ Name 101 "output"
+ Name 111 "uv1"
+ Name 129 "uv2"
+ Name 149 "n1"
+ Name 160 "n2"
+ Name 179 "pos1"
+ Name 190 "pos2"
+ Name 201 "pos"
+ Name 219 "displacementMapTexture"
+ Name 229 "displacementMapSampler"
+ Name 248 "UBO"
+ MemberName 248(UBO) 0 "projection"
+ MemberName 248(UBO) 1 "modelview"
+ MemberName 248(UBO) 2 "lightPos"
+ MemberName 248(UBO) 3 "frustumPlanes"
+ MemberName 248(UBO) 4 "displacementFactor"
+ MemberName 248(UBO) 5 "tessellationFactor"
+ MemberName 248(UBO) 6 "viewportDim"
+ MemberName 248(UBO) 7 "tessellatedEdgeSize"
+ Name 271 "ubo"
+ MemberName 271(ubo) 0 "ubo"
+ Name 276 ""
+ Name 323 "input"
+ Name 325 "input.TessLevelOuter"
+ Name 340 "input.TessLevelInner"
+ Name 347 "TessCoord"
+ Name 349 "TessCoord"
+ Name 355 "patch"
+ Name 358 "patch.Pos"
+ Name 365 "patch.Normal"
+ Name 371 "patch.UV"
+ Name 403 "flattenTemp"
+ Name 405 "param"
+ Name 407 "param"
+ Name 411 "@entryPointOutput.Pos"
+ Name 415 "@entryPointOutput.Normal"
+ Name 419 "@entryPointOutput.UV"
+ Name 422 "@entryPointOutput.ViewVec"
+ Name 425 "@entryPointOutput.LightVec"
+ Name 428 "@entryPointOutput.EyePos"
+ Name 431 "@entryPointOutput.WorldPos"
+ Decorate 219(displacementMapTexture) DescriptorSet 0
+ Decorate 219(displacementMapTexture) Binding 1
+ Decorate 229(displacementMapSampler) DescriptorSet 0
+ Decorate 229(displacementMapSampler) Binding 1
+ Decorate 246 ArrayStride 16
+ MemberDecorate 248(UBO) 0 RowMajor
+ MemberDecorate 248(UBO) 0 Offset 0
+ MemberDecorate 248(UBO) 0 MatrixStride 16
+ MemberDecorate 248(UBO) 1 RowMajor
+ MemberDecorate 248(UBO) 1 Offset 64
+ MemberDecorate 248(UBO) 1 MatrixStride 16
+ MemberDecorate 248(UBO) 2 Offset 128
+ MemberDecorate 248(UBO) 3 Offset 144
+ MemberDecorate 248(UBO) 4 Offset 240
+ MemberDecorate 248(UBO) 5 Offset 244
+ MemberDecorate 248(UBO) 6 Offset 248
+ MemberDecorate 248(UBO) 7 Offset 256
+ MemberDecorate 271(ubo) 0 Offset 0
+ Decorate 271(ubo) Block
+ Decorate 276 DescriptorSet 0
+ Decorate 276 Binding 0
+ Decorate 325(input.TessLevelOuter) Patch
+ Decorate 325(input.TessLevelOuter) BuiltIn TessLevelOuter
+ Decorate 340(input.TessLevelInner) Patch
+ Decorate 340(input.TessLevelInner) BuiltIn TessLevelInner
+ Decorate 349(TessCoord) Patch
+ Decorate 349(TessCoord) BuiltIn TessCoord
+ Decorate 358(patch.Pos) BuiltIn Position
+ Decorate 365(patch.Normal) Location 0
+ Decorate 371(patch.UV) Location 1
+ Decorate 411(@entryPointOutput.Pos) BuiltIn Position
+ Decorate 415(@entryPointOutput.Normal) Location 0
+ Decorate 419(@entryPointOutput.UV) Location 1
+ Decorate 422(@entryPointOutput.ViewVec) Location 2
+ Decorate 425(@entryPointOutput.LightVec) Location 3
+ Decorate 428(@entryPointOutput.EyePos) Location 4
+ Decorate 431(@entryPointOutput.WorldPos) Location 5
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 7: TypeFloat 32
+ 10: TypeInt 32 0
+ 13: 10(int) Constant 32
+ 14: 10(int) Constant 6
+ 15: 10(int) Constant 0
+ 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15
+ 16: 10(int) Constant 3
+ 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15
+ 17: 10(int) Constant 4
+ 18: TypeArray 7(float) 17
+ 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 17
+ 20: 10(int) Constant 2
+ 21: TypeArray 7(float) 20
+ 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 20
+23(ConstantsHSOutput): TypeStruct 18 21
+ 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 27
+ 28: 10(int) Constant 51
+ 29: 10(int) Constant 25
+ 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 25 19 26 28 29 15 15 16
+ 32: 10(int) Constant 52
+ 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 31 22 26 32 29 15 15 16
+ 35: 10(int) Constant 1
+ 37: 10(int) Constant 5
+ 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 35 17 26 37
+ 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 34 35 26 15 15 36 34 15 16 24 30
+ 38: TypePointer Function 23(ConstantsHSOutput)
+ 39: TypeVector 7(float) 2
+ 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 20
+ 41: TypePointer Function 39(fvec2)
+ 42: TypeVector 7(float) 4
+ 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 17
+ 44: TypeVector 7(float) 3
+ 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16
+ 46(HSOutput): TypeStruct 42(fvec4) 44(fvec3) 39(fvec2)
+ 49: 10(int) Constant 44
+ 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 48 43 26 49 13 15 15 16
+ 52: 10(int) Constant 45
+ 53: 10(int) Constant 35
+ 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 45 26 52 53 15 15 16
+ 56: 10(int) Constant 46
+ 57: 10(int) Constant 31
+ 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 55 40 26 56 57 15 15 16
+ 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 59 35 26 15 15 36 59 15 16 47 50 54
+ 60: TypeArray 46(HSOutput) 17
+ 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 58 17
+ 62(DSOutput): TypeStruct 42(fvec4) 44(fvec3) 39(fvec2) 44(fvec3) 44(fvec3) 44(fvec3) 44(fvec3)
+ 64: 10(int) Constant 57
+ 65: 10(int) Constant 13
+ 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 48 43 26 64 65 15 15 16
+ 68: 10(int) Constant 63
+ 69: 10(int) Constant 37
+ 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16
+ 71: 10(int) Constant 59
+ 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 55 40 26 71 57 15 15 16
+ 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16
+ 73: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16
+ 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16
+ 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16
+ 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 77 35 26 15 15 36 77 15 16 63 66 70 72 73 74 75
+ 78: TypeFunction 62(DSOutput) 38(ptr) 41(ptr) 60
+ 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 76 33 40 58
+ 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 84 79 26 15 15 36 84 16 15
+ 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 90 33 26 15 15 85 17 35
+ 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
+ 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 94 40 26 15 15 85 17 20
+ 96: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 97 58 26 15 15 85 17 16
+ 100: TypePointer Function 62(DSOutput)
+ 104: 10(int) Constant 70
+ 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 103 76 26 104 15 85 17
+ 106: 7(float) Constant 0
+ 107: 42(fvec4) ConstantComposite 106 106 106 106
+ 108: 44(fvec3) ConstantComposite 106 106 106
+ 109: 39(fvec2) ConstantComposite 106 106
+ 110:62(DSOutput) ConstantComposite 107 108 109 108 108 108 108
+ 114: 10(int) Constant 71
+ 112: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 113 40 26 114 15 85 17
+ 116: TypeInt 32 1
+ 118: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 117 13 17 15
+ 119: 116(int) Constant 0
+ 120: 116(int) Constant 2
+ 122: 116(int) Constant 1
+ 124: TypePointer Function 7(float)
+ 132: 10(int) Constant 72
+ 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 131 40 26 132 15 85 17
+ 134: 116(int) Constant 3
+ 148: TypePointer Function 44(fvec3)
+ 152: 10(int) Constant 75
+ 150: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 151 45 26 152 15 85 17
+ 163: 10(int) Constant 76
+ 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 162 45 26 163 15 85 17
+ 178: TypePointer Function 42(fvec4)
+ 182: 10(int) Constant 80
+ 180: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 181 43 26 182 15 85 17
+ 193: 10(int) Constant 81
+ 191: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 192 43 26 193 15 85 17
+ 204: 10(int) Constant 82
+ 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 203 43 26 204 15 85 17
+ 212: TypeImage 7(float) 2D sampled format:Unknown
+ 215: 10(int) Constant 84
+ 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown)
+ 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 214 15 26 215 15 36 216 217 16
+ 218: TypePointer UniformConstant 212
+219(displacementMapTexture): 218(ptr) Variable UniformConstant
+ 222: 10(int) Constant 8
+ 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 221 213 26 215 15 36 221 219(displacementMapTexture) 222
+ 224: TypeSampler
+ 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 226 35 26 215 15 36 227 217 16
+ 228: TypePointer UniformConstant 224
+229(displacementMapSampler): 228(ptr) Variable UniformConstant
+ 230: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 231 225 26 215 15 36 231 229(displacementMapSampler) 222
+ 233: TypeSampledImage 212
+ 234: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 235 15 26 215 15 36 236 217 16
+ 242: TypeMatrix 42(fvec4) 4
+ 244: TypeBool
+ 245: 244(bool) ConstantTrue
+ 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 43 17 245
+ 246: TypeArray 42(fvec4) 14
+ 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 43 14
+ 248(UBO): TypeStruct 242 242 42(fvec4) 246 7(float) 7(float) 39(fvec2) 7(float)
+ 251: 10(int) Constant 29
+ 252: 10(int) Constant 20
+ 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 250 243 26 251 252 15 15 16
+ 253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 250 243 26 251 252 15 15 16
+ 256: 10(int) Constant 30
+ 257: 10(int) Constant 17
+ 254: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 255 43 26 256 257 15 15 16
+ 260: 10(int) Constant 22
+ 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 259 247 26 57 260 15 15 16
+ 263: 10(int) Constant 27
+ 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 262 8 26 53 263 15 15 16
+ 264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 262 8 26 53 263 15 15 16
+ 267: 10(int) Constant 34
+ 265: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 266 40 26 267 252 15 15 16
+ 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 262 8 26 53 263 15 15 16
+ 269: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 270 35 26 215 15 36 270 15 16 249 253 254 258 261 264 265 268
+ 271(ubo): TypeStruct 248(UBO)
+ 272: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 273 269 26 69 69 15 15 16
+ 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 273 35 26 215 15 36 273 15 16 272
+ 275: TypePointer Uniform 271(ubo)
+ 276: 275(ptr) Variable Uniform
+ 277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 27 274 26 215 15 36 27 276 222
+ 278: 116(int) Constant 4
+ 279: TypePointer Uniform 7(float)
+ 288: TypePointer Uniform 242
+ 300: TypePointer Uniform 42(fvec4)
+ 309: 116(int) Constant 6
+ 313: 116(int) Constant 5
+ 324: TypePointer Input 18
+325(input.TessLevelOuter): 324(ptr) Variable Input
+ 326: TypePointer Input 7(float)
+ 339: TypePointer Input 21
+340(input.TessLevelInner): 339(ptr) Variable Input
+ 348: TypePointer Input 44(fvec3)
+ 349(TessCoord): 348(ptr) Variable Input
+ 354: TypePointer Function 60
+ 356: TypeArray 42(fvec4) 17
+ 357: TypePointer Input 356
+ 358(patch.Pos): 357(ptr) Variable Input
+ 359: TypePointer Input 42(fvec4)
+ 363: TypeArray 44(fvec3) 17
+ 364: TypePointer Input 363
+365(patch.Normal): 364(ptr) Variable Input
+ 369: TypeArray 39(fvec2) 17
+ 370: TypePointer Input 369
+ 371(patch.UV): 370(ptr) Variable Input
+ 372: TypePointer Input 39(fvec2)
+ 410: TypePointer Output 42(fvec4)
+411(@entryPointOutput.Pos): 410(ptr) Variable Output
+ 414: TypePointer Output 44(fvec3)
+415(@entryPointOutput.Normal): 414(ptr) Variable Output
+ 418: TypePointer Output 39(fvec2)
+419(@entryPointOutput.UV): 418(ptr) Variable Output
+422(@entryPointOutput.ViewVec): 414(ptr) Variable Output
+425(@entryPointOutput.LightVec): 414(ptr) Variable Output
+428(@entryPointOutput.EyePos): 414(ptr) Variable Output
+431(@entryPointOutput.WorldPos): 414(ptr) Variable Output
+ 5(main): 3 Function None 4
+ 6: Label
+ 323(input): 38(ptr) Variable Function
+ 347(TessCoord): 41(ptr) Variable Function
+ 355(patch): 354(ptr) Variable Function
+403(flattenTemp): 100(ptr) Variable Function
+ 405(param): 38(ptr) Variable Function
+ 407(param): 41(ptr) Variable Function
+ 327: 326(ptr) AccessChain 325(input.TessLevelOuter) 119
+ 328: 7(float) Load 327
+ 329: 124(ptr) AccessChain 323(input) 119 119
+ Store 329 328
+ 330: 326(ptr) AccessChain 325(input.TessLevelOuter) 122
+ 331: 7(float) Load 330
+ 332: 124(ptr) AccessChain 323(input) 119 122
+ Store 332 331
+ 333: 326(ptr) AccessChain 325(input.TessLevelOuter) 120
+ 334: 7(float) Load 333
+ 335: 124(ptr) AccessChain 323(input) 119 120
+ Store 335 334
+ 336: 326(ptr) AccessChain 325(input.TessLevelOuter) 134
+ 337: 7(float) Load 336
+ 338: 124(ptr) AccessChain 323(input) 119 134
+ Store 338 337
+ 341: 326(ptr) AccessChain 340(input.TessLevelInner) 119
+ 342: 7(float) Load 341
+ 343: 124(ptr) AccessChain 323(input) 122 119
+ Store 343 342
+ 344: 326(ptr) AccessChain 340(input.TessLevelInner) 122
+ 345: 7(float) Load 344
+ 346: 124(ptr) AccessChain 323(input) 122 122
+ Store 346 345
+ 350: 44(fvec3) Load 349(TessCoord)
+ 351: 7(float) CompositeExtract 350 0
+ 352: 7(float) CompositeExtract 350 1
+ 353: 39(fvec2) CompositeConstruct 351 352
+ Store 347(TessCoord) 353
+ 360: 359(ptr) AccessChain 358(patch.Pos) 119
+ 361: 42(fvec4) Load 360
+ 362: 178(ptr) AccessChain 355(patch) 119 119
+ Store 362 361
+ 366: 348(ptr) AccessChain 365(patch.Normal) 119
+ 367: 44(fvec3) Load 366
+ 368: 148(ptr) AccessChain 355(patch) 119 122
+ Store 368 367
+ 373: 372(ptr) AccessChain 371(patch.UV) 119
+ 374: 39(fvec2) Load 373
+ 375: 41(ptr) AccessChain 355(patch) 119 120
+ Store 375 374
+ 376: 359(ptr) AccessChain 358(patch.Pos) 122
+ 377: 42(fvec4) Load 376
+ 378: 178(ptr) AccessChain 355(patch) 122 119
+ Store 378 377
+ 379: 348(ptr) AccessChain 365(patch.Normal) 122
+ 380: 44(fvec3) Load 379
+ 381: 148(ptr) AccessChain 355(patch) 122 122
+ Store 381 380
+ 382: 372(ptr) AccessChain 371(patch.UV) 122
+ 383: 39(fvec2) Load 382
+ 384: 41(ptr) AccessChain 355(patch) 122 120
+ Store 384 383
+ 385: 359(ptr) AccessChain 358(patch.Pos) 120
+ 386: 42(fvec4) Load 385
+ 387: 178(ptr) AccessChain 355(patch) 120 119
+ Store 387 386
+ 388: 348(ptr) AccessChain 365(patch.Normal) 120
+ 389: 44(fvec3) Load 388
+ 390: 148(ptr) AccessChain 355(patch) 120 122
+ Store 390 389
+ 391: 372(ptr) AccessChain 371(patch.UV) 120
+ 392: 39(fvec2) Load 391
+ 393: 41(ptr) AccessChain 355(patch) 120 120
+ Store 393 392
+ 394: 359(ptr) AccessChain 358(patch.Pos) 134
+ 395: 42(fvec4) Load 394
+ 396: 178(ptr) AccessChain 355(patch) 134 119
+ Store 396 395
+ 397: 348(ptr) AccessChain 365(patch.Normal) 134
+ 398: 44(fvec3) Load 397
+ 399: 148(ptr) AccessChain 355(patch) 134 122
+ Store 399 398
+ 400: 372(ptr) AccessChain 371(patch.UV) 134
+ 401: 39(fvec2) Load 400
+ 402: 41(ptr) AccessChain 355(patch) 134 120
+ Store 402 401
+ 404: 60 Load 355(patch)
+ 406:23(ConstantsHSOutput) Load 323(input)
+ Store 405(param) 406
+ 408: 39(fvec2) Load 347(TessCoord)
+ Store 407(param) 408
+ 409:62(DSOutput) FunctionCall 83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 405(param) 407(param) 404
+ Store 403(flattenTemp) 409
+ 412: 178(ptr) AccessChain 403(flattenTemp) 119
+ 413: 42(fvec4) Load 412
+ Store 411(@entryPointOutput.Pos) 413
+ 416: 148(ptr) AccessChain 403(flattenTemp) 122
+ 417: 44(fvec3) Load 416
+ Store 415(@entryPointOutput.Normal) 417
+ 420: 41(ptr) AccessChain 403(flattenTemp) 120
+ 421: 39(fvec2) Load 420
+ Store 419(@entryPointOutput.UV) 421
+ 423: 148(ptr) AccessChain 403(flattenTemp) 134
+ 424: 44(fvec3) Load 423
+ Store 422(@entryPointOutput.ViewVec) 424
+ 426: 148(ptr) AccessChain 403(flattenTemp) 278
+ 427: 44(fvec3) Load 426
+ Store 425(@entryPointOutput.LightVec) 427
+ 429: 148(ptr) AccessChain 403(flattenTemp) 313
+ 430: 44(fvec3) Load 429
+ Store 428(@entryPointOutput.EyePos) 430
+ 432: 148(ptr) AccessChain 403(flattenTemp) 309
+ 433: 44(fvec3) Load 432
+ Store 431(@entryPointOutput.WorldPos) 433
+ Return
+ FunctionEnd
+83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];):62(DSOutput) Function None 78
+ 80(input): 38(ptr) FunctionParameter
+ 81(TessCoord): 41(ptr) FunctionParameter
+ 82(patch): 60 FunctionParameter
+ 86: Label
+ 101(output): 100(ptr) Variable Function
+ 111(uv1): 41(ptr) Variable Function
+ 129(uv2): 41(ptr) Variable Function
+ 149(n1): 148(ptr) Variable Function
+ 160(n2): 148(ptr) Variable Function
+ 179(pos1): 178(ptr) Variable Function
+ 190(pos2): 178(ptr) Variable Function
+ 201(pos): 178(ptr) Variable Function
+ 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 85
+ 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 26 15 15 15 15
+ 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 89 80(input) 92
+ 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 93 81(TessCoord) 92
+ 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 96 82(patch) 92
+ 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 85 83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];)
+ 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 102 101(output) 92
+ Store 101(output) 110
+ 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 112 111(uv1) 92
+ 121: 39(fvec2) CompositeExtract 82(patch) 0 2
+ 123: 39(fvec2) CompositeExtract 82(patch) 1 2
+ 125: 124(ptr) AccessChain 81(TessCoord) 15
+ 126: 7(float) Load 125
+ 127: 39(fvec2) CompositeConstruct 126 126
+ 128: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 121 123 127
+ Store 111(uv1) 128
+ 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 130 129(uv2) 92
+ 135: 39(fvec2) CompositeExtract 82(patch) 3 2
+ 136: 39(fvec2) CompositeExtract 82(patch) 2 2
+ 137: 124(ptr) AccessChain 81(TessCoord) 15
+ 138: 7(float) Load 137
+ 139: 39(fvec2) CompositeConstruct 138 138
+ 140: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 135 136 139
+ Store 129(uv2) 140
+ 141: 39(fvec2) Load 111(uv1)
+ 142: 39(fvec2) Load 129(uv2)
+ 143: 124(ptr) AccessChain 81(TessCoord) 35
+ 144: 7(float) Load 143
+ 145: 39(fvec2) CompositeConstruct 144 144
+ 146: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 141 142 145
+ 147: 41(ptr) AccessChain 101(output) 120
+ Store 147 146
+ 153: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 150 149(n1) 92
+ 154: 44(fvec3) CompositeExtract 82(patch) 0 1
+ 155: 44(fvec3) CompositeExtract 82(patch) 1 1
+ 156: 124(ptr) AccessChain 81(TessCoord) 15
+ 157: 7(float) Load 156
+ 158: 44(fvec3) CompositeConstruct 157 157 157
+ 159: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 154 155 158
+ Store 149(n1) 159
+ 164: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 161 160(n2) 92
+ 165: 44(fvec3) CompositeExtract 82(patch) 3 1
+ 166: 44(fvec3) CompositeExtract 82(patch) 2 1
+ 167: 124(ptr) AccessChain 81(TessCoord) 15
+ 168: 7(float) Load 167
+ 169: 44(fvec3) CompositeConstruct 168 168 168
+ 170: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 165 166 169
+ Store 160(n2) 170
+ 171: 44(fvec3) Load 149(n1)
+ 172: 44(fvec3) Load 160(n2)
+ 173: 124(ptr) AccessChain 81(TessCoord) 35
+ 174: 7(float) Load 173
+ 175: 44(fvec3) CompositeConstruct 174 174 174
+ 176: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 171 172 175
+ 177: 148(ptr) AccessChain 101(output) 122
+ Store 177 176
+ 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 180 179(pos1) 92
+ 184: 42(fvec4) CompositeExtract 82(patch) 0 0
+ 185: 42(fvec4) CompositeExtract 82(patch) 1 0
+ 186: 124(ptr) AccessChain 81(TessCoord) 15
+ 187: 7(float) Load 186
+ 188: 42(fvec4) CompositeConstruct 187 187 187 187
+ 189: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 184 185 188
+ Store 179(pos1) 189
+ 194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 191 190(pos2) 92
+ 195: 42(fvec4) CompositeExtract 82(patch) 3 0
+ 196: 42(fvec4) CompositeExtract 82(patch) 2 0
+ 197: 124(ptr) AccessChain 81(TessCoord) 15
+ 198: 7(float) Load 197
+ 199: 42(fvec4) CompositeConstruct 198 198 198 198
+ 200: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 195 196 199
+ Store 190(pos2) 200
+ 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 202 201(pos) 92
+ 206: 42(fvec4) Load 179(pos1)
+ 207: 42(fvec4) Load 190(pos2)
+ 208: 124(ptr) AccessChain 81(TessCoord) 35
+ 209: 7(float) Load 208
+ 210: 42(fvec4) CompositeConstruct 209 209 209 209
+ 211: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 206 207 210
+ Store 201(pos) 211
+ 223: 212 Load 219(displacementMapTexture)
+ 232: 224 Load 229(displacementMapSampler)
+ 237: 233 SampledImage 223 232
+ 238: 41(ptr) AccessChain 101(output) 120
+ 239: 39(fvec2) Load 238
+ 240: 42(fvec4) ImageSampleExplicitLod 237 239 Lod 106
+ 241: 7(float) CompositeExtract 240 0
+ 280: 279(ptr) AccessChain 276 119 278
+ 281: 7(float) Load 280
+ 282: 7(float) FMul 241 281
+ 283: 124(ptr) AccessChain 201(pos) 35
+ 284: 7(float) Load 283
+ 285: 7(float) FSub 284 282
+ 286: 124(ptr) AccessChain 201(pos) 35
+ Store 286 285
+ 287: 42(fvec4) Load 201(pos)
+ 289: 288(ptr) AccessChain 276 119 122
+ 290: 242 Load 289
+ 291: 42(fvec4) VectorTimesMatrix 287 290
+ 292: 288(ptr) AccessChain 276 119 119
+ 293: 242 Load 292
+ 294: 42(fvec4) VectorTimesMatrix 291 293
+ 295: 178(ptr) AccessChain 101(output) 119
+ Store 295 294
+ 296: 42(fvec4) Load 201(pos)
+ 297: 44(fvec3) VectorShuffle 296 296 0 1 2
+ 298: 44(fvec3) FNegate 297
+ 299: 148(ptr) AccessChain 101(output) 134
+ Store 299 298
+ 301: 300(ptr) AccessChain 276 119 120
+ 302: 42(fvec4) Load 301
+ 303: 44(fvec3) VectorShuffle 302 302 0 1 2
+ 304: 148(ptr) AccessChain 101(output) 134
+ 305: 44(fvec3) Load 304
+ 306: 44(fvec3) FAdd 303 305
+ 307: 44(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 306
+ 308: 148(ptr) AccessChain 101(output) 278
+ Store 308 307
+ 310: 42(fvec4) Load 201(pos)
+ 311: 44(fvec3) VectorShuffle 310 310 0 1 2
+ 312: 148(ptr) AccessChain 101(output) 309
+ Store 312 311
+ 314: 42(fvec4) Load 201(pos)
+ 315: 288(ptr) AccessChain 276 119 122
+ 316: 242 Load 315
+ 317: 42(fvec4) VectorTimesMatrix 314 316
+ 318: 44(fvec3) VectorShuffle 317 317 0 1 2
+ 319: 148(ptr) AccessChain 101(output) 313
+ Store 319 318
+ 320:62(DSOutput) Load 101(output)
+ ReturnValue 320
+ FunctionEnd
diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out
new file mode 100644
index 0000000..a7af432
--- /dev/null
+++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out
@@ -0,0 +1,574 @@
+spv.debuginfo.hlsl.vert
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 437
+
+ Capability Shader
+ Extension "SPV_KHR_non_semantic_info"
+ 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 5 "main" 386 389 393 396 399 402 406 410 418 422 425 428 431 434
+ 9: String "float"
+ 12: String "uint"
+ 23: String "int"
+ 28: String "instanceRot"
+ 30: String ""
+ 35: String "UV"
+ 42: String "instanceScale"
+ 46: String "instanceTexIndex"
+ 50: String "VSInput"
+ 59: String "Pos"
+ 63: String "LightVec"
+ 70: String "VSOutput"
+ 75: String "@main"
+ 81: String "input"
+ 88: String "output"
+ 116: String "s"
+ 128: String "modelview"
+ 133: String "lightPos"
+ 137: String "globSpeed"
+ 141: String "UBO"
+ 144: String "ubo"
+ 159: String "c"
+ 173: String "mx"
+ 200: String "my"
+ 226: String "mz"
+ 240: String "rotMat"
+ 264: String "gRotMat"
+ 284: String "locPos"
+ 297: String "pos"
+ 355: String "lPos"
+ Name 5 "main"
+ Name 26 "VSInput"
+ MemberName 26(VSInput) 0 "Pos"
+ MemberName 26(VSInput) 1 "Normal"
+ MemberName 26(VSInput) 2 "UV"
+ MemberName 26(VSInput) 3 "Color"
+ MemberName 26(VSInput) 4 "instancePos"
+ MemberName 26(VSInput) 5 "instanceRot"
+ MemberName 26(VSInput) 6 "instanceScale"
+ MemberName 26(VSInput) 7 "instanceTexIndex"
+ Name 57 "VSOutput"
+ MemberName 57(VSOutput) 0 "Pos"
+ MemberName 57(VSOutput) 1 "Normal"
+ MemberName 57(VSOutput) 2 "Color"
+ MemberName 57(VSOutput) 3 "UV"
+ MemberName 57(VSOutput) 4 "ViewVec"
+ MemberName 57(VSOutput) 5 "LightVec"
+ Name 74 "@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;"
+ Name 73 "input"
+ Name 86 "output"
+ Name 114 "s"
+ Name 126 "UBO"
+ MemberName 126(UBO) 0 "projection"
+ MemberName 126(UBO) 1 "modelview"
+ MemberName 126(UBO) 2 "lightPos"
+ MemberName 126(UBO) 3 "locSpeed"
+ MemberName 126(UBO) 4 "globSpeed"
+ Name 142 "ubo"
+ MemberName 142(ubo) 0 "ubo"
+ Name 148 ""
+ Name 157 "c"
+ Name 171 "mx"
+ Name 198 "my"
+ Name 224 "mz"
+ Name 238 "rotMat"
+ Name 262 "gRotMat"
+ Name 282 "locPos"
+ Name 295 "pos"
+ Name 353 "lPos"
+ Name 384 "input"
+ Name 386 "input.Pos"
+ Name 389 "input.Normal"
+ Name 393 "input.UV"
+ Name 396 "input.Color"
+ Name 399 "input.instancePos"
+ Name 402 "input.instanceRot"
+ Name 406 "input.instanceScale"
+ Name 410 "input.instanceTexIndex"
+ Name 413 "flattenTemp"
+ Name 414 "param"
+ Name 418 "@entryPointOutput.Pos"
+ Name 422 "@entryPointOutput.Normal"
+ Name 425 "@entryPointOutput.Color"
+ Name 428 "@entryPointOutput.UV"
+ Name 431 "@entryPointOutput.ViewVec"
+ Name 434 "@entryPointOutput.LightVec"
+ MemberDecorate 126(UBO) 0 RowMajor
+ MemberDecorate 126(UBO) 0 Offset 0
+ MemberDecorate 126(UBO) 0 MatrixStride 16
+ MemberDecorate 126(UBO) 1 RowMajor
+ MemberDecorate 126(UBO) 1 Offset 64
+ MemberDecorate 126(UBO) 1 MatrixStride 16
+ MemberDecorate 126(UBO) 2 Offset 128
+ MemberDecorate 126(UBO) 3 Offset 144
+ MemberDecorate 126(UBO) 4 Offset 148
+ MemberDecorate 142(ubo) 0 Offset 0
+ Decorate 142(ubo) Block
+ Decorate 148 DescriptorSet 0
+ Decorate 148 Binding 0
+ Decorate 386(input.Pos) Location 0
+ Decorate 389(input.Normal) Location 1
+ Decorate 393(input.UV) Location 2
+ Decorate 396(input.Color) Location 3
+ Decorate 399(input.instancePos) Location 4
+ Decorate 402(input.instanceRot) Location 5
+ Decorate 406(input.instanceScale) Location 6
+ Decorate 410(input.instanceTexIndex) Location 7
+ Decorate 418(@entryPointOutput.Pos) BuiltIn Position
+ Decorate 422(@entryPointOutput.Normal) Location 0
+ Decorate 425(@entryPointOutput.Color) Location 1
+ Decorate 428(@entryPointOutput.UV) Location 2
+ Decorate 431(@entryPointOutput.ViewVec) Location 3
+ Decorate 434(@entryPointOutput.LightVec) Location 4
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 7: TypeFloat 32
+ 10: TypeInt 32 0
+ 13: 10(int) Constant 32
+ 14: 10(int) Constant 6
+ 15: 10(int) Constant 0
+ 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15
+ 16: 10(int) Constant 3
+ 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15
+ 17: TypeVector 7(float) 3
+ 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16
+ 19: TypeVector 7(float) 2
+ 20: 10(int) Constant 2
+ 21: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 20
+ 22: TypeInt 32 1
+ 25: 10(int) Constant 4
+ 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 23 13 25 15
+ 26(VSInput): TypeStruct 17(fvec3) 17(fvec3) 19(fvec2) 17(fvec3) 17(fvec3) 17(fvec3) 7(float) 22(int)
+ 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 30
+ 31: 10(int) Constant 35
+ 32: 10(int) Constant 40
+ 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16
+ 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16
+ 36: 10(int) Constant 30
+ 37: 10(int) Constant 31
+ 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 35 21 29 36 37 15 15 16
+ 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16
+ 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16
+ 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16
+ 43: 10(int) Constant 36
+ 44: 10(int) Constant 41
+ 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 42 8 29 43 44 15 15 16
+ 47: 10(int) Constant 37
+ 48: 10(int) Constant 42
+ 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 46 24 29 47 48 15 15 16
+ 51: 10(int) Constant 1
+ 53: 10(int) Constant 5
+ 52: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 51 25 29 53
+ 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 50 51 29 15 15 52 50 15 16 27 33 34 38 39 40 41 45
+ 54: TypePointer Function 26(VSInput)
+ 55: TypeVector 7(float) 4
+ 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 25
+ 57(VSOutput): TypeStruct 55(fvec4) 17(fvec3) 17(fvec3) 17(fvec3) 17(fvec3) 17(fvec3)
+ 60: 10(int) Constant 53
+ 61: 10(int) Constant 13
+ 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 59 56 29 60 61 15 15 16
+ 64: 10(int) Constant 58
+ 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16
+ 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16
+ 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16
+ 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16
+ 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16
+ 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 70 51 29 15 15 52 70 15 16 58 62 65 66 67 68
+ 71: TypeFunction 57(VSOutput) 54(ptr)
+ 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 69 49
+ 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 75 72 29 15 15 52 75 16 15
+ 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 49 29 15 15 76 25 51
+ 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt)
+ 85: TypePointer Function 57(VSOutput)
+ 89: 10(int) Constant 63
+ 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 88 69 29 89 15 76 25
+ 91: 7(float) Constant 0
+ 92: 55(fvec4) ConstantComposite 91 91 91 91
+ 93: 17(fvec3) ConstantComposite 91 91 91
+ 94:57(VSOutput) ConstantComposite 92 93 93 93 93 93
+ 95: 22(int) Constant 2
+ 96: 22(int) Constant 3
+ 97: TypePointer Function 17(fvec3)
+ 101: TypePointer Function 19(fvec2)
+ 104: 22(int) Constant 7
+ 105: TypePointer Function 22(int)
+ 113: TypePointer Function 7(float)
+ 117: 10(int) Constant 68
+ 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 116 8 29 117 15 76 25
+ 119: 22(int) Constant 5
+ 122: TypeMatrix 55(fvec4) 4
+ 124: TypeBool
+ 125: 124(bool) ConstantTrue
+ 123: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 56 25 125
+ 126(UBO): TypeStruct 122 122 55(fvec4) 7(float) 7(float)
+ 129: 10(int) Constant 43
+ 130: 10(int) Constant 20
+ 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 128 123 29 129 130 15 15 16
+ 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 128 123 29 129 130 15 15 16
+ 134: 10(int) Constant 44
+ 135: 10(int) Constant 17
+ 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 133 56 29 134 135 15 15 16
+ 138: 10(int) Constant 46
+ 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 8 29 138 135 15 15 16
+ 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 8 29 138 135 15 15 16
+ 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 51 29 117 15 52 141 15 16 127 131 132 136 139
+ 142(ubo): TypeStruct 126(UBO)
+ 145: 10(int) Constant 49
+ 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 144 140 29 145 47 15 15 16
+ 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 144 51 29 117 15 52 144 15 16 143
+ 147: TypePointer Uniform 142(ubo)
+ 148: 147(ptr) Variable Uniform
+ 150: 10(int) Constant 8
+ 149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 146 29 117 15 52 30 148 150
+ 151: 22(int) Constant 0
+ 152: TypePointer Uniform 7(float)
+ 160: 10(int) Constant 69
+ 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 159 8 29 160 15 76 25
+ 168: TypeMatrix 17(fvec3) 3
+ 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 18 16 125
+ 170: TypePointer Function 168
+ 174: 10(int) Constant 71
+ 172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 173 169 29 174 15 76 25
+ 181: 7(float) Constant 1065353216
+ 201: 10(int) Constant 79
+ 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 200 169 29 201 15 76 25
+ 227: 10(int) Constant 87
+ 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 226 169 29 227 15 76 25
+ 241: 10(int) Constant 91
+ 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 240 169 29 241 15 76 25
+ 250: 22(int) Constant 4
+ 261: TypePointer Function 122
+ 265: 10(int) Constant 96
+ 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 264 123 29 265 15 76 25
+ 271: TypePointer Function 55(fvec4)
+ 273: 22(int) Constant 1
+ 274: 55(fvec4) ConstantComposite 91 181 91 91
+ 280: 55(fvec4) ConstantComposite 91 91 91 181
+ 285: 10(int) Constant 101
+ 283: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 284 56 29 285 15 76 25
+ 298: 10(int) Constant 102
+ 296: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 297 56 29 298 15 76 25
+ 302: 22(int) Constant 6
+ 316: TypePointer Uniform 122
+ 356: 10(int) Constant 108
+ 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 355 18 29 356 15 76 25
+ 358: TypePointer Uniform 55(fvec4)
+ 385: TypePointer Input 17(fvec3)
+ 386(input.Pos): 385(ptr) Variable Input
+389(input.Normal): 385(ptr) Variable Input
+ 392: TypePointer Input 19(fvec2)
+ 393(input.UV): 392(ptr) Variable Input
+396(input.Color): 385(ptr) Variable Input
+399(input.instancePos): 385(ptr) Variable Input
+402(input.instanceRot): 385(ptr) Variable Input
+ 405: TypePointer Input 7(float)
+406(input.instanceScale): 405(ptr) Variable Input
+ 409: TypePointer Input 22(int)
+410(input.instanceTexIndex): 409(ptr) Variable Input
+ 417: TypePointer Output 55(fvec4)
+418(@entryPointOutput.Pos): 417(ptr) Variable Output
+ 421: TypePointer Output 17(fvec3)
+422(@entryPointOutput.Normal): 421(ptr) Variable Output
+425(@entryPointOutput.Color): 421(ptr) Variable Output
+428(@entryPointOutput.UV): 421(ptr) Variable Output
+431(@entryPointOutput.ViewVec): 421(ptr) Variable Output
+434(@entryPointOutput.LightVec): 421(ptr) Variable Output
+ 5(main): 3 Function None 4
+ 6: Label
+ 384(input): 54(ptr) Variable Function
+413(flattenTemp): 85(ptr) Variable Function
+ 414(param): 54(ptr) Variable Function
+ 387: 17(fvec3) Load 386(input.Pos)
+ 388: 97(ptr) AccessChain 384(input) 151
+ Store 388 387
+ 390: 17(fvec3) Load 389(input.Normal)
+ 391: 97(ptr) AccessChain 384(input) 273
+ Store 391 390
+ 394: 19(fvec2) Load 393(input.UV)
+ 395: 101(ptr) AccessChain 384(input) 95
+ Store 395 394
+ 397: 17(fvec3) Load 396(input.Color)
+ 398: 97(ptr) AccessChain 384(input) 96
+ Store 398 397
+ 400: 17(fvec3) Load 399(input.instancePos)
+ 401: 97(ptr) AccessChain 384(input) 250
+ Store 401 400
+ 403: 17(fvec3) Load 402(input.instanceRot)
+ 404: 97(ptr) AccessChain 384(input) 119
+ Store 404 403
+ 407: 7(float) Load 406(input.instanceScale)
+ 408: 113(ptr) AccessChain 384(input) 302
+ Store 408 407
+ 411: 22(int) Load 410(input.instanceTexIndex)
+ 412: 105(ptr) AccessChain 384(input) 104
+ Store 412 411
+ 415: 26(VSInput) Load 384(input)
+ Store 414(param) 415
+ 416:57(VSOutput) FunctionCall 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 414(param)
+ Store 413(flattenTemp) 416
+ 419: 271(ptr) AccessChain 413(flattenTemp) 151
+ 420: 55(fvec4) Load 419
+ Store 418(@entryPointOutput.Pos) 420
+ 423: 97(ptr) AccessChain 413(flattenTemp) 273
+ 424: 17(fvec3) Load 423
+ Store 422(@entryPointOutput.Normal) 424
+ 426: 97(ptr) AccessChain 413(flattenTemp) 95
+ 427: 17(fvec3) Load 426
+ Store 425(@entryPointOutput.Color) 427
+ 429: 97(ptr) AccessChain 413(flattenTemp) 96
+ 430: 17(fvec3) Load 429
+ Store 428(@entryPointOutput.UV) 430
+ 432: 97(ptr) AccessChain 413(flattenTemp) 250
+ 433: 17(fvec3) Load 432
+ Store 431(@entryPointOutput.ViewVec) 433
+ 435: 97(ptr) AccessChain 413(flattenTemp) 119
+ 436: 17(fvec3) Load 435
+ Store 434(@entryPointOutput.LightVec) 436
+ Return
+ FunctionEnd
+74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):57(VSOutput) Function None 71
+ 73(input): 54(ptr) FunctionParameter
+ 77: Label
+ 86(output): 85(ptr) Variable Function
+ 114(s): 113(ptr) Variable Function
+ 157(c): 113(ptr) Variable Function
+ 171(mx): 170(ptr) Variable Function
+ 198(my): 170(ptr) Variable Function
+ 224(mz): 170(ptr) Variable Function
+ 238(rotMat): 170(ptr) Variable Function
+ 262(gRotMat): 261(ptr) Variable Function
+ 282(locPos): 271(ptr) Variable Function
+ 295(pos): 271(ptr) Variable Function
+ 353(lPos): 97(ptr) Variable Function
+ 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 76
+ 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 29 15 15 15 15
+ 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 73(input) 83
+ 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 76 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;)
+ 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 87 86(output) 83
+ Store 86(output) 94
+ 98: 97(ptr) AccessChain 73(input) 96
+ 99: 17(fvec3) Load 98
+ 100: 97(ptr) AccessChain 86(output) 95
+ Store 100 99
+ 102: 101(ptr) AccessChain 73(input) 95
+ 103: 19(fvec2) Load 102
+ 106: 105(ptr) AccessChain 73(input) 104
+ 107: 22(int) Load 106
+ 108: 7(float) ConvertSToF 107
+ 109: 7(float) CompositeExtract 103 0
+ 110: 7(float) CompositeExtract 103 1
+ 111: 17(fvec3) CompositeConstruct 109 110 108
+ 112: 97(ptr) AccessChain 86(output) 96
+ Store 112 111
+ 118: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 115 114(s) 83
+ 120: 113(ptr) AccessChain 73(input) 119 15
+ 121: 7(float) Load 120
+ 153: 152(ptr) AccessChain 148 151 96
+ 154: 7(float) Load 153
+ 155: 7(float) FAdd 121 154
+ 156: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 155
+ Store 114(s) 156
+ 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 158 157(c) 83
+ 162: 113(ptr) AccessChain 73(input) 119 15
+ 163: 7(float) Load 162
+ 164: 152(ptr) AccessChain 148 151 96
+ 165: 7(float) Load 164
+ 166: 7(float) FAdd 163 165
+ 167: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 166
+ Store 157(c) 167
+ 175: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 172 171(mx) 83
+ 176: 7(float) Load 157(c)
+ 177: 7(float) Load 114(s)
+ 178: 7(float) FNegate 177
+ 179: 7(float) Load 114(s)
+ 180: 7(float) Load 157(c)
+ 182: 17(fvec3) CompositeConstruct 176 178 91
+ 183: 17(fvec3) CompositeConstruct 179 180 91
+ 184: 17(fvec3) CompositeConstruct 91 91 181
+ 185: 168 CompositeConstruct 182 183 184
+ Store 171(mx) 185
+ 186: 113(ptr) AccessChain 73(input) 119 51
+ 187: 7(float) Load 186
+ 188: 152(ptr) AccessChain 148 151 96
+ 189: 7(float) Load 188
+ 190: 7(float) FAdd 187 189
+ 191: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 190
+ Store 114(s) 191
+ 192: 113(ptr) AccessChain 73(input) 119 51
+ 193: 7(float) Load 192
+ 194: 152(ptr) AccessChain 148 151 96
+ 195: 7(float) Load 194
+ 196: 7(float) FAdd 193 195
+ 197: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 196
+ Store 157(c) 197
+ 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 199 198(my) 83
+ 203: 7(float) Load 157(c)
+ 204: 7(float) Load 114(s)
+ 205: 7(float) FNegate 204
+ 206: 7(float) Load 114(s)
+ 207: 7(float) Load 157(c)
+ 208: 17(fvec3) CompositeConstruct 203 91 205
+ 209: 17(fvec3) CompositeConstruct 91 181 91
+ 210: 17(fvec3) CompositeConstruct 206 91 207
+ 211: 168 CompositeConstruct 208 209 210
+ Store 198(my) 211
+ 212: 113(ptr) AccessChain 73(input) 119 20
+ 213: 7(float) Load 212
+ 214: 152(ptr) AccessChain 148 151 96
+ 215: 7(float) Load 214
+ 216: 7(float) FAdd 213 215
+ 217: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 216
+ Store 114(s) 217
+ 218: 113(ptr) AccessChain 73(input) 119 20
+ 219: 7(float) Load 218
+ 220: 152(ptr) AccessChain 148 151 96
+ 221: 7(float) Load 220
+ 222: 7(float) FAdd 219 221
+ 223: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 222
+ Store 157(c) 223
+ 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 225 224(mz) 83
+ 229: 7(float) Load 157(c)
+ 230: 7(float) Load 114(s)
+ 231: 7(float) FNegate 230
+ 232: 7(float) Load 114(s)
+ 233: 7(float) Load 157(c)
+ 234: 17(fvec3) CompositeConstruct 181 91 91
+ 235: 17(fvec3) CompositeConstruct 91 229 231
+ 236: 17(fvec3) CompositeConstruct 91 232 233
+ 237: 168 CompositeConstruct 234 235 236
+ Store 224(mz) 237
+ 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 239 238(rotMat) 83
+ 243: 168 Load 171(mx)
+ 244: 168 Load 198(my)
+ 245: 168 MatrixTimesMatrix 243 244
+ 246: 168 Load 224(mz)
+ 247: 168 MatrixTimesMatrix 245 246
+ Store 238(rotMat) 247
+ 248: 113(ptr) AccessChain 73(input) 119 51
+ 249: 7(float) Load 248
+ 251: 152(ptr) AccessChain 148 151 250
+ 252: 7(float) Load 251
+ 253: 7(float) FAdd 249 252
+ 254: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 253
+ Store 114(s) 254
+ 255: 113(ptr) AccessChain 73(input) 119 51
+ 256: 7(float) Load 255
+ 257: 152(ptr) AccessChain 148 151 250
+ 258: 7(float) Load 257
+ 259: 7(float) FAdd 256 258
+ 260: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 259
+ Store 157(c) 260
+ 266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 263 262(gRotMat) 83
+ 267: 7(float) Load 157(c)
+ 268: 7(float) Load 114(s)
+ 269: 7(float) FNegate 268
+ 270: 55(fvec4) CompositeConstruct 267 91 269 91
+ 272: 271(ptr) AccessChain 262(gRotMat) 151
+ Store 272 270
+ 275: 271(ptr) AccessChain 262(gRotMat) 273
+ Store 275 274
+ 276: 7(float) Load 114(s)
+ 277: 7(float) Load 157(c)
+ 278: 55(fvec4) CompositeConstruct 276 91 277 91
+ 279: 271(ptr) AccessChain 262(gRotMat) 95
+ Store 279 278
+ 281: 271(ptr) AccessChain 262(gRotMat) 96
+ Store 281 280
+ 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 283 282(locPos) 83
+ 287: 97(ptr) AccessChain 73(input) 151
+ 288: 17(fvec3) Load 287
+ 289: 168 Load 238(rotMat)
+ 290: 17(fvec3) VectorTimesMatrix 288 289
+ 291: 7(float) CompositeExtract 290 0
+ 292: 7(float) CompositeExtract 290 1
+ 293: 7(float) CompositeExtract 290 2
+ 294: 55(fvec4) CompositeConstruct 291 292 293 181
+ Store 282(locPos) 294
+ 299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 296 295(pos) 83
+ 300: 55(fvec4) Load 282(locPos)
+ 301: 17(fvec3) VectorShuffle 300 300 0 1 2
+ 303: 113(ptr) AccessChain 73(input) 302
+ 304: 7(float) Load 303
+ 305: 17(fvec3) VectorTimesScalar 301 304
+ 306: 97(ptr) AccessChain 73(input) 250
+ 307: 17(fvec3) Load 306
+ 308: 17(fvec3) FAdd 305 307
+ 309: 7(float) CompositeExtract 308 0
+ 310: 7(float) CompositeExtract 308 1
+ 311: 7(float) CompositeExtract 308 2
+ 312: 55(fvec4) CompositeConstruct 309 310 311 181
+ Store 295(pos) 312
+ 313: 55(fvec4) Load 295(pos)
+ 314: 122 Load 262(gRotMat)
+ 315: 55(fvec4) VectorTimesMatrix 313 314
+ 317: 316(ptr) AccessChain 148 151 273
+ 318: 122 Load 317
+ 319: 55(fvec4) VectorTimesMatrix 315 318
+ 320: 316(ptr) AccessChain 148 151 151
+ 321: 122 Load 320
+ 322: 55(fvec4) VectorTimesMatrix 319 321
+ 323: 271(ptr) AccessChain 86(output) 151
+ Store 323 322
+ 324: 97(ptr) AccessChain 73(input) 273
+ 325: 17(fvec3) Load 324
+ 326: 168 Load 238(rotMat)
+ 327: 17(fvec3) VectorTimesMatrix 325 326
+ 328: 122 Load 262(gRotMat)
+ 329: 316(ptr) AccessChain 148 151 273
+ 330: 122 Load 329
+ 331: 122 MatrixTimesMatrix 328 330
+ 332: 55(fvec4) CompositeExtract 331 0
+ 333: 17(fvec3) VectorShuffle 332 332 0 1 2
+ 334: 55(fvec4) CompositeExtract 331 1
+ 335: 17(fvec3) VectorShuffle 334 334 0 1 2
+ 336: 55(fvec4) CompositeExtract 331 2
+ 337: 17(fvec3) VectorShuffle 336 336 0 1 2
+ 338: 168 CompositeConstruct 333 335 337
+ 339: 17(fvec3) VectorTimesMatrix 327 338
+ 340: 97(ptr) AccessChain 86(output) 273
+ Store 340 339
+ 341: 97(ptr) AccessChain 73(input) 151
+ 342: 17(fvec3) Load 341
+ 343: 97(ptr) AccessChain 73(input) 250
+ 344: 17(fvec3) Load 343
+ 345: 17(fvec3) FAdd 342 344
+ 346: 7(float) CompositeExtract 345 0
+ 347: 7(float) CompositeExtract 345 1
+ 348: 7(float) CompositeExtract 345 2
+ 349: 55(fvec4) CompositeConstruct 346 347 348 181
+ 350: 316(ptr) AccessChain 148 151 273
+ 351: 122 Load 350
+ 352: 55(fvec4) VectorTimesMatrix 349 351
+ Store 295(pos) 352
+ 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 354 353(lPos) 83
+ 359: 358(ptr) AccessChain 148 151 95
+ 360: 55(fvec4) Load 359
+ 361: 17(fvec3) VectorShuffle 360 360 0 1 2
+ 362: 316(ptr) AccessChain 148 151 273
+ 363: 122 Load 362
+ 364: 55(fvec4) CompositeExtract 363 0
+ 365: 17(fvec3) VectorShuffle 364 364 0 1 2
+ 366: 55(fvec4) CompositeExtract 363 1
+ 367: 17(fvec3) VectorShuffle 366 366 0 1 2
+ 368: 55(fvec4) CompositeExtract 363 2
+ 369: 17(fvec3) VectorShuffle 368 368 0 1 2
+ 370: 168 CompositeConstruct 365 367 369
+ 371: 17(fvec3) VectorTimesMatrix 361 370
+ Store 353(lPos) 371
+ 372: 17(fvec3) Load 353(lPos)
+ 373: 55(fvec4) Load 295(pos)
+ 374: 17(fvec3) VectorShuffle 373 373 0 1 2
+ 375: 17(fvec3) FSub 372 374
+ 376: 97(ptr) AccessChain 86(output) 119
+ Store 376 375
+ 377: 55(fvec4) Load 295(pos)
+ 378: 17(fvec3) VectorShuffle 377 377 0 1 2
+ 379: 17(fvec3) FNegate 378
+ 380: 97(ptr) AccessChain 86(output) 250
+ Store 380 379
+ 381:57(VSOutput) Load 86(output)
+ ReturnValue 381
+ FunctionEnd
diff --git a/Test/baseResults/spv.deepRvalue.frag.out b/Test/baseResults/spv.deepRvalue.frag.out
index d46159d..efb9d2e 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): 8000a
+// Generated by (magic number): 8000b
// 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 50c4770..4d69949 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 15
Capability Shader
diff --git a/Test/baseResults/spv.depthUnchanged.frag.out b/Test/baseResults/spv.depthUnchanged.frag.out
index 0074007..34785c0 100644
--- a/Test/baseResults/spv.depthUnchanged.frag.out
+++ b/Test/baseResults/spv.depthUnchanged.frag.out
@@ -1,6 +1,6 @@
spv.depthUnchanged.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 22
Capability Shader
diff --git a/Test/baseResults/spv.deviceGroup.frag.out b/Test/baseResults/spv.deviceGroup.frag.out
index 57c443c..68285a1 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): 8000a
+// Generated by (magic number): 8000b
// 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 93c2de8..bddf6f9 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): 8000a
+// Generated by (magic number): 8000b
// 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 c240c44..c0196c2 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): 8000a
+// Generated by (magic number): 8000b
// 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 081dc62..26e67fc 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): 8000a
+// Generated by (magic number): 8000b
// 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 a57b9b2..145776c 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): 8000a
+// Generated by (magic number): 8000b
// 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 800464c..3a5eef8 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): 8000a
+// Generated by (magic number): 8000b
// 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 a8dab45..23ba8a7 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 29
Capability Shader
diff --git a/Test/baseResults/spv.earlyAndlateFragmentTests.frag.out b/Test/baseResults/spv.earlyAndlateFragmentTests.frag.out
new file mode 100644
index 0000000..e5b9a42
--- /dev/null
+++ b/Test/baseResults/spv.earlyAndlateFragmentTests.frag.out
@@ -0,0 +1,41 @@
+spv.earlyAndlateFragmentTests.frag
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 16
+
+ Capability Shader
+ Extension "SPV_AMD_shader_early_and_late_fragment_tests"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 8 11
+ ExecutionMode 4 OriginUpperLeft
+ ExecutionMode 4 EarlyAndLateFragmentTestsAMD
+ ExecutionMode 4 DepthReplacing
+ ExecutionMode 4 DepthLess
+ Source GLSL 450
+ SourceExtension "GL_ARB_fragment_shader_interlock"
+ SourceExtension "GL_ARB_shader_stencil_export"
+ SourceExtension "GL_EXT_fragment_shading_rate"
+ Name 4 "main"
+ Name 8 "gl_FragDepth"
+ Name 11 "instanceIndex"
+ Decorate 8(gl_FragDepth) BuiltIn FragDepth
+ Decorate 11(instanceIndex) Flat
+ Decorate 11(instanceIndex) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Output 6(float)
+ 8(gl_FragDepth): 7(ptr) Variable Output
+ 9: TypeInt 32 1
+ 10: TypePointer Input 9(int)
+11(instanceIndex): 10(ptr) Variable Input
+ 14: 6(float) Constant 1117913088
+ 4(main): 2 Function None 3
+ 5: Label
+ 12: 9(int) Load 11(instanceIndex)
+ 13: 6(float) ConvertSToF 12
+ 15: 6(float) FDiv 13 14
+ Store 8(gl_FragDepth) 15
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.earlyReturnDiscard.frag.out b/Test/baseResults/spv.earlyReturnDiscard.frag.out
index 8f983cb..273b775 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 110
Capability Shader
diff --git a/Test/baseResults/spv.explicittypes.frag.out b/Test/baseResults/spv.explicittypes.frag.out
index 3382872..65d3b1f 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 576
Capability Shader
diff --git a/Test/baseResults/spv.ext.AccelDecl.frag.out b/Test/baseResults/spv.ext.AccelDecl.frag.out
index 11d4560..e329ee9 100644
--- a/Test/baseResults/spv.ext.AccelDecl.frag.out
+++ b/Test/baseResults/spv.ext.AccelDecl.frag.out
@@ -1,6 +1,6 @@
spv.ext.AccelDecl.frag
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 15
Capability Shader
diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out
index 880be33..1d1d14a 100644
--- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out
+++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out
@@ -1,15 +1,18 @@
spv.ext.AnyHitShader.rahit
// Module Version 10400
-// Generated by (magic number): 8000a
-// Id's are bound by 107
+// Generated by (magic number): 8000b
+// Id's are bound by 108
Capability GroupNonUniform
Capability RayTracingKHR
+ Capability RayCullMaskKHR
+ Extension "SPV_KHR_ray_cull_mask"
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 84 98
+ EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 82 85 99
Source GLSL 460
+ SourceExtension "GL_EXT_ray_cull_mask"
SourceExtension "GL_EXT_ray_tracing"
SourceExtension "GL_KHR_shader_subgroup_basic"
Name 4 "main"
@@ -46,11 +49,11 @@
Name 69 "v15"
Name 70 "gl_GeometryIndexEXT"
Name 75 "v16"
- Name 76 "gl_ObjectToWorld3x4EXT"
- Name 79 "v17"
- Name 80 "gl_WorldToObject3x4EXT"
- Name 84 "incomingPayload"
- Name 98 "gl_SubgroupSize"
+ Name 78 "v17"
+ Name 81 "v18"
+ Name 82 "gl_CullMaskEXT"
+ Name 85 "incomingPayload"
+ Name 99 "gl_SubgroupSize"
Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
@@ -67,13 +70,11 @@
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
- Decorate 98(gl_SubgroupSize) RelaxedPrecision
- Decorate 98(gl_SubgroupSize) BuiltIn SubgroupSize
- Decorate 99 RelaxedPrecision
+ Decorate 82(gl_CullMaskEXT) BuiltIn CullMaskKHR
+ Decorate 99(gl_SubgroupSize) RelaxedPrecision
+ Decorate 99(gl_SubgroupSize) BuiltIn SubgroupSize
Decorate 100 RelaxedPrecision
+ Decorate 101 RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -113,17 +114,16 @@
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
- 94: 6(int) Constant 0
-98(gl_SubgroupSize): 57(ptr) Variable Input
- 101: TypePointer IncomingRayPayloadKHR 28(float)
+82(gl_CullMaskEXT): 57(ptr) Variable Input
+ 84: TypePointer IncomingRayPayloadKHR 72(fvec4)
+85(incomingPayload): 84(ptr) Variable IncomingRayPayloadKHR
+ 86: 28(float) Constant 1056964608
+ 87: 72(fvec4) ConstantComposite 86 86 86 86
+ 89: 16(int) Constant 1
+ 90: TypeBool
+ 95: 6(int) Constant 0
+99(gl_SubgroupSize): 57(ptr) Variable Input
+ 102: TypePointer IncomingRayPayloadKHR 28(float)
4(main): 2 Function None 3
5: Label
9(v0): 8(ptr) Variable Function
@@ -143,7 +143,8 @@
66(v14): 61(ptr) Variable Function
69(v15): 17(ptr) Variable Function
75(v16): 74(ptr) Variable Function
- 79(v17): 74(ptr) Variable Function
+ 78(v17): 74(ptr) Variable Function
+ 81(v18): 55(ptr) Variable Function
12: 7(ivec3) Load 11(gl_LaunchIDEXT)
Store 9(v0) 12
15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
@@ -176,26 +177,28 @@
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 92
- 91: Label
+ 76: 60 Load 64(gl_ObjectToWorldEXT)
+ 77: 73 Transpose 76
+ Store 75(v16) 77
+ 79: 60 Load 67(gl_WorldToObjectEXT)
+ 80: 73 Transpose 79
+ Store 78(v17) 80
+ 83: 6(int) Load 82(gl_CullMaskEXT)
+ Store 81(v18) 83
+ Store 85(incomingPayload) 87
+ 88: 16(int) Load 18(v2)
+ 91: 90(bool) IEqual 88 89
+ SelectionMerge 93 None
+ BranchConditional 91 92 93
+ 92: Label
IgnoreIntersectionKHR
- 92: Label
- 99: 6(int) Load 98(gl_SubgroupSize)
- 100: 28(float) ConvertUToF 99
- 102: 101(ptr) AccessChain 84(incomingPayload) 94
- 103: 28(float) Load 102
- 104: 28(float) FAdd 103 100
- 105: 101(ptr) AccessChain 84(incomingPayload) 94
- Store 105 104
+ 93: Label
+ 100: 6(int) Load 99(gl_SubgroupSize)
+ 101: 28(float) ConvertUToF 100
+ 103: 102(ptr) AccessChain 85(incomingPayload) 95
+ 104: 28(float) Load 103
+ 105: 28(float) FAdd 104 101
+ 106: 102(ptr) AccessChain 85(incomingPayload) 95
+ Store 106 105
TerminateRayKHR
FunctionEnd
diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out
index 40903e6..73a2381 100644
--- a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out
+++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out
@@ -1,14 +1,17 @@
spv.ext.ClosestHitShader.rchit
// Module Version 10400
-// Generated by (magic number): 8000a
-// Id's are bound by 101
+// Generated by (magic number): 8000b
+// Id's are bound by 102
Capability RayTracingKHR
+ Capability RayCullMaskKHR
+ Extension "SPV_KHR_ray_cull_mask"
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 85 98 100
+ EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 82 86 99 101
Source GLSL 460
+ SourceExtension "GL_EXT_ray_cull_mask"
SourceExtension "GL_EXT_ray_tracing"
Name 4 "main"
Name 9 "v0"
@@ -44,12 +47,12 @@
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 "incomingPayload"
- Name 100 "localPayload"
+ Name 78 "v17"
+ Name 81 "v18"
+ Name 82 "gl_CullMaskEXT"
+ Name 86 "accEXT"
+ Name 99 "incomingPayload"
+ Name 101 "localPayload"
Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
@@ -66,12 +69,9 @@
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(incomingPayload) Location 1
- Decorate 100(localPayload) Location 0
+ Decorate 82(gl_CullMaskEXT) BuiltIn CullMaskKHR
+ Decorate 86(accEXT) DescriptorSet 0
+ Decorate 86(accEXT) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -111,25 +111,24 @@
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 IncomingRayPayloadKHR 72(fvec4)
-98(incomingPayload): 97(ptr) Variable IncomingRayPayloadKHR
- 99: TypePointer RayPayloadKHR 72(fvec4)
-100(localPayload): 99(ptr) Variable RayPayloadKHR
+82(gl_CullMaskEXT): 57(ptr) Variable Input
+ 84: TypeAccelerationStructureKHR
+ 85: TypePointer UniformConstant 84
+ 86(accEXT): 85(ptr) Variable UniformConstant
+ 88: 6(int) Constant 0
+ 89: 6(int) Constant 1
+ 90: 6(int) Constant 2
+ 91: 6(int) Constant 3
+ 92: 28(float) Constant 1056964608
+ 93: 29(fvec3) ConstantComposite 92 92 92
+ 94: 28(float) Constant 1065353216
+ 95: 29(fvec3) ConstantComposite 94 94 94
+ 96: 28(float) Constant 1061158912
+ 97: 16(int) Constant 1
+ 98: TypePointer IncomingRayPayloadKHR 72(fvec4)
+99(incomingPayload): 98(ptr) Variable IncomingRayPayloadKHR
+ 100: TypePointer RayPayloadKHR 72(fvec4)
+101(localPayload): 100(ptr) Variable RayPayloadKHR
4(main): 2 Function None 3
5: Label
9(v0): 8(ptr) Variable Function
@@ -149,7 +148,8 @@
66(v14): 61(ptr) Variable Function
69(v15): 17(ptr) Variable Function
75(v16): 74(ptr) Variable Function
- 79(v17): 74(ptr) Variable Function
+ 78(v17): 74(ptr) Variable Function
+ 81(v18): 55(ptr) Variable Function
12: 7(ivec3) Load 11(gl_LaunchIDEXT)
Store 9(v0) 12
15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
@@ -182,13 +182,15 @@
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 98(incomingPayload)
+ 76: 60 Load 64(gl_ObjectToWorldEXT)
+ 77: 73 Transpose 76
+ Store 75(v16) 77
+ 79: 60 Load 67(gl_WorldToObjectEXT)
+ 80: 73 Transpose 79
+ Store 78(v17) 80
+ 83: 6(int) Load 82(gl_CullMaskEXT)
+ Store 81(v18) 83
+ 87: 84 Load 86(accEXT)
+ TraceRayKHR 87 88 89 90 91 88 93 92 95 96 99(incomingPayload)
Return
FunctionEnd
diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out
index 7f5af89..e5b62d7 100644
--- a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out
+++ b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out
@@ -1,6 +1,6 @@
spv.ext.ClosestHitShader_Subgroup.rchit
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 67
Capability Int64
@@ -34,7 +34,6 @@
Name 61 "gl_SMIDNV"
Decorate 8(accEXT) DescriptorSet 0
Decorate 8(accEXT) Binding 0
- Decorate 26(incomingPayload) Location 1
Decorate 28(gl_SubgroupInvocationID) RelaxedPrecision
Decorate 28(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
Decorate 29 RelaxedPrecision
diff --git a/Test/baseResults/spv.ext.IntersectShader.rint.out b/Test/baseResults/spv.ext.IntersectShader.rint.out
index 2d389a0..fad466b 100644
--- a/Test/baseResults/spv.ext.IntersectShader.rint.out
+++ b/Test/baseResults/spv.ext.IntersectShader.rint.out
@@ -1,14 +1,17 @@
spv.ext.IntersectShader.rint
// Module Version 10400
-// Generated by (magic number): 8000a
-// Id's are bound by 81
+// Generated by (magic number): 8000b
+// Id's are bound by 84
Capability RayTracingKHR
+ Capability RayCullMaskKHR
+ Extension "SPV_KHR_ray_cull_mask"
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 73
+ EntryPoint IntersectionKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 56 59 73 76
Source GLSL 460
+ SourceExtension "GL_EXT_ray_cull_mask"
SourceExtension "GL_EXT_ray_tracing"
Name 4 "main"
Name 9 "v0"
@@ -38,10 +41,10 @@
Name 58 "v12"
Name 59 "gl_WorldToObjectEXT"
Name 64 "v13"
- Name 65 "gl_ObjectToWorld3x4EXT"
- Name 68 "v14"
- Name 69 "gl_WorldToObject3x4EXT"
- Name 73 "iAttr"
+ Name 67 "v14"
+ Name 71 "v15"
+ Name 73 "gl_CullMaskEXT"
+ Name 76 "iAttr"
Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
@@ -57,8 +60,7 @@
Decorate 50(gl_RayTmaxEXT) Coherent
Decorate 56(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR
Decorate 59(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR
- Decorate 65(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
- Decorate 69(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
+ Decorate 73(gl_CullMaskEXT) BuiltIn CullMaskKHR
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -93,16 +95,17 @@
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
+ 70: TypePointer Function 6(int)
+ 72: TypePointer Input 6(int)
+73(gl_CullMaskEXT): 72(ptr) Variable Input
+ 75: TypePointer HitAttributeKHR 61(fvec4)
+ 76(iAttr): 75(ptr) Variable HitAttributeKHR
+ 77: 28(float) Constant 1056964608
+ 78: 28(float) Constant 0
+ 79: 28(float) Constant 1065353216
+ 80: 61(fvec4) ConstantComposite 77 77 78 79
+ 81: 6(int) Constant 1
+ 82: TypeBool
4(main): 2 Function None 3
5: Label
9(v0): 8(ptr) Variable Function
@@ -119,7 +122,8 @@
54(v11): 53(ptr) Variable Function
58(v12): 53(ptr) Variable Function
64(v13): 63(ptr) Variable Function
- 68(v14): 63(ptr) Variable Function
+ 67(v14): 63(ptr) Variable Function
+ 71(v15): 70(ptr) Variable Function
12: 7(ivec3) Load 11(gl_LaunchIDEXT)
Store 9(v0) 12
15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
@@ -146,13 +150,15 @@
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
+ 65: 52 Load 56(gl_ObjectToWorldEXT)
+ 66: 62 Transpose 65
+ Store 64(v13) 66
+ 68: 52 Load 59(gl_WorldToObjectEXT)
+ 69: 62 Transpose 68
+ Store 67(v14) 69
+ 74: 6(int) Load 73(gl_CullMaskEXT)
+ Store 71(v15) 74
+ Store 76(iAttr) 80
+ 83: 82(bool) ReportIntersectionKHR 77 81
Return
FunctionEnd
diff --git a/Test/baseResults/spv.ext.MissShader.rmiss.out b/Test/baseResults/spv.ext.MissShader.rmiss.out
index d2dfc17..246eefa 100644
--- a/Test/baseResults/spv.ext.MissShader.rmiss.out
+++ b/Test/baseResults/spv.ext.MissShader.rmiss.out
@@ -1,7 +1,7 @@
spv.ext.MissShader.rmiss
// Module Version 10400
-// Generated by (magic number): 8000a
-// Id's are bound by 90
+// Generated by (magic number): 8000b
+// Id's are bound by 94
Capability MinLod
Capability GroupNonUniform
@@ -9,15 +9,18 @@
Capability SubgroupBallotKHR
Capability RayTracingKHR
Capability ShaderSMBuiltinsNV
+ Capability RayCullMaskKHR
+ Extension "SPV_KHR_ray_cull_mask"
Extension "SPV_KHR_ray_tracing"
Extension "SPV_KHR_shader_ballot"
Extension "SPV_NV_shader_sm_builtins"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint MissKHR 4 "main" 11 14 21 24 29 32 36 51 53 58 63 74 78 85 89
+ EntryPoint MissKHR 4 "main" 11 14 21 24 29 32 37 41 56 57 62 67 78 82 89 93
Source GLSL 460
SourceExtension "GL_ARB_shader_ballot"
SourceExtension "GL_ARB_sparse_texture_clamp"
+ SourceExtension "GL_EXT_ray_cull_mask"
SourceExtension "GL_EXT_ray_tracing"
SourceExtension "GL_KHR_shader_subgroup_ballot"
SourceExtension "GL_KHR_shader_subgroup_basic"
@@ -35,39 +38,40 @@
Name 29 "gl_RayTminEXT"
Name 31 "v5"
Name 32 "gl_RayTmaxEXT"
- Name 36 "accEXT"
- Name 51 "incomingPayload"
- Name 53 "gl_SubGroupSizeARB"
- Name 58 "gl_SubgroupEqMask"
- Name 63 "gl_WarpIDNV"
- Name 70 "texel"
- Name 74 "s2D"
- Name 78 "c2"
- Name 85 "lodClamp"
- Name 89 "localPayload"
+ Name 35 "v6"
+ Name 37 "gl_CullMaskEXT"
+ Name 41 "accEXT"
+ Name 56 "incomingPayload"
+ Name 57 "gl_SubGroupSizeARB"
+ Name 62 "gl_SubgroupEqMask"
+ Name 67 "gl_WarpIDNV"
+ Name 74 "texel"
+ Name 78 "s2D"
+ Name 82 "c2"
+ Name 89 "lodClamp"
+ Name 93 "localPayload"
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(incomingPayload) Location 1
- Decorate 53(gl_SubGroupSizeARB) BuiltIn SubgroupSize
- Decorate 53(gl_SubGroupSizeARB) Volatile
- Decorate 53(gl_SubGroupSizeARB) Coherent
- Decorate 58(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
- Decorate 58(gl_SubgroupEqMask) Volatile
- Decorate 58(gl_SubgroupEqMask) Coherent
- Decorate 63(gl_WarpIDNV) BuiltIn WarpIDNV
- Decorate 63(gl_WarpIDNV) Volatile
- Decorate 63(gl_WarpIDNV) Coherent
- Decorate 74(s2D) DescriptorSet 0
- Decorate 74(s2D) Binding 1
- Decorate 78(c2) Location 2
- Decorate 85(lodClamp) Location 3
- Decorate 89(localPayload) Location 0
+ Decorate 37(gl_CullMaskEXT) BuiltIn CullMaskKHR
+ Decorate 41(accEXT) DescriptorSet 0
+ Decorate 41(accEXT) Binding 0
+ Decorate 57(gl_SubGroupSizeARB) BuiltIn SubgroupSize
+ Decorate 57(gl_SubGroupSizeARB) Volatile
+ Decorate 57(gl_SubGroupSizeARB) Coherent
+ Decorate 62(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
+ Decorate 62(gl_SubgroupEqMask) Volatile
+ Decorate 62(gl_SubgroupEqMask) Coherent
+ Decorate 67(gl_WarpIDNV) BuiltIn WarpIDNV
+ Decorate 67(gl_WarpIDNV) Volatile
+ Decorate 67(gl_WarpIDNV) Coherent
+ Decorate 78(s2D) DescriptorSet 0
+ Decorate 78(s2D) Binding 1
+ Decorate 82(c2) Location 2
+ Decorate 89(lodClamp) Location 3
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -86,44 +90,46 @@
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 IncomingRayPayloadKHR 49(fvec4)
-51(incomingPayload): 50(ptr) Variable IncomingRayPayloadKHR
- 52: TypePointer Input 6(int)
-53(gl_SubGroupSizeARB): 52(ptr) Variable Input
- 56: TypeVector 6(int) 4
- 57: TypePointer Input 56(ivec4)
-58(gl_SubgroupEqMask): 57(ptr) Variable Input
- 63(gl_WarpIDNV): 52(ptr) Variable Input
- 67: TypePointer IncomingRayPayloadKHR 16(float)
- 69: TypePointer Function 49(fvec4)
- 71: TypeImage 16(float) 2D sampled format:Unknown
- 72: TypeSampledImage 71
- 73: TypePointer UniformConstant 72
- 74(s2D): 73(ptr) Variable UniformConstant
- 76: TypeVector 16(float) 2
- 77: TypePointer Input 76(fvec2)
- 78(c2): 77(ptr) Variable Input
- 82: TypeVector 47(int) 2
- 83: 47(int) Constant 5
- 84: 82(ivec2) ConstantComposite 83 83
- 85(lodClamp): 28(ptr) Variable Input
- 88: TypePointer RayPayloadKHR 49(fvec4)
-89(localPayload): 88(ptr) Variable RayPayloadKHR
+ 34: TypePointer Function 6(int)
+ 36: TypePointer Input 6(int)
+37(gl_CullMaskEXT): 36(ptr) Variable Input
+ 39: TypeAccelerationStructureKHR
+ 40: TypePointer UniformConstant 39
+ 41(accEXT): 40(ptr) Variable UniformConstant
+ 43: 6(int) Constant 0
+ 44: 6(int) Constant 1
+ 45: 6(int) Constant 2
+ 46: 6(int) Constant 3
+ 47: 16(float) Constant 1056964608
+ 48: 17(fvec3) ConstantComposite 47 47 47
+ 49: 16(float) Constant 1065353216
+ 50: 17(fvec3) ConstantComposite 49 49 49
+ 51: 16(float) Constant 1061158912
+ 52: TypeInt 32 1
+ 53: 52(int) Constant 1
+ 54: TypeVector 16(float) 4
+ 55: TypePointer IncomingRayPayloadKHR 54(fvec4)
+56(incomingPayload): 55(ptr) Variable IncomingRayPayloadKHR
+57(gl_SubGroupSizeARB): 36(ptr) Variable Input
+ 60: TypeVector 6(int) 4
+ 61: TypePointer Input 60(ivec4)
+62(gl_SubgroupEqMask): 61(ptr) Variable Input
+ 67(gl_WarpIDNV): 36(ptr) Variable Input
+ 71: TypePointer IncomingRayPayloadKHR 16(float)
+ 73: TypePointer Function 54(fvec4)
+ 75: TypeImage 16(float) 2D sampled format:Unknown
+ 76: TypeSampledImage 75
+ 77: TypePointer UniformConstant 76
+ 78(s2D): 77(ptr) Variable UniformConstant
+ 80: TypeVector 16(float) 2
+ 81: TypePointer Input 80(fvec2)
+ 82(c2): 81(ptr) Variable Input
+ 86: TypeVector 52(int) 2
+ 87: 52(int) Constant 5
+ 88: 86(ivec2) ConstantComposite 87 87
+ 89(lodClamp): 28(ptr) Variable Input
+ 92: TypePointer RayPayloadKHR 54(fvec4)
+93(localPayload): 92(ptr) Variable RayPayloadKHR
4(main): 2 Function None 3
5: Label
9(v0): 8(ptr) Variable Function
@@ -132,7 +138,8 @@
23(v3): 18(ptr) Variable Function
27(v4): 26(ptr) Variable Function
31(v5): 26(ptr) Variable Function
- 70(texel): 69(ptr) Variable Function
+ 35(v6): 34(ptr) Variable Function
+ 74(texel): 73(ptr) Variable Function
12: 7(ivec3) Load 11(gl_LaunchIDEXT)
Store 9(v0) 12
15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
@@ -145,25 +152,27 @@
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 51(incomingPayload)
- 54: 6(int) Load 53(gl_SubGroupSizeARB)
- 55: 16(float) ConvertUToF 54
- 59: 56(ivec4) Load 58(gl_SubgroupEqMask)
- 60: 49(fvec4) ConvertUToF 59
- 61: 16(float) CompositeExtract 60 0
- 62: 16(float) FAdd 55 61
- 64: 6(int) Load 63(gl_WarpIDNV)
- 65: 16(float) ConvertUToF 64
- 66: 16(float) FAdd 62 65
- 68: 67(ptr) AccessChain 51(incomingPayload) 38
- Store 68 66
- 75: 72 Load 74(s2D)
- 79: 76(fvec2) Load 78(c2)
- 80: 76(fvec2) Load 78(c2)
- 81: 76(fvec2) Load 78(c2)
- 86: 16(float) Load 85(lodClamp)
- 87: 49(fvec4) ImageSampleExplicitLod 75 79 Grad ConstOffset MinLod 80 81 84 86
- Store 70(texel) 87
+ 38: 6(int) Load 37(gl_CullMaskEXT)
+ Store 35(v6) 38
+ 42: 39 Load 41(accEXT)
+ TraceRayKHR 42 43 44 45 46 43 48 47 50 51 56(incomingPayload)
+ 58: 6(int) Load 57(gl_SubGroupSizeARB)
+ 59: 16(float) ConvertUToF 58
+ 63: 60(ivec4) Load 62(gl_SubgroupEqMask)
+ 64: 54(fvec4) ConvertUToF 63
+ 65: 16(float) CompositeExtract 64 0
+ 66: 16(float) FAdd 59 65
+ 68: 6(int) Load 67(gl_WarpIDNV)
+ 69: 16(float) ConvertUToF 68
+ 70: 16(float) FAdd 66 69
+ 72: 71(ptr) AccessChain 56(incomingPayload) 43
+ Store 72 70
+ 79: 76 Load 78(s2D)
+ 83: 80(fvec2) Load 82(c2)
+ 84: 80(fvec2) Load 82(c2)
+ 85: 80(fvec2) Load 82(c2)
+ 90: 16(float) Load 89(lodClamp)
+ 91: 54(fvec4) ImageSampleExplicitLod 79 83 Grad ConstOffset MinLod 84 85 88 90
+ Store 74(texel) 91
Return
FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayCallable.rcall.out b/Test/baseResults/spv.ext.RayCallable.rcall.out
index d429116..9e6cef1 100644
--- a/Test/baseResults/spv.ext.RayCallable.rcall.out
+++ b/Test/baseResults/spv.ext.RayCallable.rcall.out
@@ -1,6 +1,6 @@
spv.ext.RayCallable.rcall
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 30
Capability RayTracingKHR
@@ -22,8 +22,6 @@
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
diff --git a/Test/baseResults/spv.ext.RayConstants.rgen.out b/Test/baseResults/spv.ext.RayConstants.rgen.out
index afd5083..9cd294a 100644
--- a/Test/baseResults/spv.ext.RayConstants.rgen.out
+++ b/Test/baseResults/spv.ext.RayConstants.rgen.out
@@ -1,6 +1,6 @@
spv.ext.RayConstants.rgen
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 27
Capability RayTracingKHR
@@ -15,7 +15,6 @@
Name 26 "payload"
Decorate 8(accEXT) DescriptorSet 0
Decorate 8(accEXT) Binding 0
- Decorate 26(payload) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeAccelerationStructureKHR
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
index 95d9213..31a8bda 100644
--- a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
@@ -1,6 +1,6 @@
spv.ext.RayGenSBTlayout.rgen
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 74
Capability Int64
@@ -49,7 +49,6 @@
MemberDecorate 36(block) 9 Offset 120
MemberDecorate 36(block) 10 Offset 128
Decorate 36(block) Block
- Decorate 60(payload) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
index f5e32c1..f0302f7 100644
--- a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
@@ -1,6 +1,6 @@
spv.ext.RayGenSBTlayout140.rgen
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 74
Capability Int64
@@ -49,7 +49,6 @@
MemberDecorate 36(block) 9 Offset 136
MemberDecorate 36(block) 10 Offset 144
Decorate 36(block) Block
- Decorate 60(payload) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
index d952adf..e83dd42 100644
--- a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
@@ -1,6 +1,6 @@
spv.ext.RayGenSBTlayout430.rgen
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 74
Capability Int64
@@ -49,7 +49,6 @@
MemberDecorate 36(block) 9 Offset 120
MemberDecorate 36(block) 10 Offset 128
Decorate 36(block) Block
- Decorate 60(payload) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
index c6d6530..a24b64c 100644
--- a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
@@ -1,6 +1,6 @@
spv.ext.RayGenSBTlayoutscalar.rgen
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 74
Capability Int64
@@ -50,7 +50,6 @@
MemberDecorate 36(block) 9 Offset 96
MemberDecorate 36(block) 10 Offset 104
Decorate 36(block) Block
- Decorate 60(payload) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
diff --git a/Test/baseResults/spv.ext.RayGenShader.rgen.out b/Test/baseResults/spv.ext.RayGenShader.rgen.out
index bfaf64b..b872d9e 100644
--- a/Test/baseResults/spv.ext.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader.rgen.out
@@ -1,6 +1,6 @@
spv.ext.RayGenShader.rgen
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 58
Capability RayTraversalPrimitiveCullingKHR
@@ -10,6 +10,7 @@
MemoryModel Logical GLSL450
EntryPoint RayGenerationKHR 4 "main" 11 21 29 40 53 54 57
Source GLSL 460
+ SourceExtension "GL_EXT_opacity_micromap"
SourceExtension "GL_EXT_ray_flags_primitive_culling"
SourceExtension "GL_EXT_ray_tracing"
Name 4 "main"
@@ -34,7 +35,6 @@
MemberDecorate 38(block) 0 Offset 0
MemberDecorate 38(block) 1 Offset 16
Decorate 38(block) Block
- Decorate 53(payload) Location 1
Decorate 54(accEXT1) DescriptorSet 0
Decorate 54(accEXT1) Binding 1
Decorate 57(imageu) DescriptorSet 0
@@ -53,7 +53,7 @@
27: TypeAccelerationStructureKHR
28: TypePointer UniformConstant 27
29(accEXT0): 28(ptr) Variable UniformConstant
- 35: 6(int) Constant 768
+ 35: 6(int) Constant 1792
36: TypeFloat 32
37: TypeVector 36(float) 3
38(block): TypeStruct 37(fvec3) 37(fvec3)
diff --git a/Test/baseResults/spv.ext.RayGenShader11.rgen.out b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
index 048b02b..d79f4f3 100644
--- a/Test/baseResults/spv.ext.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
@@ -1,6 +1,6 @@
spv.ext.RayGenShader11.rgen
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 53
Capability RayTracingKHR
@@ -30,7 +30,6 @@
MemberDecorate 37(block) 0 Offset 0
MemberDecorate 37(block) 1 Offset 16
Decorate 37(block) Block
- Decorate 52(payload) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
diff --git a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
index ee39e35..7e351d7 100644
--- a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
@@ -1,6 +1,6 @@
spv.ext.RayGenShaderArray.rgen
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 117
Capability Int64
@@ -43,7 +43,6 @@
MemberDecorate 36(block) 3 Offset 32
MemberDecorate 36(block) 4 Offset 40
Decorate 36(block) Block
- Decorate 61(payload) Location 1
Decorate 65(accEXT1) DescriptorSet 0
Decorate 65(accEXT1) Binding 1
Decorate 80 DecorationNonUniformEXT
diff --git a/Test/baseResults/spv.ext.RayQueryDecl.frag.out b/Test/baseResults/spv.ext.RayQueryDecl.frag.out
index 97681e9..2eb1421 100644
--- a/Test/baseResults/spv.ext.RayQueryDecl.frag.out
+++ b/Test/baseResults/spv.ext.RayQueryDecl.frag.out
@@ -1,6 +1,6 @@
spv.ext.RayQueryDecl.frag
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 15
Capability Shader
diff --git a/Test/baseResults/spv.ext.World3x4.rahit.out b/Test/baseResults/spv.ext.World3x4.rahit.out
index 40d73d1..92ad18f 100644
--- a/Test/baseResults/spv.ext.World3x4.rahit.out
+++ b/Test/baseResults/spv.ext.World3x4.rahit.out
@@ -1,6 +1,6 @@
spv.ext.World3x4.rahit
// Module Version 10400
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 90
Capability RayTracingKHR
@@ -28,7 +28,6 @@
Decorate 60(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
Decorate 78(result) DescriptorSet 0
Decorate 78(result) Binding 0
- Decorate 89(hitValue) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out
new file mode 100644
index 0000000..c1f6f7c
--- /dev/null
+++ b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out
@@ -0,0 +1,273 @@
+spv.ext.meshShaderBuiltins.mesh
+// Module Version 10400
+// Generated by (magic number): 8000b
+// Id's are bound by 159
+
+ Capability ClipDistance
+ Capability CullDistance
+ Capability FragmentShadingRateKHR
+ Capability DrawParameters
+ Capability MultiView
+ Capability MeshShadingEXT
+ Extension "SPV_EXT_mesh_shader"
+ Extension "SPV_KHR_fragment_shading_rate"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint MeshEXT 4 "main" 13 19 24 41 93 135 153 156
+ ExecutionMode 4 LocalSize 32 1 1
+ ExecutionMode 4 OutputVertices 81
+ ExecutionMode 4 OutputPrimitivesNV 32
+ ExecutionMode 4 OutputTrianglesNV
+ Source GLSL 460
+ SourceExtension "GL_ARB_shader_draw_parameters"
+ SourceExtension "GL_EXT_mesh_shader"
+ SourceExtension "GL_EXT_multiview"
+ Name 4 "main"
+ Name 6 "testAdditionalBuiltins("
+ Name 10 "iid"
+ Name 13 "gl_LocalInvocationID"
+ Name 18 "gid"
+ Name 19 "gl_WorkGroupID"
+ Name 23 "numWorkGrous"
+ Name 24 "gl_NumWorkGroups"
+ Name 26 "vertexCount"
+ Name 28 "primitiveCount"
+ Name 38 "gl_MeshPerVertexEXT"
+ MemberName 38(gl_MeshPerVertexEXT) 0 "gl_Position"
+ MemberName 38(gl_MeshPerVertexEXT) 1 "gl_PointSize"
+ MemberName 38(gl_MeshPerVertexEXT) 2 "gl_ClipDistance"
+ MemberName 38(gl_MeshPerVertexEXT) 3 "gl_CullDistance"
+ Name 41 "gl_MeshVerticesEXT"
+ Name 90 "gl_MeshPerPrimitiveEXT"
+ MemberName 90(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID"
+ MemberName 90(gl_MeshPerPrimitiveEXT) 1 "gl_Layer"
+ MemberName 90(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex"
+ MemberName 90(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
+ MemberName 90(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT"
+ Name 93 "gl_MeshPrimitivesEXT"
+ Name 135 "gl_PrimitiveTriangleIndicesEXT"
+ Name 151 "id"
+ Name 153 "gl_DrawIDARB"
+ Name 155 "viewIdx"
+ Name 156 "gl_ViewIndex"
+ Decorate 13(gl_LocalInvocationID) BuiltIn LocalInvocationId
+ Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId
+ Decorate 24(gl_NumWorkGroups) BuiltIn NumWorkgroups
+ MemberDecorate 38(gl_MeshPerVertexEXT) 0 BuiltIn Position
+ MemberDecorate 38(gl_MeshPerVertexEXT) 1 BuiltIn PointSize
+ MemberDecorate 38(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance
+ MemberDecorate 38(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance
+ Decorate 38(gl_MeshPerVertexEXT) Block
+ MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV
+ MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId
+ MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV
+ MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer
+ MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV
+ MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex
+ MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV
+ MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT
+ MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV
+ MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR
+ Decorate 90(gl_MeshPerPrimitiveEXT) Block
+ Decorate 135(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT
+ Decorate 153(gl_DrawIDARB) BuiltIn DrawIndex
+ Decorate 156(gl_ViewIndex) BuiltIn ViewIndex
+ Decorate 158 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 8: TypeInt 32 0
+ 9: TypePointer Function 8(int)
+ 11: TypeVector 8(int) 3
+ 12: TypePointer Input 11(ivec3)
+13(gl_LocalInvocationID): 12(ptr) Variable Input
+ 14: 8(int) Constant 0
+ 15: TypePointer Input 8(int)
+19(gl_WorkGroupID): 12(ptr) Variable Input
+ 22: TypePointer Function 11(ivec3)
+24(gl_NumWorkGroups): 12(ptr) Variable Input
+ 27: 8(int) Constant 81
+ 29: 8(int) Constant 32
+ 32: TypeFloat 32
+ 33: TypeVector 32(float) 4
+ 34: 8(int) Constant 4
+ 35: TypeArray 32(float) 34
+ 36: 8(int) Constant 3
+ 37: TypeArray 32(float) 36
+38(gl_MeshPerVertexEXT): TypeStruct 33(fvec4) 32(float) 35 37
+ 39: TypeArray 38(gl_MeshPerVertexEXT) 27
+ 40: TypePointer Output 39
+41(gl_MeshVerticesEXT): 40(ptr) Variable Output
+ 43: TypeInt 32 1
+ 44: 43(int) Constant 0
+ 45: 32(float) Constant 1065353216
+ 46: 33(fvec4) ConstantComposite 45 45 45 45
+ 47: TypePointer Output 33(fvec4)
+ 50: 43(int) Constant 1
+ 51: 32(float) Constant 1073741824
+ 52: TypePointer Output 32(float)
+ 55: 43(int) Constant 2
+ 56: 43(int) Constant 3
+ 57: 32(float) Constant 1077936128
+ 60: 32(float) Constant 1082130432
+ 62: 8(int) Constant 1
+ 63: 8(int) Constant 264
+ 64: 8(int) Constant 2
+ 89: TypeBool
+90(gl_MeshPerPrimitiveEXT): TypeStruct 43(int) 43(int) 43(int) 89(bool) 43(int)
+ 91: TypeArray 90(gl_MeshPerPrimitiveEXT) 29
+ 92: TypePointer Output 91
+93(gl_MeshPrimitivesEXT): 92(ptr) Variable Output
+ 95: 43(int) Constant 6
+ 96: TypePointer Output 43(int)
+ 99: 43(int) Constant 7
+ 102: 43(int) Constant 8
+ 105: 89(bool) ConstantFalse
+ 106: TypePointer Output 89(bool)
+ 132: 8(int) Constant 96
+ 133: TypeArray 11(ivec3) 132
+ 134: TypePointer Output 133
+135(gl_PrimitiveTriangleIndicesEXT): 134(ptr) Variable Output
+ 136: 8(int) Constant 257
+ 137: 11(ivec3) ConstantComposite 136 136 136
+ 138: TypePointer Output 11(ivec3)
+ 142: 11(ivec3) ConstantComposite 64 64 64
+ 150: TypePointer Function 43(int)
+ 152: TypePointer Input 43(int)
+153(gl_DrawIDARB): 152(ptr) Variable Input
+156(gl_ViewIndex): 152(ptr) Variable Input
+ 158: 11(ivec3) ConstantComposite 29 62 62
+ 4(main): 2 Function None 3
+ 5: Label
+ 10(iid): 9(ptr) Variable Function
+ 18(gid): 9(ptr) Variable Function
+23(numWorkGrous): 22(ptr) Variable Function
+ 26(vertexCount): 9(ptr) Variable Function
+28(primitiveCount): 9(ptr) Variable Function
+ 16: 15(ptr) AccessChain 13(gl_LocalInvocationID) 14
+ 17: 8(int) Load 16
+ Store 10(iid) 17
+ 20: 15(ptr) AccessChain 19(gl_WorkGroupID) 14
+ 21: 8(int) Load 20
+ Store 18(gid) 21
+ 25: 11(ivec3) Load 24(gl_NumWorkGroups)
+ Store 23(numWorkGrous) 25
+ Store 26(vertexCount) 27
+ Store 28(primitiveCount) 29
+ 30: 8(int) Load 26(vertexCount)
+ 31: 8(int) Load 28(primitiveCount)
+ SetMeshOutputsEXT 30 31
+ 42: 8(int) Load 10(iid)
+ 48: 47(ptr) AccessChain 41(gl_MeshVerticesEXT) 42 44
+ Store 48 46
+ 49: 8(int) Load 10(iid)
+ 53: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 49 50
+ Store 53 51
+ 54: 8(int) Load 10(iid)
+ 58: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 54 55 56
+ Store 58 57
+ 59: 8(int) Load 10(iid)
+ 61: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 59 56 55
+ Store 61 60
+ MemoryBarrier 62 63
+ ControlBarrier 64 64 63
+ 65: 8(int) Load 10(iid)
+ 66: 8(int) IAdd 65 62
+ 67: 8(int) Load 10(iid)
+ 68: 47(ptr) AccessChain 41(gl_MeshVerticesEXT) 67 44
+ 69: 33(fvec4) Load 68
+ 70: 47(ptr) AccessChain 41(gl_MeshVerticesEXT) 66 44
+ Store 70 69
+ 71: 8(int) Load 10(iid)
+ 72: 8(int) IAdd 71 62
+ 73: 8(int) Load 10(iid)
+ 74: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 73 50
+ 75: 32(float) Load 74
+ 76: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 72 50
+ Store 76 75
+ 77: 8(int) Load 10(iid)
+ 78: 8(int) IAdd 77 62
+ 79: 8(int) Load 10(iid)
+ 80: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 79 55 56
+ 81: 32(float) Load 80
+ 82: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 78 55 56
+ Store 82 81
+ 83: 8(int) Load 10(iid)
+ 84: 8(int) IAdd 83 62
+ 85: 8(int) Load 10(iid)
+ 86: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 85 56 55
+ 87: 32(float) Load 86
+ 88: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 84 56 55
+ Store 88 87
+ MemoryBarrier 62 63
+ ControlBarrier 64 64 63
+ 94: 8(int) Load 10(iid)
+ 97: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 94 44
+ Store 97 95
+ 98: 8(int) Load 10(iid)
+ 100: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 98 50
+ Store 100 99
+ 101: 8(int) Load 10(iid)
+ 103: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 101 55
+ Store 103 102
+ 104: 8(int) Load 10(iid)
+ 107: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 104 56
+ Store 107 105
+ MemoryBarrier 62 63
+ ControlBarrier 64 64 63
+ 108: 8(int) Load 10(iid)
+ 109: 8(int) IAdd 108 62
+ 110: 8(int) Load 10(iid)
+ 111: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 110 44
+ 112: 43(int) Load 111
+ 113: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 109 44
+ Store 113 112
+ 114: 8(int) Load 10(iid)
+ 115: 8(int) IAdd 114 62
+ 116: 8(int) Load 10(iid)
+ 117: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 116 50
+ 118: 43(int) Load 117
+ 119: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 115 50
+ Store 119 118
+ 120: 8(int) Load 10(iid)
+ 121: 8(int) IAdd 120 62
+ 122: 8(int) Load 10(iid)
+ 123: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 122 55
+ 124: 43(int) Load 123
+ 125: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 121 55
+ Store 125 124
+ 126: 8(int) Load 10(iid)
+ 127: 8(int) IAdd 126 62
+ 128: 8(int) Load 10(iid)
+ 129: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 128 56
+ 130: 89(bool) Load 129
+ 131: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 127 56
+ Store 131 130
+ MemoryBarrier 62 63
+ ControlBarrier 64 64 63
+ 139: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 44
+ Store 139 137
+ 140: 8(int) Load 28(primitiveCount)
+ 141: 8(int) ISub 140 62
+ 143: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 141
+ Store 143 142
+ 144: 8(int) Load 18(gid)
+ 145: 8(int) Load 18(gid)
+ 146: 8(int) ISub 145 62
+ 147: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 146
+ 148: 11(ivec3) Load 147
+ 149: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 144
+ Store 149 148
+ MemoryBarrier 62 63
+ ControlBarrier 64 64 63
+ Return
+ FunctionEnd
+6(testAdditionalBuiltins(): 2 Function None 3
+ 7: Label
+ 151(id): 150(ptr) Variable Function
+ 155(viewIdx): 150(ptr) Variable Function
+ 154: 43(int) Load 153(gl_DrawIDARB)
+ Store 151(id) 154
+ 157: 43(int) Load 156(gl_ViewIndex)
+ Store 155(viewIdx) 157
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out b/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out
new file mode 100644
index 0000000..a331a47
--- /dev/null
+++ b/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out
@@ -0,0 +1,216 @@
+spv.ext.meshShaderRedeclBuiltins.mesh
+// Module Version 10400
+// Generated by (magic number): 8000b
+// Id's are bound by 128
+
+ Capability ClipDistance
+ Capability CullDistance
+ Capability FragmentShadingRateKHR
+ Capability MeshShadingEXT
+ Extension "SPV_EXT_mesh_shader"
+ Extension "SPV_KHR_fragment_shading_rate"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint MeshEXT 4 "main" 11 17 29 81 122
+ ExecutionMode 4 LocalSize 32 1 1
+ ExecutionMode 4 OutputVertices 81
+ ExecutionMode 4 OutputPrimitivesNV 32
+ ExecutionMode 4 OutputPoints
+ Source GLSL 460
+ SourceExtension "GL_EXT_mesh_shader"
+ Name 4 "main"
+ Name 8 "iid"
+ Name 11 "gl_LocalInvocationID"
+ Name 16 "gid"
+ Name 17 "gl_WorkGroupID"
+ Name 26 "gl_MeshPerVertexEXT"
+ MemberName 26(gl_MeshPerVertexEXT) 0 "gl_Position"
+ MemberName 26(gl_MeshPerVertexEXT) 1 "gl_PointSize"
+ MemberName 26(gl_MeshPerVertexEXT) 2 "gl_ClipDistance"
+ MemberName 26(gl_MeshPerVertexEXT) 3 "gl_CullDistance"
+ Name 29 "gl_MeshVerticesEXT"
+ Name 78 "gl_MeshPerPrimitiveEXT"
+ MemberName 78(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID"
+ MemberName 78(gl_MeshPerPrimitiveEXT) 1 "gl_Layer"
+ MemberName 78(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex"
+ MemberName 78(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
+ MemberName 78(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT"
+ Name 81 "gl_MeshPrimitivesEXT"
+ Name 122 "gl_PrimitivePointIndicesEXT"
+ Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
+ Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
+ MemberDecorate 26(gl_MeshPerVertexEXT) 0 BuiltIn Position
+ MemberDecorate 26(gl_MeshPerVertexEXT) 1 BuiltIn PointSize
+ MemberDecorate 26(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance
+ MemberDecorate 26(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance
+ Decorate 26(gl_MeshPerVertexEXT) Block
+ MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV
+ MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId
+ MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV
+ MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer
+ MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV
+ MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex
+ MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV
+ MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT
+ MemberDecorate 78(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV
+ MemberDecorate 78(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR
+ Decorate 78(gl_MeshPerPrimitiveEXT) Block
+ Decorate 122(gl_PrimitivePointIndicesEXT) BuiltIn PrimitivePointIndicesEXT
+ Decorate 127 BuiltIn WorkgroupSize
+ 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_LocalInvocationID): 10(ptr) Variable Input
+ 12: 6(int) Constant 0
+ 13: TypePointer Input 6(int)
+17(gl_WorkGroupID): 10(ptr) Variable Input
+ 20: 6(int) Constant 81
+ 21: 6(int) Constant 32
+ 22: TypeFloat 32
+ 23: TypeVector 22(float) 4
+ 24: 6(int) Constant 4
+ 25: TypeArray 22(float) 24
+26(gl_MeshPerVertexEXT): TypeStruct 23(fvec4) 22(float) 25 25
+ 27: TypeArray 26(gl_MeshPerVertexEXT) 20
+ 28: TypePointer Output 27
+29(gl_MeshVerticesEXT): 28(ptr) Variable Output
+ 31: TypeInt 32 1
+ 32: 31(int) Constant 0
+ 33: 22(float) Constant 1065353216
+ 34: 23(fvec4) ConstantComposite 33 33 33 33
+ 35: TypePointer Output 23(fvec4)
+ 38: 31(int) Constant 1
+ 39: 22(float) Constant 1073741824
+ 40: TypePointer Output 22(float)
+ 43: 31(int) Constant 2
+ 44: 31(int) Constant 3
+ 45: 22(float) Constant 1077936128
+ 48: 22(float) Constant 1082130432
+ 50: 6(int) Constant 1
+ 51: 6(int) Constant 264
+ 52: 6(int) Constant 2
+ 77: TypeBool
+78(gl_MeshPerPrimitiveEXT): TypeStruct 31(int) 31(int) 31(int) 77(bool) 31(int)
+ 79: TypeArray 78(gl_MeshPerPrimitiveEXT) 21
+ 80: TypePointer Output 79
+81(gl_MeshPrimitivesEXT): 80(ptr) Variable Output
+ 83: 31(int) Constant 6
+ 84: TypePointer Output 31(int)
+ 87: 31(int) Constant 7
+ 90: 31(int) Constant 8
+ 93: 77(bool) ConstantFalse
+ 94: TypePointer Output 77(bool)
+ 120: TypeArray 6(int) 21
+ 121: TypePointer Output 120
+122(gl_PrimitivePointIndicesEXT): 121(ptr) Variable Output
+ 123: TypePointer Output 6(int)
+ 125: 31(int) Constant 31
+ 127: 9(ivec3) ConstantComposite 21 50 50
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(iid): 7(ptr) Variable Function
+ 16(gid): 7(ptr) Variable Function
+ 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12
+ 15: 6(int) Load 14
+ Store 8(iid) 15
+ 18: 13(ptr) AccessChain 17(gl_WorkGroupID) 12
+ 19: 6(int) Load 18
+ Store 16(gid) 19
+ SetMeshOutputsEXT 20 21
+ 30: 6(int) Load 8(iid)
+ 36: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 30 32
+ Store 36 34
+ 37: 6(int) Load 8(iid)
+ 41: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 37 38
+ Store 41 39
+ 42: 6(int) Load 8(iid)
+ 46: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 42 43 44
+ Store 46 45
+ 47: 6(int) Load 8(iid)
+ 49: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 47 44 43
+ Store 49 48
+ MemoryBarrier 50 51
+ ControlBarrier 52 52 51
+ 53: 6(int) Load 8(iid)
+ 54: 6(int) IAdd 53 50
+ 55: 6(int) Load 8(iid)
+ 56: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 55 32
+ 57: 23(fvec4) Load 56
+ 58: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 54 32
+ Store 58 57
+ 59: 6(int) Load 8(iid)
+ 60: 6(int) IAdd 59 50
+ 61: 6(int) Load 8(iid)
+ 62: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 61 38
+ 63: 22(float) Load 62
+ 64: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 60 38
+ Store 64 63
+ 65: 6(int) Load 8(iid)
+ 66: 6(int) IAdd 65 50
+ 67: 6(int) Load 8(iid)
+ 68: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 67 43 44
+ 69: 22(float) Load 68
+ 70: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 66 43 44
+ Store 70 69
+ 71: 6(int) Load 8(iid)
+ 72: 6(int) IAdd 71 50
+ 73: 6(int) Load 8(iid)
+ 74: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 73 44 43
+ 75: 22(float) Load 74
+ 76: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 72 44 43
+ Store 76 75
+ MemoryBarrier 50 51
+ ControlBarrier 52 52 51
+ 82: 6(int) Load 8(iid)
+ 85: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 82 32
+ Store 85 83
+ 86: 6(int) Load 8(iid)
+ 88: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 86 38
+ Store 88 87
+ 89: 6(int) Load 8(iid)
+ 91: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 89 43
+ Store 91 90
+ 92: 6(int) Load 8(iid)
+ 95: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 92 44
+ Store 95 93
+ MemoryBarrier 50 51
+ ControlBarrier 52 52 51
+ 96: 6(int) Load 8(iid)
+ 97: 6(int) IAdd 96 50
+ 98: 6(int) Load 8(iid)
+ 99: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 98 32
+ 100: 31(int) Load 99
+ 101: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 97 32
+ Store 101 100
+ 102: 6(int) Load 8(iid)
+ 103: 6(int) IAdd 102 50
+ 104: 6(int) Load 8(iid)
+ 105: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 104 38
+ 106: 31(int) Load 105
+ 107: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 103 38
+ Store 107 106
+ 108: 6(int) Load 8(iid)
+ 109: 6(int) IAdd 108 50
+ 110: 6(int) Load 8(iid)
+ 111: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 110 43
+ 112: 31(int) Load 111
+ 113: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 109 43
+ Store 113 112
+ 114: 6(int) Load 8(iid)
+ 115: 6(int) IAdd 114 50
+ 116: 6(int) Load 8(iid)
+ 117: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 116 44
+ 118: 77(bool) Load 117
+ 119: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 115 44
+ Store 119 118
+ MemoryBarrier 50 51
+ ControlBarrier 52 52 51
+ 124: 123(ptr) AccessChain 122(gl_PrimitivePointIndicesEXT) 32
+ Store 124 50
+ 126: 123(ptr) AccessChain 122(gl_PrimitivePointIndicesEXT) 125
+ Store 126 52
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out b/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out
new file mode 100644
index 0000000..b206177
--- /dev/null
+++ b/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out
@@ -0,0 +1,102 @@
+spv.ext.meshShaderTaskMem.mesh
+// Module Version 10400
+// Generated by (magic number): 8000b
+// Id's are bound by 58
+
+ Capability MeshShadingEXT
+ Extension "SPV_EXT_mesh_shader"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint MeshEXT 4 "main" 11 22 30 38
+ ExecutionMode 4 LocalSize 32 1 1
+ ExecutionMode 4 OutputVertices 81
+ ExecutionMode 4 OutputPrimitivesNV 32
+ ExecutionMode 4 OutputTrianglesNV
+ Source GLSL 450
+ SourceExtension "GL_EXT_mesh_shader"
+ Name 4 "main"
+ Name 8 "iid"
+ Name 11 "gl_LocalInvocationID"
+ Name 18 "outBlock"
+ MemberName 18(outBlock) 0 "gid5"
+ MemberName 18(outBlock) 1 "gid6"
+ Name 22 "myblk"
+ Name 28 "taskBlock"
+ MemberName 28(taskBlock) 0 "gid1"
+ MemberName 28(taskBlock) 1 "gid2"
+ Name 30 "mytask"
+ Name 36 "bufferBlock"
+ MemberName 36(bufferBlock) 0 "gid3"
+ MemberName 36(bufferBlock) 1 "gid4"
+ Name 38 "mybuf"
+ Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
+ Decorate 18(outBlock) Block
+ Decorate 22(myblk) Location 0
+ Decorate 35 ArrayStride 4
+ MemberDecorate 36(bufferBlock) 0 Offset 0
+ MemberDecorate 36(bufferBlock) 1 Offset 16
+ Decorate 36(bufferBlock) Block
+ Decorate 38(mybuf) DescriptorSet 0
+ Decorate 38(mybuf) Binding 0
+ Decorate 57 BuiltIn WorkgroupSize
+ 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_LocalInvocationID): 10(ptr) Variable Input
+ 12: 6(int) Constant 0
+ 13: TypePointer Input 6(int)
+ 16: TypeFloat 32
+ 17: TypeVector 16(float) 4
+ 18(outBlock): TypeStruct 16(float) 17(fvec4)
+ 19: 6(int) Constant 81
+ 20: TypeArray 18(outBlock) 19
+ 21: TypePointer Output 20
+ 22(myblk): 21(ptr) Variable Output
+ 24: TypeInt 32 1
+ 25: 24(int) Constant 0
+ 26: 6(int) Constant 2
+ 27: TypeArray 16(float) 26
+ 28(taskBlock): TypeStruct 27 17(fvec4)
+ 29: TypePointer TaskPayloadWorkgroupEXT 28(taskBlock)
+ 30(mytask): 29(ptr) Variable TaskPayloadWorkgroupEXT
+ 31: 24(int) Constant 1
+ 32: TypePointer TaskPayloadWorkgroupEXT 16(float)
+ 35: TypeArray 16(float) 26
+ 36(bufferBlock): TypeStruct 35 17(fvec4)
+ 37: TypePointer StorageBuffer 36(bufferBlock)
+ 38(mybuf): 37(ptr) Variable StorageBuffer
+ 39: TypePointer StorageBuffer 16(float)
+ 43: TypePointer Output 16(float)
+ 46: TypePointer TaskPayloadWorkgroupEXT 17(fvec4)
+ 49: TypePointer StorageBuffer 17(fvec4)
+ 53: TypePointer Output 17(fvec4)
+ 55: 6(int) Constant 32
+ 56: 6(int) Constant 1
+ 57: 9(ivec3) ConstantComposite 55 56 56
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(iid): 7(ptr) Variable Function
+ 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12
+ 15: 6(int) Load 14
+ Store 8(iid) 15
+ 23: 6(int) Load 8(iid)
+ 33: 32(ptr) AccessChain 30(mytask) 25 31
+ 34: 16(float) Load 33
+ 40: 39(ptr) AccessChain 38(mybuf) 25 31
+ 41: 16(float) Load 40
+ 42: 16(float) FAdd 34 41
+ 44: 43(ptr) AccessChain 22(myblk) 23 25
+ Store 44 42
+ 45: 6(int) Load 8(iid)
+ 47: 46(ptr) AccessChain 30(mytask) 31
+ 48: 17(fvec4) Load 47
+ 50: 49(ptr) AccessChain 38(mybuf) 31
+ 51: 17(fvec4) Load 50
+ 52: 17(fvec4) FAdd 48 51
+ 54: 53(ptr) AccessChain 22(myblk) 45 31
+ Store 54 52
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out
new file mode 100644
index 0000000..dc347aa
--- /dev/null
+++ b/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out
@@ -0,0 +1,208 @@
+spv.ext.meshShaderUserDefined.mesh
+// Module Version 10400
+// Generated by (magic number): 8000b
+// Id's are bound by 141
+
+ Capability MeshShadingEXT
+ Extension "SPV_EXT_mesh_shader"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint MeshEXT 4 "main" 11 17 34 104
+ ExecutionMode 4 LocalSize 32 1 1
+ ExecutionMode 4 OutputVertices 81
+ ExecutionMode 4 OutputPrimitivesNV 32
+ ExecutionMode 4 OutputTrianglesNV
+ Source GLSL 450
+ SourceExtension "GL_EXT_mesh_shader"
+ Name 4 "main"
+ Name 8 "iid"
+ Name 11 "gl_LocalInvocationID"
+ Name 16 "gid"
+ Name 17 "gl_WorkGroupID"
+ Name 30 "myblock"
+ MemberName 30(myblock) 0 "f"
+ MemberName 30(myblock) 1 "fArr"
+ MemberName 30(myblock) 2 "pos"
+ MemberName 30(myblock) 3 "posArr"
+ MemberName 30(myblock) 4 "m"
+ MemberName 30(myblock) 5 "mArr"
+ Name 34 "blk"
+ Name 100 "myblock2"
+ MemberName 100(myblock2) 0 "f"
+ MemberName 100(myblock2) 1 "pos"
+ MemberName 100(myblock2) 2 "m"
+ Name 104 "blk2"
+ Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
+ Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
+ MemberDecorate 30(myblock) 0 PerPrimitiveNV
+ MemberDecorate 30(myblock) 1 PerPrimitiveNV
+ MemberDecorate 30(myblock) 2 PerPrimitiveNV
+ MemberDecorate 30(myblock) 3 PerPrimitiveNV
+ MemberDecorate 30(myblock) 4 PerPrimitiveNV
+ MemberDecorate 30(myblock) 5 PerPrimitiveNV
+ Decorate 30(myblock) Block
+ Decorate 34(blk) Location 0
+ Decorate 100(myblock2) Block
+ Decorate 104(blk2) Location 20
+ Decorate 140 BuiltIn WorkgroupSize
+ 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_LocalInvocationID): 10(ptr) Variable Input
+ 12: 6(int) Constant 0
+ 13: TypePointer Input 6(int)
+17(gl_WorkGroupID): 10(ptr) Variable Input
+ 20: TypeFloat 32
+ 21: 6(int) Constant 4
+ 22: TypeArray 20(float) 21
+ 23: TypeVector 20(float) 3
+ 24: TypeVector 20(float) 4
+ 25: TypeArray 24(fvec4) 21
+ 26: TypeMatrix 24(fvec4) 4
+ 27: TypeMatrix 23(fvec3) 3
+ 28: 6(int) Constant 2
+ 29: TypeArray 27 28
+ 30(myblock): TypeStruct 20(float) 22 23(fvec3) 25 26 29
+ 31: 6(int) Constant 32
+ 32: TypeArray 30(myblock) 31
+ 33: TypePointer Output 32
+ 34(blk): 33(ptr) Variable Output
+ 36: TypeInt 32 1
+ 37: 36(int) Constant 0
+ 38: 20(float) Constant 1093664768
+ 39: TypePointer Output 20(float)
+ 42: 6(int) Constant 1
+ 44: 36(int) Constant 1
+ 52: 36(int) Constant 2
+ 53: 20(float) Constant 1096810496
+ 54: 20(float) Constant 1097859072
+ 55: 20(float) Constant 1095761920
+ 56: 23(fvec3) ConstantComposite 53 54 55
+ 57: TypePointer Output 23(fvec3)
+ 63: 36(int) Constant 3
+ 72: 6(int) Constant 3
+ 77: 36(int) Constant 4
+ 78: 20(float) Constant 1098907648
+ 79: 24(fvec4) ConstantComposite 55 53 54 78
+ 80: TypePointer Output 24(fvec4)
+ 85: 36(int) Constant 5
+ 94: 20(float) Constant 1099431936
+ 95: 20(float) Constant 1099956224
+ 96: 20(float) Constant 1100480512
+ 97: 23(fvec3) ConstantComposite 94 95 96
+ 99: 6(int) Constant 264
+ 100(myblock2): TypeStruct 20(float) 24(fvec4) 26
+ 101: 6(int) Constant 81
+ 102: TypeArray 100(myblock2) 101
+ 103: TypePointer Output 102
+ 104(blk2): 103(ptr) Variable Output
+ 110: 20(float) Constant 1101004800
+ 114: 20(float) Constant 1101529088
+ 115: 20(float) Constant 1102053376
+ 116: 20(float) Constant 1102577664
+ 117: 20(float) Constant 1103101952
+ 118: 24(fvec4) ConstantComposite 114 115 116 117
+ 130: 20(float) Constant 1105723392
+ 140: 9(ivec3) ConstantComposite 31 42 42
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(iid): 7(ptr) Variable Function
+ 16(gid): 7(ptr) Variable Function
+ 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12
+ 15: 6(int) Load 14
+ Store 8(iid) 15
+ 18: 13(ptr) AccessChain 17(gl_WorkGroupID) 12
+ 19: 6(int) Load 18
+ Store 16(gid) 19
+ 35: 6(int) Load 8(iid)
+ 40: 39(ptr) AccessChain 34(blk) 35 37
+ Store 40 38
+ 41: 6(int) Load 8(iid)
+ 43: 6(int) IAdd 41 42
+ 45: 6(int) Load 16(gid)
+ 46: 6(int) Load 8(iid)
+ 47: 39(ptr) AccessChain 34(blk) 46 37
+ 48: 20(float) Load 47
+ 49: 39(ptr) AccessChain 34(blk) 43 44 45
+ Store 49 48
+ 50: 6(int) Load 8(iid)
+ 51: 6(int) UDiv 50 28
+ 58: 57(ptr) AccessChain 34(blk) 51 52
+ 59: 23(fvec3) Load 58
+ 60: 23(fvec3) VectorShuffle 59 56 5 3 4
+ Store 58 60
+ 61: 6(int) Load 8(iid)
+ 62: 6(int) IMul 61 28
+ 64: 6(int) Load 8(iid)
+ 65: 6(int) UDiv 64 28
+ 66: 57(ptr) AccessChain 34(blk) 65 52
+ 67: 23(fvec3) Load 66
+ 68: 39(ptr) AccessChain 34(blk) 62 63 44 42
+ 69: 20(float) CompositeExtract 67 0
+ Store 68 69
+ 70: 39(ptr) AccessChain 34(blk) 62 63 44 28
+ 71: 20(float) CompositeExtract 67 1
+ Store 70 71
+ 73: 39(ptr) AccessChain 34(blk) 62 63 44 72
+ 74: 20(float) CompositeExtract 67 2
+ Store 73 74
+ 75: 6(int) Load 8(iid)
+ 76: 6(int) UDiv 75 21
+ 81: 80(ptr) AccessChain 34(blk) 76 77 52
+ 82: 24(fvec4) Load 81
+ 83: 24(fvec4) VectorShuffle 82 79 7 6 5 4
+ Store 81 83
+ 84: 6(int) Load 8(iid)
+ 86: 6(int) Load 8(iid)
+ 87: 6(int) UDiv 86 21
+ 88: 39(ptr) AccessChain 34(blk) 87 77 52 72
+ 89: 20(float) Load 88
+ 90: 39(ptr) AccessChain 34(blk) 84 85 37 44 42
+ Store 90 89
+ 91: 6(int) Load 8(iid)
+ 92: 6(int) IMul 91 21
+ 93: 6(int) Load 16(gid)
+ 98: 57(ptr) AccessChain 34(blk) 92 85 44 93
+ Store 98 97
+ MemoryBarrier 42 99
+ ControlBarrier 28 28 99
+ 105: 6(int) Load 8(iid)
+ 106: 6(int) Load 8(iid)
+ 107: 6(int) ISub 106 42
+ 108: 39(ptr) AccessChain 104(blk2) 107 37
+ 109: 20(float) Load 108
+ 111: 20(float) FAdd 109 110
+ 112: 39(ptr) AccessChain 104(blk2) 105 37
+ Store 112 111
+ 113: 6(int) Load 8(iid)
+ 119: 80(ptr) AccessChain 104(blk2) 113 44
+ Store 119 118
+ 120: 6(int) Load 8(iid)
+ 121: 6(int) IAdd 120 42
+ 122: 6(int) Load 16(gid)
+ 123: 6(int) Load 8(iid)
+ 124: 80(ptr) AccessChain 104(blk2) 123 44
+ 125: 24(fvec4) Load 124
+ 126: 80(ptr) AccessChain 104(blk2) 121 52 122
+ Store 126 125
+ 127: 6(int) Load 8(iid)
+ 128: 6(int) IAdd 127 42
+ 129: 6(int) Load 16(gid)
+ 131: 39(ptr) AccessChain 104(blk2) 128 52 129 28
+ Store 131 130
+ 132: 6(int) Load 8(iid)
+ 133: 6(int) IAdd 132 28
+ 134: 6(int) Load 8(iid)
+ 135: 6(int) IAdd 134 42
+ 136: 6(int) Load 16(gid)
+ 137: 80(ptr) AccessChain 104(blk2) 135 52 136
+ 138: 24(fvec4) Load 137
+ 139: 80(ptr) AccessChain 104(blk2) 133 52 63
+ Store 139 138
+ MemoryBarrier 42 99
+ ControlBarrier 28 28 99
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.meshTaskShader.task.out b/Test/baseResults/spv.ext.meshTaskShader.task.out
new file mode 100644
index 0000000..41a81d0
--- /dev/null
+++ b/Test/baseResults/spv.ext.meshTaskShader.task.out
@@ -0,0 +1,162 @@
+spv.ext.meshTaskShader.task
+// Module Version 10400
+// Generated by (magic number): 8000b
+// Id's are bound by 103
+
+ Capability StorageImageWriteWithoutFormat
+ Capability MeshShadingEXT
+ Extension "SPV_EXT_mesh_shader"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TaskEXT 4 "main" 11 17 34 39 55 80
+ ExecutionMode 4 LocalSize 32 1 1
+ Source GLSL 450
+ SourceExtension "GL_EXT_mesh_shader"
+ Name 4 "main"
+ Name 8 "iid"
+ Name 11 "gl_LocalInvocationID"
+ Name 16 "gid"
+ Name 17 "gl_WorkGroupID"
+ Name 20 "i"
+ Name 34 "mem"
+ Name 37 "block0"
+ MemberName 37(block0) 0 "uni_value"
+ Name 39 ""
+ Name 55 "uni_image"
+ Name 78 "Task"
+ MemberName 78(Task) 0 "dummy"
+ MemberName 78(Task) 1 "submesh"
+ Name 80 "mytask"
+ Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
+ Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
+ MemberDecorate 37(block0) 0 Offset 0
+ Decorate 37(block0) Block
+ Decorate 39 DescriptorSet 0
+ Decorate 39 Binding 1
+ Decorate 55(uni_image) DescriptorSet 0
+ Decorate 55(uni_image) Binding 0
+ Decorate 55(uni_image) NonReadable
+ Decorate 102 BuiltIn WorkgroupSize
+ 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_LocalInvocationID): 10(ptr) Variable Input
+ 12: 6(int) Constant 0
+ 13: TypePointer Input 6(int)
+17(gl_WorkGroupID): 10(ptr) Variable Input
+ 27: 6(int) Constant 10
+ 28: TypeBool
+ 30: TypeFloat 32
+ 31: TypeVector 30(float) 4
+ 32: TypeArray 31(fvec4) 27
+ 33: TypePointer Workgroup 32
+ 34(mem): 33(ptr) Variable Workgroup
+ 37(block0): TypeStruct 6(int)
+ 38: TypePointer Uniform 37(block0)
+ 39: 38(ptr) Variable Uniform
+ 40: TypeInt 32 1
+ 41: 40(int) Constant 0
+ 42: TypePointer Uniform 6(int)
+ 48: TypePointer Workgroup 31(fvec4)
+ 51: 40(int) Constant 1
+ 53: TypeImage 30(float) 2D nonsampled format:Unknown
+ 54: TypePointer UniformConstant 53
+ 55(uni_image): 54(ptr) Variable UniformConstant
+ 59: TypeVector 40(int) 2
+ 69: 6(int) Constant 1
+ 73: 6(int) Constant 264
+ 74: 6(int) Constant 2
+ 75: TypeVector 30(float) 2
+ 76: 6(int) Constant 3
+ 77: TypeArray 75(fvec2) 76
+ 78(Task): TypeStruct 75(fvec2) 77
+ 79: TypePointer TaskPayloadWorkgroupEXT 78(Task)
+ 80(mytask): 79(ptr) Variable TaskPayloadWorkgroupEXT
+ 81: 30(float) Constant 1106247680
+ 82: 30(float) Constant 1106771968
+ 83: 75(fvec2) ConstantComposite 81 82
+ 84: TypePointer TaskPayloadWorkgroupEXT 75(fvec2)
+ 86: 30(float) Constant 1107296256
+ 87: 30(float) Constant 1107558400
+ 88: 75(fvec2) ConstantComposite 86 87
+ 90: 30(float) Constant 1107820544
+ 91: 30(float) Constant 1108082688
+ 92: 75(fvec2) ConstantComposite 90 91
+ 94: 40(int) Constant 2
+ 101: 6(int) Constant 32
+ 102: 9(ivec3) ConstantComposite 101 69 69
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(iid): 7(ptr) Variable Function
+ 16(gid): 7(ptr) Variable Function
+ 20(i): 7(ptr) Variable Function
+ 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12
+ 15: 6(int) Load 14
+ Store 8(iid) 15
+ 18: 13(ptr) AccessChain 17(gl_WorkGroupID) 12
+ 19: 6(int) Load 18
+ Store 16(gid) 19
+ Store 20(i) 12
+ Branch 21
+ 21: Label
+ LoopMerge 23 24 None
+ Branch 25
+ 25: Label
+ 26: 6(int) Load 20(i)
+ 29: 28(bool) ULessThan 26 27
+ BranchConditional 29 22 23
+ 22: Label
+ 35: 6(int) Load 20(i)
+ 36: 6(int) Load 20(i)
+ 43: 42(ptr) AccessChain 39 41
+ 44: 6(int) Load 43
+ 45: 6(int) IAdd 36 44
+ 46: 30(float) ConvertUToF 45
+ 47: 31(fvec4) CompositeConstruct 46 46 46 46
+ 49: 48(ptr) AccessChain 34(mem) 35
+ Store 49 47
+ Branch 24
+ 24: Label
+ 50: 6(int) Load 20(i)
+ 52: 6(int) IAdd 50 51
+ Store 20(i) 52
+ Branch 21
+ 23: Label
+ 56: 53 Load 55(uni_image)
+ 57: 6(int) Load 8(iid)
+ 58: 40(int) Bitcast 57
+ 60: 59(ivec2) CompositeConstruct 58 58
+ 61: 6(int) Load 16(gid)
+ 62: 48(ptr) AccessChain 34(mem) 61
+ 63: 31(fvec4) Load 62
+ ImageWrite 56 60 63
+ 64: 53 Load 55(uni_image)
+ 65: 6(int) Load 8(iid)
+ 66: 40(int) Bitcast 65
+ 67: 59(ivec2) CompositeConstruct 66 66
+ 68: 6(int) Load 16(gid)
+ 70: 6(int) IAdd 68 69
+ 71: 48(ptr) AccessChain 34(mem) 70
+ 72: 31(fvec4) Load 71
+ ImageWrite 64 67 72
+ MemoryBarrier 69 73
+ ControlBarrier 74 74 73
+ 85: 84(ptr) AccessChain 80(mytask) 41
+ Store 85 83
+ 89: 84(ptr) AccessChain 80(mytask) 51 41
+ Store 89 88
+ 93: 84(ptr) AccessChain 80(mytask) 51 51
+ Store 93 92
+ 95: 6(int) Load 16(gid)
+ 96: 6(int) UMod 95 74
+ 97: 84(ptr) AccessChain 80(mytask) 51 96
+ 98: 75(fvec2) Load 97
+ 99: 84(ptr) AccessChain 80(mytask) 51 94
+ Store 99 98
+ MemoryBarrier 69 73
+ ControlBarrier 74 74 73
+ EmitMeshTasksEXT 76 69 69 80(mytask)
+ FunctionEnd
diff --git a/Test/baseResults/spv.extPostDepthCoverage.frag.out b/Test/baseResults/spv.extPostDepthCoverage.frag.out
index cc96fb4..7e4c6f5 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): 8000a
+// Generated by (magic number): 8000b
// 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 8c33a66..2cce815 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 542
Capability Shader
diff --git a/Test/baseResults/spv.float16Fetch.frag.out b/Test/baseResults/spv.float16Fetch.frag.out
index da4aa4d..17eb5b3 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 5979
Capability Shader
diff --git a/Test/baseResults/spv.float16NoRelaxed.vert.out b/Test/baseResults/spv.float16NoRelaxed.vert.out
new file mode 100644
index 0000000..9e821ab
--- /dev/null
+++ b/Test/baseResults/spv.float16NoRelaxed.vert.out
@@ -0,0 +1,72 @@
+spv.float16NoRelaxed.vert
+// Module Version 10300
+// Generated by (magic number): 8000b
+// Id's are bound by 35
+
+ Capability Shader
+ Capability Float16
+ Capability GroupNonUniform
+ Capability GroupNonUniformVote
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 11 30
+ Source GLSL 450
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_EXT_shader_subgroup_extended_types_float16"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_KHR_shader_subgroup_vote"
+ Name 4 "main"
+ Name 8 "valueNoEqual"
+ Name 11 "gl_SubgroupInvocationID"
+ Name 15 "tempRes"
+ Name 26 "Buffer1"
+ MemberName 26(Buffer1) 0 "result"
+ Name 28 ""
+ Name 30 "gl_VertexIndex"
+ Decorate 11(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 11(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 12 RelaxedPrecision
+ Decorate 25 ArrayStride 4
+ MemberDecorate 26(Buffer1) 0 Offset 0
+ Decorate 26(Buffer1) Block
+ Decorate 28 DescriptorSet 0
+ Decorate 28 Binding 0
+ Decorate 30(gl_VertexIndex) BuiltIn VertexIndex
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 16
+ 7: TypePointer Function 6(float16_t)
+ 9: TypeInt 32 0
+ 10: TypePointer Input 9(int)
+11(gl_SubgroupInvocationID): 10(ptr) Variable Input
+ 14: TypePointer Function 9(int)
+ 17: TypeBool
+ 18: 9(int) Constant 3
+ 20: TypeInt 32 1
+ 21: 20(int) Constant 0
+ 22: 20(int) Constant 16
+ 25: TypeRuntimeArray 9(int)
+ 26(Buffer1): TypeStruct 25
+ 27: TypePointer StorageBuffer 26(Buffer1)
+ 28: 27(ptr) Variable StorageBuffer
+ 29: TypePointer Input 20(int)
+30(gl_VertexIndex): 29(ptr) Variable Input
+ 33: TypePointer StorageBuffer 9(int)
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(valueNoEqual): 7(ptr) Variable Function
+ 15(tempRes): 14(ptr) Variable Function
+ 12: 9(int) Load 11(gl_SubgroupInvocationID)
+ 13:6(float16_t) ConvertUToF 12
+ Store 8(valueNoEqual) 13
+ 16:6(float16_t) Load 8(valueNoEqual)
+ 19: 17(bool) GroupNonUniformAllEqual 18 16
+ 23: 20(int) Select 19 21 22
+ 24: 9(int) Bitcast 23
+ Store 15(tempRes) 24
+ 31: 20(int) Load 30(gl_VertexIndex)
+ 32: 9(int) Load 15(tempRes)
+ 34: 33(ptr) AccessChain 28 21 31
+ Store 34 32
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.float16convertonlyarith.comp.out b/Test/baseResults/spv.float16convertonlyarith.comp.out
index 1666f79..81d1c60 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): 8000a
+// Generated by (magic number): 8000b
// 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 8eb42f6..be15f43 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): 8000a
+// Generated by (magic number): 8000b
// 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 2ffa231..d2cc609 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 541
Capability Shader
diff --git a/Test/baseResults/spv.float64.frag.out b/Test/baseResults/spv.float64.frag.out
index cd5f80d..68e8f1c 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 485
Capability Shader
diff --git a/Test/baseResults/spv.flowControl.frag.out b/Test/baseResults/spv.flowControl.frag.out
index efbe63e..62f6ad7 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): 8000a
+// Generated by (magic number): 8000b
// 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 ca971fd..16b23a0 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): 8000a
+// Generated by (magic number): 8000b
// 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 4ba1cb9..10ab24e 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): 8000a
+// Generated by (magic number): 8000b
// 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 b965a58..7a0b6de 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): 8000a
+// Generated by (magic number): 8000b
// 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 d3e9603..b08c6a1 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 20
Capability Shader
diff --git a/Test/baseResults/spv.for-simple.vert.out b/Test/baseResults/spv.for-simple.vert.out
index c4de996..92f3083 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): 8000a
+// Generated by (magic number): 8000b
// 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 3a36667..2a35961 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 143
Capability Shader
diff --git a/Test/baseResults/spv.forwardFun.frag.out b/Test/baseResults/spv.forwardFun.frag.out
index f166286..77f3941 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 60
Capability Shader
diff --git a/Test/baseResults/spv.fragmentDensity-es.frag.out b/Test/baseResults/spv.fragmentDensity-es.frag.out
index 253ce2e..fb1407e 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): 8000a
+// Generated by (magic number): 8000b
// 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 4c831f2..43261cd 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): 8000a
+// Generated by (magic number): 8000b
// 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 2ea8f35..29b290b 100644
--- a/Test/baseResults/spv.fragmentShaderBarycentric.frag.out
+++ b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out
@@ -1,10 +1,10 @@
spv.fragmentShaderBarycentric.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 43
Capability Shader
- Capability FragmentBarycentricNV
+ Capability FragmentBarycentricKHR
Extension "SPV_NV_fragment_shader_barycentric"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
@@ -19,10 +19,10 @@
MemberName 17(vertices) 0 "attrib"
Name 21 "v"
Decorate 8(value) Location 1
- Decorate 11(gl_BaryCoordNV) BuiltIn BaryCoordNV
+ Decorate 11(gl_BaryCoordNV) BuiltIn BaryCoordKHR
Decorate 17(vertices) Block
Decorate 21(v) Location 0
- Decorate 21(v) PerVertexNV
+ Decorate 21(v) PerVertexKHR
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out
index 74a3498..18f0ca3 100644
--- a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out
+++ b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out
@@ -1,14 +1,14 @@
spv.fragmentShaderBarycentric2.frag
// Module Version 10000
-// Generated by (magic number): 8000a
-// Id's are bound by 42
+// Generated by (magic number): 8000b
+// Id's are bound by 62
Capability Shader
- Capability FragmentBarycentricNV
+ Capability FragmentBarycentricKHR
Extension "SPV_NV_fragment_shader_barycentric"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 8 11 20
+ EntryPoint Fragment 4 "main" 8 11 20 44
ExecutionMode 4 OriginUpperLeft
Source ESSL 320
SourceExtension "GL_NV_fragment_shader_barycentric"
@@ -16,10 +16,13 @@
Name 8 "value"
Name 11 "gl_BaryCoordNoPerspNV"
Name 20 "vertexIDs"
+ Name 44 "vertexIDs2"
Decorate 8(value) Location 1
- Decorate 11(gl_BaryCoordNoPerspNV) BuiltIn BaryCoordNoPerspNV
+ Decorate 11(gl_BaryCoordNoPerspNV) BuiltIn BaryCoordNoPerspKHR
Decorate 20(vertexIDs) Location 0
- Decorate 20(vertexIDs) PerVertexNV
+ Decorate 20(vertexIDs) PerVertexKHR
+ Decorate 44(vertexIDs2) Location 1
+ Decorate 44(vertexIDs2) PerVertexKHR
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -41,6 +44,7 @@
29: 21(int) Constant 1
34: 12(int) Constant 2
37: 21(int) Constant 2
+ 44(vertexIDs2): 19(ptr) Variable Input
4(main): 2 Function None 3
5: Label
15: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 13
@@ -61,5 +65,25 @@
40: 6(float) FMul 36 39
41: 6(float) FAdd 33 40
Store 8(value) 41
+ 42: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 13
+ 43: 6(float) Load 42
+ 45: 14(ptr) AccessChain 44(vertexIDs2) 22
+ 46: 6(float) Load 45
+ 47: 6(float) FMul 43 46
+ 48: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 26
+ 49: 6(float) Load 48
+ 50: 14(ptr) AccessChain 44(vertexIDs2) 29
+ 51: 6(float) Load 50
+ 52: 6(float) FMul 49 51
+ 53: 6(float) FAdd 47 52
+ 54: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 34
+ 55: 6(float) Load 54
+ 56: 14(ptr) AccessChain 44(vertexIDs2) 37
+ 57: 6(float) Load 56
+ 58: 6(float) FMul 55 57
+ 59: 6(float) FAdd 53 58
+ 60: 6(float) Load 8(value)
+ 61: 6(float) FAdd 60 59
+ Store 8(value) 61
Return
FunctionEnd
diff --git a/Test/baseResults/spv.fragmentShaderBarycentric3.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric3.frag.out
new file mode 100644
index 0000000..60badf6
--- /dev/null
+++ b/Test/baseResults/spv.fragmentShaderBarycentric3.frag.out
@@ -0,0 +1,69 @@
+spv.fragmentShaderBarycentric3.frag
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 43
+
+ Capability Shader
+ Capability FragmentBarycentricKHR
+ Extension "SPV_KHR_fragment_shader_barycentric"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 8 11 21
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_EXT_fragment_shader_barycentric"
+ Name 4 "main"
+ Name 8 "value"
+ Name 11 "gl_BaryCoordEXT"
+ Name 17 "vertices"
+ MemberName 17(vertices) 0 "attrib"
+ Name 21 "v"
+ Decorate 8(value) Location 1
+ Decorate 11(gl_BaryCoordEXT) BuiltIn BaryCoordKHR
+ Decorate 17(vertices) Block
+ Decorate 21(v) Location 0
+ Decorate 21(v) PerVertexKHR
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Output 6(float)
+ 8(value): 7(ptr) Variable Output
+ 9: TypeVector 6(float) 3
+ 10: TypePointer Input 9(fvec3)
+11(gl_BaryCoordEXT): 10(ptr) Variable Input
+ 12: TypeInt 32 0
+ 13: 12(int) Constant 0
+ 14: TypePointer Input 6(float)
+ 17(vertices): TypeStruct 6(float)
+ 18: 12(int) Constant 3
+ 19: TypeArray 17(vertices) 18
+ 20: TypePointer Input 19
+ 21(v): 20(ptr) Variable Input
+ 22: TypeInt 32 1
+ 23: 22(int) Constant 0
+ 27: 12(int) Constant 1
+ 30: 22(int) Constant 1
+ 35: 12(int) Constant 2
+ 38: 22(int) Constant 2
+ 4(main): 2 Function None 3
+ 5: Label
+ 15: 14(ptr) AccessChain 11(gl_BaryCoordEXT) 13
+ 16: 6(float) Load 15
+ 24: 14(ptr) AccessChain 21(v) 23 23
+ 25: 6(float) Load 24
+ 26: 6(float) FMul 16 25
+ 28: 14(ptr) AccessChain 11(gl_BaryCoordEXT) 27
+ 29: 6(float) Load 28
+ 31: 14(ptr) AccessChain 21(v) 30 23
+ 32: 6(float) Load 31
+ 33: 6(float) FMul 29 32
+ 34: 6(float) FAdd 26 33
+ 36: 14(ptr) AccessChain 11(gl_BaryCoordEXT) 35
+ 37: 6(float) Load 36
+ 39: 14(ptr) AccessChain 21(v) 38 23
+ 40: 6(float) Load 39
+ 41: 6(float) FMul 37 40
+ 42: 6(float) FAdd 34 41
+ Store 8(value) 42
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out
new file mode 100644
index 0000000..fc0e576
--- /dev/null
+++ b/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out
@@ -0,0 +1,89 @@
+spv.fragmentShaderBarycentric4.frag
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 62
+
+ Capability Shader
+ Capability FragmentBarycentricKHR
+ Extension "SPV_KHR_fragment_shader_barycentric"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 8 11 20 44
+ ExecutionMode 4 OriginUpperLeft
+ Source ESSL 320
+ SourceExtension "GL_EXT_fragment_shader_barycentric"
+ Name 4 "main"
+ Name 8 "value"
+ Name 11 "gl_BaryCoordNoPerspEXT"
+ Name 20 "vertexIDs"
+ Name 44 "vertexIDs2"
+ Decorate 8(value) Location 1
+ Decorate 11(gl_BaryCoordNoPerspEXT) BuiltIn BaryCoordNoPerspKHR
+ Decorate 20(vertexIDs) Location 0
+ Decorate 20(vertexIDs) PerVertexKHR
+ Decorate 44(vertexIDs2) Location 1
+ Decorate 44(vertexIDs2) PerVertexKHR
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Output 6(float)
+ 8(value): 7(ptr) Variable Output
+ 9: TypeVector 6(float) 3
+ 10: TypePointer Input 9(fvec3)
+11(gl_BaryCoordNoPerspEXT): 10(ptr) Variable Input
+ 12: TypeInt 32 0
+ 13: 12(int) Constant 0
+ 14: TypePointer Input 6(float)
+ 17: 12(int) Constant 3
+ 18: TypeArray 6(float) 17
+ 19: TypePointer Input 18
+ 20(vertexIDs): 19(ptr) Variable Input
+ 21: TypeInt 32 1
+ 22: 21(int) Constant 0
+ 26: 12(int) Constant 1
+ 29: 21(int) Constant 1
+ 34: 12(int) Constant 2
+ 37: 21(int) Constant 2
+ 44(vertexIDs2): 19(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 15: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 13
+ 16: 6(float) Load 15
+ 23: 14(ptr) AccessChain 20(vertexIDs) 22
+ 24: 6(float) Load 23
+ 25: 6(float) FMul 16 24
+ 27: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 26
+ 28: 6(float) Load 27
+ 30: 14(ptr) AccessChain 20(vertexIDs) 29
+ 31: 6(float) Load 30
+ 32: 6(float) FMul 28 31
+ 33: 6(float) FAdd 25 32
+ 35: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 34
+ 36: 6(float) Load 35
+ 38: 14(ptr) AccessChain 20(vertexIDs) 37
+ 39: 6(float) Load 38
+ 40: 6(float) FMul 36 39
+ 41: 6(float) FAdd 33 40
+ Store 8(value) 41
+ 42: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 13
+ 43: 6(float) Load 42
+ 45: 14(ptr) AccessChain 44(vertexIDs2) 22
+ 46: 6(float) Load 45
+ 47: 6(float) FMul 43 46
+ 48: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 26
+ 49: 6(float) Load 48
+ 50: 14(ptr) AccessChain 44(vertexIDs2) 29
+ 51: 6(float) Load 50
+ 52: 6(float) FMul 49 51
+ 53: 6(float) FAdd 47 52
+ 54: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 34
+ 55: 6(float) Load 54
+ 56: 14(ptr) AccessChain 44(vertexIDs2) 37
+ 57: 6(float) Load 56
+ 58: 6(float) FMul 55 57
+ 59: 6(float) FAdd 53 58
+ 60: 6(float) Load 8(value)
+ 61: 6(float) FAdd 60 59
+ Store 8(value) 61
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.fsi.frag.out b/Test/baseResults/spv.fsi.frag.out
index 3e06aed..1b5fbf4 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): 8000a
+// Generated by (magic number): 8000b
// 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 ae7b426..cd730a4 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 18
Capability Shader
diff --git a/Test/baseResults/spv.funcall.array.frag.out b/Test/baseResults/spv.funcall.array.frag.out
index 616ba16..b4e2bfb 100644
--- a/Test/baseResults/spv.funcall.array.frag.out
+++ b/Test/baseResults/spv.funcall.array.frag.out
@@ -1,6 +1,6 @@
spv.funcall.array.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 66
Capability Shader
diff --git a/Test/baseResults/spv.functionCall.frag.out b/Test/baseResults/spv.functionCall.frag.out
index 58b0461..52d167c 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 76
Capability Shader
diff --git a/Test/baseResults/spv.functionNestedOpaque.vert.out b/Test/baseResults/spv.functionNestedOpaque.vert.out
index 96a64aa..5878760 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): 8000a
+// Generated by (magic number): 8000b
// 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 65a33da..19f5429 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): 8000a
+// Generated by (magic number): 8000b
// 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 f12aae0..dc8520d 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): 8000a
+// Generated by (magic number): 8000b
// 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 df39129..033769f 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): 8000a
+// Generated by (magic number): 8000b
// 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 01df400..041edb9 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): 8000a
+// Generated by (magic number): 8000b
// 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 e475a00..ccf6880 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): 8000a
+// Generated by (magic number): 8000b
// 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 40089e7..d68c054 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 19
Capability Shader
@@ -44,6 +44,7 @@
13: 8(fvec4) ConstantComposite 12 12 12 12
16: TypePointer Output 8(fvec4)
17(@entryPointOutput): 16(ptr) Variable Output
+ Line 1 2 1
5(newMain): 3 Function None 4
6: Label
Line 1 2 0
@@ -51,6 +52,7 @@
Store 17(@entryPointOutput) 18
Return
FunctionEnd
+ Line 1 2 1
10(@newMain(): 8(fvec4) Function None 9
11: Label
Line 1 3 0
diff --git a/Test/baseResults/spv.hlslOffsets.vert.out b/Test/baseResults/spv.hlslOffsets.vert.out
index cc71283..d2d6443 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): 8000a
+// Generated by (magic number): 8000b
// 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 5fbb922..f71a1cc 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 405
Capability Shader
diff --git a/Test/baseResults/spv.imageAtomic64.comp.out b/Test/baseResults/spv.imageAtomic64.comp.out
new file mode 100644
index 0000000..4317ae0
--- /dev/null
+++ b/Test/baseResults/spv.imageAtomic64.comp.out
@@ -0,0 +1,58 @@
+spv.imageAtomic64.comp
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 28
+
+ Capability Shader
+ Capability Int64
+ Capability Int64Atomics
+ Capability Int64ImageEXT
+ Extension "SPV_EXT_shader_image_int64"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main"
+ ExecutionMode 4 LocalSize 1 1 1
+ Source GLSL 450
+ SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_EXT_shader_image_int64"
+ SourceExtension "GL_KHR_memory_scope_semantics"
+ Name 4 "main"
+ Name 9 "z"
+ Name 14 "ssbo"
+ MemberName 14(ssbo) 0 "y"
+ Name 16 ""
+ Decorate 9(z) DescriptorSet 0
+ Decorate 9(z) Binding 1
+ MemberDecorate 14(ssbo) 0 Offset 0
+ Decorate 14(ssbo) BufferBlock
+ Decorate 16 DescriptorSet 0
+ Decorate 16 Binding 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 64 0
+ 7: TypeImage 6(int64_t) 2D nonsampled format:R64ui
+ 8: TypePointer UniformConstant 7
+ 9(z): 8(ptr) Variable UniformConstant
+ 10: TypeInt 32 1
+ 11: TypeVector 10(int) 2
+ 12: 10(int) Constant 1
+ 13: 11(ivec2) ConstantComposite 12 12
+ 14(ssbo): TypeStruct 6(int64_t)
+ 15: TypePointer Uniform 14(ssbo)
+ 16: 15(ptr) Variable Uniform
+ 17: 10(int) Constant 0
+ 18: TypePointer Uniform 6(int64_t)
+ 21: 10(int) Constant 2048
+ 22: TypeInt 32 0
+ 23: 22(int) Constant 0
+ 24: TypePointer Image 6(int64_t)
+ 26: 22(int) Constant 1
+ 27: 22(int) Constant 2048
+ 4(main): 2 Function None 3
+ 5: Label
+ 19: 18(ptr) AccessChain 16 17
+ 20: 6(int64_t) Load 19
+ 25: 24(ptr) ImageTexelPointer 9(z) 13 23
+ AtomicStore 25 12 27 20
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.imageAtomic64.frag.out b/Test/baseResults/spv.imageAtomic64.frag.out
index 3083697..1c002ab 100644
--- a/Test/baseResults/spv.imageAtomic64.frag.out
+++ b/Test/baseResults/spv.imageAtomic64.frag.out
@@ -1,7 +1,7 @@
spv.imageAtomic64.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 503
Capability Shader
diff --git a/Test/baseResults/spv.imageLoadStoreLod.frag.out b/Test/baseResults/spv.imageLoadStoreLod.frag.out
index b809474..4a16d75 100644
--- a/Test/baseResults/spv.imageLoadStoreLod.frag.out
+++ b/Test/baseResults/spv.imageLoadStoreLod.frag.out
@@ -1,6 +1,6 @@
spv.imageLoadStoreLod.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 148
Capability Shader
diff --git a/Test/baseResults/spv.int16.amd.frag.out b/Test/baseResults/spv.int16.amd.frag.out
index 676d99c..53f5537 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 576
Capability Shader
diff --git a/Test/baseResults/spv.int16.frag.out b/Test/baseResults/spv.int16.frag.out
index 3e10a7d..ed788f8 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 549
Capability Shader
diff --git a/Test/baseResults/spv.int32.frag.out b/Test/baseResults/spv.int32.frag.out
index af232ec..2c260dd 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 505
Capability Shader
diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out
index f2fd600..e335a54 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 513
Capability Shader
diff --git a/Test/baseResults/spv.int8.frag.out b/Test/baseResults/spv.int8.frag.out
index e9cd5f8..3bfeb1a 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 544
Capability Shader
diff --git a/Test/baseResults/spv.intOps.vert.out b/Test/baseResults/spv.intOps.vert.out
index b57eac2..67b11d2 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 302
Capability Shader
diff --git a/Test/baseResults/spv.intcoopmat.comp.out b/Test/baseResults/spv.intcoopmat.comp.out
index 6a69743..bc50255 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): 8000a
+// Generated by (magic number): 8000b
// 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 808c1cd..62bd2b6 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 120
Capability Shader
diff --git a/Test/baseResults/spv.intrinsicsSpecConst.vert.out b/Test/baseResults/spv.intrinsicsSpecConst.vert.out
deleted file mode 100644
index 11751d6..0000000
--- a/Test/baseResults/spv.intrinsicsSpecConst.vert.out
+++ /dev/null
@@ -1,35 +0,0 @@
-spv.intrinsicsSpecConst.vert
-Validation failed
-// Module Version 10000
-// Generated by (magic number): 8000a
-// Id's are bound by 13
-
- Capability Shader
- 1: ExtInstImport "GLSL.std.450"
- MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main" 10
- ExecutionModeId 4 DenormFlushToZero 7
- Source GLSL 450
- SourceExtension "GL_EXT_spirv_intrinsics"
- Name 4 "main"
- Name 7 "targetWidth"
- Name 10 "pointSize"
- Name 11 "builtIn"
- Decorate 7(targetWidth) SpecId 5
- Decorate 10(pointSize) Location 0
- Decorate 11(builtIn) SpecId 6
- DecorateId 10(pointSize) BuiltIn 11(builtIn)
- 2: TypeVoid
- 3: TypeFunction 2
- 6: TypeInt 32 0
- 7(targetWidth): 6(int) SpecConstant 32
- 8: TypeFloat 32
- 9: TypePointer Output 8(float)
- 10(pointSize): 9(ptr) Variable Output
- 11(builtIn): 6(int) SpecConstant 1
- 12: 8(float) Constant 1082130432
- 4(main): 2 Function None 3
- 5: Label
- Store 10(pointSize) 12
- Return
- FunctionEnd
diff --git a/Test/baseResults/spv.intrinsicsSpirvByReference.vert.out b/Test/baseResults/spv.intrinsicsSpirvByReference.vert.out
index d46b33f..e15bb57 100644
--- a/Test/baseResults/spv.intrinsicsSpirvByReference.vert.out
+++ b/Test/baseResults/spv.intrinsicsSpirvByReference.vert.out
@@ -1,6 +1,6 @@
spv.intrinsicsSpirvByReference.vert
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 30
Capability Shader
diff --git a/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out b/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out
index cbd46b0..b926c51 100644
--- a/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out
+++ b/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out
@@ -1,7 +1,6 @@
spv.intrinsicsSpirvDecorate.frag
-Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 43
Capability Shader
@@ -28,19 +27,12 @@
Decorate 10(floatIn) Location 0
Decorate 10(floatIn) ExplicitInterpAMD
Decorate 18(vec2Out) Location 1
- Decorate 20(gl_BaryCoordNoPerspAMD) Location 0
Decorate 20(gl_BaryCoordNoPerspAMD) BuiltIn BaryCoordNoPerspAMD
- Decorate 22(gl_BaryCoordNoPerspCentroidAMD) Location 1
Decorate 22(gl_BaryCoordNoPerspCentroidAMD) BuiltIn BaryCoordNoPerspCentroidAMD
- Decorate 25(gl_BaryCoordNoPerspSampleAMD) Location 2
Decorate 25(gl_BaryCoordNoPerspSampleAMD) BuiltIn BaryCoordNoPerspSampleAMD
- Decorate 28(gl_BaryCoordSmoothAMD) Location 3
Decorate 28(gl_BaryCoordSmoothAMD) BuiltIn BaryCoordSmoothAMD
- Decorate 31(gl_BaryCoordSmoothCentroidAMD) Location 4
Decorate 31(gl_BaryCoordSmoothCentroidAMD) BuiltIn BaryCoordSmoothCentroidAMD
- Decorate 34(gl_BaryCoordSmoothSampleAMD) Location 5
Decorate 34(gl_BaryCoordSmoothSampleAMD) BuiltIn BaryCoordSmoothSampleAMD
- Decorate 39(gl_BaryCoordPullModelAMD) Location 6
Decorate 39(gl_BaryCoordPullModelAMD) BuiltIn BaryCoordPullModelAMD
2: TypeVoid
3: TypeFunction 2
diff --git a/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out b/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out
index 22bc53b..d5f935b 100644
--- a/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out
+++ b/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out
@@ -1,7 +1,6 @@
spv.intrinsicsSpirvExecutionMode.frag
-Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 12
Capability Shader
@@ -17,7 +16,6 @@
Name 4 "main"
Name 8 "gl_FragStencilRef"
Name 10 "color"
- Decorate 8(gl_FragStencilRef) Location 0
Decorate 8(gl_FragStencilRef) BuiltIn FragStencilRefEXT
Decorate 10(color) Flat
Decorate 10(color) Location 0
diff --git a/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out b/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out
index 0e2780c..3103505 100644
--- a/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out
+++ b/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out
@@ -1,8 +1,7 @@
spv.intrinsicsSpirvInstruction.vert
-Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
-// Id's are bound by 30
+// Generated by (magic number): 8000b
+// Id's are bound by 32
Capability Shader
Capability Int64
@@ -10,50 +9,52 @@
Extension "SPV_AMD_shader_trinary_minmax"
Extension "SPV_KHR_shader_clock"
1: ExtInstImport "GLSL.std.450"
- 28: ExtInstImport "SPV_AMD_shader_trinary_minmax"
+ 30: ExtInstImport "SPV_AMD_shader_trinary_minmax"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main" 9 13 18 21
+ EntryPoint Vertex 4 "main" 9 15 20 23
Source GLSL 450
SourceExtension "GL_ARB_gpu_shader_int64"
SourceExtension "GL_EXT_spirv_intrinsics"
Name 4 "main"
Name 9 "uvec2Out"
- Name 13 "i64Out"
- Name 18 "vec2Out"
- Name 21 "vec3In"
+ Name 15 "u64Out"
+ Name 20 "vec2Out"
+ Name 23 "vec3In"
Decorate 9(uvec2Out) Location 0
- Decorate 13(i64Out) Location 1
- Decorate 18(vec2Out) Location 2
- Decorate 21(vec3In) Location 0
+ Decorate 15(u64Out) Location 1
+ Decorate 20(vec2Out) Location 2
+ Decorate 23(vec3In) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypeVector 6(int) 2
8: TypePointer Output 7(ivec2)
9(uvec2Out): 8(ptr) Variable Output
- 11: TypeInt 64 1
- 12: TypePointer Output 11(int64_t)
- 13(i64Out): 12(ptr) Variable Output
- 15: TypeFloat 32
- 16: TypeVector 15(float) 2
- 17: TypePointer Output 16(fvec2)
- 18(vec2Out): 17(ptr) Variable Output
- 19: TypeVector 15(float) 3
- 20: TypePointer Input 19(fvec3)
- 21(vec3In): 20(ptr) Variable Input
+ 10: TypeInt 32 1
+ 11: 10(int) Constant 1
+ 13: TypeInt 64 0
+ 14: TypePointer Output 13(int64_t)
+ 15(u64Out): 14(ptr) Variable Output
+ 17: TypeFloat 32
+ 18: TypeVector 17(float) 2
+ 19: TypePointer Output 18(fvec2)
+ 20(vec2Out): 19(ptr) Variable Output
+ 21: TypeVector 17(float) 3
+ 22: TypePointer Input 21(fvec3)
+ 23(vec3In): 22(ptr) Variable Input
4(main): 2 Function None 3
5: Label
- 10: 7(ivec2) ReadClockKHR
- Store 9(uvec2Out) 10
- 14: 11(int64_t) ReadClockKHR
- Store 13(i64Out) 14
- 22: 19(fvec3) Load 21(vec3In)
- 23: 16(fvec2) VectorShuffle 22 22 0 1
- 24: 19(fvec3) Load 21(vec3In)
- 25: 16(fvec2) VectorShuffle 24 24 1 2
- 26: 19(fvec3) Load 21(vec3In)
- 27: 16(fvec2) VectorShuffle 26 26 2 0
- 29: 16(fvec2) ExtInst 28(SPV_AMD_shader_trinary_minmax) 1(FMin3AMD) 23 25 27
- Store 18(vec2Out) 29
+ 12: 7(ivec2) ReadClockKHR 11
+ Store 9(uvec2Out) 12
+ 16: 13(int64_t) ReadClockKHR 11
+ Store 15(u64Out) 16
+ 24: 21(fvec3) Load 23(vec3In)
+ 25: 18(fvec2) VectorShuffle 24 24 0 1
+ 26: 21(fvec3) Load 23(vec3In)
+ 27: 18(fvec2) VectorShuffle 26 26 1 2
+ 28: 21(fvec3) Load 23(vec3In)
+ 29: 18(fvec2) VectorShuffle 28 28 2 0
+ 31: 18(fvec2) ExtInst 30(SPV_AMD_shader_trinary_minmax) 1(FMin3AMD) 25 27 29
+ Store 20(vec2Out) 31
Return
FunctionEnd
diff --git a/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out b/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out
index 68ad949..48eef5e 100644
--- a/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out
+++ b/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out
@@ -1,30 +1,30 @@
spv.intrinsicsSpirvLiteral.vert
-Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
-// Id's are bound by 12
+// Generated by (magic number): 8000b
+// Id's are bound by 13
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main"
+ EntryPoint Vertex 4 "main" 9 11
Source GLSL 450
SourceExtension "GL_EXT_spirv_intrinsics"
Name 4 "main"
Name 9 "vec4Out"
- Name 10 "vec4In"
+ Name 11 "vec4In"
Decorate 9(vec4Out) Location 1
- Decorate 10(vec4In) Location 0
+ Decorate 11(vec4In) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
- 8: TypePointer Function 7(fvec4)
+ 8: TypePointer Output 7(fvec4)
+ 9(vec4Out): 8(ptr) Variable Output
+ 10: TypePointer Input 7(fvec4)
+ 11(vec4In): 10(ptr) Variable Input
4(main): 2 Function None 3
5: Label
- 9(vec4Out): 8(ptr) Variable Function
- 10(vec4In): 8(ptr) Variable Function
- 11: 7(fvec4) Load 10(vec4In) None
- Store 9(vec4Out) 11 Volatile
+ 12: 7(fvec4) Load 11(vec4In) None
+ Store 9(vec4Out) 12 Volatile
Return
FunctionEnd
diff --git a/Test/baseResults/spv.intrinsicsSpirvStorageClass.rchit.out b/Test/baseResults/spv.intrinsicsSpirvStorageClass.rchit.out
index 4be5b91..3bf1394 100644
--- a/Test/baseResults/spv.intrinsicsSpirvStorageClass.rchit.out
+++ b/Test/baseResults/spv.intrinsicsSpirvStorageClass.rchit.out
@@ -1,6 +1,6 @@
spv.intrinsicsSpirvStorageClass.rchit
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 13
Capability RayTracingKHR
diff --git a/Test/baseResults/spv.intrinsicsSpirvType.rgen.out b/Test/baseResults/spv.intrinsicsSpirvType.rgen.out
index ac0c946..5d67de7 100644
--- a/Test/baseResults/spv.intrinsicsSpirvType.rgen.out
+++ b/Test/baseResults/spv.intrinsicsSpirvType.rgen.out
@@ -1,7 +1,6 @@
spv.intrinsicsSpirvType.rgen
-Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 21
Capability RayQueryKHR
@@ -17,12 +16,13 @@
Name 4 "main"
Name 8 "rq"
Name 11 "as"
- Decorate 11(as) Location 0
Decorate 11(as) DescriptorSet 0
Decorate 11(as) Binding 0
2: TypeVoid
3: TypeFunction 2
+ 6: TypeRayQueryKHR
7: TypePointer Function 6
+ 9: TypeAccelerationStructureKHR
10: TypePointer UniformConstant 9
11(as): 10(ptr) Variable UniformConstant
13: TypeInt 32 0
@@ -36,8 +36,6 @@
4(main): 2 Function None 3
5: Label
8(rq): 7(ptr) Variable Function
- 6: TypeRayQueryKHR
- 9: TypeAccelerationStructureKHR
12: 9 Load 11(as)
RayQueryInitializeKHR 8(rq) 12 14 14 18 17 20 19
RayQueryTerminateKHR 8(rq)
diff --git a/Test/baseResults/spv.intrinsicsSpirvTypeLocalVar.vert.out b/Test/baseResults/spv.intrinsicsSpirvTypeLocalVar.vert.out
new file mode 100644
index 0000000..248af08
--- /dev/null
+++ b/Test/baseResults/spv.intrinsicsSpirvTypeLocalVar.vert.out
@@ -0,0 +1,43 @@
+spv.intrinsicsSpirvTypeLocalVar.vert
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 22
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main"
+ Source GLSL 460
+ SourceExtension "GL_EXT_spirv_intrinsics"
+ Name 4 "main"
+ Name 10 "func(spv-t1;"
+ Name 9 "emptyStruct"
+ Name 13 "size"
+ Name 16 "dummy"
+ Name 18 "param"
+ Decorate 13(size) SpecId 9
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeStruct
+ 7: TypePointer Function 6(struct)
+ 8: TypeFunction 2 7(ptr)
+ 12: TypeInt 32 1
+ 13(size): 12(int) SpecConstant 9
+ 14: TypeArray 6(struct) 13(size)
+ 15: TypePointer Function 14
+ 17: 12(int) Constant 1
+ 4(main): 2 Function None 3
+ 5: Label
+ 16(dummy): 15(ptr) Variable Function
+ 18(param): 7(ptr) Variable Function
+ 19: 7(ptr) AccessChain 16(dummy) 17
+ 20: 6(struct) Load 19
+ Store 18(param) 20
+ 21: 2 FunctionCall 10(func(spv-t1;) 18(param)
+ Return
+ FunctionEnd
+10(func(spv-t1;): 2 Function None 8
+ 9(emptyStruct): 7(ptr) FunctionParameter
+ 11: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.invariantAll.vert.out b/Test/baseResults/spv.invariantAll.vert.out
index ec5ad30..d1703dc 100644
--- a/Test/baseResults/spv.invariantAll.vert.out
+++ b/Test/baseResults/spv.invariantAll.vert.out
@@ -1,6 +1,6 @@
spv.invariantAll.vert
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 25
Capability Shader
diff --git a/Test/baseResults/spv.layer.tese.out b/Test/baseResults/spv.layer.tese.out
index 906340f..fb78e63 100644
--- a/Test/baseResults/spv.layer.tese.out
+++ b/Test/baseResults/spv.layer.tese.out
@@ -1,6 +1,6 @@
spv.layer.tese
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 10
Capability Tessellation
diff --git a/Test/baseResults/spv.layoutNested.vert.out b/Test/baseResults/spv.layoutNested.vert.out
index 7de04d4..2d5111c 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): 8000a
+// Generated by (magic number): 8000b
// 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 8957a3c..93199e7 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 33
Capability Shader
diff --git a/Test/baseResults/spv.load.bool.array.interface.block.frag.out b/Test/baseResults/spv.load.bool.array.interface.block.frag.out
index f45736c..7a80299 100644
--- a/Test/baseResults/spv.load.bool.array.interface.block.frag.out
+++ b/Test/baseResults/spv.load.bool.array.interface.block.frag.out
@@ -1,6 +1,6 @@
spv.load.bool.array.interface.block.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 80
Capability Shader
diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out
index 637fb6d..a9ce54f 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): 8000a
+// Generated by (magic number): 8000b
// 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 7178f35..17f4db4 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): 8000a
+// Generated by (magic number): 8000b
// 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 4de834d..27a84fd 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): 8000a
+// Generated by (magic number): 8000b
// 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 932018f..1201887 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): 8000a
+// Generated by (magic number): 8000b
// 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 a287cda..deeaf90 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): 8000a
+// Generated by (magic number): 8000b
// 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 13f2708..f9cdaeb 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): 8000a
+// Generated by (magic number): 8000b
// 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 fce8c9c..e0a5207 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 105
Capability Shader
diff --git a/Test/baseResults/spv.memoryScopeSemantics.comp.out b/Test/baseResults/spv.memoryScopeSemantics.comp.out
index 56c8470..1078aa5 100644
--- a/Test/baseResults/spv.memoryScopeSemantics.comp.out
+++ b/Test/baseResults/spv.memoryScopeSemantics.comp.out
@@ -1,6 +1,6 @@
spv.memoryScopeSemantics.comp
// Module Version 10300
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 169
Capability Shader
diff --git a/Test/baseResults/spv.merge-unreachable.frag.out b/Test/baseResults/spv.merge-unreachable.frag.out
index dedec9c..2b919dc 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 25
Capability Shader
diff --git a/Test/baseResults/spv.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.meshShaderBuiltins.mesh.out
index b26122e..f6b0f05 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): 8000a
+// Generated by (magic number): 8000b
// 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 86a4fd2..111fa2b 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 126
Capability PerViewAttributesNV
diff --git a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out
index e9eaed3..cd6a95b 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): 8000a
+// Generated by (magic number): 8000b
// 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 bfd2d85..60422d6 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): 8000a
+// Generated by (magic number): 8000b
// 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 9f881e6..f6c2038 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): 8000a
+// Generated by (magic number): 8000b
// 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 7960ffa..9ad333c 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): 8000a
+// Generated by (magic number): 8000b
// 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 be80439..fcbec3d 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): 8000a
+// Generated by (magic number): 8000b
// 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 01ee933..0e5fd05 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 141
Capability MeshShadingNV
diff --git a/Test/baseResults/spv.meshTaskShader.task.out b/Test/baseResults/spv.meshTaskShader.task.out
index 9fed191..9442f97 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): 8000a
+// Generated by (magic number): 8000b
// 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 13a3528..0ff605c 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): 8000a
+// Generated by (magic number): 8000b
// 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 eec734a..50f4b78 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 65
Capability Shader
diff --git a/Test/baseResults/spv.multiView.frag.out b/Test/baseResults/spv.multiView.frag.out
index a1575d9..c6afe8f 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): 8000a
+// Generated by (magic number): 8000b
// 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 b1c29f9..9527951 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): 8000a
+// Generated by (magic number): 8000b
// 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 0a4e1f0..8268e5d 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): 8000a
+// Generated by (magic number): 8000b
// 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 332ca66..723fe21 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): 8000a
+// Generated by (magic number): 8000b
// 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 6322052..65ee22a 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): 8000a
+// Generated by (magic number): 8000b
// 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 4a4d7b3..0185eaf 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): 8000a
+// Generated by (magic number): 8000b
// 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 a8969e0..e92ebcb 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 23
Capability Shader
diff --git a/Test/baseResults/spv.nonSquare.vert.out b/Test/baseResults/spv.nonSquare.vert.out
index 3728dd5..94401be 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): 8000a
+// Generated by (magic number): 8000b
// 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 f6febc9..26b020c 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 289
Capability Shader
diff --git a/Test/baseResults/spv.nonuniform2.frag.out b/Test/baseResults/spv.nonuniform2.frag.out
index bb89ba7..b9d64dd 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 24
Capability Shader
diff --git a/Test/baseResults/spv.nonuniform3.frag.out b/Test/baseResults/spv.nonuniform3.frag.out
index b48916c..119a6d9 100644
--- a/Test/baseResults/spv.nonuniform3.frag.out
+++ b/Test/baseResults/spv.nonuniform3.frag.out
@@ -1,6 +1,6 @@
spv.nonuniform3.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 32
Capability Shader
diff --git a/Test/baseResults/spv.nonuniform4.frag.out b/Test/baseResults/spv.nonuniform4.frag.out
index 6bfc957..4442e5f 100644
--- a/Test/baseResults/spv.nonuniform4.frag.out
+++ b/Test/baseResults/spv.nonuniform4.frag.out
@@ -1,6 +1,6 @@
spv.nonuniform4.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 24
Capability Shader
diff --git a/Test/baseResults/spv.nonuniform5.frag.out b/Test/baseResults/spv.nonuniform5.frag.out
index ebbb6f4..abf10c2 100644
--- a/Test/baseResults/spv.nonuniform5.frag.out
+++ b/Test/baseResults/spv.nonuniform5.frag.out
@@ -1,6 +1,6 @@
spv.nonuniform5.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 23
Capability Shader
diff --git a/Test/baseResults/spv.nullInit.comp.out b/Test/baseResults/spv.nullInit.comp.out
index b7908b5..f432185 100755
--- a/Test/baseResults/spv.nullInit.comp.out
+++ b/Test/baseResults/spv.nullInit.comp.out
@@ -1,6 +1,6 @@
spv.nullInit.comp
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 37
Capability Shader
diff --git a/Test/baseResults/spv.offsets.frag.out b/Test/baseResults/spv.offsets.frag.out
index a1a9f31..d753f2f 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 15
Capability Shader
diff --git a/Test/baseResults/spv.paramMemory.420.frag.out b/Test/baseResults/spv.paramMemory.420.frag.out
index 4cdc35f..bc11df4 100644
--- a/Test/baseResults/spv.paramMemory.420.frag.out
+++ b/Test/baseResults/spv.paramMemory.420.frag.out
@@ -1,7 +1,7 @@
spv.paramMemory.420.frag
Validation failed
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 69
Capability Shader
diff --git a/Test/baseResults/spv.paramMemory.frag.out b/Test/baseResults/spv.paramMemory.frag.out
index a535cd3..ebb2ccb 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): 8000a
+// Generated by (magic number): 8000b
// 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 2a37f2b..079a5f4 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): 8000a
+// Generated by (magic number): 8000b
// 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 549ae91..7218254 100644
--- a/Test/baseResults/spv.pp.line.frag.out
+++ b/Test/baseResults/spv.pp.line.frag.out
@@ -1,18 +1,19 @@
spv.pp.line.frag
-WARNING: spv.pp.line.frag:6: varying deprecated in version 130; may be removed in future release
WARNING: spv.pp.line.frag:7: varying deprecated in version 130; may be removed in future release
+WARNING: spv.pp.line.frag:8: varying deprecated in version 130; may be removed in future release
// Module Version 10000
-// Generated by (magic number): 8000a
-// Id's are bound by 65
+// Generated by (magic number): 8000b
+// Id's are bound by 84
Capability Shader
Capability Sampled1D
2: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 5 "main" 41 53 56 59
+ EntryPoint Fragment 5 "main" 60 72 75 78
ExecutionMode 5 OriginUpperLeft
1: String "spv.pp.line.frag"
+ 13: String "header.h"
Source GLSL 140 1 "// OpModuleProcessed auto-map-locations
// OpModuleProcessed auto-map-bindings
// OpModuleProcessed client vulkan100
@@ -21,6 +22,7 @@
// OpModuleProcessed entry-point main
#line 1
#version 140
+#extension GL_GOOGLE_cpp_style_line_directive : require
uniform sampler1D texSampler1D;
uniform sampler2D texSampler2D;
@@ -30,9 +32,20 @@
in vec2 coords2D;
+#line 0 "header.h"
+float myAbs(float x) {
+ if (x > 0) {
+ return x;
+ }
+ else {
+ return -x;
+ }
+}
+
+#line 22 "spv.pp.line.frag"
void main()
{
- float blendscale = 1.789;
+ float blendscale = myAbs(1.789);
float bias = 2.0;
float coords1D = 1.789;
vec4 color = vec4(0.0, 0.0, 0.0, 0.0);
@@ -46,104 +59,135 @@
gl_FragColor = mix(color, u, blend * blendscale);
}
"
+ SourceExtension "GL_GOOGLE_cpp_style_line_directive"
Name 5 "main"
- Name 9 "blendscale"
- Name 11 "bias"
- Name 13 "coords1D"
- Name 16 "color"
- Name 22 "texSampler1D"
- Name 37 "texSampler2D"
- Name 41 "coords2D"
- Name 53 "gl_FragColor"
- Name 56 "u"
- Name 59 "blend"
- Decorate 22(texSampler1D) DescriptorSet 0
- Decorate 22(texSampler1D) Binding 0
- Decorate 37(texSampler2D) DescriptorSet 0
- Decorate 37(texSampler2D) Binding 1
- Decorate 41(coords2D) Location 2
- Decorate 53(gl_FragColor) Location 0
- Decorate 56(u) Location 1
- Decorate 59(blend) Location 0
+ Name 11 "myAbs(f1;"
+ Name 10 "x"
+ Name 27 "blendscale"
+ Name 29 "param"
+ Name 31 "bias"
+ Name 33 "coords1D"
+ Name 36 "color"
+ Name 41 "texSampler1D"
+ Name 56 "texSampler2D"
+ Name 60 "coords2D"
+ Name 72 "gl_FragColor"
+ Name 75 "u"
+ Name 78 "blend"
+ Decorate 41(texSampler1D) DescriptorSet 0
+ Decorate 41(texSampler1D) Binding 0
+ Decorate 56(texSampler2D) DescriptorSet 0
+ Decorate 56(texSampler2D) Binding 1
+ Decorate 60(coords2D) Location 2
+ Decorate 72(gl_FragColor) Location 0
+ Decorate 75(u) Location 1
+ Decorate 78(blend) Location 0
3: TypeVoid
4: TypeFunction 3
7: TypeFloat 32
8: TypePointer Function 7(float)
- 10: 7(float) Constant 1071971828
- 12: 7(float) Constant 1073741824
- 14: TypeVector 7(float) 4
- 15: TypePointer Function 14(fvec4)
- 17: 7(float) Constant 0
- 18: 14(fvec4) ConstantComposite 17 17 17 17
- 19: TypeImage 7(float) 1D sampled format:Unknown
- 20: TypeSampledImage 19
- 21: TypePointer UniformConstant 20
-22(texSampler1D): 21(ptr) Variable UniformConstant
- 34: TypeImage 7(float) 2D sampled format:Unknown
- 35: TypeSampledImage 34
- 36: TypePointer UniformConstant 35
-37(texSampler2D): 36(ptr) Variable UniformConstant
- 39: TypeVector 7(float) 2
- 40: TypePointer Input 39(fvec2)
- 41(coords2D): 40(ptr) Variable Input
- 52: TypePointer Output 14(fvec4)
-53(gl_FragColor): 52(ptr) Variable Output
- 55: TypePointer Input 14(fvec4)
- 56(u): 55(ptr) Variable Input
- 58: TypePointer Input 7(float)
- 59(blend): 58(ptr) Variable Input
+ 9: TypeFunction 7(float) 8(ptr)
+ 15: 7(float) Constant 0
+ 16: TypeBool
+ 28: 7(float) Constant 1071971828
+ 32: 7(float) Constant 1073741824
+ 34: TypeVector 7(float) 4
+ 35: TypePointer Function 34(fvec4)
+ 37: 34(fvec4) ConstantComposite 15 15 15 15
+ 38: TypeImage 7(float) 1D sampled format:Unknown
+ 39: TypeSampledImage 38
+ 40: TypePointer UniformConstant 39
+41(texSampler1D): 40(ptr) Variable UniformConstant
+ 53: TypeImage 7(float) 2D sampled format:Unknown
+ 54: TypeSampledImage 53
+ 55: TypePointer UniformConstant 54
+56(texSampler2D): 55(ptr) Variable UniformConstant
+ 58: TypeVector 7(float) 2
+ 59: TypePointer Input 58(fvec2)
+ 60(coords2D): 59(ptr) Variable Input
+ 71: TypePointer Output 34(fvec4)
+72(gl_FragColor): 71(ptr) Variable Output
+ 74: TypePointer Input 34(fvec4)
+ 75(u): 74(ptr) Variable Input
+ 77: TypePointer Input 7(float)
+ 78(blend): 77(ptr) Variable Input
+ Line 1 23 11
5(main): 3 Function None 4
6: Label
- 9(blendscale): 8(ptr) Variable Function
- 11(bias): 8(ptr) Variable Function
- 13(coords1D): 8(ptr) Variable Function
- 16(color): 15(ptr) Variable Function
- Line 1 13 0
- Store 9(blendscale) 10
- Line 1 14 0
- Store 11(bias) 12
- Line 1 15 0
- Store 13(coords1D) 10
- Line 1 16 0
- Store 16(color) 18
+ 27(blendscale): 8(ptr) Variable Function
+ 29(param): 8(ptr) Variable Function
+ 31(bias): 8(ptr) Variable Function
+ 33(coords1D): 8(ptr) Variable Function
+ 36(color): 35(ptr) Variable Function
+ Line 1 25 0
+ Store 29(param) 28
+ 30: 7(float) FunctionCall 11(myAbs(f1;) 29(param)
+ Store 27(blendscale) 30
+ Line 1 26 0
+ Store 31(bias) 32
+ Line 1 27 0
+ Store 33(coords1D) 28
+ Line 1 28 0
+ Store 36(color) 37
Line 1 54 0
- 23: 20 Load 22(texSampler1D)
- 24: 7(float) Load 13(coords1D)
- 25: 14(fvec4) ImageSampleImplicitLod 23 24
- 26: 14(fvec4) Load 16(color)
- 27: 14(fvec4) FAdd 26 25
- Store 16(color) 27
+ 42: 39 Load 41(texSampler1D)
+ 43: 7(float) Load 33(coords1D)
+ 44: 34(fvec4) ImageSampleImplicitLod 42 43
+ 45: 34(fvec4) Load 36(color)
+ 46: 34(fvec4) FAdd 45 44
+ Store 36(color) 46
Line 1 55 0
- 28: 20 Load 22(texSampler1D)
- 29: 7(float) Load 13(coords1D)
- 30: 7(float) Load 11(bias)
- 31: 14(fvec4) ImageSampleImplicitLod 28 29 Bias 30
- 32: 14(fvec4) Load 16(color)
- 33: 14(fvec4) FAdd 32 31
- Store 16(color) 33
+ 47: 39 Load 41(texSampler1D)
+ 48: 7(float) Load 33(coords1D)
+ 49: 7(float) Load 31(bias)
+ 50: 34(fvec4) ImageSampleImplicitLod 47 48 Bias 49
+ 51: 34(fvec4) Load 36(color)
+ 52: 34(fvec4) FAdd 51 50
+ Store 36(color) 52
Line 1 103 0
- 38: 35 Load 37(texSampler2D)
- 42: 39(fvec2) Load 41(coords2D)
- 43: 14(fvec4) ImageSampleImplicitLod 38 42
- 44: 14(fvec4) Load 16(color)
- 45: 14(fvec4) FAdd 44 43
- Store 16(color) 45
+ 57: 54 Load 56(texSampler2D)
+ 61: 58(fvec2) Load 60(coords2D)
+ 62: 34(fvec4) ImageSampleImplicitLod 57 61
+ 63: 34(fvec4) Load 36(color)
+ 64: 34(fvec4) FAdd 63 62
+ Store 36(color) 64
Line 1 104 0
- 46: 35 Load 37(texSampler2D)
- 47: 39(fvec2) Load 41(coords2D)
- 48: 7(float) Load 11(bias)
- 49: 14(fvec4) ImageSampleImplicitLod 46 47 Bias 48
- 50: 14(fvec4) Load 16(color)
- 51: 14(fvec4) FAdd 50 49
- Store 16(color) 51
+ 65: 54 Load 56(texSampler2D)
+ 66: 58(fvec2) Load 60(coords2D)
+ 67: 7(float) Load 31(bias)
+ 68: 34(fvec4) ImageSampleImplicitLod 65 66 Bias 67
+ 69: 34(fvec4) Load 36(color)
+ 70: 34(fvec4) FAdd 69 68
+ Store 36(color) 70
Line 1 106 0
- 54: 14(fvec4) Load 16(color)
- 57: 14(fvec4) Load 56(u)
- 60: 7(float) Load 59(blend)
- 61: 7(float) Load 9(blendscale)
- 62: 7(float) FMul 60 61
- 63: 14(fvec4) CompositeConstruct 62 62 62 62
- 64: 14(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 54 57 63
- Store 53(gl_FragColor) 64
+ 73: 34(fvec4) Load 36(color)
+ 76: 34(fvec4) Load 75(u)
+ 79: 7(float) Load 78(blend)
+ 80: 7(float) Load 27(blendscale)
+ 81: 7(float) FMul 79 80
+ 82: 34(fvec4) CompositeConstruct 81 81 81 81
+ 83: 34(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 73 76 82
+ Store 72(gl_FragColor) 83
Return
FunctionEnd
+ Line 13 1 20
+ 11(myAbs(f1;): 7(float) Function None 9
+ 10(x): 8(ptr) FunctionParameter
+ 12: Label
+ Line 13 2 0
+ 14: 7(float) Load 10(x)
+ 17: 16(bool) FOrdGreaterThan 14 15
+ SelectionMerge 19 None
+ BranchConditional 17 18 22
+ 18: Label
+ Line 13 3 0
+ 20: 7(float) Load 10(x)
+ ReturnValue 20
+ 22: Label
+ Line 13 6 0
+ 23: 7(float) Load 10(x)
+ 24: 7(float) FNegate 23
+ ReturnValue 24
+ 19: Label
+ Unreachable
+ FunctionEnd
diff --git a/Test/baseResults/spv.precise.tesc.out b/Test/baseResults/spv.precise.tesc.out
index e13c612..84617ca 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): 8000a
+// Generated by (magic number): 8000b
// 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 7db4ed0..6fe183d 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): 8000a
+// Generated by (magic number): 8000b
// 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 1d31230..8144dfb 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 165
Capability Shader
diff --git a/Test/baseResults/spv.precisionArgs.frag.out b/Test/baseResults/spv.precisionArgs.frag.out
index ae54a58..a35b1d3 100644
--- a/Test/baseResults/spv.precisionArgs.frag.out
+++ b/Test/baseResults/spv.precisionArgs.frag.out
@@ -1,6 +1,6 @@
spv.precisionArgs.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 83
Capability Shader
diff --git a/Test/baseResults/spv.precisionNonESSamp.frag.out b/Test/baseResults/spv.precisionNonESSamp.frag.out
index c4cd1eb..40ca536 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 47
Capability Shader
diff --git a/Test/baseResults/spv.precisionTexture.frag.out b/Test/baseResults/spv.precisionTexture.frag.out
index d5e21b6..e46b2d7 100644
--- a/Test/baseResults/spv.precisionTexture.frag.out
+++ b/Test/baseResults/spv.precisionTexture.frag.out
@@ -1,6 +1,6 @@
spv.precisionTexture.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 66
Capability Shader
diff --git a/Test/baseResults/spv.prepost.frag.out b/Test/baseResults/spv.prepost.frag.out
index 5fd6b37..b1f2d5e 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): 8000a
+// Generated by (magic number): 8000b
// 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 d5ad68a..b09062a 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): 8000a
+// Generated by (magic number): 8000b
// 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 888d134..f6df47d 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): 8000a
+// Generated by (magic number): 8000b
// 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 75efdbc..ca7d345 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): 8000a
+// Generated by (magic number): 8000b
// 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 4180e17..0f0f347 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): 8000a
+// Generated by (magic number): 8000b
// 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 1e38661..1e18387 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 224
Capability Shader
diff --git a/Test/baseResults/spv.queueFamilyScope.comp.out b/Test/baseResults/spv.queueFamilyScope.comp.out
index 9c239df..49a59a3 100644
--- a/Test/baseResults/spv.queueFamilyScope.comp.out
+++ b/Test/baseResults/spv.queueFamilyScope.comp.out
@@ -1,6 +1,6 @@
spv.queueFamilyScope.comp
// Module Version 10300
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 21
Capability Shader
diff --git a/Test/baseResults/spv.rankShift.comp.out b/Test/baseResults/spv.rankShift.comp.out
index 1a725c1..cecde79 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): 8000a
+// Generated by (magic number): 8000b
// 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 26b149b..61d920c 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): 8000a
+// Generated by (magic number): 8000b
// 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 e347ce2..b4db04e 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 155
Capability Shader
diff --git a/Test/baseResults/spv.register.autoassign.rangetest.frag.out b/Test/baseResults/spv.register.autoassign.rangetest.frag.out
index 4381dab..84a439a 100644
--- a/Test/baseResults/spv.register.autoassign.rangetest.frag.out
+++ b/Test/baseResults/spv.register.autoassign.rangetest.frag.out
@@ -3,7 +3,7 @@
INTERNAL ERROR: mapped binding out of range: g_tScene
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 52
Capability Shader
diff --git a/Test/baseResults/spv.register.noautoassign.frag.out b/Test/baseResults/spv.register.noautoassign.frag.out
index ed8d507..8c8cd3c 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): 8000a
+// Generated by (magic number): 8000b
// 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 acd447d..7c69c91 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): 8000a
+// Generated by (magic number): 8000b
// 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 27db336..0c46493 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 45
Capability Shader
diff --git a/Test/baseResults/spv.sample.frag.out b/Test/baseResults/spv.sample.frag.out
index f43fc98..631a559 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): 8000a
+// Generated by (magic number): 8000b
// 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 8f9bc38..7f3232d 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): 8000a
+// Generated by (magic number): 8000b
// 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 9b401d8..6f22c5a 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): 8000a
+// Generated by (magic number): 8000b
// 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 8012830..6c98add 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): 8000a
+// Generated by (magic number): 8000b
// 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 c2c431d..4479912 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): 8000a
+// Generated by (magic number): 8000b
// 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 e08721f..977f06b 100644
--- a/Test/baseResults/spv.scalarlayout.frag.out
+++ b/Test/baseResults/spv.scalarlayout.frag.out
@@ -1,6 +1,6 @@
spv.scalarlayout.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// 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 4f22730..93c0d2a 100644
--- a/Test/baseResults/spv.scalarlayoutfloat16.frag.out
+++ b/Test/baseResults/spv.scalarlayoutfloat16.frag.out
@@ -1,6 +1,6 @@
spv.scalarlayoutfloat16.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// 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 d31f897..b960934 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): 8000a
+// Generated by (magic number): 8000b
// 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 245b4bd..b311c70 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): 8000a
+// Generated by (magic number): 8000b
// 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 2a0106e..143b2e9 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 397
Capability Shader
diff --git a/Test/baseResults/spv.shaderBallotAMD.comp.out b/Test/baseResults/spv.shaderBallotAMD.comp.out
index 9ea5ba0..2d8ad55 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): 8000a
+// Generated by (magic number): 8000b
// 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 5baabbf..a84c2fe 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): 8000a
+// Generated by (magic number): 8000b
// 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 ab48e04..3b46114 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): 8000a
+// Generated by (magic number): 8000b
// 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 4c45e33..0724170 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): 8000a
+// Generated by (magic number): 8000b
// 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 ea8873c..743fd36 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): 8000a
+// Generated by (magic number): 8000b
// 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 f73349c..ca85473 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 10
Capability Shader
@@ -10,6 +10,7 @@
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 8
ExecutionMode 4 OriginUpperLeft
+ ExecutionMode 4 StencilRefReplacingEXT
Source GLSL 450
SourceExtension "GL_ARB_shader_stencil_export"
Name 4 "main"
diff --git a/Test/baseResults/spv.shadingRate.frag.out b/Test/baseResults/spv.shadingRate.frag.out
index 866ae60..86079ce 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): 8000a
+// Generated by (magic number): 8000b
// 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 03f7546..6f232a0 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): 8000a
+// Generated by (magic number): 8000b
// 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 3c706f7..017c88d 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): 8000a
+// Generated by (magic number): 8000b
// 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 bda91b7..8e879bb 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): 8000a
+// Generated by (magic number): 8000b
// 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 cc9b2b2..e1accbf 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): 8000a
+// Generated by (magic number): 8000b
// 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 3fafa04..1619cf6 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): 8000a
+// Generated by (magic number): 8000b
// 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 91ad637..c03c3cd 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): 8000a
+// Generated by (magic number): 8000b
// 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 bf44b81..84ca757 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 442
Capability Shader
diff --git a/Test/baseResults/spv.sparseTextureClamp.frag.out b/Test/baseResults/spv.sparseTextureClamp.frag.out
index f42326d..e56297c 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): 8000a
+// Generated by (magic number): 8000b
// 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 a510dc9..a2e234b 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): 8000a
+// Generated by (magic number): 8000b
// 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 a4e769f..bfe7114 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 27
Capability Shader
diff --git a/Test/baseResults/spv.specConstant.float16.comp.out b/Test/baseResults/spv.specConstant.float16.comp.out
index be02057..3381fc7 100644
--- a/Test/baseResults/spv.specConstant.float16.comp.out
+++ b/Test/baseResults/spv.specConstant.float16.comp.out
@@ -1,6 +1,6 @@
spv.specConstant.float16.comp
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 18
Capability Shader
diff --git a/Test/baseResults/spv.specConstant.int16.comp.out b/Test/baseResults/spv.specConstant.int16.comp.out
index 7bb4c8f..17f385b 100644
--- a/Test/baseResults/spv.specConstant.int16.comp.out
+++ b/Test/baseResults/spv.specConstant.int16.comp.out
@@ -1,6 +1,6 @@
spv.specConstant.int16.comp
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 18
Capability Shader
diff --git a/Test/baseResults/spv.specConstant.int8.comp.out b/Test/baseResults/spv.specConstant.int8.comp.out
index 0ab3bdc..c906d71 100644
--- a/Test/baseResults/spv.specConstant.int8.comp.out
+++ b/Test/baseResults/spv.specConstant.int8.comp.out
@@ -1,6 +1,6 @@
spv.specConstant.int8.comp
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 18
Capability Shader
diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out
index f7d4381..cc126ab 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 81
Capability Shader
diff --git a/Test/baseResults/spv.specConstantComposite.vert.out b/Test/baseResults/spv.specConstantComposite.vert.out
index 15777d8..ce9ce06 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): 8000a
+// Generated by (magic number): 8000b
// 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 5366460..cb1f739 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 162
Capability Shader
diff --git a/Test/baseResults/spv.specTexture.frag.out b/Test/baseResults/spv.specTexture.frag.out
index 4ca488e..b599e35 100644
--- a/Test/baseResults/spv.specTexture.frag.out
+++ b/Test/baseResults/spv.specTexture.frag.out
@@ -1,6 +1,6 @@
spv.specTexture.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 23
Capability Shader
diff --git a/Test/baseResults/spv.ssbo.autoassign.frag.out b/Test/baseResults/spv.ssbo.autoassign.frag.out
index e2db863..3538105 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): 8000a
+// Generated by (magic number): 8000b
// 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 cdcd222..0a5a12b 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): 8000a
+// Generated by (magic number): 8000b
// 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 f01e53b..100b553 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 42
Capability Tessellation
diff --git a/Test/baseResults/spv.stereoViewRendering.vert.out b/Test/baseResults/spv.stereoViewRendering.vert.out
index e74921a..530d75e 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): 8000a
+// Generated by (magic number): 8000b
// 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 2411d2f..fdbb4db 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): 8000a
+// Generated by (magic number): 8000b
// 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 8e82cac..a0cfb54 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): 8000a
+// Generated by (magic number): 8000b
// 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 94fc4e2..a528a59 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): 8000a
+// Generated by (magic number): 8000b
// 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 00fed0e..6b39c29 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): 8000a
+// Generated by (magic number): 8000b
// 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 a3e427f..a882a22 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): 8000a
+// Generated by (magic number): 8000b
// 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 27f05b2..3340595 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): 8000a
+// Generated by (magic number): 8000b
// 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 8322a4a..aaac4b8 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): 8000a
+// Generated by (magic number): 8000b
// 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 360f98b..f989981 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): 8000a
+// Generated by (magic number): 8000b
// 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 6de8a0a..6add1c7 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): 8000a
+// Generated by (magic number): 8000b
// 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 87bfa31..bd71fc7 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 2386
Capability Shader
diff --git a/Test/baseResults/spv.subgroupBallot.comp.out b/Test/baseResults/spv.subgroupBallot.comp.out
index 65cfa7a..51cb7ac 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 437
Capability Shader
diff --git a/Test/baseResults/spv.subgroupBasic.comp.out b/Test/baseResults/spv.subgroupBasic.comp.out
index fb9fa0c..51eae75 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): 8000a
+// Generated by (magic number): 8000b
// 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 a2e486d..2529eef 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 838
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out
index 828ce61..51c2a5e 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 4218
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out
index 60f01bc..0a706a5 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 498
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out
index 98a7a89..f876c5a 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 1458
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out
index 47576d9..f2cb8cb 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 1743
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out
index f385545..8aa7c12 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 918
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out
index eaea708..0051bd7 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 554
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out
index 8665c46..46244ba 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 554
Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out
index 6fde1f9..a53847c 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): 8000a
+// Generated by (magic number): 8000b
// 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 0e7b7ef..922d393 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 2807
Capability Shader
diff --git a/Test/baseResults/spv.subgroupQuad.comp.out b/Test/baseResults/spv.subgroupQuad.comp.out
index 143d01d..b418148 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 696
Capability Shader
diff --git a/Test/baseResults/spv.subgroupShuffle.comp.out b/Test/baseResults/spv.subgroupShuffle.comp.out
index 02cf89f..d54e8ae 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 420
Capability Shader
diff --git a/Test/baseResults/spv.subgroupShuffleRelative.comp.out b/Test/baseResults/spv.subgroupShuffleRelative.comp.out
index e8486b6..6bae808 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 420
Capability Shader
diff --git a/Test/baseResults/spv.subgroupSizeARB.frag.out b/Test/baseResults/spv.subgroupSizeARB.frag.out
new file mode 100644
index 0000000..5eeb0c0
--- /dev/null
+++ b/Test/baseResults/spv.subgroupSizeARB.frag.out
@@ -0,0 +1,34 @@
+spv.subgroupSizeARB.frag
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 12
+
+ Capability Shader
+ Capability SubgroupBallotKHR
+ Extension "SPV_KHR_shader_ballot"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 8 10
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_ARB_shader_ballot"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ Name 4 "main"
+ Name 8 "result"
+ Name 10 "gl_SubGroupSizeARB"
+ Decorate 8(result) Location 0
+ Decorate 10(gl_SubGroupSizeARB) Flat
+ Decorate 10(gl_SubGroupSizeARB) BuiltIn SubgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Output 6(int)
+ 8(result): 7(ptr) Variable Output
+ 9: TypePointer Input 6(int)
+10(gl_SubGroupSizeARB): 9(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 11: 6(int) Load 10(gl_SubGroupSizeARB)
+ Store 8(result) 11
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupUniformControlFlow.vert.out b/Test/baseResults/spv.subgroupUniformControlFlow.vert.out
index b7fce5a..a189186 100644
--- a/Test/baseResults/spv.subgroupUniformControlFlow.vert.out
+++ b/Test/baseResults/spv.subgroupUniformControlFlow.vert.out
@@ -2,7 +2,7 @@
WARNING: 0:7: '' : attribute with arguments not recognized, skipping
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 6
Capability Shader
diff --git a/Test/baseResults/spv.subgroupVote.comp.out b/Test/baseResults/spv.subgroupVote.comp.out
index ad8ffaa..fa0a01f 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): 8000a
+// Generated by (magic number): 8000b
// 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 6b534a6..bf49b08 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): 8000a
+// Generated by (magic number): 8000b
// 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 9c68657..4e7db4d 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): 8000a
+// Generated by (magic number): 8000b
// 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 2aa31e8..f42a34b 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 117
Capability Shader
diff --git a/Test/baseResults/spv.swizzleInversion.frag.out b/Test/baseResults/spv.swizzleInversion.frag.out
index 8d09934..32a0132 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 46
Capability Shader
diff --git a/Test/baseResults/spv.terminate.frag.out b/Test/baseResults/spv.terminate.frag.out
index 39cb151..d76a487 100755
--- a/Test/baseResults/spv.terminate.frag.out
+++ b/Test/baseResults/spv.terminate.frag.out
@@ -1,6 +1,6 @@
spv.terminate.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 7
Capability Shader
diff --git a/Test/baseResults/spv.test.frag.out b/Test/baseResults/spv.test.frag.out
index fddcdb8..c5d6384 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): 8000a
+// Generated by (magic number): 8000b
// 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 3eb6435..350ee78 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): 8000a
+// Generated by (magic number): 8000b
// 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 841bbd3..dc1970a 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): 8000a
+// Generated by (magic number): 8000b
// 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 a297ea7..4e9534e 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): 8000a
+// Generated by (magic number): 8000b
// 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 544a0f3..35053f3 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): 8000a
+// Generated by (magic number): 8000b
// 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 d18c656..f5b271f 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 42
Capability Shader
diff --git a/Test/baseResults/spv.textureError.frag.out b/Test/baseResults/spv.textureError.frag.out
new file mode 100644
index 0000000..d5ef59c
--- /dev/null
+++ b/Test/baseResults/spv.textureError.frag.out
@@ -0,0 +1,6 @@
+spv.textureError.frag
+ERROR: spv.textureError.frag:8: 'texture*D*' : function not supported in this version; use texture() instead
+ERROR: 1 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.textureGatherBiasLod.frag.out b/Test/baseResults/spv.textureGatherBiasLod.frag.out
index 3a9bb80..f47e16a 100644
--- a/Test/baseResults/spv.textureGatherBiasLod.frag.out
+++ b/Test/baseResults/spv.textureGatherBiasLod.frag.out
@@ -1,6 +1,6 @@
spv.textureGatherBiasLod.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// 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 3e35da2..6a0e0f0 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): 8000a
+// Generated by (magic number): 8000b
// 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 7dbc3b3..a78acae 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): 8000a
+// Generated by (magic number): 8000b
// 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 fa66f2b..09cd353 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 60
Capability Shader
diff --git a/Test/baseResults/spv.uniformInitializer.frag.out b/Test/baseResults/spv.uniformInitializer.frag.out
index 63595ae..abebf62 100644
--- a/Test/baseResults/spv.uniformInitializer.frag.out
+++ b/Test/baseResults/spv.uniformInitializer.frag.out
@@ -1,6 +1,6 @@
spv.uniformInitializer.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 16
Capability Shader
diff --git a/Test/baseResults/spv.uniformInitializerStruct.frag.out b/Test/baseResults/spv.uniformInitializerStruct.frag.out
index 5ce854d..058bc34 100644
--- a/Test/baseResults/spv.uniformInitializerStruct.frag.out
+++ b/Test/baseResults/spv.uniformInitializerStruct.frag.out
@@ -1,6 +1,6 @@
spv.uniformInitializerStruct.frag
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 63
Capability Shader
diff --git a/Test/baseResults/spv.unit1.frag.out b/Test/baseResults/spv.unit1.frag.out
index 02ddfec..b4de7bd 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): 8000a
+// Generated by (magic number): 8000b
// 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 ee57d43..f78119c 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): 8000a
+// Generated by (magic number): 8000b
// 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 1e6334a..9d001bc 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): 8000a
+// Generated by (magic number): 8000b
// 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 ac9d192..00135f6 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): 8000a
+// Generated by (magic number): 8000b
// 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 bfe5ae7..5f3a233 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): 8000a
+// Generated by (magic number): 8000b
// 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 e95ada4..f719a97 100644
--- a/Test/baseResults/spv.viewportArray2.tesc.out
+++ b/Test/baseResults/spv.viewportArray2.tesc.out
@@ -1,6 +1,6 @@
spv.viewportArray2.tesc
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 23
Capability Tessellation
diff --git a/Test/baseResults/spv.viewportArray2.vert.out b/Test/baseResults/spv.viewportArray2.vert.out
index cf29cd7..d916b4d 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 19
Capability Shader
diff --git a/Test/baseResults/spv.viewportindex.tese.out b/Test/baseResults/spv.viewportindex.tese.out
index 12a30cf..46b1faa 100644
--- a/Test/baseResults/spv.viewportindex.tese.out
+++ b/Test/baseResults/spv.viewportindex.tese.out
@@ -1,6 +1,6 @@
spv.viewportindex.tese
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 10
Capability Tessellation
diff --git a/Test/baseResults/spv.voidFunction.frag.out b/Test/baseResults/spv.voidFunction.frag.out
index c77285b..4a0cc26 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 43
Capability Shader
diff --git a/Test/baseResults/spv.volatileAtomic.comp.out b/Test/baseResults/spv.volatileAtomic.comp.out
index 0364d90..53673d3 100644
--- a/Test/baseResults/spv.volatileAtomic.comp.out
+++ b/Test/baseResults/spv.volatileAtomic.comp.out
@@ -1,6 +1,6 @@
spv.volatileAtomic.comp
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 18
Capability Shader
diff --git a/Test/baseResults/spv.vulkan110.int16.frag.out b/Test/baseResults/spv.vulkan110.int16.frag.out
index 47388a2..d5c83d5 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 535
Capability Shader
diff --git a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out
index 0774960..ab88c58 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): 8000a
+// Generated by (magic number): 8000b
// 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 246e5fd..7a0bfb0 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): 8000a
+// Generated by (magic number): 8000b
// 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 894dea1..922860f 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): 8000a
+// Generated by (magic number): 8000b
// 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 6155f7b..b796b29 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): 8000a
+// Generated by (magic number): 8000b
// 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 3fdc60b..4283e20 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): 8000a
+// Generated by (magic number): 8000b
// 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 cbb8fc6..b4b09bd 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): 8000a
+// Generated by (magic number): 8000b
// 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 ef53b9a..a7e8856 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): 8000a
+// Generated by (magic number): 8000b
// 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 e2c6093..eb91100 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): 8000a
+// Generated by (magic number): 8000b
// 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 499ac8c..467a5ae 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): 8000a
+// Generated by (magic number): 8000b
// 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 f7476c7..633558d 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): 8000a
+// Generated by (magic number): 8000b
// 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 bbd7768..8bf1f0d 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 33
Capability Shader
diff --git a/Test/baseResults/test.conf b/Test/baseResults/test.conf
index 98b2a84..e4cf409 100644
--- a/Test/baseResults/test.conf
+++ b/Test/baseResults/test.conf
@@ -90,6 +90,15 @@
MaxTaskWorkGroupSizeY_NV 1
MaxTaskWorkGroupSizeZ_NV 1
MaxMeshViewCountNV 4
+MaxMeshOutputVerticesEXT 256
+MaxMeshOutputPrimitivesEXT 256
+MaxMeshWorkGroupSizeX_EXT 128
+MaxMeshWorkGroupSizeY_EXT 128
+MaxMeshWorkGroupSizeZ_EXT 128
+MaxTaskWorkGroupSizeX_EXT 128
+MaxTaskWorkGroupSizeY_EXT 128
+MaxTaskWorkGroupSizeZ_EXT 128
+MaxMeshViewCountEXT 4
MaxDualSourceDrawBuffersEXT 1
nonInductiveForLoops 1
whileLoops 1
diff --git a/Test/baseResults/textureQueryLOD.frag.out b/Test/baseResults/textureQueryLOD.frag.out
new file mode 100644
index 0000000..b565a00
--- /dev/null
+++ b/Test/baseResults/textureQueryLOD.frag.out
@@ -0,0 +1,115 @@
+textureQueryLOD.frag
+WARNING: 0:7: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
+
+Shader version: 150
+Requested GL_ARB_gpu_shader5
+Requested GL_ARB_texture_query_lod
+0:? Sequence
+0:24 Function Definition: main( ( global void)
+0:24 Function Parameters:
+0:26 Sequence
+0:26 switch
+0:26 condition
+0:26 'funct' ( uniform int)
+0:26 body
+0:26 Sequence
+0:28 case: with expression
+0:28 Constant:
+0:28 0 (const int)
+0:? Sequence
+0:29 Sequence
+0:29 move second child to first child ( temp 2-component vector of int)
+0:29 'iv2' ( temp 2-component vector of int)
+0:29 textureSize ( global 2-component vector of int)
+0:29 'sampler' ( uniform sampler2DShadow)
+0:29 Constant:
+0:29 0 (const int)
+0:31 Sequence
+0:31 move second child to first child ( temp 2-component vector of float)
+0:31 'fv2' ( temp 2-component vector of float)
+0:31 textureQueryLod ( global 2-component vector of float)
+0:31 'sampler' ( uniform sampler2DShadow)
+0:31 Constant:
+0:31 0.000000
+0:31 0.000000
+0:33 move second child to first child ( temp 4-component vector of float)
+0:33 'color' ( out 4-component vector of float)
+0:33 Construct vec4 ( temp 4-component vector of float)
+0:33 Convert int to float ( temp 2-component vector of float)
+0:33 'iv2' ( temp 2-component vector of int)
+0:33 'fv2' ( temp 2-component vector of float)
+0:34 Branch: Break
+0:35 default:
+0:? Sequence
+0:36 move second child to first child ( temp 4-component vector of float)
+0:36 'color' ( out 4-component vector of float)
+0:36 Constant:
+0:36 1.000000
+0:36 1.000000
+0:36 1.000000
+0:36 1.000000
+0:37 Branch: Break
+0:? Linker Objects
+0:? 'vUV' ( smooth in 2-component vector of float)
+0:? 'color' ( out 4-component vector of float)
+0:? 'sampler' ( uniform sampler2DShadow)
+0:? 'funct' ( uniform int)
+
+
+Linked fragment stage:
+
+
+Shader version: 150
+Requested GL_ARB_gpu_shader5
+Requested GL_ARB_texture_query_lod
+0:? Sequence
+0:24 Function Definition: main( ( global void)
+0:24 Function Parameters:
+0:26 Sequence
+0:26 switch
+0:26 condition
+0:26 'funct' ( uniform int)
+0:26 body
+0:26 Sequence
+0:28 case: with expression
+0:28 Constant:
+0:28 0 (const int)
+0:? Sequence
+0:29 Sequence
+0:29 move second child to first child ( temp 2-component vector of int)
+0:29 'iv2' ( temp 2-component vector of int)
+0:29 textureSize ( global 2-component vector of int)
+0:29 'sampler' ( uniform sampler2DShadow)
+0:29 Constant:
+0:29 0 (const int)
+0:31 Sequence
+0:31 move second child to first child ( temp 2-component vector of float)
+0:31 'fv2' ( temp 2-component vector of float)
+0:31 textureQueryLod ( global 2-component vector of float)
+0:31 'sampler' ( uniform sampler2DShadow)
+0:31 Constant:
+0:31 0.000000
+0:31 0.000000
+0:33 move second child to first child ( temp 4-component vector of float)
+0:33 'color' ( out 4-component vector of float)
+0:33 Construct vec4 ( temp 4-component vector of float)
+0:33 Convert int to float ( temp 2-component vector of float)
+0:33 'iv2' ( temp 2-component vector of int)
+0:33 'fv2' ( temp 2-component vector of float)
+0:34 Branch: Break
+0:35 default:
+0:? Sequence
+0:36 move second child to first child ( temp 4-component vector of float)
+0:36 'color' ( out 4-component vector of float)
+0:36 Constant:
+0:36 1.000000
+0:36 1.000000
+0:36 1.000000
+0:36 1.000000
+0:37 Branch: Break
+0:? Linker Objects
+0:? 'vUV' ( smooth in 2-component vector of float)
+0:? 'color' ( out 4-component vector of float)
+0:? 'sampler' ( uniform sampler2DShadow)
+0:? 'funct' ( uniform int)
+
diff --git a/Test/baseResults/vk.relaxed.changeSet.vert.out b/Test/baseResults/vk.relaxed.changeSet.vert.out
index d2beff9..d7502a3 100755
--- a/Test/baseResults/vk.relaxed.changeSet.vert.out
+++ b/Test/baseResults/vk.relaxed.changeSet.vert.out
@@ -139,7 +139,7 @@
0:? 'UV' ( smooth in highp 2-component vector of float)
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 46
Capability Shader
@@ -232,7 +232,7 @@
Return
FunctionEnd
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 27
Capability Shader
diff --git a/Test/baseResults/vk.relaxed.frag.out b/Test/baseResults/vk.relaxed.frag.out
index d98910e..c88782f 100644
--- a/Test/baseResults/vk.relaxed.frag.out
+++ b/Test/baseResults/vk.relaxed.frag.out
@@ -553,7 +553,7 @@
0:? 'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3})
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 163
Capability Shader
diff --git a/Test/baseResults/vk.relaxed.link1.frag.out b/Test/baseResults/vk.relaxed.link1.frag.out
index 9dac4c6..1e67646 100644
--- a/Test/baseResults/vk.relaxed.link1.frag.out
+++ b/Test/baseResults/vk.relaxed.link1.frag.out
@@ -348,7 +348,7 @@
0:? 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2, coherent volatile buffer highp uint counter3})
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 105
Capability Shader
diff --git a/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out
new file mode 100755
index 0000000..37532ed
--- /dev/null
+++ b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out
@@ -0,0 +1,10697 @@
+vk.relaxed.stagelink.0.0.vert
+Shader version: 460
+0:? Sequence
+0:11 Function Definition: main( ( global void)
+0:11 Function Parameters:
+0:15 Sequence
+0:15 Sequence
+0:15 Sequence
+0:15 move second child to first child ( temp highp 3-component vector of float)
+0:15 'texcoord' ( temp highp 3-component vector of float)
+0:15 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float)
+0:15 direct index (layout( location=3) temp highp 3-component vector of float)
+0:15 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp highp 3-component vector of float)
+0:16 vector swizzle ( temp highp 3-component vector of float)
+0:16 texCoord0: direct index for structure ( out highp 3-component vector of float)
+0:16 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:16 Constant:
+0:16 2 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 2 (const int)
+0:16 vector swizzle ( temp highp 3-component vector of float)
+0:16 'texcoord' ( temp highp 3-component vector of float)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 2 (const int)
+0:20 move second child to first child ( temp highp int)
+0:20 instance: direct index for structure ( flat out highp int)
+0:20 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:20 Constant:
+0:20 4 (const int)
+0:20 Function Call: TDInstanceID( ( global highp int)
+0:21 Sequence
+0:21 move second child to first child ( temp highp 4-component vector of float)
+0:21 'worldSpacePos' ( temp highp 4-component vector of float)
+0:21 Function Call: TDDeform(vf3; ( global highp 4-component vector of float)
+0:21 'P' (layout( location=0) in highp 3-component vector of float)
+0:22 Sequence
+0:22 move second child to first child ( temp highp 3-component vector of float)
+0:22 'uvUnwrapCoord' ( temp highp 3-component vector of float)
+0:22 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float)
+0:22 Function Call: TDUVUnwrapCoord( ( global highp 3-component vector of float)
+0:23 move second child to first child ( temp highp 4-component vector of float)
+0:23 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:23 '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, out unsized 1-element array of float CullDistance gl_CullDistance})
+0:23 Constant:
+0:23 0 (const uint)
+0:23 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:23 'worldSpacePos' ( temp highp 4-component vector of float)
+0:23 'uvUnwrapCoord' ( temp highp 3-component vector of float)
+0:32 Sequence
+0:32 move second child to first child ( temp highp int)
+0:32 'cameraIndex' ( temp highp int)
+0:32 Function Call: TDCameraIndex( ( global highp int)
+0:33 move second child to first child ( temp highp int)
+0:33 cameraIndex: direct index for structure ( flat out highp int)
+0:33 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:33 Constant:
+0:33 3 (const int)
+0:33 'cameraIndex' ( temp highp int)
+0:34 move second child to first child ( temp highp 3-component vector of float)
+0:34 vector swizzle ( temp highp 3-component vector of float)
+0:34 worldSpacePos: direct index for structure ( out highp 3-component vector of float)
+0:34 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:34 Constant:
+0:34 1 (const int)
+0:34 Sequence
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 1 (const int)
+0:34 Constant:
+0:34 2 (const int)
+0:34 vector swizzle ( temp highp 3-component vector of float)
+0:34 'worldSpacePos' ( temp highp 4-component vector of float)
+0:34 Sequence
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 1 (const int)
+0:34 Constant:
+0:34 2 (const int)
+0:35 move second child to first child ( temp highp 4-component vector of float)
+0:35 color: direct index for structure ( out highp 4-component vector of float)
+0:35 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:35 Constant:
+0:35 0 (const int)
+0:35 Function Call: TDInstanceColor(vf4; ( global highp 4-component vector of float)
+0:35 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'P' (layout( location=0) in highp 3-component vector of float)
+0:? 'N' (layout( location=1) in highp 3-component vector of float)
+0:? 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:? 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:? 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+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, out unsized 1-element array of float CullDistance gl_CullDistance})
+0:? 'gl_VertexIndex' ( in int VertexIndex)
+0:? 'gl_InstanceIndex' ( in int InstanceIndex)
+
+vk.relaxed.stagelink.0.1.vert
+Shader version: 460
+0:? Sequence
+0:176 Function Definition: iTDCamToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float)
+0:176 Function Parameters:
+0:176 'v' ( in highp 4-component vector of float)
+0:176 'uv' ( in highp 3-component vector of float)
+0:176 'cameraIndex' ( in highp int)
+0:176 'applyPickMod' ( in bool)
+0:178 Sequence
+0:178 Test condition and select ( temp void)
+0:178 Condition
+0:178 Negate conditional ( temp bool)
+0:178 Function Call: TDInstanceActive( ( global bool)
+0:178 true case
+0:179 Branch: Return with expression
+0:179 Constant:
+0:179 2.000000
+0:179 2.000000
+0:179 2.000000
+0:179 0.000000
+0:180 move second child to first child ( temp highp 4-component vector of float)
+0:180 'v' ( in highp 4-component vector of float)
+0:180 matrix-times-vector ( temp highp 4-component vector of float)
+0:180 proj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:180 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:180 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:180 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:180 Constant:
+0:180 0 (const uint)
+0:180 Constant:
+0:180 0 (const int)
+0:180 Constant:
+0:180 8 (const int)
+0:180 'v' ( in highp 4-component vector of float)
+0:181 Branch: Return with expression
+0:181 'v' ( in highp 4-component vector of float)
+0:183 Function Definition: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float)
+0:183 Function Parameters:
+0:183 'v' ( in highp 4-component vector of float)
+0:183 'uv' ( in highp 3-component vector of float)
+0:183 'cameraIndex' ( in highp int)
+0:183 'applyPickMod' ( in bool)
+0:184 Sequence
+0:184 Test condition and select ( temp void)
+0:184 Condition
+0:184 Negate conditional ( temp bool)
+0:184 Function Call: TDInstanceActive( ( global bool)
+0:184 true case
+0:185 Branch: Return with expression
+0:185 Constant:
+0:185 2.000000
+0:185 2.000000
+0:185 2.000000
+0:185 0.000000
+0:186 move second child to first child ( temp highp 4-component vector of float)
+0:186 'v' ( in highp 4-component vector of float)
+0:186 matrix-times-vector ( temp highp 4-component vector of float)
+0:186 camProj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:186 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:186 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:186 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:186 Constant:
+0:186 0 (const uint)
+0:186 Constant:
+0:186 0 (const int)
+0:186 Constant:
+0:186 6 (const int)
+0:186 'v' ( in highp 4-component vector of float)
+0:187 Branch: Return with expression
+0:187 'v' ( in highp 4-component vector of float)
+0:193 Function Definition: TDInstanceID( ( global highp int)
+0:193 Function Parameters:
+0:194 Sequence
+0:194 Branch: Return with expression
+0:194 add ( temp highp int)
+0:194 'gl_InstanceIndex' ( in highp int InstanceIndex)
+0:194 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:194 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:194 Constant:
+0:194 0 (const uint)
+0:196 Function Definition: TDCameraIndex( ( global highp int)
+0:196 Function Parameters:
+0:197 Sequence
+0:197 Branch: Return with expression
+0:197 Constant:
+0:197 0 (const int)
+0:199 Function Definition: TDUVUnwrapCoord( ( global highp 3-component vector of float)
+0:199 Function Parameters:
+0:200 Sequence
+0:200 Branch: Return with expression
+0:200 direct index (layout( location=3) temp highp 3-component vector of float)
+0:200 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:200 Constant:
+0:200 0 (const int)
+0:205 Function Definition: TDPickID( ( global highp int)
+0:205 Function Parameters:
+0:209 Sequence
+0:209 Branch: Return with expression
+0:209 Constant:
+0:209 0 (const int)
+0:212 Function Definition: iTDConvertPickId(i1; ( global highp float)
+0:212 Function Parameters:
+0:212 'id' ( in highp int)
+0:213 Sequence
+0:213 or second child into first child ( temp highp int)
+0:213 'id' ( in highp int)
+0:213 Constant:
+0:213 1073741824 (const int)
+0:214 Branch: Return with expression
+0:214 intBitsToFloat ( global highp float)
+0:214 'id' ( in highp int)
+0:217 Function Definition: TDWritePickingValues( ( global void)
+0:217 Function Parameters:
+0:224 Function Definition: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:224 Function Parameters:
+0:224 'v' ( in highp 4-component vector of float)
+0:224 'uv' ( in highp 3-component vector of float)
+0:226 Sequence
+0:226 Branch: Return with expression
+0:226 Function Call: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float)
+0:226 'v' ( in highp 4-component vector of float)
+0:226 'uv' ( in highp 3-component vector of float)
+0:226 Function Call: TDCameraIndex( ( global highp int)
+0:226 Constant:
+0:226 true (const bool)
+0:228 Function Definition: TDWorldToProj(vf3;vf3; ( global highp 4-component vector of float)
+0:228 Function Parameters:
+0:228 'v' ( in highp 3-component vector of float)
+0:228 'uv' ( in highp 3-component vector of float)
+0:230 Sequence
+0:230 Branch: Return with expression
+0:230 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:230 Construct vec4 ( temp highp 4-component vector of float)
+0:230 'v' ( in highp 3-component vector of float)
+0:230 Constant:
+0:230 1.000000
+0:230 'uv' ( in highp 3-component vector of float)
+0:232 Function Definition: TDWorldToProj(vf4; ( global highp 4-component vector of float)
+0:232 Function Parameters:
+0:232 'v' ( in highp 4-component vector of float)
+0:234 Sequence
+0:234 Branch: Return with expression
+0:234 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:234 'v' ( in highp 4-component vector of float)
+0:234 Constant:
+0:234 0.000000
+0:234 0.000000
+0:234 0.000000
+0:236 Function Definition: TDWorldToProj(vf3; ( global highp 4-component vector of float)
+0:236 Function Parameters:
+0:236 'v' ( in highp 3-component vector of float)
+0:238 Sequence
+0:238 Branch: Return with expression
+0:238 Function Call: TDWorldToProj(vf4; ( global highp 4-component vector of float)
+0:238 Construct vec4 ( temp highp 4-component vector of float)
+0:238 'v' ( in highp 3-component vector of float)
+0:238 Constant:
+0:238 1.000000
+0:240 Function Definition: TDPointColor( ( global highp 4-component vector of float)
+0:240 Function Parameters:
+0:241 Sequence
+0:241 Branch: Return with expression
+0:241 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:? Linker Objects
+0:? 'P' (layout( location=0) in highp 3-component vector of float)
+0:? 'N' (layout( location=1) in highp 3-component vector of float)
+0:? 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:? 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights})
+0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@5' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'mTD2DImageOutputs' (layout( rgba8) uniform 1-element array of highp image2D)
+0:? 'mTD2DArrayImageOutputs' (layout( rgba8) uniform 1-element array of highp image2DArray)
+0:? 'mTD3DImageOutputs' (layout( rgba8) uniform 1-element array of highp image3D)
+0:? 'mTDCubeImageOutputs' (layout( rgba8) uniform 1-element array of highp imageCube)
+0:? 'gl_VertexIndex' ( in int VertexIndex)
+0:? 'gl_InstanceIndex' ( in int InstanceIndex)
+
+vk.relaxed.stagelink.0.2.vert
+Shader version: 460
+0:? Sequence
+0:114 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float)
+0:114 Function Parameters:
+0:114 'index' ( in highp int)
+0:114 't' ( in highp 3-component vector of float)
+0:? Sequence
+0:116 Sequence
+0:116 move second child to first child ( temp highp int)
+0:116 'coord' ( temp highp int)
+0:116 'index' ( in highp int)
+0:117 Sequence
+0:117 move second child to first child ( temp highp 4-component vector of float)
+0:117 'samp' ( temp highp 4-component vector of float)
+0:117 textureFetch ( global highp 4-component vector of float)
+0:117 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:117 'coord' ( temp highp int)
+0:118 move second child to first child ( temp highp float)
+0:118 direct index ( temp highp float)
+0:118 'v' ( temp highp 3-component vector of float)
+0:118 Constant:
+0:118 0 (const int)
+0:118 direct index ( temp highp float)
+0:118 't' ( in highp 3-component vector of float)
+0:118 Constant:
+0:118 0 (const int)
+0:119 move second child to first child ( temp highp float)
+0:119 direct index ( temp highp float)
+0:119 'v' ( temp highp 3-component vector of float)
+0:119 Constant:
+0:119 1 (const int)
+0:119 direct index ( temp highp float)
+0:119 't' ( in highp 3-component vector of float)
+0:119 Constant:
+0:119 1 (const int)
+0:120 move second child to first child ( temp highp float)
+0:120 direct index ( temp highp float)
+0:120 'v' ( temp highp 3-component vector of float)
+0:120 Constant:
+0:120 2 (const int)
+0:120 direct index ( temp highp float)
+0:120 'samp' ( temp highp 4-component vector of float)
+0:120 Constant:
+0:120 0 (const int)
+0:121 move second child to first child ( temp highp 3-component vector of float)
+0:121 vector swizzle ( temp highp 3-component vector of float)
+0:121 't' ( in highp 3-component vector of float)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Constant:
+0:121 2 (const int)
+0:121 vector swizzle ( temp highp 3-component vector of float)
+0:121 'v' ( temp highp 3-component vector of float)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Constant:
+0:121 2 (const int)
+0:122 Branch: Return with expression
+0:122 't' ( in highp 3-component vector of float)
+0:124 Function Definition: TDInstanceActive(i1; ( global bool)
+0:124 Function Parameters:
+0:124 'index' ( in highp int)
+0:125 Sequence
+0:125 subtract second child into first child ( temp highp int)
+0:125 'index' ( in highp int)
+0:125 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:125 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:125 Constant:
+0:125 0 (const uint)
+0:127 Sequence
+0:127 move second child to first child ( temp highp int)
+0:127 'coord' ( temp highp int)
+0:127 'index' ( in highp int)
+0:128 Sequence
+0:128 move second child to first child ( temp highp 4-component vector of float)
+0:128 'samp' ( temp highp 4-component vector of float)
+0:128 textureFetch ( global highp 4-component vector of float)
+0:128 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:128 'coord' ( temp highp int)
+0:129 move second child to first child ( temp highp float)
+0:129 'v' ( temp highp float)
+0:129 direct index ( temp highp float)
+0:129 'samp' ( temp highp 4-component vector of float)
+0:129 Constant:
+0:129 0 (const int)
+0:130 Branch: Return with expression
+0:130 Compare Not Equal ( temp bool)
+0:130 'v' ( temp highp float)
+0:130 Constant:
+0:130 0.000000
+0:132 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:132 Function Parameters:
+0:132 'index' ( in highp int)
+0:132 'instanceActive' ( out bool)
+0:133 Sequence
+0:133 Sequence
+0:133 move second child to first child ( temp highp int)
+0:133 'origIndex' ( temp highp int)
+0:133 'index' ( in highp int)
+0:134 subtract second child into first child ( temp highp int)
+0:134 'index' ( in highp int)
+0:134 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:134 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:134 Constant:
+0:134 0 (const uint)
+0:136 Sequence
+0:136 move second child to first child ( temp highp int)
+0:136 'coord' ( temp highp int)
+0:136 'index' ( in highp int)
+0:137 Sequence
+0:137 move second child to first child ( temp highp 4-component vector of float)
+0:137 'samp' ( temp highp 4-component vector of float)
+0:137 textureFetch ( global highp 4-component vector of float)
+0:137 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:137 'coord' ( temp highp int)
+0:138 move second child to first child ( temp highp float)
+0:138 direct index ( temp highp float)
+0:138 'v' ( temp highp 3-component vector of float)
+0:138 Constant:
+0:138 0 (const int)
+0:138 direct index ( temp highp float)
+0:138 'samp' ( temp highp 4-component vector of float)
+0:138 Constant:
+0:138 1 (const int)
+0:139 move second child to first child ( temp highp float)
+0:139 direct index ( temp highp float)
+0:139 'v' ( temp highp 3-component vector of float)
+0:139 Constant:
+0:139 1 (const int)
+0:139 direct index ( temp highp float)
+0:139 'samp' ( temp highp 4-component vector of float)
+0:139 Constant:
+0:139 2 (const int)
+0:140 move second child to first child ( temp highp float)
+0:140 direct index ( temp highp float)
+0:140 'v' ( temp highp 3-component vector of float)
+0:140 Constant:
+0:140 2 (const int)
+0:140 direct index ( temp highp float)
+0:140 'samp' ( temp highp 4-component vector of float)
+0:140 Constant:
+0:140 3 (const int)
+0:141 move second child to first child ( temp bool)
+0:141 'instanceActive' ( out bool)
+0:141 Compare Not Equal ( temp bool)
+0:141 direct index ( temp highp float)
+0:141 'samp' ( temp highp 4-component vector of float)
+0:141 Constant:
+0:141 0 (const int)
+0:141 Constant:
+0:141 0.000000
+0:142 Branch: Return with expression
+0:142 'v' ( temp highp 3-component vector of float)
+0:144 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float)
+0:144 Function Parameters:
+0:144 'index' ( in highp int)
+0:145 Sequence
+0:145 subtract second child into first child ( temp highp int)
+0:145 'index' ( in highp int)
+0:145 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:145 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:145 Constant:
+0:145 0 (const uint)
+0:147 Sequence
+0:147 move second child to first child ( temp highp int)
+0:147 'coord' ( temp highp int)
+0:147 'index' ( in highp int)
+0:148 Sequence
+0:148 move second child to first child ( temp highp 4-component vector of float)
+0:148 'samp' ( temp highp 4-component vector of float)
+0:148 textureFetch ( global highp 4-component vector of float)
+0:148 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:148 'coord' ( temp highp int)
+0:149 move second child to first child ( temp highp float)
+0:149 direct index ( temp highp float)
+0:149 'v' ( temp highp 3-component vector of float)
+0:149 Constant:
+0:149 0 (const int)
+0:149 direct index ( temp highp float)
+0:149 'samp' ( temp highp 4-component vector of float)
+0:149 Constant:
+0:149 1 (const int)
+0:150 move second child to first child ( temp highp float)
+0:150 direct index ( temp highp float)
+0:150 'v' ( temp highp 3-component vector of float)
+0:150 Constant:
+0:150 1 (const int)
+0:150 direct index ( temp highp float)
+0:150 'samp' ( temp highp 4-component vector of float)
+0:150 Constant:
+0:150 2 (const int)
+0:151 move second child to first child ( temp highp float)
+0:151 direct index ( temp highp float)
+0:151 'v' ( temp highp 3-component vector of float)
+0:151 Constant:
+0:151 2 (const int)
+0:151 direct index ( temp highp float)
+0:151 'samp' ( temp highp 4-component vector of float)
+0:151 Constant:
+0:151 3 (const int)
+0:152 Branch: Return with expression
+0:152 'v' ( temp highp 3-component vector of float)
+0:154 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float)
+0:154 Function Parameters:
+0:154 'index' ( in highp int)
+0:155 Sequence
+0:155 subtract second child into first child ( temp highp int)
+0:155 'index' ( in highp int)
+0:155 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:155 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:155 Constant:
+0:155 0 (const uint)
+0:156 Sequence
+0:156 move second child to first child ( temp highp 3-component vector of float)
+0:156 'v' ( temp highp 3-component vector of float)
+0:156 Constant:
+0:156 0.000000
+0:156 0.000000
+0:156 0.000000
+0:157 Sequence
+0:157 move second child to first child ( temp highp 3X3 matrix of float)
+0:157 'm' ( temp highp 3X3 matrix of float)
+0:157 Constant:
+0:157 1.000000
+0:157 0.000000
+0:157 0.000000
+0:157 0.000000
+0:157 1.000000
+0:157 0.000000
+0:157 0.000000
+0:157 0.000000
+0:157 1.000000
+0:161 Branch: Return with expression
+0:161 'm' ( temp highp 3X3 matrix of float)
+0:163 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float)
+0:163 Function Parameters:
+0:163 'index' ( in highp int)
+0:164 Sequence
+0:164 subtract second child into first child ( temp highp int)
+0:164 'index' ( in highp int)
+0:164 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:164 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:164 Constant:
+0:164 0 (const uint)
+0:165 Sequence
+0:165 move second child to first child ( temp highp 3-component vector of float)
+0:165 'v' ( temp highp 3-component vector of float)
+0:165 Constant:
+0:165 1.000000
+0:165 1.000000
+0:165 1.000000
+0:166 Branch: Return with expression
+0:166 'v' ( temp highp 3-component vector of float)
+0:168 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float)
+0:168 Function Parameters:
+0:168 'index' ( in highp int)
+0:169 Sequence
+0:169 subtract second child into first child ( temp highp int)
+0:169 'index' ( in highp int)
+0:169 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:169 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:169 Constant:
+0:169 0 (const uint)
+0:170 Sequence
+0:170 move second child to first child ( temp highp 3-component vector of float)
+0:170 'v' ( temp highp 3-component vector of float)
+0:170 Constant:
+0:170 0.000000
+0:170 0.000000
+0:170 0.000000
+0:171 Branch: Return with expression
+0:171 'v' ( temp highp 3-component vector of float)
+0:173 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float)
+0:173 Function Parameters:
+0:173 'index' ( in highp int)
+0:174 Sequence
+0:174 subtract second child into first child ( temp highp int)
+0:174 'index' ( in highp int)
+0:174 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:174 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:174 Constant:
+0:174 0 (const uint)
+0:175 Sequence
+0:175 move second child to first child ( temp highp 3-component vector of float)
+0:175 'v' ( temp highp 3-component vector of float)
+0:175 Constant:
+0:175 0.000000
+0:175 0.000000
+0:175 1.000000
+0:176 Branch: Return with expression
+0:176 'v' ( temp highp 3-component vector of float)
+0:178 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float)
+0:178 Function Parameters:
+0:178 'index' ( in highp int)
+0:179 Sequence
+0:179 subtract second child into first child ( temp highp int)
+0:179 'index' ( in highp int)
+0:179 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:179 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:179 Constant:
+0:179 0 (const uint)
+0:180 Sequence
+0:180 move second child to first child ( temp highp 3-component vector of float)
+0:180 'v' ( temp highp 3-component vector of float)
+0:180 Constant:
+0:180 0.000000
+0:180 1.000000
+0:180 0.000000
+0:181 Branch: Return with expression
+0:181 'v' ( temp highp 3-component vector of float)
+0:183 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:183 Function Parameters:
+0:183 'id' ( in highp int)
+0:184 Sequence
+0:184 Sequence
+0:184 move second child to first child ( temp bool)
+0:184 'instanceActive' ( temp bool)
+0:184 Constant:
+0:184 true (const bool)
+0:185 Sequence
+0:185 move second child to first child ( temp highp 3-component vector of float)
+0:185 't' ( temp highp 3-component vector of float)
+0:185 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:185 'id' ( in highp int)
+0:185 'instanceActive' ( temp bool)
+0:186 Test condition and select ( temp void)
+0:186 Condition
+0:186 Negate conditional ( temp bool)
+0:186 'instanceActive' ( temp bool)
+0:186 true case
+0:188 Sequence
+0:188 Branch: Return with expression
+0:188 Constant:
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:190 Sequence
+0:190 move second child to first child ( temp highp 4X4 matrix of float)
+0:190 'm' ( temp highp 4X4 matrix of float)
+0:190 Constant:
+0:190 1.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 1.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 1.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 1.000000
+0:192 Sequence
+0:192 Sequence
+0:192 move second child to first child ( temp highp 3-component vector of float)
+0:192 'tt' ( temp highp 3-component vector of float)
+0:192 't' ( temp highp 3-component vector of float)
+0:193 add second child into first child ( temp highp float)
+0:193 direct index ( temp highp float)
+0:193 direct index ( temp highp 4-component vector of float)
+0:193 'm' ( temp highp 4X4 matrix of float)
+0:193 Constant:
+0:193 3 (const int)
+0:193 Constant:
+0:193 0 (const int)
+0:193 component-wise multiply ( temp highp float)
+0:193 direct index ( temp highp float)
+0:193 direct index ( temp highp 4-component vector of float)
+0:193 'm' ( temp highp 4X4 matrix of float)
+0:193 Constant:
+0:193 0 (const int)
+0:193 Constant:
+0:193 0 (const int)
+0:193 direct index ( temp highp float)
+0:193 'tt' ( temp highp 3-component vector of float)
+0:193 Constant:
+0:193 0 (const int)
+0:194 add second child into first child ( temp highp float)
+0:194 direct index ( temp highp float)
+0:194 direct index ( temp highp 4-component vector of float)
+0:194 'm' ( temp highp 4X4 matrix of float)
+0:194 Constant:
+0:194 3 (const int)
+0:194 Constant:
+0:194 1 (const int)
+0:194 component-wise multiply ( temp highp float)
+0:194 direct index ( temp highp float)
+0:194 direct index ( temp highp 4-component vector of float)
+0:194 'm' ( temp highp 4X4 matrix of float)
+0:194 Constant:
+0:194 0 (const int)
+0:194 Constant:
+0:194 1 (const int)
+0:194 direct index ( temp highp float)
+0:194 'tt' ( temp highp 3-component vector of float)
+0:194 Constant:
+0:194 0 (const int)
+0:195 add second child into first child ( temp highp float)
+0:195 direct index ( temp highp float)
+0:195 direct index ( temp highp 4-component vector of float)
+0:195 'm' ( temp highp 4X4 matrix of float)
+0:195 Constant:
+0:195 3 (const int)
+0:195 Constant:
+0:195 2 (const int)
+0:195 component-wise multiply ( temp highp float)
+0:195 direct index ( temp highp float)
+0:195 direct index ( temp highp 4-component vector of float)
+0:195 'm' ( temp highp 4X4 matrix of float)
+0:195 Constant:
+0:195 0 (const int)
+0:195 Constant:
+0:195 2 (const int)
+0:195 direct index ( temp highp float)
+0:195 'tt' ( temp highp 3-component vector of float)
+0:195 Constant:
+0:195 0 (const int)
+0:196 add second child into first child ( temp highp float)
+0:196 direct index ( temp highp float)
+0:196 direct index ( temp highp 4-component vector of float)
+0:196 'm' ( temp highp 4X4 matrix of float)
+0:196 Constant:
+0:196 3 (const int)
+0:196 Constant:
+0:196 3 (const int)
+0:196 component-wise multiply ( temp highp float)
+0:196 direct index ( temp highp float)
+0:196 direct index ( temp highp 4-component vector of float)
+0:196 'm' ( temp highp 4X4 matrix of float)
+0:196 Constant:
+0:196 0 (const int)
+0:196 Constant:
+0:196 3 (const int)
+0:196 direct index ( temp highp float)
+0:196 'tt' ( temp highp 3-component vector of float)
+0:196 Constant:
+0:196 0 (const int)
+0:197 add second child into first child ( temp highp float)
+0:197 direct index ( temp highp float)
+0:197 direct index ( temp highp 4-component vector of float)
+0:197 'm' ( temp highp 4X4 matrix of float)
+0:197 Constant:
+0:197 3 (const int)
+0:197 Constant:
+0:197 0 (const int)
+0:197 component-wise multiply ( temp highp float)
+0:197 direct index ( temp highp float)
+0:197 direct index ( temp highp 4-component vector of float)
+0:197 'm' ( temp highp 4X4 matrix of float)
+0:197 Constant:
+0:197 1 (const int)
+0:197 Constant:
+0:197 0 (const int)
+0:197 direct index ( temp highp float)
+0:197 'tt' ( temp highp 3-component vector of float)
+0:197 Constant:
+0:197 1 (const int)
+0:198 add second child into first child ( temp highp float)
+0:198 direct index ( temp highp float)
+0:198 direct index ( temp highp 4-component vector of float)
+0:198 'm' ( temp highp 4X4 matrix of float)
+0:198 Constant:
+0:198 3 (const int)
+0:198 Constant:
+0:198 1 (const int)
+0:198 component-wise multiply ( temp highp float)
+0:198 direct index ( temp highp float)
+0:198 direct index ( temp highp 4-component vector of float)
+0:198 'm' ( temp highp 4X4 matrix of float)
+0:198 Constant:
+0:198 1 (const int)
+0:198 Constant:
+0:198 1 (const int)
+0:198 direct index ( temp highp float)
+0:198 'tt' ( temp highp 3-component vector of float)
+0:198 Constant:
+0:198 1 (const int)
+0:199 add second child into first child ( temp highp float)
+0:199 direct index ( temp highp float)
+0:199 direct index ( temp highp 4-component vector of float)
+0:199 'm' ( temp highp 4X4 matrix of float)
+0:199 Constant:
+0:199 3 (const int)
+0:199 Constant:
+0:199 2 (const int)
+0:199 component-wise multiply ( temp highp float)
+0:199 direct index ( temp highp float)
+0:199 direct index ( temp highp 4-component vector of float)
+0:199 'm' ( temp highp 4X4 matrix of float)
+0:199 Constant:
+0:199 1 (const int)
+0:199 Constant:
+0:199 2 (const int)
+0:199 direct index ( temp highp float)
+0:199 'tt' ( temp highp 3-component vector of float)
+0:199 Constant:
+0:199 1 (const int)
+0:200 add second child into first child ( temp highp float)
+0:200 direct index ( temp highp float)
+0:200 direct index ( temp highp 4-component vector of float)
+0:200 'm' ( temp highp 4X4 matrix of float)
+0:200 Constant:
+0:200 3 (const int)
+0:200 Constant:
+0:200 3 (const int)
+0:200 component-wise multiply ( temp highp float)
+0:200 direct index ( temp highp float)
+0:200 direct index ( temp highp 4-component vector of float)
+0:200 'm' ( temp highp 4X4 matrix of float)
+0:200 Constant:
+0:200 1 (const int)
+0:200 Constant:
+0:200 3 (const int)
+0:200 direct index ( temp highp float)
+0:200 'tt' ( temp highp 3-component vector of float)
+0:200 Constant:
+0:200 1 (const int)
+0:201 add second child into first child ( temp highp float)
+0:201 direct index ( temp highp float)
+0:201 direct index ( temp highp 4-component vector of float)
+0:201 'm' ( temp highp 4X4 matrix of float)
+0:201 Constant:
+0:201 3 (const int)
+0:201 Constant:
+0:201 0 (const int)
+0:201 component-wise multiply ( temp highp float)
+0:201 direct index ( temp highp float)
+0:201 direct index ( temp highp 4-component vector of float)
+0:201 'm' ( temp highp 4X4 matrix of float)
+0:201 Constant:
+0:201 2 (const int)
+0:201 Constant:
+0:201 0 (const int)
+0:201 direct index ( temp highp float)
+0:201 'tt' ( temp highp 3-component vector of float)
+0:201 Constant:
+0:201 2 (const int)
+0:202 add second child into first child ( temp highp float)
+0:202 direct index ( temp highp float)
+0:202 direct index ( temp highp 4-component vector of float)
+0:202 'm' ( temp highp 4X4 matrix of float)
+0:202 Constant:
+0:202 3 (const int)
+0:202 Constant:
+0:202 1 (const int)
+0:202 component-wise multiply ( temp highp float)
+0:202 direct index ( temp highp float)
+0:202 direct index ( temp highp 4-component vector of float)
+0:202 'm' ( temp highp 4X4 matrix of float)
+0:202 Constant:
+0:202 2 (const int)
+0:202 Constant:
+0:202 1 (const int)
+0:202 direct index ( temp highp float)
+0:202 'tt' ( temp highp 3-component vector of float)
+0:202 Constant:
+0:202 2 (const int)
+0:203 add second child into first child ( temp highp float)
+0:203 direct index ( temp highp float)
+0:203 direct index ( temp highp 4-component vector of float)
+0:203 'm' ( temp highp 4X4 matrix of float)
+0:203 Constant:
+0:203 3 (const int)
+0:203 Constant:
+0:203 2 (const int)
+0:203 component-wise multiply ( temp highp float)
+0:203 direct index ( temp highp float)
+0:203 direct index ( temp highp 4-component vector of float)
+0:203 'm' ( temp highp 4X4 matrix of float)
+0:203 Constant:
+0:203 2 (const int)
+0:203 Constant:
+0:203 2 (const int)
+0:203 direct index ( temp highp float)
+0:203 'tt' ( temp highp 3-component vector of float)
+0:203 Constant:
+0:203 2 (const int)
+0:204 add second child into first child ( temp highp float)
+0:204 direct index ( temp highp float)
+0:204 direct index ( temp highp 4-component vector of float)
+0:204 'm' ( temp highp 4X4 matrix of float)
+0:204 Constant:
+0:204 3 (const int)
+0:204 Constant:
+0:204 3 (const int)
+0:204 component-wise multiply ( temp highp float)
+0:204 direct index ( temp highp float)
+0:204 direct index ( temp highp 4-component vector of float)
+0:204 'm' ( temp highp 4X4 matrix of float)
+0:204 Constant:
+0:204 2 (const int)
+0:204 Constant:
+0:204 3 (const int)
+0:204 direct index ( temp highp float)
+0:204 'tt' ( temp highp 3-component vector of float)
+0:204 Constant:
+0:204 2 (const int)
+0:206 Branch: Return with expression
+0:206 'm' ( temp highp 4X4 matrix of float)
+0:208 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:208 Function Parameters:
+0:208 'id' ( in highp int)
+0:209 Sequence
+0:209 Sequence
+0:209 move second child to first child ( temp highp 3X3 matrix of float)
+0:209 'm' ( temp highp 3X3 matrix of float)
+0:209 Constant:
+0:209 1.000000
+0:209 0.000000
+0:209 0.000000
+0:209 0.000000
+0:209 1.000000
+0:209 0.000000
+0:209 0.000000
+0:209 0.000000
+0:209 1.000000
+0:210 Branch: Return with expression
+0:210 'm' ( temp highp 3X3 matrix of float)
+0:212 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float)
+0:212 Function Parameters:
+0:212 'id' ( in highp int)
+0:213 Sequence
+0:213 Sequence
+0:213 move second child to first child ( temp highp 3X3 matrix of float)
+0:213 'm' ( temp highp 3X3 matrix of float)
+0:213 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:213 'id' ( in highp int)
+0:214 Branch: Return with expression
+0:214 'm' ( temp highp 3X3 matrix of float)
+0:216 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float)
+0:216 Function Parameters:
+0:216 'index' ( in highp int)
+0:216 'curColor' ( in highp 4-component vector of float)
+0:217 Sequence
+0:217 subtract second child into first child ( temp highp int)
+0:217 'index' ( in highp int)
+0:217 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:217 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:217 Constant:
+0:217 0 (const uint)
+0:219 Sequence
+0:219 move second child to first child ( temp highp int)
+0:219 'coord' ( temp highp int)
+0:219 'index' ( in highp int)
+0:220 Sequence
+0:220 move second child to first child ( temp highp 4-component vector of float)
+0:220 'samp' ( temp highp 4-component vector of float)
+0:220 textureFetch ( global highp 4-component vector of float)
+0:220 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+0:220 'coord' ( temp highp int)
+0:221 move second child to first child ( temp highp float)
+0:221 direct index ( temp highp float)
+0:221 'v' ( temp highp 4-component vector of float)
+0:221 Constant:
+0:221 0 (const int)
+0:221 direct index ( temp highp float)
+0:221 'samp' ( temp highp 4-component vector of float)
+0:221 Constant:
+0:221 0 (const int)
+0:222 move second child to first child ( temp highp float)
+0:222 direct index ( temp highp float)
+0:222 'v' ( temp highp 4-component vector of float)
+0:222 Constant:
+0:222 1 (const int)
+0:222 direct index ( temp highp float)
+0:222 'samp' ( temp highp 4-component vector of float)
+0:222 Constant:
+0:222 1 (const int)
+0:223 move second child to first child ( temp highp float)
+0:223 direct index ( temp highp float)
+0:223 'v' ( temp highp 4-component vector of float)
+0:223 Constant:
+0:223 2 (const int)
+0:223 direct index ( temp highp float)
+0:223 'samp' ( temp highp 4-component vector of float)
+0:223 Constant:
+0:223 2 (const int)
+0:224 move second child to first child ( temp highp float)
+0:224 direct index ( temp highp float)
+0:224 'v' ( temp highp 4-component vector of float)
+0:224 Constant:
+0:224 3 (const int)
+0:224 Constant:
+0:224 1.000000
+0:225 move second child to first child ( temp highp float)
+0:225 direct index ( temp highp float)
+0:225 'curColor' ( in highp 4-component vector of float)
+0:225 Constant:
+0:225 0 (const int)
+0:225 direct index ( temp highp float)
+0:225 'v' ( temp highp 4-component vector of float)
+0:225 Constant:
+0:225 0 (const int)
+0:227 move second child to first child ( temp highp float)
+0:227 direct index ( temp highp float)
+0:227 'curColor' ( in highp 4-component vector of float)
+0:227 Constant:
+0:227 1 (const int)
+0:227 direct index ( temp highp float)
+0:227 'v' ( temp highp 4-component vector of float)
+0:227 Constant:
+0:227 1 (const int)
+0:229 move second child to first child ( temp highp float)
+0:229 direct index ( temp highp float)
+0:229 'curColor' ( in highp 4-component vector of float)
+0:229 Constant:
+0:229 2 (const int)
+0:229 direct index ( temp highp float)
+0:229 'v' ( temp highp 4-component vector of float)
+0:229 Constant:
+0:229 2 (const int)
+0:231 Branch: Return with expression
+0:231 'curColor' ( in highp 4-component vector of float)
+0:233 Function Definition: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float)
+0:233 Function Parameters:
+0:233 'id' ( in highp int)
+0:233 'pos' ( in highp 4-component vector of float)
+0:234 Sequence
+0:234 move second child to first child ( temp highp 4-component vector of float)
+0:234 'pos' ( in highp 4-component vector of float)
+0:234 matrix-times-vector ( temp highp 4-component vector of float)
+0:234 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:234 'id' ( in highp int)
+0:234 'pos' ( in highp 4-component vector of float)
+0:235 Branch: Return with expression
+0:235 matrix-times-vector ( temp highp 4-component vector of float)
+0:235 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:235 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:235 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:235 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:235 Constant:
+0:235 0 (const uint)
+0:235 Function Call: TDCameraIndex( ( global highp int)
+0:235 Constant:
+0:235 0 (const int)
+0:235 'pos' ( in highp 4-component vector of float)
+0:238 Function Definition: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:238 Function Parameters:
+0:238 'id' ( in highp int)
+0:238 'vec' ( in highp 3-component vector of float)
+0:240 Sequence
+0:240 Sequence
+0:240 move second child to first child ( temp highp 3X3 matrix of float)
+0:240 'm' ( temp highp 3X3 matrix of float)
+0:240 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:240 'id' ( in highp int)
+0:241 Branch: Return with expression
+0:241 matrix-times-vector ( temp highp 3-component vector of float)
+0:241 Construct mat3 ( temp highp 3X3 matrix of float)
+0:241 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:241 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:241 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:241 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:241 Constant:
+0:241 0 (const uint)
+0:241 Function Call: TDCameraIndex( ( global highp int)
+0:241 Constant:
+0:241 0 (const int)
+0:241 matrix-times-vector ( temp highp 3-component vector of float)
+0:241 'm' ( temp highp 3X3 matrix of float)
+0:241 'vec' ( in highp 3-component vector of float)
+0:243 Function Definition: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:243 Function Parameters:
+0:243 'id' ( in highp int)
+0:243 'vec' ( in highp 3-component vector of float)
+0:245 Sequence
+0:245 Sequence
+0:245 move second child to first child ( temp highp 3X3 matrix of float)
+0:245 'm' ( temp highp 3X3 matrix of float)
+0:245 Function Call: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float)
+0:245 'id' ( in highp int)
+0:246 Branch: Return with expression
+0:246 matrix-times-vector ( temp highp 3-component vector of float)
+0:246 Construct mat3 ( temp highp 3X3 matrix of float)
+0:246 worldForNormals: direct index for structure (layout( column_major std140) global highp 3X3 matrix of float)
+0:246 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:246 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:246 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:246 Constant:
+0:246 0 (const uint)
+0:246 Function Call: TDCameraIndex( ( global highp int)
+0:246 Constant:
+0:246 13 (const int)
+0:246 matrix-times-vector ( temp highp 3-component vector of float)
+0:246 'm' ( temp highp 3X3 matrix of float)
+0:246 'vec' ( in highp 3-component vector of float)
+0:248 Function Definition: TDInstanceDeform(vf4; ( global highp 4-component vector of float)
+0:248 Function Parameters:
+0:248 'pos' ( in highp 4-component vector of float)
+0:249 Sequence
+0:249 Branch: Return with expression
+0:249 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float)
+0:249 Function Call: TDInstanceID( ( global highp int)
+0:249 'pos' ( in highp 4-component vector of float)
+0:251 Function Definition: TDInstanceDeformVec(vf3; ( global highp 3-component vector of float)
+0:251 Function Parameters:
+0:251 'vec' ( in highp 3-component vector of float)
+0:252 Sequence
+0:252 Branch: Return with expression
+0:252 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:252 Function Call: TDInstanceID( ( global highp int)
+0:252 'vec' ( in highp 3-component vector of float)
+0:254 Function Definition: TDInstanceDeformNorm(vf3; ( global highp 3-component vector of float)
+0:254 Function Parameters:
+0:254 'vec' ( in highp 3-component vector of float)
+0:255 Sequence
+0:255 Branch: Return with expression
+0:255 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:255 Function Call: TDInstanceID( ( global highp int)
+0:255 'vec' ( in highp 3-component vector of float)
+0:257 Function Definition: TDInstanceActive( ( global bool)
+0:257 Function Parameters:
+0:257 Sequence
+0:257 Branch: Return with expression
+0:257 Function Call: TDInstanceActive(i1; ( global bool)
+0:257 Function Call: TDInstanceID( ( global highp int)
+0:258 Function Definition: TDInstanceTranslate( ( global highp 3-component vector of float)
+0:258 Function Parameters:
+0:258 Sequence
+0:258 Branch: Return with expression
+0:258 Function Call: TDInstanceTranslate(i1; ( global highp 3-component vector of float)
+0:258 Function Call: TDInstanceID( ( global highp int)
+0:259 Function Definition: TDInstanceRotateMat( ( global highp 3X3 matrix of float)
+0:259 Function Parameters:
+0:259 Sequence
+0:259 Branch: Return with expression
+0:259 Function Call: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float)
+0:259 Function Call: TDInstanceID( ( global highp int)
+0:260 Function Definition: TDInstanceScale( ( global highp 3-component vector of float)
+0:260 Function Parameters:
+0:260 Sequence
+0:260 Branch: Return with expression
+0:260 Function Call: TDInstanceScale(i1; ( global highp 3-component vector of float)
+0:260 Function Call: TDInstanceID( ( global highp int)
+0:261 Function Definition: TDInstanceMat( ( global highp 4X4 matrix of float)
+0:261 Function Parameters:
+0:261 Sequence
+0:261 Branch: Return with expression
+0:261 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:261 Function Call: TDInstanceID( ( global highp int)
+0:263 Function Definition: TDInstanceMat3( ( global highp 3X3 matrix of float)
+0:263 Function Parameters:
+0:263 Sequence
+0:263 Branch: Return with expression
+0:263 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:263 Function Call: TDInstanceID( ( global highp int)
+0:265 Function Definition: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float)
+0:265 Function Parameters:
+0:265 't' ( in highp 3-component vector of float)
+0:266 Sequence
+0:266 Branch: Return with expression
+0:266 Function Call: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float)
+0:266 Function Call: TDInstanceID( ( global highp int)
+0:266 't' ( in highp 3-component vector of float)
+0:268 Function Definition: TDInstanceColor(vf4; ( global highp 4-component vector of float)
+0:268 Function Parameters:
+0:268 'curColor' ( in highp 4-component vector of float)
+0:269 Sequence
+0:269 Branch: Return with expression
+0:269 Function Call: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float)
+0:269 Function Call: TDInstanceID( ( global highp int)
+0:269 'curColor' ( in highp 4-component vector of float)
+0:271 Function Definition: TDSkinnedDeform(vf4; ( global highp 4-component vector of float)
+0:271 Function Parameters:
+0:271 'pos' ( in highp 4-component vector of float)
+0:271 Sequence
+0:271 Branch: Return with expression
+0:271 'pos' ( in highp 4-component vector of float)
+0:273 Function Definition: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:273 Function Parameters:
+0:273 'vec' ( in highp 3-component vector of float)
+0:273 Sequence
+0:273 Branch: Return with expression
+0:273 'vec' ( in highp 3-component vector of float)
+0:275 Function Definition: TDFastDeformTangent(vf3;vf4;vf3; ( global highp 3-component vector of float)
+0:275 Function Parameters:
+0:275 'oldNorm' ( in highp 3-component vector of float)
+0:275 'oldTangent' ( in highp 4-component vector of float)
+0:275 'deformedNorm' ( in highp 3-component vector of float)
+0:276 Sequence
+0:276 Branch: Return with expression
+0:276 vector swizzle ( temp highp 3-component vector of float)
+0:276 'oldTangent' ( in highp 4-component vector of float)
+0:276 Sequence
+0:276 Constant:
+0:276 0 (const int)
+0:276 Constant:
+0:276 1 (const int)
+0:276 Constant:
+0:276 2 (const int)
+0:277 Function Definition: TDBoneMat(i1; ( global highp 4X4 matrix of float)
+0:277 Function Parameters:
+0:277 'index' ( in highp int)
+0:278 Sequence
+0:278 Branch: Return with expression
+0:278 Constant:
+0:278 1.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 1.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 1.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 1.000000
+0:280 Function Definition: TDDeform(vf4; ( global highp 4-component vector of float)
+0:280 Function Parameters:
+0:280 'pos' ( in highp 4-component vector of float)
+0:281 Sequence
+0:281 move second child to first child ( temp highp 4-component vector of float)
+0:281 'pos' ( in highp 4-component vector of float)
+0:281 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float)
+0:281 'pos' ( in highp 4-component vector of float)
+0:282 move second child to first child ( temp highp 4-component vector of float)
+0:282 'pos' ( in highp 4-component vector of float)
+0:282 Function Call: TDInstanceDeform(vf4; ( global highp 4-component vector of float)
+0:282 'pos' ( in highp 4-component vector of float)
+0:283 Branch: Return with expression
+0:283 'pos' ( in highp 4-component vector of float)
+0:286 Function Definition: TDDeform(i1;vf3; ( global highp 4-component vector of float)
+0:286 Function Parameters:
+0:286 'instanceID' ( in highp int)
+0:286 'p' ( in highp 3-component vector of float)
+0:287 Sequence
+0:287 Sequence
+0:287 move second child to first child ( temp highp 4-component vector of float)
+0:287 'pos' ( temp highp 4-component vector of float)
+0:287 Construct vec4 ( temp highp 4-component vector of float)
+0:287 'p' ( in highp 3-component vector of float)
+0:287 Constant:
+0:287 1.000000
+0:288 move second child to first child ( temp highp 4-component vector of float)
+0:288 'pos' ( temp highp 4-component vector of float)
+0:288 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float)
+0:288 'pos' ( temp highp 4-component vector of float)
+0:289 move second child to first child ( temp highp 4-component vector of float)
+0:289 'pos' ( temp highp 4-component vector of float)
+0:289 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float)
+0:289 'instanceID' ( in highp int)
+0:289 'pos' ( temp highp 4-component vector of float)
+0:290 Branch: Return with expression
+0:290 'pos' ( temp highp 4-component vector of float)
+0:293 Function Definition: TDDeform(vf3; ( global highp 4-component vector of float)
+0:293 Function Parameters:
+0:293 'pos' ( in highp 3-component vector of float)
+0:294 Sequence
+0:294 Branch: Return with expression
+0:294 Function Call: TDDeform(i1;vf3; ( global highp 4-component vector of float)
+0:294 Function Call: TDInstanceID( ( global highp int)
+0:294 'pos' ( in highp 3-component vector of float)
+0:297 Function Definition: TDDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:297 Function Parameters:
+0:297 'instanceID' ( in highp int)
+0:297 'vec' ( in highp 3-component vector of float)
+0:298 Sequence
+0:298 move second child to first child ( temp highp 3-component vector of float)
+0:298 'vec' ( in highp 3-component vector of float)
+0:298 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:298 'vec' ( in highp 3-component vector of float)
+0:299 move second child to first child ( temp highp 3-component vector of float)
+0:299 'vec' ( in highp 3-component vector of float)
+0:299 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:299 'instanceID' ( in highp int)
+0:299 'vec' ( in highp 3-component vector of float)
+0:300 Branch: Return with expression
+0:300 'vec' ( in highp 3-component vector of float)
+0:303 Function Definition: TDDeformVec(vf3; ( global highp 3-component vector of float)
+0:303 Function Parameters:
+0:303 'vec' ( in highp 3-component vector of float)
+0:304 Sequence
+0:304 Branch: Return with expression
+0:304 Function Call: TDDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:304 Function Call: TDInstanceID( ( global highp int)
+0:304 'vec' ( in highp 3-component vector of float)
+0:307 Function Definition: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:307 Function Parameters:
+0:307 'instanceID' ( in highp int)
+0:307 'vec' ( in highp 3-component vector of float)
+0:308 Sequence
+0:308 move second child to first child ( temp highp 3-component vector of float)
+0:308 'vec' ( in highp 3-component vector of float)
+0:308 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:308 'vec' ( in highp 3-component vector of float)
+0:309 move second child to first child ( temp highp 3-component vector of float)
+0:309 'vec' ( in highp 3-component vector of float)
+0:309 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:309 'instanceID' ( in highp int)
+0:309 'vec' ( in highp 3-component vector of float)
+0:310 Branch: Return with expression
+0:310 'vec' ( in highp 3-component vector of float)
+0:313 Function Definition: TDDeformNorm(vf3; ( global highp 3-component vector of float)
+0:313 Function Parameters:
+0:313 'vec' ( in highp 3-component vector of float)
+0:314 Sequence
+0:314 Branch: Return with expression
+0:314 Function Call: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:314 Function Call: TDInstanceID( ( global highp int)
+0:314 'vec' ( in highp 3-component vector of float)
+0:317 Function Definition: TDSkinnedDeformNorm(vf3; ( global highp 3-component vector of float)
+0:317 Function Parameters:
+0:317 'vec' ( in highp 3-component vector of float)
+0:318 Sequence
+0:318 move second child to first child ( temp highp 3-component vector of float)
+0:318 'vec' ( in highp 3-component vector of float)
+0:318 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:318 'vec' ( in highp 3-component vector of float)
+0:319 Branch: Return with expression
+0:319 'vec' ( in highp 3-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights})
+0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@5' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+0:? 'gl_VertexIndex' ( in int VertexIndex)
+0:? 'gl_InstanceIndex' ( in int InstanceIndex)
+
+vk.relaxed.stagelink.0.0.frag
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:95 Function Definition: main( ( global void)
+0:95 Function Parameters:
+0:99 Sequence
+0:99 Function Call: TDCheckDiscard( ( global void)
+0:101 Sequence
+0:101 move second child to first child ( temp highp 4-component vector of float)
+0:101 'outcol' ( temp highp 4-component vector of float)
+0:101 Constant:
+0:101 0.000000
+0:101 0.000000
+0:101 0.000000
+0:101 0.000000
+0:103 Sequence
+0:103 move second child to first child ( temp highp 3-component vector of float)
+0:103 'texCoord0' ( temp highp 3-component vector of float)
+0:103 vector swizzle ( temp highp 3-component vector of float)
+0:103 texCoord0: direct index for structure ( in highp 3-component vector of float)
+0:103 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:103 Constant:
+0:103 2 (const int)
+0:103 Sequence
+0:103 Constant:
+0:103 0 (const int)
+0:103 Constant:
+0:103 1 (const int)
+0:103 Constant:
+0:103 2 (const int)
+0:104 Sequence
+0:104 move second child to first child ( temp highp float)
+0:104 'actualTexZ' ( temp highp float)
+0:104 mod ( global highp float)
+0:104 Convert int to float ( temp highp float)
+0:104 Convert float to int ( temp highp int)
+0:104 direct index ( temp highp float)
+0:104 'texCoord0' ( temp highp 3-component vector of float)
+0:104 Constant:
+0:104 2 (const int)
+0:104 Constant:
+0:104 2048.000000
+0:105 Sequence
+0:105 move second child to first child ( temp highp float)
+0:105 'instanceLoop' ( temp highp float)
+0:105 Floor ( global highp float)
+0:105 Convert int to float ( temp highp float)
+0:105 divide ( temp highp int)
+0:105 Convert float to int ( temp highp int)
+0:105 direct index ( temp highp float)
+0:105 'texCoord0' ( temp highp 3-component vector of float)
+0:105 Constant:
+0:105 2 (const int)
+0:105 Constant:
+0:105 2048 (const int)
+0:106 move second child to first child ( temp highp float)
+0:106 direct index ( temp highp float)
+0:106 'texCoord0' ( temp highp 3-component vector of float)
+0:106 Constant:
+0:106 2 (const int)
+0:106 'actualTexZ' ( temp highp float)
+0:107 Sequence
+0:107 move second child to first child ( temp highp 4-component vector of float)
+0:107 'colorMapColor' ( temp highp 4-component vector of float)
+0:107 texture ( global highp 4-component vector of float)
+0:107 'sColorMap' ( uniform highp sampler2DArray)
+0:107 vector swizzle ( temp highp 3-component vector of float)
+0:107 'texCoord0' ( temp highp 3-component vector of float)
+0:107 Sequence
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:109 Sequence
+0:109 move second child to first child ( temp highp float)
+0:109 'red' ( temp highp float)
+0:109 indirect index ( temp highp float)
+0:109 'colorMapColor' ( temp highp 4-component vector of float)
+0:109 Convert float to int ( temp highp int)
+0:109 'instanceLoop' ( temp highp float)
+0:110 move second child to first child ( temp highp 4-component vector of float)
+0:110 'colorMapColor' ( temp highp 4-component vector of float)
+0:110 Construct vec4 ( temp highp 4-component vector of float)
+0:110 'red' ( temp highp float)
+0:112 add second child into first child ( temp highp 3-component vector of float)
+0:112 vector swizzle ( temp highp 3-component vector of float)
+0:112 'outcol' ( temp highp 4-component vector of float)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:112 component-wise multiply ( temp highp 3-component vector of float)
+0:112 uConstant: direct index for structure ( uniform highp 3-component vector of float)
+0:112 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:112 Constant:
+0:112 3 (const uint)
+0:112 vector swizzle ( temp highp 3-component vector of float)
+0:112 color: direct index for structure ( in highp 4-component vector of float)
+0:112 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:112 Constant:
+0:112 0 (const int)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:114 multiply second child into first child ( temp highp 4-component vector of float)
+0:114 'outcol' ( temp highp 4-component vector of float)
+0:114 'colorMapColor' ( temp highp 4-component vector of float)
+0:117 Sequence
+0:117 move second child to first child ( temp highp float)
+0:117 'alpha' ( temp highp float)
+0:117 component-wise multiply ( temp highp float)
+0:117 direct index ( temp highp float)
+0:117 color: direct index for structure ( in highp 4-component vector of float)
+0:117 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 3 (const int)
+0:117 direct index ( temp highp float)
+0:117 'colorMapColor' ( temp highp 4-component vector of float)
+0:117 Constant:
+0:117 3 (const int)
+0:120 move second child to first child ( temp highp 4-component vector of float)
+0:120 'outcol' ( temp highp 4-component vector of float)
+0:120 Function Call: TDDither(vf4; ( global highp 4-component vector of float)
+0:120 'outcol' ( temp highp 4-component vector of float)
+0:122 vector scale second child into first child ( temp highp 3-component vector of float)
+0:122 vector swizzle ( temp highp 3-component vector of float)
+0:122 'outcol' ( temp highp 4-component vector of float)
+0:122 Sequence
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Constant:
+0:122 2 (const int)
+0:122 'alpha' ( temp highp float)
+0:126 Function Call: TDAlphaTest(f1; ( global void)
+0:126 'alpha' ( temp highp float)
+0:128 move second child to first child ( temp highp float)
+0:128 direct index ( temp highp float)
+0:128 'outcol' ( temp highp 4-component vector of float)
+0:128 Constant:
+0:128 3 (const int)
+0:128 'alpha' ( temp highp float)
+0:129 move second child to first child ( temp highp 4-component vector of float)
+0:129 direct index (layout( location=0) temp highp 4-component vector of float)
+0:129 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float)
+0:129 Constant:
+0:129 0 (const int)
+0:129 Function Call: TDOutputSwizzle(vf4; ( global highp 4-component vector of float)
+0:129 'outcol' ( temp highp 4-component vector of float)
+0:135 Sequence
+0:135 Sequence
+0:135 move second child to first child ( temp highp int)
+0:135 'i' ( temp highp int)
+0:135 Constant:
+0:135 1 (const int)
+0:135 Loop with condition tested first
+0:135 Loop Condition
+0:135 Compare Less Than ( temp bool)
+0:135 'i' ( temp highp int)
+0:135 Constant:
+0:135 1 (const int)
+0:135 Loop Body
+0:137 Sequence
+0:137 move second child to first child ( temp highp 4-component vector of float)
+0:137 indirect index (layout( location=0) temp highp 4-component vector of float)
+0:137 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float)
+0:137 'i' ( temp highp int)
+0:137 Constant:
+0:137 0.000000
+0:137 0.000000
+0:137 0.000000
+0:137 0.000000
+0:135 Loop Terminal Expression
+0:135 Post-Increment ( temp highp int)
+0:135 'i' ( temp highp int)
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'sColorMap' ( uniform highp sampler2DArray)
+0:? 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:? 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float)
+
+vk.relaxed.stagelink.0.1.frag
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:116 Function Definition: TDColor(vf4; ( global highp 4-component vector of float)
+0:116 Function Parameters:
+0:116 'color' ( in highp 4-component vector of float)
+0:116 Sequence
+0:116 Branch: Return with expression
+0:116 'color' ( in highp 4-component vector of float)
+0:117 Function Definition: TDCheckOrderIndTrans( ( global void)
+0:117 Function Parameters:
+0:119 Function Definition: TDCheckDiscard( ( global void)
+0:119 Function Parameters:
+0:120 Sequence
+0:120 Function Call: TDCheckOrderIndTrans( ( global void)
+0:122 Function Definition: TDDither(vf4; ( global highp 4-component vector of float)
+0:122 Function Parameters:
+0:122 'color' ( in highp 4-component vector of float)
+0:124 Sequence
+0:124 Sequence
+0:124 move second child to first child ( temp highp float)
+0:124 'd' ( temp highp float)
+0:125 direct index ( temp highp float)
+0:125 texture ( global highp 4-component vector of float)
+0:124 'sTDNoiseMap' ( uniform highp sampler2D)
+0:125 divide ( temp highp 2-component vector of float)
+0:125 vector swizzle ( temp highp 2-component vector of float)
+0:125 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord)
+0:125 Sequence
+0:125 Constant:
+0:125 0 (const int)
+0:125 Constant:
+0:125 1 (const int)
+0:125 Constant:
+0:125 256.000000
+0:125 Constant:
+0:125 0 (const int)
+0:126 subtract second child into first child ( temp highp float)
+0:126 'd' ( temp highp float)
+0:126 Constant:
+0:126 0.500000
+0:127 divide second child into first child ( temp highp float)
+0:127 'd' ( temp highp float)
+0:127 Constant:
+0:127 256.000000
+0:128 Branch: Return with expression
+0:128 Construct vec4 ( temp highp 4-component vector of float)
+0:128 add ( temp highp 3-component vector of float)
+0:128 vector swizzle ( temp highp 3-component vector of float)
+0:128 'color' ( in highp 4-component vector of float)
+0:128 Sequence
+0:128 Constant:
+0:128 0 (const int)
+0:128 Constant:
+0:128 1 (const int)
+0:128 Constant:
+0:128 2 (const int)
+0:128 'd' ( temp highp float)
+0:128 direct index ( temp highp float)
+0:128 'color' ( in highp 4-component vector of float)
+0:128 Constant:
+0:128 3 (const int)
+0:130 Function Definition: TDFrontFacing(vf3;vf3; ( global bool)
+0:130 Function Parameters:
+0:130 'pos' ( in highp 3-component vector of float)
+0:130 'normal' ( in highp 3-component vector of float)
+0:132 Sequence
+0:132 Branch: Return with expression
+0:132 'gl_FrontFacing' ( gl_FrontFacing bool Face)
+0:134 Function Definition: TDAttenuateLight(i1;f1; ( global highp float)
+0:134 Function Parameters:
+0:134 'index' ( in highp int)
+0:134 'lightDist' ( in highp float)
+0:136 Sequence
+0:136 Branch: Return with expression
+0:136 Constant:
+0:136 1.000000
+0:138 Function Definition: TDAlphaTest(f1; ( global void)
+0:138 Function Parameters:
+0:138 'alpha' ( in highp float)
+0:140 Function Definition: TDHardShadow(i1;vf3; ( global highp float)
+0:140 Function Parameters:
+0:140 'lightIndex' ( in highp int)
+0:140 'worldSpacePos' ( in highp 3-component vector of float)
+0:141 Sequence
+0:141 Branch: Return with expression
+0:141 Constant:
+0:141 0.000000
+0:142 Function Definition: TDSoftShadow(i1;vf3;i1;i1; ( global highp float)
+0:142 Function Parameters:
+0:142 'lightIndex' ( in highp int)
+0:142 'worldSpacePos' ( in highp 3-component vector of float)
+0:142 'samples' ( in highp int)
+0:142 'steps' ( in highp int)
+0:143 Sequence
+0:143 Branch: Return with expression
+0:143 Constant:
+0:143 0.000000
+0:144 Function Definition: TDSoftShadow(i1;vf3; ( global highp float)
+0:144 Function Parameters:
+0:144 'lightIndex' ( in highp int)
+0:144 'worldSpacePos' ( in highp 3-component vector of float)
+0:145 Sequence
+0:145 Branch: Return with expression
+0:145 Constant:
+0:145 0.000000
+0:146 Function Definition: TDShadow(i1;vf3; ( global highp float)
+0:146 Function Parameters:
+0:146 'lightIndex' ( in highp int)
+0:146 'worldSpacePos' ( in highp 3-component vector of float)
+0:147 Sequence
+0:147 Branch: Return with expression
+0:147 Constant:
+0:147 0.000000
+0:152 Function Definition: iTDRadicalInverse_VdC(u1; ( global highp float)
+0:152 Function Parameters:
+0:152 'bits' ( in highp uint)
+0:154 Sequence
+0:154 move second child to first child ( temp highp uint)
+0:154 'bits' ( in highp uint)
+0:154 inclusive-or ( temp highp uint)
+0:154 left-shift ( temp highp uint)
+0:154 'bits' ( in highp uint)
+0:154 Constant:
+0:154 16 (const uint)
+0:154 right-shift ( temp highp uint)
+0:154 'bits' ( in highp uint)
+0:154 Constant:
+0:154 16 (const uint)
+0:155 move second child to first child ( temp highp uint)
+0:155 'bits' ( in highp uint)
+0:155 inclusive-or ( temp highp uint)
+0:155 left-shift ( temp highp uint)
+0:155 bitwise and ( temp highp uint)
+0:155 'bits' ( in highp uint)
+0:155 Constant:
+0:155 1431655765 (const uint)
+0:155 Constant:
+0:155 1 (const uint)
+0:155 right-shift ( temp highp uint)
+0:155 bitwise and ( temp highp uint)
+0:155 'bits' ( in highp uint)
+0:155 Constant:
+0:155 2863311530 (const uint)
+0:155 Constant:
+0:155 1 (const uint)
+0:156 move second child to first child ( temp highp uint)
+0:156 'bits' ( in highp uint)
+0:156 inclusive-or ( temp highp uint)
+0:156 left-shift ( temp highp uint)
+0:156 bitwise and ( temp highp uint)
+0:156 'bits' ( in highp uint)
+0:156 Constant:
+0:156 858993459 (const uint)
+0:156 Constant:
+0:156 2 (const uint)
+0:156 right-shift ( temp highp uint)
+0:156 bitwise and ( temp highp uint)
+0:156 'bits' ( in highp uint)
+0:156 Constant:
+0:156 3435973836 (const uint)
+0:156 Constant:
+0:156 2 (const uint)
+0:157 move second child to first child ( temp highp uint)
+0:157 'bits' ( in highp uint)
+0:157 inclusive-or ( temp highp uint)
+0:157 left-shift ( temp highp uint)
+0:157 bitwise and ( temp highp uint)
+0:157 'bits' ( in highp uint)
+0:157 Constant:
+0:157 252645135 (const uint)
+0:157 Constant:
+0:157 4 (const uint)
+0:157 right-shift ( temp highp uint)
+0:157 bitwise and ( temp highp uint)
+0:157 'bits' ( in highp uint)
+0:157 Constant:
+0:157 4042322160 (const uint)
+0:157 Constant:
+0:157 4 (const uint)
+0:158 move second child to first child ( temp highp uint)
+0:158 'bits' ( in highp uint)
+0:158 inclusive-or ( temp highp uint)
+0:158 left-shift ( temp highp uint)
+0:158 bitwise and ( temp highp uint)
+0:158 'bits' ( in highp uint)
+0:158 Constant:
+0:158 16711935 (const uint)
+0:158 Constant:
+0:158 8 (const uint)
+0:158 right-shift ( temp highp uint)
+0:158 bitwise and ( temp highp uint)
+0:158 'bits' ( in highp uint)
+0:158 Constant:
+0:158 4278255360 (const uint)
+0:158 Constant:
+0:158 8 (const uint)
+0:159 Branch: Return with expression
+0:159 component-wise multiply ( temp highp float)
+0:159 Convert uint to float ( temp highp float)
+0:159 'bits' ( in highp uint)
+0:159 Constant:
+0:159 2.3283064365387e-10
+0:161 Function Definition: iTDHammersley(u1;u1; ( global highp 2-component vector of float)
+0:161 Function Parameters:
+0:161 'i' ( in highp uint)
+0:161 'N' ( in highp uint)
+0:163 Sequence
+0:163 Branch: Return with expression
+0:163 Construct vec2 ( temp highp 2-component vector of float)
+0:163 divide ( temp highp float)
+0:163 Convert uint to float ( temp highp float)
+0:163 'i' ( in highp uint)
+0:163 Convert uint to float ( temp highp float)
+0:163 'N' ( in highp uint)
+0:163 Function Call: iTDRadicalInverse_VdC(u1; ( global highp float)
+0:163 'i' ( in highp uint)
+0:165 Function Definition: iTDImportanceSampleGGX(vf2;f1;vf3; ( global highp 3-component vector of float)
+0:165 Function Parameters:
+0:165 'Xi' ( in highp 2-component vector of float)
+0:165 'roughness2' ( in highp float)
+0:165 'N' ( in highp 3-component vector of float)
+0:167 Sequence
+0:167 Sequence
+0:167 move second child to first child ( temp highp float)
+0:167 'a' ( temp highp float)
+0:167 'roughness2' ( in highp float)
+0:168 Sequence
+0:168 move second child to first child ( temp highp float)
+0:168 'phi' ( temp highp float)
+0:168 component-wise multiply ( temp highp float)
+0:168 Constant:
+0:168 6.283185
+0:168 direct index ( temp highp float)
+0:168 'Xi' ( in highp 2-component vector of float)
+0:168 Constant:
+0:168 0 (const int)
+0:169 Sequence
+0:169 move second child to first child ( temp highp float)
+0:169 'cosTheta' ( temp highp float)
+0:169 sqrt ( global highp float)
+0:169 divide ( temp highp float)
+0:169 subtract ( temp highp float)
+0:169 Constant:
+0:169 1.000000
+0:169 direct index ( temp highp float)
+0:169 'Xi' ( in highp 2-component vector of float)
+0:169 Constant:
+0:169 1 (const int)
+0:169 add ( temp highp float)
+0:169 Constant:
+0:169 1.000000
+0:169 component-wise multiply ( temp highp float)
+0:169 subtract ( temp highp float)
+0:169 component-wise multiply ( temp highp float)
+0:169 'a' ( temp highp float)
+0:169 'a' ( temp highp float)
+0:169 Constant:
+0:169 1.000000
+0:169 direct index ( temp highp float)
+0:169 'Xi' ( in highp 2-component vector of float)
+0:169 Constant:
+0:169 1 (const int)
+0:170 Sequence
+0:170 move second child to first child ( temp highp float)
+0:170 'sinTheta' ( temp highp float)
+0:170 sqrt ( global highp float)
+0:170 subtract ( temp highp float)
+0:170 Constant:
+0:170 1.000000
+0:170 component-wise multiply ( temp highp float)
+0:170 'cosTheta' ( temp highp float)
+0:170 'cosTheta' ( temp highp float)
+0:173 move second child to first child ( temp highp float)
+0:173 direct index ( temp highp float)
+0:173 'H' ( temp highp 3-component vector of float)
+0:173 Constant:
+0:173 0 (const int)
+0:173 component-wise multiply ( temp highp float)
+0:173 'sinTheta' ( temp highp float)
+0:173 cosine ( global highp float)
+0:173 'phi' ( temp highp float)
+0:174 move second child to first child ( temp highp float)
+0:174 direct index ( temp highp float)
+0:174 'H' ( temp highp 3-component vector of float)
+0:174 Constant:
+0:174 1 (const int)
+0:174 component-wise multiply ( temp highp float)
+0:174 'sinTheta' ( temp highp float)
+0:174 sine ( global highp float)
+0:174 'phi' ( temp highp float)
+0:175 move second child to first child ( temp highp float)
+0:175 direct index ( temp highp float)
+0:175 'H' ( temp highp 3-component vector of float)
+0:175 Constant:
+0:175 2 (const int)
+0:175 'cosTheta' ( temp highp float)
+0:177 Sequence
+0:177 move second child to first child ( temp highp 3-component vector of float)
+0:177 'upVector' ( temp highp 3-component vector of float)
+0:177 Test condition and select ( temp highp 3-component vector of float)
+0:177 Condition
+0:177 Compare Less Than ( temp bool)
+0:177 Absolute value ( global highp float)
+0:177 direct index ( temp highp float)
+0:177 'N' ( in highp 3-component vector of float)
+0:177 Constant:
+0:177 2 (const int)
+0:177 Constant:
+0:177 0.999000
+0:177 true case
+0:177 Constant:
+0:177 0.000000
+0:177 0.000000
+0:177 1.000000
+0:177 false case
+0:177 Constant:
+0:177 1.000000
+0:177 0.000000
+0:177 0.000000
+0:178 Sequence
+0:178 move second child to first child ( temp highp 3-component vector of float)
+0:178 'tangentX' ( temp highp 3-component vector of float)
+0:178 normalize ( global highp 3-component vector of float)
+0:178 cross-product ( global highp 3-component vector of float)
+0:178 'upVector' ( temp highp 3-component vector of float)
+0:178 'N' ( in highp 3-component vector of float)
+0:179 Sequence
+0:179 move second child to first child ( temp highp 3-component vector of float)
+0:179 'tangentY' ( temp highp 3-component vector of float)
+0:179 cross-product ( global highp 3-component vector of float)
+0:179 'N' ( in highp 3-component vector of float)
+0:179 'tangentX' ( temp highp 3-component vector of float)
+0:182 Sequence
+0:182 move second child to first child ( temp highp 3-component vector of float)
+0:182 'worldResult' ( temp highp 3-component vector of float)
+0:182 add ( temp highp 3-component vector of float)
+0:182 add ( temp highp 3-component vector of float)
+0:182 vector-scale ( temp highp 3-component vector of float)
+0:182 'tangentX' ( temp highp 3-component vector of float)
+0:182 direct index ( temp highp float)
+0:182 'H' ( temp highp 3-component vector of float)
+0:182 Constant:
+0:182 0 (const int)
+0:182 vector-scale ( temp highp 3-component vector of float)
+0:182 'tangentY' ( temp highp 3-component vector of float)
+0:182 direct index ( temp highp float)
+0:182 'H' ( temp highp 3-component vector of float)
+0:182 Constant:
+0:182 1 (const int)
+0:182 vector-scale ( temp highp 3-component vector of float)
+0:182 'N' ( in highp 3-component vector of float)
+0:182 direct index ( temp highp float)
+0:182 'H' ( temp highp 3-component vector of float)
+0:182 Constant:
+0:182 2 (const int)
+0:183 Branch: Return with expression
+0:183 'worldResult' ( temp highp 3-component vector of float)
+0:185 Function Definition: iTDDistributionGGX(vf3;vf3;f1; ( global highp float)
+0:185 Function Parameters:
+0:185 'normal' ( in highp 3-component vector of float)
+0:185 'half_vector' ( in highp 3-component vector of float)
+0:185 'roughness2' ( in highp float)
+0:? Sequence
+0:189 Sequence
+0:189 move second child to first child ( temp highp float)
+0:189 'NdotH' ( temp highp float)
+0:189 clamp ( global highp float)
+0:189 dot-product ( global highp float)
+0:189 'normal' ( in highp 3-component vector of float)
+0:189 'half_vector' ( in highp 3-component vector of float)
+0:189 Constant:
+0:189 1.0000000000000e-06
+0:189 Constant:
+0:189 1.000000
+0:191 Sequence
+0:191 move second child to first child ( temp highp float)
+0:191 'alpha2' ( temp highp float)
+0:191 component-wise multiply ( temp highp float)
+0:191 'roughness2' ( in highp float)
+0:191 'roughness2' ( in highp float)
+0:193 Sequence
+0:193 move second child to first child ( temp highp float)
+0:193 'denom' ( temp highp float)
+0:193 add ( temp highp float)
+0:193 component-wise multiply ( temp highp float)
+0:193 component-wise multiply ( temp highp float)
+0:193 'NdotH' ( temp highp float)
+0:193 'NdotH' ( temp highp float)
+0:193 subtract ( temp highp float)
+0:193 'alpha2' ( temp highp float)
+0:193 Constant:
+0:193 1.000000
+0:193 Constant:
+0:193 1.000000
+0:194 move second child to first child ( temp highp float)
+0:194 'denom' ( temp highp float)
+0:194 max ( global highp float)
+0:194 Constant:
+0:194 1.0000000000000e-08
+0:194 'denom' ( temp highp float)
+0:195 Branch: Return with expression
+0:195 divide ( temp highp float)
+0:195 'alpha2' ( temp highp float)
+0:195 component-wise multiply ( temp highp float)
+0:195 component-wise multiply ( temp highp float)
+0:195 Constant:
+0:195 3.141593
+0:195 'denom' ( temp highp float)
+0:195 'denom' ( temp highp float)
+0:197 Function Definition: iTDCalcF(vf3;f1; ( global highp 3-component vector of float)
+0:197 Function Parameters:
+0:197 'F0' ( in highp 3-component vector of float)
+0:197 'VdotH' ( in highp float)
+0:198 Sequence
+0:198 Branch: Return with expression
+0:198 add ( temp highp 3-component vector of float)
+0:198 'F0' ( in highp 3-component vector of float)
+0:198 vector-scale ( temp highp 3-component vector of float)
+0:198 subtract ( temp highp 3-component vector of float)
+0:198 Constant:
+0:198 1.000000
+0:198 1.000000
+0:198 1.000000
+0:198 'F0' ( in highp 3-component vector of float)
+0:198 pow ( global highp float)
+0:198 Constant:
+0:198 2.000000
+0:198 component-wise multiply ( temp highp float)
+0:198 subtract ( temp highp float)
+0:198 component-wise multiply ( temp highp float)
+0:198 Constant:
+0:198 -5.554730
+0:198 'VdotH' ( in highp float)
+0:198 Constant:
+0:198 6.983160
+0:198 'VdotH' ( in highp float)
+0:201 Function Definition: iTDCalcG(f1;f1;f1; ( global highp float)
+0:201 Function Parameters:
+0:201 'NdotL' ( in highp float)
+0:201 'NdotV' ( in highp float)
+0:201 'k' ( in highp float)
+0:202 Sequence
+0:202 Sequence
+0:202 move second child to first child ( temp highp float)
+0:202 'Gl' ( temp highp float)
+0:202 divide ( temp highp float)
+0:202 Constant:
+0:202 1.000000
+0:202 add ( temp highp float)
+0:202 component-wise multiply ( temp highp float)
+0:202 'NdotL' ( in highp float)
+0:202 subtract ( temp highp float)
+0:202 Constant:
+0:202 1.000000
+0:202 'k' ( in highp float)
+0:202 'k' ( in highp float)
+0:203 Sequence
+0:203 move second child to first child ( temp highp float)
+0:203 'Gv' ( temp highp float)
+0:203 divide ( temp highp float)
+0:203 Constant:
+0:203 1.000000
+0:203 add ( temp highp float)
+0:203 component-wise multiply ( temp highp float)
+0:203 'NdotV' ( in highp float)
+0:203 subtract ( temp highp float)
+0:203 Constant:
+0:203 1.000000
+0:203 'k' ( in highp float)
+0:203 'k' ( in highp float)
+0:204 Branch: Return with expression
+0:204 component-wise multiply ( temp highp float)
+0:204 'Gl' ( temp highp float)
+0:204 'Gv' ( temp highp float)
+0:207 Function Definition: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:207 Function Parameters:
+0:207 'index' ( in highp int)
+0:207 'diffuseColor' ( in highp 3-component vector of float)
+0:207 'specularColor' ( in highp 3-component vector of float)
+0:207 'worldSpacePos' ( in highp 3-component vector of float)
+0:207 'normal' ( in highp 3-component vector of float)
+0:207 'shadowStrength' ( in highp float)
+0:207 'shadowColor' ( in highp 3-component vector of float)
+0:207 'camVector' ( in highp 3-component vector of float)
+0:207 'roughness' ( in highp float)
+0:? Sequence
+0:210 Branch: Return with expression
+0:210 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:213 Function Definition: TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void)
+0:213 Function Parameters:
+0:213 'diffuseContrib' ( inout highp 3-component vector of float)
+0:213 'specularContrib' ( inout highp 3-component vector of float)
+0:213 'shadowStrengthOut' ( inout highp float)
+0:213 'index' ( in highp int)
+0:213 'diffuseColor' ( in highp 3-component vector of float)
+0:213 'specularColor' ( in highp 3-component vector of float)
+0:213 'worldSpacePos' ( in highp 3-component vector of float)
+0:213 'normal' ( in highp 3-component vector of float)
+0:213 'shadowStrength' ( in highp float)
+0:213 'shadowColor' ( in highp 3-component vector of float)
+0:213 'camVector' ( in highp 3-component vector of float)
+0:213 'roughness' ( in highp float)
+0:215 Sequence
+0:215 Sequence
+0:215 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 'index' ( in highp int)
+0:215 'diffuseColor' ( in highp 3-component vector of float)
+0:215 'specularColor' ( in highp 3-component vector of float)
+0:215 'worldSpacePos' ( in highp 3-component vector of float)
+0:215 'normal' ( in highp 3-component vector of float)
+0:215 'shadowStrength' ( in highp float)
+0:215 'shadowColor' ( in highp 3-component vector of float)
+0:215 'camVector' ( in highp 3-component vector of float)
+0:215 'roughness' ( in highp float)
+0:215 move second child to first child ( temp highp 3-component vector of float)
+0:215 'diffuseContrib' ( inout highp 3-component vector of float)
+0:215 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 Constant:
+0:215 0 (const int)
+0:216 move second child to first child ( temp highp 3-component vector of float)
+0:216 'specularContrib' ( inout highp 3-component vector of float)
+0:216 specular: direct index for structure ( global highp 3-component vector of float)
+0:216 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:216 Constant:
+0:216 1 (const int)
+0:217 move second child to first child ( temp highp float)
+0:217 'shadowStrengthOut' ( inout highp float)
+0:217 shadowStrength: direct index for structure ( global highp float)
+0:217 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:217 Constant:
+0:217 2 (const int)
+0:220 Function Definition: TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void)
+0:220 Function Parameters:
+0:220 'diffuseContrib' ( inout highp 3-component vector of float)
+0:220 'specularContrib' ( inout highp 3-component vector of float)
+0:220 'index' ( in highp int)
+0:220 'diffuseColor' ( in highp 3-component vector of float)
+0:220 'specularColor' ( in highp 3-component vector of float)
+0:220 'worldSpacePos' ( in highp 3-component vector of float)
+0:220 'normal' ( in highp 3-component vector of float)
+0:220 'shadowStrength' ( in highp float)
+0:220 'shadowColor' ( in highp 3-component vector of float)
+0:220 'camVector' ( in highp 3-component vector of float)
+0:220 'roughness' ( in highp float)
+0:222 Sequence
+0:222 Sequence
+0:222 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 'index' ( in highp int)
+0:222 'diffuseColor' ( in highp 3-component vector of float)
+0:222 'specularColor' ( in highp 3-component vector of float)
+0:222 'worldSpacePos' ( in highp 3-component vector of float)
+0:222 'normal' ( in highp 3-component vector of float)
+0:222 'shadowStrength' ( in highp float)
+0:222 'shadowColor' ( in highp 3-component vector of float)
+0:222 'camVector' ( in highp 3-component vector of float)
+0:222 'roughness' ( in highp float)
+0:222 move second child to first child ( temp highp 3-component vector of float)
+0:222 'diffuseContrib' ( inout highp 3-component vector of float)
+0:222 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 Constant:
+0:222 0 (const int)
+0:223 move second child to first child ( temp highp 3-component vector of float)
+0:223 'specularContrib' ( inout highp 3-component vector of float)
+0:223 specular: direct index for structure ( global highp 3-component vector of float)
+0:223 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:223 Constant:
+0:223 1 (const int)
+0:226 Function Definition: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:226 Function Parameters:
+0:226 'index' ( in highp int)
+0:226 'diffuseColor' ( in highp 3-component vector of float)
+0:226 'specularColor' ( in highp 3-component vector of float)
+0:226 'normal' ( in highp 3-component vector of float)
+0:226 'camVector' ( in highp 3-component vector of float)
+0:226 'roughness' ( in highp float)
+0:226 'ambientOcclusion' ( in highp float)
+0:? Sequence
+0:229 Branch: Return with expression
+0:229 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:232 Function Definition: TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1; ( global void)
+0:232 Function Parameters:
+0:232 'diffuseContrib' ( inout highp 3-component vector of float)
+0:232 'specularContrib' ( inout highp 3-component vector of float)
+0:232 'index' ( in highp int)
+0:232 'diffuseColor' ( in highp 3-component vector of float)
+0:232 'specularColor' ( in highp 3-component vector of float)
+0:232 'normal' ( in highp 3-component vector of float)
+0:232 'camVector' ( in highp 3-component vector of float)
+0:232 'roughness' ( in highp float)
+0:232 'ambientOcclusion' ( in highp float)
+0:234 Sequence
+0:234 Sequence
+0:234 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:234 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:234 Function Call: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:234 'index' ( in highp int)
+0:234 'diffuseColor' ( in highp 3-component vector of float)
+0:234 'specularColor' ( in highp 3-component vector of float)
+0:234 'normal' ( in highp 3-component vector of float)
+0:234 'camVector' ( in highp 3-component vector of float)
+0:234 'roughness' ( in highp float)
+0:234 'ambientOcclusion' ( in highp float)
+0:235 move second child to first child ( temp highp 3-component vector of float)
+0:235 'diffuseContrib' ( inout highp 3-component vector of float)
+0:235 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:235 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:235 Constant:
+0:235 0 (const int)
+0:236 move second child to first child ( temp highp 3-component vector of float)
+0:236 'specularContrib' ( inout highp 3-component vector of float)
+0:236 specular: direct index for structure ( global highp 3-component vector of float)
+0:236 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:236 Constant:
+0:236 1 (const int)
+0:239 Function Definition: TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:239 Function Parameters:
+0:239 'index' ( in highp int)
+0:239 'worldSpacePos' ( in highp 3-component vector of float)
+0:239 'normal' ( in highp 3-component vector of float)
+0:239 'shadowStrength' ( in highp float)
+0:239 'shadowColor' ( in highp 3-component vector of float)
+0:239 'camVector' ( in highp 3-component vector of float)
+0:239 'shininess' ( in highp float)
+0:239 'shininess2' ( in highp float)
+0:? Sequence
+0:242 switch
+0:242 condition
+0:242 'index' ( in highp int)
+0:242 body
+0:242 Sequence
+0:244 default:
+0:? Sequence
+0:245 move second child to first child ( temp highp 3-component vector of float)
+0:245 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:245 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:245 Constant:
+0:245 0 (const int)
+0:245 Constant:
+0:245 0.000000
+0:245 0.000000
+0:245 0.000000
+0:246 move second child to first child ( temp highp 3-component vector of float)
+0:246 specular: direct index for structure ( global highp 3-component vector of float)
+0:246 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:246 Constant:
+0:246 1 (const int)
+0:246 Constant:
+0:246 0.000000
+0:246 0.000000
+0:246 0.000000
+0:247 move second child to first child ( temp highp 3-component vector of float)
+0:247 specular2: direct index for structure ( global highp 3-component vector of float)
+0:247 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:247 Constant:
+0:247 2 (const int)
+0:247 Constant:
+0:247 0.000000
+0:247 0.000000
+0:247 0.000000
+0:248 move second child to first child ( temp highp float)
+0:248 shadowStrength: direct index for structure ( global highp float)
+0:248 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:248 Constant:
+0:248 3 (const int)
+0:248 Constant:
+0:248 0.000000
+0:249 Branch: Break
+0:251 Branch: Return with expression
+0:251 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:254 Function Definition: TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void)
+0:254 Function Parameters:
+0:254 'diffuseContrib' ( inout highp 3-component vector of float)
+0:254 'specularContrib' ( inout highp 3-component vector of float)
+0:254 'specularContrib2' ( inout highp 3-component vector of float)
+0:254 'shadowStrengthOut' ( inout highp float)
+0:254 'index' ( in highp int)
+0:254 'worldSpacePos' ( in highp 3-component vector of float)
+0:254 'normal' ( in highp 3-component vector of float)
+0:254 'shadowStrength' ( in highp float)
+0:254 'shadowColor' ( in highp 3-component vector of float)
+0:254 'camVector' ( in highp 3-component vector of float)
+0:254 'shininess' ( in highp float)
+0:254 'shininess2' ( in highp float)
+0:? Sequence
+0:257 switch
+0:257 condition
+0:257 'index' ( in highp int)
+0:257 body
+0:257 Sequence
+0:259 default:
+0:? Sequence
+0:260 move second child to first child ( temp highp 3-component vector of float)
+0:260 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:260 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:260 Constant:
+0:260 0 (const int)
+0:260 Constant:
+0:260 0.000000
+0:260 0.000000
+0:260 0.000000
+0:261 move second child to first child ( temp highp 3-component vector of float)
+0:261 specular: direct index for structure ( global highp 3-component vector of float)
+0:261 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:261 Constant:
+0:261 1 (const int)
+0:261 Constant:
+0:261 0.000000
+0:261 0.000000
+0:261 0.000000
+0:262 move second child to first child ( temp highp 3-component vector of float)
+0:262 specular2: direct index for structure ( global highp 3-component vector of float)
+0:262 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:262 Constant:
+0:262 2 (const int)
+0:262 Constant:
+0:262 0.000000
+0:262 0.000000
+0:262 0.000000
+0:263 move second child to first child ( temp highp float)
+0:263 shadowStrength: direct index for structure ( global highp float)
+0:263 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:263 Constant:
+0:263 3 (const int)
+0:263 Constant:
+0:263 0.000000
+0:264 Branch: Break
+0:266 move second child to first child ( temp highp 3-component vector of float)
+0:266 'diffuseContrib' ( inout highp 3-component vector of float)
+0:266 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:266 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:266 Constant:
+0:266 0 (const int)
+0:267 move second child to first child ( temp highp 3-component vector of float)
+0:267 'specularContrib' ( inout highp 3-component vector of float)
+0:267 specular: direct index for structure ( global highp 3-component vector of float)
+0:267 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:267 Constant:
+0:267 1 (const int)
+0:268 move second child to first child ( temp highp 3-component vector of float)
+0:268 'specularContrib2' ( inout highp 3-component vector of float)
+0:268 specular2: direct index for structure ( global highp 3-component vector of float)
+0:268 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:268 Constant:
+0:268 2 (const int)
+0:269 move second child to first child ( temp highp float)
+0:269 'shadowStrengthOut' ( inout highp float)
+0:269 shadowStrength: direct index for structure ( global highp float)
+0:269 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:269 Constant:
+0:269 3 (const int)
+0:272 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void)
+0:272 Function Parameters:
+0:272 'diffuseContrib' ( inout highp 3-component vector of float)
+0:272 'specularContrib' ( inout highp 3-component vector of float)
+0:272 'specularContrib2' ( inout highp 3-component vector of float)
+0:272 'index' ( in highp int)
+0:272 'worldSpacePos' ( in highp 3-component vector of float)
+0:272 'normal' ( in highp 3-component vector of float)
+0:272 'shadowStrength' ( in highp float)
+0:272 'shadowColor' ( in highp 3-component vector of float)
+0:272 'camVector' ( in highp 3-component vector of float)
+0:272 'shininess' ( in highp float)
+0:272 'shininess2' ( in highp float)
+0:? Sequence
+0:275 switch
+0:275 condition
+0:275 'index' ( in highp int)
+0:275 body
+0:275 Sequence
+0:277 default:
+0:? Sequence
+0:278 move second child to first child ( temp highp 3-component vector of float)
+0:278 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:278 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:278 Constant:
+0:278 0 (const int)
+0:278 Constant:
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:279 move second child to first child ( temp highp 3-component vector of float)
+0:279 specular: direct index for structure ( global highp 3-component vector of float)
+0:279 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:279 Constant:
+0:279 1 (const int)
+0:279 Constant:
+0:279 0.000000
+0:279 0.000000
+0:279 0.000000
+0:280 move second child to first child ( temp highp 3-component vector of float)
+0:280 specular2: direct index for structure ( global highp 3-component vector of float)
+0:280 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:280 Constant:
+0:280 2 (const int)
+0:280 Constant:
+0:280 0.000000
+0:280 0.000000
+0:280 0.000000
+0:281 move second child to first child ( temp highp float)
+0:281 shadowStrength: direct index for structure ( global highp float)
+0:281 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:281 Constant:
+0:281 3 (const int)
+0:281 Constant:
+0:281 0.000000
+0:282 Branch: Break
+0:284 move second child to first child ( temp highp 3-component vector of float)
+0:284 'diffuseContrib' ( inout highp 3-component vector of float)
+0:284 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:284 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:284 Constant:
+0:284 0 (const int)
+0:285 move second child to first child ( temp highp 3-component vector of float)
+0:285 'specularContrib' ( inout highp 3-component vector of float)
+0:285 specular: direct index for structure ( global highp 3-component vector of float)
+0:285 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:285 Constant:
+0:285 1 (const int)
+0:286 move second child to first child ( temp highp 3-component vector of float)
+0:286 'specularContrib2' ( inout highp 3-component vector of float)
+0:286 specular2: direct index for structure ( global highp 3-component vector of float)
+0:286 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:286 Constant:
+0:286 2 (const int)
+0:289 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1; ( global void)
+0:289 Function Parameters:
+0:289 'diffuseContrib' ( inout highp 3-component vector of float)
+0:289 'specularContrib' ( inout highp 3-component vector of float)
+0:289 'index' ( in highp int)
+0:289 'worldSpacePos' ( in highp 3-component vector of float)
+0:289 'normal' ( in highp 3-component vector of float)
+0:289 'shadowStrength' ( in highp float)
+0:289 'shadowColor' ( in highp 3-component vector of float)
+0:289 'camVector' ( in highp 3-component vector of float)
+0:289 'shininess' ( in highp float)
+0:? Sequence
+0:292 switch
+0:292 condition
+0:292 'index' ( in highp int)
+0:292 body
+0:292 Sequence
+0:294 default:
+0:? Sequence
+0:295 move second child to first child ( temp highp 3-component vector of float)
+0:295 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:295 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:295 Constant:
+0:295 0 (const int)
+0:295 Constant:
+0:295 0.000000
+0:295 0.000000
+0:295 0.000000
+0:296 move second child to first child ( temp highp 3-component vector of float)
+0:296 specular: direct index for structure ( global highp 3-component vector of float)
+0:296 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:296 Constant:
+0:296 1 (const int)
+0:296 Constant:
+0:296 0.000000
+0:296 0.000000
+0:296 0.000000
+0:297 move second child to first child ( temp highp 3-component vector of float)
+0:297 specular2: direct index for structure ( global highp 3-component vector of float)
+0:297 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:297 Constant:
+0:297 2 (const int)
+0:297 Constant:
+0:297 0.000000
+0:297 0.000000
+0:297 0.000000
+0:298 move second child to first child ( temp highp float)
+0:298 shadowStrength: direct index for structure ( global highp float)
+0:298 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:298 Constant:
+0:298 3 (const int)
+0:298 Constant:
+0:298 0.000000
+0:299 Branch: Break
+0:301 move second child to first child ( temp highp 3-component vector of float)
+0:301 'diffuseContrib' ( inout highp 3-component vector of float)
+0:301 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:301 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:301 Constant:
+0:301 0 (const int)
+0:302 move second child to first child ( temp highp 3-component vector of float)
+0:302 'specularContrib' ( inout highp 3-component vector of float)
+0:302 specular: direct index for structure ( global highp 3-component vector of float)
+0:302 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:302 Constant:
+0:302 1 (const int)
+0:305 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1; ( global void)
+0:305 Function Parameters:
+0:305 'diffuseContrib' ( inout highp 3-component vector of float)
+0:305 'specularContrib' ( inout highp 3-component vector of float)
+0:305 'specularContrib2' ( inout highp 3-component vector of float)
+0:305 'index' ( in highp int)
+0:305 'worldSpacePos' ( in highp 3-component vector of float)
+0:305 'normal' ( in highp 3-component vector of float)
+0:305 'camVector' ( in highp 3-component vector of float)
+0:305 'shininess' ( in highp float)
+0:305 'shininess2' ( in highp float)
+0:? Sequence
+0:308 switch
+0:308 condition
+0:308 'index' ( in highp int)
+0:308 body
+0:308 Sequence
+0:310 default:
+0:? Sequence
+0:311 move second child to first child ( temp highp 3-component vector of float)
+0:311 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:311 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:311 Constant:
+0:311 0 (const int)
+0:311 Constant:
+0:311 0.000000
+0:311 0.000000
+0:311 0.000000
+0:312 move second child to first child ( temp highp 3-component vector of float)
+0:312 specular: direct index for structure ( global highp 3-component vector of float)
+0:312 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:312 Constant:
+0:312 1 (const int)
+0:312 Constant:
+0:312 0.000000
+0:312 0.000000
+0:312 0.000000
+0:313 move second child to first child ( temp highp 3-component vector of float)
+0:313 specular2: direct index for structure ( global highp 3-component vector of float)
+0:313 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:313 Constant:
+0:313 2 (const int)
+0:313 Constant:
+0:313 0.000000
+0:313 0.000000
+0:313 0.000000
+0:314 move second child to first child ( temp highp float)
+0:314 shadowStrength: direct index for structure ( global highp float)
+0:314 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:314 Constant:
+0:314 3 (const int)
+0:314 Constant:
+0:314 0.000000
+0:315 Branch: Break
+0:317 move second child to first child ( temp highp 3-component vector of float)
+0:317 'diffuseContrib' ( inout highp 3-component vector of float)
+0:317 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:317 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:317 Constant:
+0:317 0 (const int)
+0:318 move second child to first child ( temp highp 3-component vector of float)
+0:318 'specularContrib' ( inout highp 3-component vector of float)
+0:318 specular: direct index for structure ( global highp 3-component vector of float)
+0:318 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:318 Constant:
+0:318 1 (const int)
+0:319 move second child to first child ( temp highp 3-component vector of float)
+0:319 'specularContrib2' ( inout highp 3-component vector of float)
+0:319 specular2: direct index for structure ( global highp 3-component vector of float)
+0:319 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:319 Constant:
+0:319 2 (const int)
+0:322 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1; ( global void)
+0:322 Function Parameters:
+0:322 'diffuseContrib' ( inout highp 3-component vector of float)
+0:322 'specularContrib' ( inout highp 3-component vector of float)
+0:322 'index' ( in highp int)
+0:322 'worldSpacePos' ( in highp 3-component vector of float)
+0:322 'normal' ( in highp 3-component vector of float)
+0:322 'camVector' ( in highp 3-component vector of float)
+0:322 'shininess' ( in highp float)
+0:? Sequence
+0:325 switch
+0:325 condition
+0:325 'index' ( in highp int)
+0:325 body
+0:325 Sequence
+0:327 default:
+0:? Sequence
+0:328 move second child to first child ( temp highp 3-component vector of float)
+0:328 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:328 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:328 Constant:
+0:328 0 (const int)
+0:328 Constant:
+0:328 0.000000
+0:328 0.000000
+0:328 0.000000
+0:329 move second child to first child ( temp highp 3-component vector of float)
+0:329 specular: direct index for structure ( global highp 3-component vector of float)
+0:329 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:329 Constant:
+0:329 1 (const int)
+0:329 Constant:
+0:329 0.000000
+0:329 0.000000
+0:329 0.000000
+0:330 move second child to first child ( temp highp 3-component vector of float)
+0:330 specular2: direct index for structure ( global highp 3-component vector of float)
+0:330 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:330 Constant:
+0:330 2 (const int)
+0:330 Constant:
+0:330 0.000000
+0:330 0.000000
+0:330 0.000000
+0:331 move second child to first child ( temp highp float)
+0:331 shadowStrength: direct index for structure ( global highp float)
+0:331 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:331 Constant:
+0:331 3 (const int)
+0:331 Constant:
+0:331 0.000000
+0:332 Branch: Break
+0:334 move second child to first child ( temp highp 3-component vector of float)
+0:334 'diffuseContrib' ( inout highp 3-component vector of float)
+0:334 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:334 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:334 Constant:
+0:334 0 (const int)
+0:335 move second child to first child ( temp highp 3-component vector of float)
+0:335 'specularContrib' ( inout highp 3-component vector of float)
+0:335 specular: direct index for structure ( global highp 3-component vector of float)
+0:335 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:335 Constant:
+0:335 1 (const int)
+0:338 Function Definition: TDLighting(vf3;i1;vf3;vf3; ( global void)
+0:338 Function Parameters:
+0:338 'diffuseContrib' ( inout highp 3-component vector of float)
+0:338 'index' ( in highp int)
+0:338 'worldSpacePos' ( in highp 3-component vector of float)
+0:338 'normal' ( in highp 3-component vector of float)
+0:? Sequence
+0:341 switch
+0:341 condition
+0:341 'index' ( in highp int)
+0:341 body
+0:341 Sequence
+0:343 default:
+0:? Sequence
+0:344 move second child to first child ( temp highp 3-component vector of float)
+0:344 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:344 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:344 Constant:
+0:344 0 (const int)
+0:344 Constant:
+0:344 0.000000
+0:344 0.000000
+0:344 0.000000
+0:345 move second child to first child ( temp highp 3-component vector of float)
+0:345 specular: direct index for structure ( global highp 3-component vector of float)
+0:345 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:345 Constant:
+0:345 1 (const int)
+0:345 Constant:
+0:345 0.000000
+0:345 0.000000
+0:345 0.000000
+0:346 move second child to first child ( temp highp 3-component vector of float)
+0:346 specular2: direct index for structure ( global highp 3-component vector of float)
+0:346 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:346 Constant:
+0:346 2 (const int)
+0:346 Constant:
+0:346 0.000000
+0:346 0.000000
+0:346 0.000000
+0:347 move second child to first child ( temp highp float)
+0:347 shadowStrength: direct index for structure ( global highp float)
+0:347 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:347 Constant:
+0:347 3 (const int)
+0:347 Constant:
+0:347 0.000000
+0:348 Branch: Break
+0:350 move second child to first child ( temp highp 3-component vector of float)
+0:350 'diffuseContrib' ( inout highp 3-component vector of float)
+0:350 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:350 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:350 Constant:
+0:350 0 (const int)
+0:353 Function Definition: TDLighting(vf3;i1;vf3;vf3;f1;vf3; ( global void)
+0:353 Function Parameters:
+0:353 'diffuseContrib' ( inout highp 3-component vector of float)
+0:353 'index' ( in highp int)
+0:353 'worldSpacePos' ( in highp 3-component vector of float)
+0:353 'normal' ( in highp 3-component vector of float)
+0:353 'shadowStrength' ( in highp float)
+0:353 'shadowColor' ( in highp 3-component vector of float)
+0:? Sequence
+0:356 switch
+0:356 condition
+0:356 'index' ( in highp int)
+0:356 body
+0:356 Sequence
+0:358 default:
+0:? Sequence
+0:359 move second child to first child ( temp highp 3-component vector of float)
+0:359 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:359 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:359 Constant:
+0:359 0 (const int)
+0:359 Constant:
+0:359 0.000000
+0:359 0.000000
+0:359 0.000000
+0:360 move second child to first child ( temp highp 3-component vector of float)
+0:360 specular: direct index for structure ( global highp 3-component vector of float)
+0:360 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:360 Constant:
+0:360 1 (const int)
+0:360 Constant:
+0:360 0.000000
+0:360 0.000000
+0:360 0.000000
+0:361 move second child to first child ( temp highp 3-component vector of float)
+0:361 specular2: direct index for structure ( global highp 3-component vector of float)
+0:361 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:361 Constant:
+0:361 2 (const int)
+0:361 Constant:
+0:361 0.000000
+0:361 0.000000
+0:361 0.000000
+0:362 move second child to first child ( temp highp float)
+0:362 shadowStrength: direct index for structure ( global highp float)
+0:362 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:362 Constant:
+0:362 3 (const int)
+0:362 Constant:
+0:362 0.000000
+0:363 Branch: Break
+0:365 move second child to first child ( temp highp 3-component vector of float)
+0:365 'diffuseContrib' ( inout highp 3-component vector of float)
+0:365 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:365 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:365 Constant:
+0:365 0 (const int)
+0:367 Function Definition: TDProjMap(i1;vf3;vf4; ( global highp 4-component vector of float)
+0:367 Function Parameters:
+0:367 'index' ( in highp int)
+0:367 'worldSpacePos' ( in highp 3-component vector of float)
+0:367 'defaultColor' ( in highp 4-component vector of float)
+0:368 Sequence
+0:368 switch
+0:368 condition
+0:368 'index' ( in highp int)
+0:368 body
+0:368 Sequence
+0:370 default:
+0:? Sequence
+0:370 Branch: Return with expression
+0:370 'defaultColor' ( in highp 4-component vector of float)
+0:373 Function Definition: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float)
+0:373 Function Parameters:
+0:373 'color' ( in highp 4-component vector of float)
+0:373 'lightingSpacePosition' ( in highp 3-component vector of float)
+0:373 'cameraIndex' ( in highp int)
+0:374 Sequence
+0:374 switch
+0:374 condition
+0:374 'cameraIndex' ( in highp int)
+0:374 body
+0:374 Sequence
+0:375 default:
+0:376 case: with expression
+0:376 Constant:
+0:376 0 (const int)
+0:? Sequence
+0:378 Sequence
+0:378 Branch: Return with expression
+0:378 'color' ( in highp 4-component vector of float)
+0:382 Function Definition: TDFog(vf4;vf3; ( global highp 4-component vector of float)
+0:382 Function Parameters:
+0:382 'color' ( in highp 4-component vector of float)
+0:382 'lightingSpacePosition' ( in highp 3-component vector of float)
+0:384 Sequence
+0:384 Branch: Return with expression
+0:384 Function Call: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float)
+0:384 'color' ( in highp 4-component vector of float)
+0:384 'lightingSpacePosition' ( in highp 3-component vector of float)
+0:384 Constant:
+0:384 0 (const int)
+0:386 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float)
+0:386 Function Parameters:
+0:386 'index' ( in highp int)
+0:386 't' ( in highp 3-component vector of float)
+0:? Sequence
+0:388 Sequence
+0:388 move second child to first child ( temp highp int)
+0:388 'coord' ( temp highp int)
+0:388 'index' ( in highp int)
+0:389 Sequence
+0:389 move second child to first child ( temp highp 4-component vector of float)
+0:389 'samp' ( temp highp 4-component vector of float)
+0:389 textureFetch ( global highp 4-component vector of float)
+0:389 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:389 'coord' ( temp highp int)
+0:390 move second child to first child ( temp highp float)
+0:390 direct index ( temp highp float)
+0:390 'v' ( temp highp 3-component vector of float)
+0:390 Constant:
+0:390 0 (const int)
+0:390 direct index ( temp highp float)
+0:390 't' ( in highp 3-component vector of float)
+0:390 Constant:
+0:390 0 (const int)
+0:391 move second child to first child ( temp highp float)
+0:391 direct index ( temp highp float)
+0:391 'v' ( temp highp 3-component vector of float)
+0:391 Constant:
+0:391 1 (const int)
+0:391 direct index ( temp highp float)
+0:391 't' ( in highp 3-component vector of float)
+0:391 Constant:
+0:391 1 (const int)
+0:392 move second child to first child ( temp highp float)
+0:392 direct index ( temp highp float)
+0:392 'v' ( temp highp 3-component vector of float)
+0:392 Constant:
+0:392 2 (const int)
+0:392 direct index ( temp highp float)
+0:392 'samp' ( temp highp 4-component vector of float)
+0:392 Constant:
+0:392 0 (const int)
+0:393 move second child to first child ( temp highp 3-component vector of float)
+0:393 vector swizzle ( temp highp 3-component vector of float)
+0:393 't' ( in highp 3-component vector of float)
+0:393 Sequence
+0:393 Constant:
+0:393 0 (const int)
+0:393 Constant:
+0:393 1 (const int)
+0:393 Constant:
+0:393 2 (const int)
+0:393 vector swizzle ( temp highp 3-component vector of float)
+0:393 'v' ( temp highp 3-component vector of float)
+0:393 Sequence
+0:393 Constant:
+0:393 0 (const int)
+0:393 Constant:
+0:393 1 (const int)
+0:393 Constant:
+0:393 2 (const int)
+0:394 Branch: Return with expression
+0:394 't' ( in highp 3-component vector of float)
+0:396 Function Definition: TDInstanceActive(i1; ( global bool)
+0:396 Function Parameters:
+0:396 'index' ( in highp int)
+0:397 Sequence
+0:397 subtract second child into first child ( temp highp int)
+0:397 'index' ( in highp int)
+0:397 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:397 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:397 Constant:
+0:397 0 (const uint)
+0:399 Sequence
+0:399 move second child to first child ( temp highp int)
+0:399 'coord' ( temp highp int)
+0:399 'index' ( in highp int)
+0:400 Sequence
+0:400 move second child to first child ( temp highp 4-component vector of float)
+0:400 'samp' ( temp highp 4-component vector of float)
+0:400 textureFetch ( global highp 4-component vector of float)
+0:400 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:400 'coord' ( temp highp int)
+0:401 move second child to first child ( temp highp float)
+0:401 'v' ( temp highp float)
+0:401 direct index ( temp highp float)
+0:401 'samp' ( temp highp 4-component vector of float)
+0:401 Constant:
+0:401 0 (const int)
+0:402 Branch: Return with expression
+0:402 Compare Not Equal ( temp bool)
+0:402 'v' ( temp highp float)
+0:402 Constant:
+0:402 0.000000
+0:404 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:404 Function Parameters:
+0:404 'index' ( in highp int)
+0:404 'instanceActive' ( out bool)
+0:405 Sequence
+0:405 Sequence
+0:405 move second child to first child ( temp highp int)
+0:405 'origIndex' ( temp highp int)
+0:405 'index' ( in highp int)
+0:406 subtract second child into first child ( temp highp int)
+0:406 'index' ( in highp int)
+0:406 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:406 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:406 Constant:
+0:406 0 (const uint)
+0:408 Sequence
+0:408 move second child to first child ( temp highp int)
+0:408 'coord' ( temp highp int)
+0:408 'index' ( in highp int)
+0:409 Sequence
+0:409 move second child to first child ( temp highp 4-component vector of float)
+0:409 'samp' ( temp highp 4-component vector of float)
+0:409 textureFetch ( global highp 4-component vector of float)
+0:409 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:409 'coord' ( temp highp int)
+0:410 move second child to first child ( temp highp float)
+0:410 direct index ( temp highp float)
+0:410 'v' ( temp highp 3-component vector of float)
+0:410 Constant:
+0:410 0 (const int)
+0:410 direct index ( temp highp float)
+0:410 'samp' ( temp highp 4-component vector of float)
+0:410 Constant:
+0:410 1 (const int)
+0:411 move second child to first child ( temp highp float)
+0:411 direct index ( temp highp float)
+0:411 'v' ( temp highp 3-component vector of float)
+0:411 Constant:
+0:411 1 (const int)
+0:411 direct index ( temp highp float)
+0:411 'samp' ( temp highp 4-component vector of float)
+0:411 Constant:
+0:411 2 (const int)
+0:412 move second child to first child ( temp highp float)
+0:412 direct index ( temp highp float)
+0:412 'v' ( temp highp 3-component vector of float)
+0:412 Constant:
+0:412 2 (const int)
+0:412 direct index ( temp highp float)
+0:412 'samp' ( temp highp 4-component vector of float)
+0:412 Constant:
+0:412 3 (const int)
+0:413 move second child to first child ( temp bool)
+0:413 'instanceActive' ( out bool)
+0:413 Compare Not Equal ( temp bool)
+0:413 direct index ( temp highp float)
+0:413 'samp' ( temp highp 4-component vector of float)
+0:413 Constant:
+0:413 0 (const int)
+0:413 Constant:
+0:413 0.000000
+0:414 Branch: Return with expression
+0:414 'v' ( temp highp 3-component vector of float)
+0:416 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float)
+0:416 Function Parameters:
+0:416 'index' ( in highp int)
+0:417 Sequence
+0:417 subtract second child into first child ( temp highp int)
+0:417 'index' ( in highp int)
+0:417 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:417 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:417 Constant:
+0:417 0 (const uint)
+0:419 Sequence
+0:419 move second child to first child ( temp highp int)
+0:419 'coord' ( temp highp int)
+0:419 'index' ( in highp int)
+0:420 Sequence
+0:420 move second child to first child ( temp highp 4-component vector of float)
+0:420 'samp' ( temp highp 4-component vector of float)
+0:420 textureFetch ( global highp 4-component vector of float)
+0:420 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:420 'coord' ( temp highp int)
+0:421 move second child to first child ( temp highp float)
+0:421 direct index ( temp highp float)
+0:421 'v' ( temp highp 3-component vector of float)
+0:421 Constant:
+0:421 0 (const int)
+0:421 direct index ( temp highp float)
+0:421 'samp' ( temp highp 4-component vector of float)
+0:421 Constant:
+0:421 1 (const int)
+0:422 move second child to first child ( temp highp float)
+0:422 direct index ( temp highp float)
+0:422 'v' ( temp highp 3-component vector of float)
+0:422 Constant:
+0:422 1 (const int)
+0:422 direct index ( temp highp float)
+0:422 'samp' ( temp highp 4-component vector of float)
+0:422 Constant:
+0:422 2 (const int)
+0:423 move second child to first child ( temp highp float)
+0:423 direct index ( temp highp float)
+0:423 'v' ( temp highp 3-component vector of float)
+0:423 Constant:
+0:423 2 (const int)
+0:423 direct index ( temp highp float)
+0:423 'samp' ( temp highp 4-component vector of float)
+0:423 Constant:
+0:423 3 (const int)
+0:424 Branch: Return with expression
+0:424 'v' ( temp highp 3-component vector of float)
+0:426 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float)
+0:426 Function Parameters:
+0:426 'index' ( in highp int)
+0:427 Sequence
+0:427 subtract second child into first child ( temp highp int)
+0:427 'index' ( in highp int)
+0:427 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:427 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:427 Constant:
+0:427 0 (const uint)
+0:428 Sequence
+0:428 move second child to first child ( temp highp 3-component vector of float)
+0:428 'v' ( temp highp 3-component vector of float)
+0:428 Constant:
+0:428 0.000000
+0:428 0.000000
+0:428 0.000000
+0:429 Sequence
+0:429 move second child to first child ( temp highp 3X3 matrix of float)
+0:429 'm' ( temp highp 3X3 matrix of float)
+0:429 Constant:
+0:429 1.000000
+0:429 0.000000
+0:429 0.000000
+0:429 0.000000
+0:429 1.000000
+0:429 0.000000
+0:429 0.000000
+0:429 0.000000
+0:429 1.000000
+0:433 Branch: Return with expression
+0:433 'm' ( temp highp 3X3 matrix of float)
+0:435 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float)
+0:435 Function Parameters:
+0:435 'index' ( in highp int)
+0:436 Sequence
+0:436 subtract second child into first child ( temp highp int)
+0:436 'index' ( in highp int)
+0:436 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:436 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:436 Constant:
+0:436 0 (const uint)
+0:437 Sequence
+0:437 move second child to first child ( temp highp 3-component vector of float)
+0:437 'v' ( temp highp 3-component vector of float)
+0:437 Constant:
+0:437 1.000000
+0:437 1.000000
+0:437 1.000000
+0:438 Branch: Return with expression
+0:438 'v' ( temp highp 3-component vector of float)
+0:440 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float)
+0:440 Function Parameters:
+0:440 'index' ( in highp int)
+0:441 Sequence
+0:441 subtract second child into first child ( temp highp int)
+0:441 'index' ( in highp int)
+0:441 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:441 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:441 Constant:
+0:441 0 (const uint)
+0:442 Sequence
+0:442 move second child to first child ( temp highp 3-component vector of float)
+0:442 'v' ( temp highp 3-component vector of float)
+0:442 Constant:
+0:442 0.000000
+0:442 0.000000
+0:442 0.000000
+0:443 Branch: Return with expression
+0:443 'v' ( temp highp 3-component vector of float)
+0:445 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float)
+0:445 Function Parameters:
+0:445 'index' ( in highp int)
+0:446 Sequence
+0:446 subtract second child into first child ( temp highp int)
+0:446 'index' ( in highp int)
+0:446 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:446 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:446 Constant:
+0:446 0 (const uint)
+0:447 Sequence
+0:447 move second child to first child ( temp highp 3-component vector of float)
+0:447 'v' ( temp highp 3-component vector of float)
+0:447 Constant:
+0:447 0.000000
+0:447 0.000000
+0:447 1.000000
+0:448 Branch: Return with expression
+0:448 'v' ( temp highp 3-component vector of float)
+0:450 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float)
+0:450 Function Parameters:
+0:450 'index' ( in highp int)
+0:451 Sequence
+0:451 subtract second child into first child ( temp highp int)
+0:451 'index' ( in highp int)
+0:451 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:451 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:451 Constant:
+0:451 0 (const uint)
+0:452 Sequence
+0:452 move second child to first child ( temp highp 3-component vector of float)
+0:452 'v' ( temp highp 3-component vector of float)
+0:452 Constant:
+0:452 0.000000
+0:452 1.000000
+0:452 0.000000
+0:453 Branch: Return with expression
+0:453 'v' ( temp highp 3-component vector of float)
+0:455 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:455 Function Parameters:
+0:455 'id' ( in highp int)
+0:456 Sequence
+0:456 Sequence
+0:456 move second child to first child ( temp bool)
+0:456 'instanceActive' ( temp bool)
+0:456 Constant:
+0:456 true (const bool)
+0:457 Sequence
+0:457 move second child to first child ( temp highp 3-component vector of float)
+0:457 't' ( temp highp 3-component vector of float)
+0:457 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:457 'id' ( in highp int)
+0:457 'instanceActive' ( temp bool)
+0:458 Test condition and select ( temp void)
+0:458 Condition
+0:458 Negate conditional ( temp bool)
+0:458 'instanceActive' ( temp bool)
+0:458 true case
+0:460 Sequence
+0:460 Branch: Return with expression
+0:460 Constant:
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:462 Sequence
+0:462 move second child to first child ( temp highp 4X4 matrix of float)
+0:462 'm' ( temp highp 4X4 matrix of float)
+0:462 Constant:
+0:462 1.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 1.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 1.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 1.000000
+0:464 Sequence
+0:464 Sequence
+0:464 move second child to first child ( temp highp 3-component vector of float)
+0:464 'tt' ( temp highp 3-component vector of float)
+0:464 't' ( temp highp 3-component vector of float)
+0:465 add second child into first child ( temp highp float)
+0:465 direct index ( temp highp float)
+0:465 direct index ( temp highp 4-component vector of float)
+0:465 'm' ( temp highp 4X4 matrix of float)
+0:465 Constant:
+0:465 3 (const int)
+0:465 Constant:
+0:465 0 (const int)
+0:465 component-wise multiply ( temp highp float)
+0:465 direct index ( temp highp float)
+0:465 direct index ( temp highp 4-component vector of float)
+0:465 'm' ( temp highp 4X4 matrix of float)
+0:465 Constant:
+0:465 0 (const int)
+0:465 Constant:
+0:465 0 (const int)
+0:465 direct index ( temp highp float)
+0:465 'tt' ( temp highp 3-component vector of float)
+0:465 Constant:
+0:465 0 (const int)
+0:466 add second child into first child ( temp highp float)
+0:466 direct index ( temp highp float)
+0:466 direct index ( temp highp 4-component vector of float)
+0:466 'm' ( temp highp 4X4 matrix of float)
+0:466 Constant:
+0:466 3 (const int)
+0:466 Constant:
+0:466 1 (const int)
+0:466 component-wise multiply ( temp highp float)
+0:466 direct index ( temp highp float)
+0:466 direct index ( temp highp 4-component vector of float)
+0:466 'm' ( temp highp 4X4 matrix of float)
+0:466 Constant:
+0:466 0 (const int)
+0:466 Constant:
+0:466 1 (const int)
+0:466 direct index ( temp highp float)
+0:466 'tt' ( temp highp 3-component vector of float)
+0:466 Constant:
+0:466 0 (const int)
+0:467 add second child into first child ( temp highp float)
+0:467 direct index ( temp highp float)
+0:467 direct index ( temp highp 4-component vector of float)
+0:467 'm' ( temp highp 4X4 matrix of float)
+0:467 Constant:
+0:467 3 (const int)
+0:467 Constant:
+0:467 2 (const int)
+0:467 component-wise multiply ( temp highp float)
+0:467 direct index ( temp highp float)
+0:467 direct index ( temp highp 4-component vector of float)
+0:467 'm' ( temp highp 4X4 matrix of float)
+0:467 Constant:
+0:467 0 (const int)
+0:467 Constant:
+0:467 2 (const int)
+0:467 direct index ( temp highp float)
+0:467 'tt' ( temp highp 3-component vector of float)
+0:467 Constant:
+0:467 0 (const int)
+0:468 add second child into first child ( temp highp float)
+0:468 direct index ( temp highp float)
+0:468 direct index ( temp highp 4-component vector of float)
+0:468 'm' ( temp highp 4X4 matrix of float)
+0:468 Constant:
+0:468 3 (const int)
+0:468 Constant:
+0:468 3 (const int)
+0:468 component-wise multiply ( temp highp float)
+0:468 direct index ( temp highp float)
+0:468 direct index ( temp highp 4-component vector of float)
+0:468 'm' ( temp highp 4X4 matrix of float)
+0:468 Constant:
+0:468 0 (const int)
+0:468 Constant:
+0:468 3 (const int)
+0:468 direct index ( temp highp float)
+0:468 'tt' ( temp highp 3-component vector of float)
+0:468 Constant:
+0:468 0 (const int)
+0:469 add second child into first child ( temp highp float)
+0:469 direct index ( temp highp float)
+0:469 direct index ( temp highp 4-component vector of float)
+0:469 'm' ( temp highp 4X4 matrix of float)
+0:469 Constant:
+0:469 3 (const int)
+0:469 Constant:
+0:469 0 (const int)
+0:469 component-wise multiply ( temp highp float)
+0:469 direct index ( temp highp float)
+0:469 direct index ( temp highp 4-component vector of float)
+0:469 'm' ( temp highp 4X4 matrix of float)
+0:469 Constant:
+0:469 1 (const int)
+0:469 Constant:
+0:469 0 (const int)
+0:469 direct index ( temp highp float)
+0:469 'tt' ( temp highp 3-component vector of float)
+0:469 Constant:
+0:469 1 (const int)
+0:470 add second child into first child ( temp highp float)
+0:470 direct index ( temp highp float)
+0:470 direct index ( temp highp 4-component vector of float)
+0:470 'm' ( temp highp 4X4 matrix of float)
+0:470 Constant:
+0:470 3 (const int)
+0:470 Constant:
+0:470 1 (const int)
+0:470 component-wise multiply ( temp highp float)
+0:470 direct index ( temp highp float)
+0:470 direct index ( temp highp 4-component vector of float)
+0:470 'm' ( temp highp 4X4 matrix of float)
+0:470 Constant:
+0:470 1 (const int)
+0:470 Constant:
+0:470 1 (const int)
+0:470 direct index ( temp highp float)
+0:470 'tt' ( temp highp 3-component vector of float)
+0:470 Constant:
+0:470 1 (const int)
+0:471 add second child into first child ( temp highp float)
+0:471 direct index ( temp highp float)
+0:471 direct index ( temp highp 4-component vector of float)
+0:471 'm' ( temp highp 4X4 matrix of float)
+0:471 Constant:
+0:471 3 (const int)
+0:471 Constant:
+0:471 2 (const int)
+0:471 component-wise multiply ( temp highp float)
+0:471 direct index ( temp highp float)
+0:471 direct index ( temp highp 4-component vector of float)
+0:471 'm' ( temp highp 4X4 matrix of float)
+0:471 Constant:
+0:471 1 (const int)
+0:471 Constant:
+0:471 2 (const int)
+0:471 direct index ( temp highp float)
+0:471 'tt' ( temp highp 3-component vector of float)
+0:471 Constant:
+0:471 1 (const int)
+0:472 add second child into first child ( temp highp float)
+0:472 direct index ( temp highp float)
+0:472 direct index ( temp highp 4-component vector of float)
+0:472 'm' ( temp highp 4X4 matrix of float)
+0:472 Constant:
+0:472 3 (const int)
+0:472 Constant:
+0:472 3 (const int)
+0:472 component-wise multiply ( temp highp float)
+0:472 direct index ( temp highp float)
+0:472 direct index ( temp highp 4-component vector of float)
+0:472 'm' ( temp highp 4X4 matrix of float)
+0:472 Constant:
+0:472 1 (const int)
+0:472 Constant:
+0:472 3 (const int)
+0:472 direct index ( temp highp float)
+0:472 'tt' ( temp highp 3-component vector of float)
+0:472 Constant:
+0:472 1 (const int)
+0:473 add second child into first child ( temp highp float)
+0:473 direct index ( temp highp float)
+0:473 direct index ( temp highp 4-component vector of float)
+0:473 'm' ( temp highp 4X4 matrix of float)
+0:473 Constant:
+0:473 3 (const int)
+0:473 Constant:
+0:473 0 (const int)
+0:473 component-wise multiply ( temp highp float)
+0:473 direct index ( temp highp float)
+0:473 direct index ( temp highp 4-component vector of float)
+0:473 'm' ( temp highp 4X4 matrix of float)
+0:473 Constant:
+0:473 2 (const int)
+0:473 Constant:
+0:473 0 (const int)
+0:473 direct index ( temp highp float)
+0:473 'tt' ( temp highp 3-component vector of float)
+0:473 Constant:
+0:473 2 (const int)
+0:474 add second child into first child ( temp highp float)
+0:474 direct index ( temp highp float)
+0:474 direct index ( temp highp 4-component vector of float)
+0:474 'm' ( temp highp 4X4 matrix of float)
+0:474 Constant:
+0:474 3 (const int)
+0:474 Constant:
+0:474 1 (const int)
+0:474 component-wise multiply ( temp highp float)
+0:474 direct index ( temp highp float)
+0:474 direct index ( temp highp 4-component vector of float)
+0:474 'm' ( temp highp 4X4 matrix of float)
+0:474 Constant:
+0:474 2 (const int)
+0:474 Constant:
+0:474 1 (const int)
+0:474 direct index ( temp highp float)
+0:474 'tt' ( temp highp 3-component vector of float)
+0:474 Constant:
+0:474 2 (const int)
+0:475 add second child into first child ( temp highp float)
+0:475 direct index ( temp highp float)
+0:475 direct index ( temp highp 4-component vector of float)
+0:475 'm' ( temp highp 4X4 matrix of float)
+0:475 Constant:
+0:475 3 (const int)
+0:475 Constant:
+0:475 2 (const int)
+0:475 component-wise multiply ( temp highp float)
+0:475 direct index ( temp highp float)
+0:475 direct index ( temp highp 4-component vector of float)
+0:475 'm' ( temp highp 4X4 matrix of float)
+0:475 Constant:
+0:475 2 (const int)
+0:475 Constant:
+0:475 2 (const int)
+0:475 direct index ( temp highp float)
+0:475 'tt' ( temp highp 3-component vector of float)
+0:475 Constant:
+0:475 2 (const int)
+0:476 add second child into first child ( temp highp float)
+0:476 direct index ( temp highp float)
+0:476 direct index ( temp highp 4-component vector of float)
+0:476 'm' ( temp highp 4X4 matrix of float)
+0:476 Constant:
+0:476 3 (const int)
+0:476 Constant:
+0:476 3 (const int)
+0:476 component-wise multiply ( temp highp float)
+0:476 direct index ( temp highp float)
+0:476 direct index ( temp highp 4-component vector of float)
+0:476 'm' ( temp highp 4X4 matrix of float)
+0:476 Constant:
+0:476 2 (const int)
+0:476 Constant:
+0:476 3 (const int)
+0:476 direct index ( temp highp float)
+0:476 'tt' ( temp highp 3-component vector of float)
+0:476 Constant:
+0:476 2 (const int)
+0:478 Branch: Return with expression
+0:478 'm' ( temp highp 4X4 matrix of float)
+0:480 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:480 Function Parameters:
+0:480 'id' ( in highp int)
+0:481 Sequence
+0:481 Sequence
+0:481 move second child to first child ( temp highp 3X3 matrix of float)
+0:481 'm' ( temp highp 3X3 matrix of float)
+0:481 Constant:
+0:481 1.000000
+0:481 0.000000
+0:481 0.000000
+0:481 0.000000
+0:481 1.000000
+0:481 0.000000
+0:481 0.000000
+0:481 0.000000
+0:481 1.000000
+0:482 Branch: Return with expression
+0:482 'm' ( temp highp 3X3 matrix of float)
+0:484 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float)
+0:484 Function Parameters:
+0:484 'id' ( in highp int)
+0:485 Sequence
+0:485 Sequence
+0:485 move second child to first child ( temp highp 3X3 matrix of float)
+0:485 'm' ( temp highp 3X3 matrix of float)
+0:485 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:485 'id' ( in highp int)
+0:486 Branch: Return with expression
+0:486 'm' ( temp highp 3X3 matrix of float)
+0:488 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float)
+0:488 Function Parameters:
+0:488 'index' ( in highp int)
+0:488 'curColor' ( in highp 4-component vector of float)
+0:489 Sequence
+0:489 subtract second child into first child ( temp highp int)
+0:489 'index' ( in highp int)
+0:489 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:489 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:489 Constant:
+0:489 0 (const uint)
+0:491 Sequence
+0:491 move second child to first child ( temp highp int)
+0:491 'coord' ( temp highp int)
+0:491 'index' ( in highp int)
+0:492 Sequence
+0:492 move second child to first child ( temp highp 4-component vector of float)
+0:492 'samp' ( temp highp 4-component vector of float)
+0:492 textureFetch ( global highp 4-component vector of float)
+0:492 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+0:492 'coord' ( temp highp int)
+0:493 move second child to first child ( temp highp float)
+0:493 direct index ( temp highp float)
+0:493 'v' ( temp highp 4-component vector of float)
+0:493 Constant:
+0:493 0 (const int)
+0:493 direct index ( temp highp float)
+0:493 'samp' ( temp highp 4-component vector of float)
+0:493 Constant:
+0:493 0 (const int)
+0:494 move second child to first child ( temp highp float)
+0:494 direct index ( temp highp float)
+0:494 'v' ( temp highp 4-component vector of float)
+0:494 Constant:
+0:494 1 (const int)
+0:494 direct index ( temp highp float)
+0:494 'samp' ( temp highp 4-component vector of float)
+0:494 Constant:
+0:494 1 (const int)
+0:495 move second child to first child ( temp highp float)
+0:495 direct index ( temp highp float)
+0:495 'v' ( temp highp 4-component vector of float)
+0:495 Constant:
+0:495 2 (const int)
+0:495 direct index ( temp highp float)
+0:495 'samp' ( temp highp 4-component vector of float)
+0:495 Constant:
+0:495 2 (const int)
+0:496 move second child to first child ( temp highp float)
+0:496 direct index ( temp highp float)
+0:496 'v' ( temp highp 4-component vector of float)
+0:496 Constant:
+0:496 3 (const int)
+0:496 Constant:
+0:496 1.000000
+0:497 move second child to first child ( temp highp float)
+0:497 direct index ( temp highp float)
+0:497 'curColor' ( in highp 4-component vector of float)
+0:497 Constant:
+0:497 0 (const int)
+0:497 direct index ( temp highp float)
+0:497 'v' ( temp highp 4-component vector of float)
+0:497 Constant:
+0:497 0 (const int)
+0:499 move second child to first child ( temp highp float)
+0:499 direct index ( temp highp float)
+0:499 'curColor' ( in highp 4-component vector of float)
+0:499 Constant:
+0:499 1 (const int)
+0:499 direct index ( temp highp float)
+0:499 'v' ( temp highp 4-component vector of float)
+0:499 Constant:
+0:499 1 (const int)
+0:501 move second child to first child ( temp highp float)
+0:501 direct index ( temp highp float)
+0:501 'curColor' ( in highp 4-component vector of float)
+0:501 Constant:
+0:501 2 (const int)
+0:501 direct index ( temp highp float)
+0:501 'v' ( temp highp 4-component vector of float)
+0:501 Constant:
+0:501 2 (const int)
+0:503 Branch: Return with expression
+0:503 'curColor' ( in highp 4-component vector of float)
+0:? Linker Objects
+0:? 'sTDNoiseMap' ( uniform highp sampler2D)
+0:? 'sTDSineLookup' ( uniform highp sampler1D)
+0:? 'sTDWhite2D' ( uniform highp sampler2D)
+0:? 'sTDWhite3D' ( uniform highp sampler3D)
+0:? 'sTDWhite2DArray' ( uniform highp sampler2DArray)
+0:? 'sTDWhiteCube' ( uniform highp samplerCube)
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights})
+0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@5' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+
+vk.relaxed.stagelink.0.2.frag
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: TDOutputSwizzle(vf4; ( global highp 4-component vector of float)
+0:2 Function Parameters:
+0:2 'c' ( in highp 4-component vector of float)
+0:4 Sequence
+0:4 Branch: Return with expression
+0:4 vector swizzle ( temp highp 4-component vector of float)
+0:4 'c' ( in highp 4-component vector of float)
+0:4 Sequence
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 2 (const int)
+0:4 Constant:
+0:4 3 (const int)
+0:6 Function Definition: TDOutputSwizzle(vu4; ( global highp 4-component vector of uint)
+0:6 Function Parameters:
+0:6 'c' ( in highp 4-component vector of uint)
+0:8 Sequence
+0:8 Branch: Return with expression
+0:8 vector swizzle ( temp highp 4-component vector of uint)
+0:8 'c' ( in highp 4-component vector of uint)
+0:8 Sequence
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:? Linker Objects
+
+
+Linked vertex stage:
+
+
+Linked fragment stage:
+
+
+Shader version: 460
+0:? Sequence
+0:11 Function Definition: main( ( global void)
+0:11 Function Parameters:
+0:15 Sequence
+0:15 Sequence
+0:15 Sequence
+0:15 move second child to first child ( temp highp 3-component vector of float)
+0:15 'texcoord' ( temp highp 3-component vector of float)
+0:15 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float)
+0:15 direct index (layout( location=3) temp highp 3-component vector of float)
+0:15 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp highp 3-component vector of float)
+0:16 vector swizzle ( temp highp 3-component vector of float)
+0:16 texCoord0: direct index for structure ( out highp 3-component vector of float)
+0:16 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:16 Constant:
+0:16 2 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 2 (const int)
+0:16 vector swizzle ( temp highp 3-component vector of float)
+0:16 'texcoord' ( temp highp 3-component vector of float)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 2 (const int)
+0:20 move second child to first child ( temp highp int)
+0:20 instance: direct index for structure ( flat out highp int)
+0:20 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:20 Constant:
+0:20 4 (const int)
+0:20 Function Call: TDInstanceID( ( global highp int)
+0:21 Sequence
+0:21 move second child to first child ( temp highp 4-component vector of float)
+0:21 'worldSpacePos' ( temp highp 4-component vector of float)
+0:21 Function Call: TDDeform(vf3; ( global highp 4-component vector of float)
+0:21 'P' (layout( location=0) in highp 3-component vector of float)
+0:22 Sequence
+0:22 move second child to first child ( temp highp 3-component vector of float)
+0:22 'uvUnwrapCoord' ( temp highp 3-component vector of float)
+0:22 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float)
+0:22 Function Call: TDUVUnwrapCoord( ( global highp 3-component vector of float)
+0:23 move second child to first child ( temp highp 4-component vector of float)
+0:23 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:23 '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, out 1-element array of float CullDistance gl_CullDistance})
+0:23 Constant:
+0:23 0 (const uint)
+0:23 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:23 'worldSpacePos' ( temp highp 4-component vector of float)
+0:23 'uvUnwrapCoord' ( temp highp 3-component vector of float)
+0:32 Sequence
+0:32 move second child to first child ( temp highp int)
+0:32 'cameraIndex' ( temp highp int)
+0:32 Function Call: TDCameraIndex( ( global highp int)
+0:33 move second child to first child ( temp highp int)
+0:33 cameraIndex: direct index for structure ( flat out highp int)
+0:33 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:33 Constant:
+0:33 3 (const int)
+0:33 'cameraIndex' ( temp highp int)
+0:34 move second child to first child ( temp highp 3-component vector of float)
+0:34 vector swizzle ( temp highp 3-component vector of float)
+0:34 worldSpacePos: direct index for structure ( out highp 3-component vector of float)
+0:34 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:34 Constant:
+0:34 1 (const int)
+0:34 Sequence
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 1 (const int)
+0:34 Constant:
+0:34 2 (const int)
+0:34 vector swizzle ( temp highp 3-component vector of float)
+0:34 'worldSpacePos' ( temp highp 4-component vector of float)
+0:34 Sequence
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 1 (const int)
+0:34 Constant:
+0:34 2 (const int)
+0:35 move second child to first child ( temp highp 4-component vector of float)
+0:35 color: direct index for structure ( out highp 4-component vector of float)
+0:35 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:35 Constant:
+0:35 0 (const int)
+0:35 Function Call: TDInstanceColor(vf4; ( global highp 4-component vector of float)
+0:35 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:176 Function Definition: iTDCamToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float)
+0:176 Function Parameters:
+0:176 'v' ( in highp 4-component vector of float)
+0:176 'uv' ( in highp 3-component vector of float)
+0:176 'cameraIndex' ( in highp int)
+0:176 'applyPickMod' ( in bool)
+0:178 Sequence
+0:178 Test condition and select ( temp void)
+0:178 Condition
+0:178 Negate conditional ( temp bool)
+0:178 Function Call: TDInstanceActive( ( global bool)
+0:178 true case
+0:179 Branch: Return with expression
+0:179 Constant:
+0:179 2.000000
+0:179 2.000000
+0:179 2.000000
+0:179 0.000000
+0:180 move second child to first child ( temp highp 4-component vector of float)
+0:180 'v' ( in highp 4-component vector of float)
+0:180 matrix-times-vector ( temp highp 4-component vector of float)
+0:180 proj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:180 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:180 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:180 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:180 Constant:
+0:180 0 (const uint)
+0:180 Constant:
+0:180 0 (const int)
+0:180 Constant:
+0:180 8 (const int)
+0:180 'v' ( in highp 4-component vector of float)
+0:181 Branch: Return with expression
+0:181 'v' ( in highp 4-component vector of float)
+0:183 Function Definition: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float)
+0:183 Function Parameters:
+0:183 'v' ( in highp 4-component vector of float)
+0:183 'uv' ( in highp 3-component vector of float)
+0:183 'cameraIndex' ( in highp int)
+0:183 'applyPickMod' ( in bool)
+0:184 Sequence
+0:184 Test condition and select ( temp void)
+0:184 Condition
+0:184 Negate conditional ( temp bool)
+0:184 Function Call: TDInstanceActive( ( global bool)
+0:184 true case
+0:185 Branch: Return with expression
+0:185 Constant:
+0:185 2.000000
+0:185 2.000000
+0:185 2.000000
+0:185 0.000000
+0:186 move second child to first child ( temp highp 4-component vector of float)
+0:186 'v' ( in highp 4-component vector of float)
+0:186 matrix-times-vector ( temp highp 4-component vector of float)
+0:186 camProj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:186 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:186 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:186 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:186 Constant:
+0:186 0 (const uint)
+0:186 Constant:
+0:186 0 (const int)
+0:186 Constant:
+0:186 6 (const int)
+0:186 'v' ( in highp 4-component vector of float)
+0:187 Branch: Return with expression
+0:187 'v' ( in highp 4-component vector of float)
+0:193 Function Definition: TDInstanceID( ( global highp int)
+0:193 Function Parameters:
+0:194 Sequence
+0:194 Branch: Return with expression
+0:194 add ( temp highp int)
+0:194 'gl_InstanceIndex' ( in highp int InstanceIndex)
+0:194 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:194 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:194 Constant:
+0:194 0 (const uint)
+0:196 Function Definition: TDCameraIndex( ( global highp int)
+0:196 Function Parameters:
+0:197 Sequence
+0:197 Branch: Return with expression
+0:197 Constant:
+0:197 0 (const int)
+0:199 Function Definition: TDUVUnwrapCoord( ( global highp 3-component vector of float)
+0:199 Function Parameters:
+0:200 Sequence
+0:200 Branch: Return with expression
+0:200 direct index (layout( location=3) temp highp 3-component vector of float)
+0:200 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:200 Constant:
+0:200 0 (const int)
+0:205 Function Definition: TDPickID( ( global highp int)
+0:205 Function Parameters:
+0:209 Sequence
+0:209 Branch: Return with expression
+0:209 Constant:
+0:209 0 (const int)
+0:212 Function Definition: iTDConvertPickId(i1; ( global highp float)
+0:212 Function Parameters:
+0:212 'id' ( in highp int)
+0:213 Sequence
+0:213 or second child into first child ( temp highp int)
+0:213 'id' ( in highp int)
+0:213 Constant:
+0:213 1073741824 (const int)
+0:214 Branch: Return with expression
+0:214 intBitsToFloat ( global highp float)
+0:214 'id' ( in highp int)
+0:217 Function Definition: TDWritePickingValues( ( global void)
+0:217 Function Parameters:
+0:224 Function Definition: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:224 Function Parameters:
+0:224 'v' ( in highp 4-component vector of float)
+0:224 'uv' ( in highp 3-component vector of float)
+0:226 Sequence
+0:226 Branch: Return with expression
+0:226 Function Call: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float)
+0:226 'v' ( in highp 4-component vector of float)
+0:226 'uv' ( in highp 3-component vector of float)
+0:226 Function Call: TDCameraIndex( ( global highp int)
+0:226 Constant:
+0:226 true (const bool)
+0:228 Function Definition: TDWorldToProj(vf3;vf3; ( global highp 4-component vector of float)
+0:228 Function Parameters:
+0:228 'v' ( in highp 3-component vector of float)
+0:228 'uv' ( in highp 3-component vector of float)
+0:230 Sequence
+0:230 Branch: Return with expression
+0:230 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:230 Construct vec4 ( temp highp 4-component vector of float)
+0:230 'v' ( in highp 3-component vector of float)
+0:230 Constant:
+0:230 1.000000
+0:230 'uv' ( in highp 3-component vector of float)
+0:232 Function Definition: TDWorldToProj(vf4; ( global highp 4-component vector of float)
+0:232 Function Parameters:
+0:232 'v' ( in highp 4-component vector of float)
+0:234 Sequence
+0:234 Branch: Return with expression
+0:234 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:234 'v' ( in highp 4-component vector of float)
+0:234 Constant:
+0:234 0.000000
+0:234 0.000000
+0:234 0.000000
+0:236 Function Definition: TDWorldToProj(vf3; ( global highp 4-component vector of float)
+0:236 Function Parameters:
+0:236 'v' ( in highp 3-component vector of float)
+0:238 Sequence
+0:238 Branch: Return with expression
+0:238 Function Call: TDWorldToProj(vf4; ( global highp 4-component vector of float)
+0:238 Construct vec4 ( temp highp 4-component vector of float)
+0:238 'v' ( in highp 3-component vector of float)
+0:238 Constant:
+0:238 1.000000
+0:240 Function Definition: TDPointColor( ( global highp 4-component vector of float)
+0:240 Function Parameters:
+0:241 Sequence
+0:241 Branch: Return with expression
+0:241 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:114 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float)
+0:114 Function Parameters:
+0:114 'index' ( in highp int)
+0:114 't' ( in highp 3-component vector of float)
+0:? Sequence
+0:116 Sequence
+0:116 move second child to first child ( temp highp int)
+0:116 'coord' ( temp highp int)
+0:116 'index' ( in highp int)
+0:117 Sequence
+0:117 move second child to first child ( temp highp 4-component vector of float)
+0:117 'samp' ( temp highp 4-component vector of float)
+0:117 textureFetch ( global highp 4-component vector of float)
+0:117 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:117 'coord' ( temp highp int)
+0:118 move second child to first child ( temp highp float)
+0:118 direct index ( temp highp float)
+0:118 'v' ( temp highp 3-component vector of float)
+0:118 Constant:
+0:118 0 (const int)
+0:118 direct index ( temp highp float)
+0:118 't' ( in highp 3-component vector of float)
+0:118 Constant:
+0:118 0 (const int)
+0:119 move second child to first child ( temp highp float)
+0:119 direct index ( temp highp float)
+0:119 'v' ( temp highp 3-component vector of float)
+0:119 Constant:
+0:119 1 (const int)
+0:119 direct index ( temp highp float)
+0:119 't' ( in highp 3-component vector of float)
+0:119 Constant:
+0:119 1 (const int)
+0:120 move second child to first child ( temp highp float)
+0:120 direct index ( temp highp float)
+0:120 'v' ( temp highp 3-component vector of float)
+0:120 Constant:
+0:120 2 (const int)
+0:120 direct index ( temp highp float)
+0:120 'samp' ( temp highp 4-component vector of float)
+0:120 Constant:
+0:120 0 (const int)
+0:121 move second child to first child ( temp highp 3-component vector of float)
+0:121 vector swizzle ( temp highp 3-component vector of float)
+0:121 't' ( in highp 3-component vector of float)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Constant:
+0:121 2 (const int)
+0:121 vector swizzle ( temp highp 3-component vector of float)
+0:121 'v' ( temp highp 3-component vector of float)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Constant:
+0:121 2 (const int)
+0:122 Branch: Return with expression
+0:122 't' ( in highp 3-component vector of float)
+0:124 Function Definition: TDInstanceActive(i1; ( global bool)
+0:124 Function Parameters:
+0:124 'index' ( in highp int)
+0:125 Sequence
+0:125 subtract second child into first child ( temp highp int)
+0:125 'index' ( in highp int)
+0:125 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:125 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:125 Constant:
+0:125 0 (const uint)
+0:127 Sequence
+0:127 move second child to first child ( temp highp int)
+0:127 'coord' ( temp highp int)
+0:127 'index' ( in highp int)
+0:128 Sequence
+0:128 move second child to first child ( temp highp 4-component vector of float)
+0:128 'samp' ( temp highp 4-component vector of float)
+0:128 textureFetch ( global highp 4-component vector of float)
+0:128 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:128 'coord' ( temp highp int)
+0:129 move second child to first child ( temp highp float)
+0:129 'v' ( temp highp float)
+0:129 direct index ( temp highp float)
+0:129 'samp' ( temp highp 4-component vector of float)
+0:129 Constant:
+0:129 0 (const int)
+0:130 Branch: Return with expression
+0:130 Compare Not Equal ( temp bool)
+0:130 'v' ( temp highp float)
+0:130 Constant:
+0:130 0.000000
+0:132 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:132 Function Parameters:
+0:132 'index' ( in highp int)
+0:132 'instanceActive' ( out bool)
+0:133 Sequence
+0:133 Sequence
+0:133 move second child to first child ( temp highp int)
+0:133 'origIndex' ( temp highp int)
+0:133 'index' ( in highp int)
+0:134 subtract second child into first child ( temp highp int)
+0:134 'index' ( in highp int)
+0:134 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:134 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:134 Constant:
+0:134 0 (const uint)
+0:136 Sequence
+0:136 move second child to first child ( temp highp int)
+0:136 'coord' ( temp highp int)
+0:136 'index' ( in highp int)
+0:137 Sequence
+0:137 move second child to first child ( temp highp 4-component vector of float)
+0:137 'samp' ( temp highp 4-component vector of float)
+0:137 textureFetch ( global highp 4-component vector of float)
+0:137 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:137 'coord' ( temp highp int)
+0:138 move second child to first child ( temp highp float)
+0:138 direct index ( temp highp float)
+0:138 'v' ( temp highp 3-component vector of float)
+0:138 Constant:
+0:138 0 (const int)
+0:138 direct index ( temp highp float)
+0:138 'samp' ( temp highp 4-component vector of float)
+0:138 Constant:
+0:138 1 (const int)
+0:139 move second child to first child ( temp highp float)
+0:139 direct index ( temp highp float)
+0:139 'v' ( temp highp 3-component vector of float)
+0:139 Constant:
+0:139 1 (const int)
+0:139 direct index ( temp highp float)
+0:139 'samp' ( temp highp 4-component vector of float)
+0:139 Constant:
+0:139 2 (const int)
+0:140 move second child to first child ( temp highp float)
+0:140 direct index ( temp highp float)
+0:140 'v' ( temp highp 3-component vector of float)
+0:140 Constant:
+0:140 2 (const int)
+0:140 direct index ( temp highp float)
+0:140 'samp' ( temp highp 4-component vector of float)
+0:140 Constant:
+0:140 3 (const int)
+0:141 move second child to first child ( temp bool)
+0:141 'instanceActive' ( out bool)
+0:141 Compare Not Equal ( temp bool)
+0:141 direct index ( temp highp float)
+0:141 'samp' ( temp highp 4-component vector of float)
+0:141 Constant:
+0:141 0 (const int)
+0:141 Constant:
+0:141 0.000000
+0:142 Branch: Return with expression
+0:142 'v' ( temp highp 3-component vector of float)
+0:144 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float)
+0:144 Function Parameters:
+0:144 'index' ( in highp int)
+0:145 Sequence
+0:145 subtract second child into first child ( temp highp int)
+0:145 'index' ( in highp int)
+0:145 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:145 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:145 Constant:
+0:145 0 (const uint)
+0:147 Sequence
+0:147 move second child to first child ( temp highp int)
+0:147 'coord' ( temp highp int)
+0:147 'index' ( in highp int)
+0:148 Sequence
+0:148 move second child to first child ( temp highp 4-component vector of float)
+0:148 'samp' ( temp highp 4-component vector of float)
+0:148 textureFetch ( global highp 4-component vector of float)
+0:148 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:148 'coord' ( temp highp int)
+0:149 move second child to first child ( temp highp float)
+0:149 direct index ( temp highp float)
+0:149 'v' ( temp highp 3-component vector of float)
+0:149 Constant:
+0:149 0 (const int)
+0:149 direct index ( temp highp float)
+0:149 'samp' ( temp highp 4-component vector of float)
+0:149 Constant:
+0:149 1 (const int)
+0:150 move second child to first child ( temp highp float)
+0:150 direct index ( temp highp float)
+0:150 'v' ( temp highp 3-component vector of float)
+0:150 Constant:
+0:150 1 (const int)
+0:150 direct index ( temp highp float)
+0:150 'samp' ( temp highp 4-component vector of float)
+0:150 Constant:
+0:150 2 (const int)
+0:151 move second child to first child ( temp highp float)
+0:151 direct index ( temp highp float)
+0:151 'v' ( temp highp 3-component vector of float)
+0:151 Constant:
+0:151 2 (const int)
+0:151 direct index ( temp highp float)
+0:151 'samp' ( temp highp 4-component vector of float)
+0:151 Constant:
+0:151 3 (const int)
+0:152 Branch: Return with expression
+0:152 'v' ( temp highp 3-component vector of float)
+0:154 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float)
+0:154 Function Parameters:
+0:154 'index' ( in highp int)
+0:155 Sequence
+0:155 subtract second child into first child ( temp highp int)
+0:155 'index' ( in highp int)
+0:155 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:155 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:155 Constant:
+0:155 0 (const uint)
+0:156 Sequence
+0:156 move second child to first child ( temp highp 3-component vector of float)
+0:156 'v' ( temp highp 3-component vector of float)
+0:156 Constant:
+0:156 0.000000
+0:156 0.000000
+0:156 0.000000
+0:157 Sequence
+0:157 move second child to first child ( temp highp 3X3 matrix of float)
+0:157 'm' ( temp highp 3X3 matrix of float)
+0:157 Constant:
+0:157 1.000000
+0:157 0.000000
+0:157 0.000000
+0:157 0.000000
+0:157 1.000000
+0:157 0.000000
+0:157 0.000000
+0:157 0.000000
+0:157 1.000000
+0:161 Branch: Return with expression
+0:161 'm' ( temp highp 3X3 matrix of float)
+0:163 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float)
+0:163 Function Parameters:
+0:163 'index' ( in highp int)
+0:164 Sequence
+0:164 subtract second child into first child ( temp highp int)
+0:164 'index' ( in highp int)
+0:164 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:164 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:164 Constant:
+0:164 0 (const uint)
+0:165 Sequence
+0:165 move second child to first child ( temp highp 3-component vector of float)
+0:165 'v' ( temp highp 3-component vector of float)
+0:165 Constant:
+0:165 1.000000
+0:165 1.000000
+0:165 1.000000
+0:166 Branch: Return with expression
+0:166 'v' ( temp highp 3-component vector of float)
+0:168 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float)
+0:168 Function Parameters:
+0:168 'index' ( in highp int)
+0:169 Sequence
+0:169 subtract second child into first child ( temp highp int)
+0:169 'index' ( in highp int)
+0:169 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:169 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:169 Constant:
+0:169 0 (const uint)
+0:170 Sequence
+0:170 move second child to first child ( temp highp 3-component vector of float)
+0:170 'v' ( temp highp 3-component vector of float)
+0:170 Constant:
+0:170 0.000000
+0:170 0.000000
+0:170 0.000000
+0:171 Branch: Return with expression
+0:171 'v' ( temp highp 3-component vector of float)
+0:173 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float)
+0:173 Function Parameters:
+0:173 'index' ( in highp int)
+0:174 Sequence
+0:174 subtract second child into first child ( temp highp int)
+0:174 'index' ( in highp int)
+0:174 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:174 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:174 Constant:
+0:174 0 (const uint)
+0:175 Sequence
+0:175 move second child to first child ( temp highp 3-component vector of float)
+0:175 'v' ( temp highp 3-component vector of float)
+0:175 Constant:
+0:175 0.000000
+0:175 0.000000
+0:175 1.000000
+0:176 Branch: Return with expression
+0:176 'v' ( temp highp 3-component vector of float)
+0:178 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float)
+0:178 Function Parameters:
+0:178 'index' ( in highp int)
+0:179 Sequence
+0:179 subtract second child into first child ( temp highp int)
+0:179 'index' ( in highp int)
+0:179 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:179 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:179 Constant:
+0:179 0 (const uint)
+0:180 Sequence
+0:180 move second child to first child ( temp highp 3-component vector of float)
+0:180 'v' ( temp highp 3-component vector of float)
+0:180 Constant:
+0:180 0.000000
+0:180 1.000000
+0:180 0.000000
+0:181 Branch: Return with expression
+0:181 'v' ( temp highp 3-component vector of float)
+0:183 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:183 Function Parameters:
+0:183 'id' ( in highp int)
+0:184 Sequence
+0:184 Sequence
+0:184 move second child to first child ( temp bool)
+0:184 'instanceActive' ( temp bool)
+0:184 Constant:
+0:184 true (const bool)
+0:185 Sequence
+0:185 move second child to first child ( temp highp 3-component vector of float)
+0:185 't' ( temp highp 3-component vector of float)
+0:185 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:185 'id' ( in highp int)
+0:185 'instanceActive' ( temp bool)
+0:186 Test condition and select ( temp void)
+0:186 Condition
+0:186 Negate conditional ( temp bool)
+0:186 'instanceActive' ( temp bool)
+0:186 true case
+0:188 Sequence
+0:188 Branch: Return with expression
+0:188 Constant:
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:190 Sequence
+0:190 move second child to first child ( temp highp 4X4 matrix of float)
+0:190 'm' ( temp highp 4X4 matrix of float)
+0:190 Constant:
+0:190 1.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 1.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 1.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 1.000000
+0:192 Sequence
+0:192 Sequence
+0:192 move second child to first child ( temp highp 3-component vector of float)
+0:192 'tt' ( temp highp 3-component vector of float)
+0:192 't' ( temp highp 3-component vector of float)
+0:193 add second child into first child ( temp highp float)
+0:193 direct index ( temp highp float)
+0:193 direct index ( temp highp 4-component vector of float)
+0:193 'm' ( temp highp 4X4 matrix of float)
+0:193 Constant:
+0:193 3 (const int)
+0:193 Constant:
+0:193 0 (const int)
+0:193 component-wise multiply ( temp highp float)
+0:193 direct index ( temp highp float)
+0:193 direct index ( temp highp 4-component vector of float)
+0:193 'm' ( temp highp 4X4 matrix of float)
+0:193 Constant:
+0:193 0 (const int)
+0:193 Constant:
+0:193 0 (const int)
+0:193 direct index ( temp highp float)
+0:193 'tt' ( temp highp 3-component vector of float)
+0:193 Constant:
+0:193 0 (const int)
+0:194 add second child into first child ( temp highp float)
+0:194 direct index ( temp highp float)
+0:194 direct index ( temp highp 4-component vector of float)
+0:194 'm' ( temp highp 4X4 matrix of float)
+0:194 Constant:
+0:194 3 (const int)
+0:194 Constant:
+0:194 1 (const int)
+0:194 component-wise multiply ( temp highp float)
+0:194 direct index ( temp highp float)
+0:194 direct index ( temp highp 4-component vector of float)
+0:194 'm' ( temp highp 4X4 matrix of float)
+0:194 Constant:
+0:194 0 (const int)
+0:194 Constant:
+0:194 1 (const int)
+0:194 direct index ( temp highp float)
+0:194 'tt' ( temp highp 3-component vector of float)
+0:194 Constant:
+0:194 0 (const int)
+0:195 add second child into first child ( temp highp float)
+0:195 direct index ( temp highp float)
+0:195 direct index ( temp highp 4-component vector of float)
+0:195 'm' ( temp highp 4X4 matrix of float)
+0:195 Constant:
+0:195 3 (const int)
+0:195 Constant:
+0:195 2 (const int)
+0:195 component-wise multiply ( temp highp float)
+0:195 direct index ( temp highp float)
+0:195 direct index ( temp highp 4-component vector of float)
+0:195 'm' ( temp highp 4X4 matrix of float)
+0:195 Constant:
+0:195 0 (const int)
+0:195 Constant:
+0:195 2 (const int)
+0:195 direct index ( temp highp float)
+0:195 'tt' ( temp highp 3-component vector of float)
+0:195 Constant:
+0:195 0 (const int)
+0:196 add second child into first child ( temp highp float)
+0:196 direct index ( temp highp float)
+0:196 direct index ( temp highp 4-component vector of float)
+0:196 'm' ( temp highp 4X4 matrix of float)
+0:196 Constant:
+0:196 3 (const int)
+0:196 Constant:
+0:196 3 (const int)
+0:196 component-wise multiply ( temp highp float)
+0:196 direct index ( temp highp float)
+0:196 direct index ( temp highp 4-component vector of float)
+0:196 'm' ( temp highp 4X4 matrix of float)
+0:196 Constant:
+0:196 0 (const int)
+0:196 Constant:
+0:196 3 (const int)
+0:196 direct index ( temp highp float)
+0:196 'tt' ( temp highp 3-component vector of float)
+0:196 Constant:
+0:196 0 (const int)
+0:197 add second child into first child ( temp highp float)
+0:197 direct index ( temp highp float)
+0:197 direct index ( temp highp 4-component vector of float)
+0:197 'm' ( temp highp 4X4 matrix of float)
+0:197 Constant:
+0:197 3 (const int)
+0:197 Constant:
+0:197 0 (const int)
+0:197 component-wise multiply ( temp highp float)
+0:197 direct index ( temp highp float)
+0:197 direct index ( temp highp 4-component vector of float)
+0:197 'm' ( temp highp 4X4 matrix of float)
+0:197 Constant:
+0:197 1 (const int)
+0:197 Constant:
+0:197 0 (const int)
+0:197 direct index ( temp highp float)
+0:197 'tt' ( temp highp 3-component vector of float)
+0:197 Constant:
+0:197 1 (const int)
+0:198 add second child into first child ( temp highp float)
+0:198 direct index ( temp highp float)
+0:198 direct index ( temp highp 4-component vector of float)
+0:198 'm' ( temp highp 4X4 matrix of float)
+0:198 Constant:
+0:198 3 (const int)
+0:198 Constant:
+0:198 1 (const int)
+0:198 component-wise multiply ( temp highp float)
+0:198 direct index ( temp highp float)
+0:198 direct index ( temp highp 4-component vector of float)
+0:198 'm' ( temp highp 4X4 matrix of float)
+0:198 Constant:
+0:198 1 (const int)
+0:198 Constant:
+0:198 1 (const int)
+0:198 direct index ( temp highp float)
+0:198 'tt' ( temp highp 3-component vector of float)
+0:198 Constant:
+0:198 1 (const int)
+0:199 add second child into first child ( temp highp float)
+0:199 direct index ( temp highp float)
+0:199 direct index ( temp highp 4-component vector of float)
+0:199 'm' ( temp highp 4X4 matrix of float)
+0:199 Constant:
+0:199 3 (const int)
+0:199 Constant:
+0:199 2 (const int)
+0:199 component-wise multiply ( temp highp float)
+0:199 direct index ( temp highp float)
+0:199 direct index ( temp highp 4-component vector of float)
+0:199 'm' ( temp highp 4X4 matrix of float)
+0:199 Constant:
+0:199 1 (const int)
+0:199 Constant:
+0:199 2 (const int)
+0:199 direct index ( temp highp float)
+0:199 'tt' ( temp highp 3-component vector of float)
+0:199 Constant:
+0:199 1 (const int)
+0:200 add second child into first child ( temp highp float)
+0:200 direct index ( temp highp float)
+0:200 direct index ( temp highp 4-component vector of float)
+0:200 'm' ( temp highp 4X4 matrix of float)
+0:200 Constant:
+0:200 3 (const int)
+0:200 Constant:
+0:200 3 (const int)
+0:200 component-wise multiply ( temp highp float)
+0:200 direct index ( temp highp float)
+0:200 direct index ( temp highp 4-component vector of float)
+0:200 'm' ( temp highp 4X4 matrix of float)
+0:200 Constant:
+0:200 1 (const int)
+0:200 Constant:
+0:200 3 (const int)
+0:200 direct index ( temp highp float)
+0:200 'tt' ( temp highp 3-component vector of float)
+0:200 Constant:
+0:200 1 (const int)
+0:201 add second child into first child ( temp highp float)
+0:201 direct index ( temp highp float)
+0:201 direct index ( temp highp 4-component vector of float)
+0:201 'm' ( temp highp 4X4 matrix of float)
+0:201 Constant:
+0:201 3 (const int)
+0:201 Constant:
+0:201 0 (const int)
+0:201 component-wise multiply ( temp highp float)
+0:201 direct index ( temp highp float)
+0:201 direct index ( temp highp 4-component vector of float)
+0:201 'm' ( temp highp 4X4 matrix of float)
+0:201 Constant:
+0:201 2 (const int)
+0:201 Constant:
+0:201 0 (const int)
+0:201 direct index ( temp highp float)
+0:201 'tt' ( temp highp 3-component vector of float)
+0:201 Constant:
+0:201 2 (const int)
+0:202 add second child into first child ( temp highp float)
+0:202 direct index ( temp highp float)
+0:202 direct index ( temp highp 4-component vector of float)
+0:202 'm' ( temp highp 4X4 matrix of float)
+0:202 Constant:
+0:202 3 (const int)
+0:202 Constant:
+0:202 1 (const int)
+0:202 component-wise multiply ( temp highp float)
+0:202 direct index ( temp highp float)
+0:202 direct index ( temp highp 4-component vector of float)
+0:202 'm' ( temp highp 4X4 matrix of float)
+0:202 Constant:
+0:202 2 (const int)
+0:202 Constant:
+0:202 1 (const int)
+0:202 direct index ( temp highp float)
+0:202 'tt' ( temp highp 3-component vector of float)
+0:202 Constant:
+0:202 2 (const int)
+0:203 add second child into first child ( temp highp float)
+0:203 direct index ( temp highp float)
+0:203 direct index ( temp highp 4-component vector of float)
+0:203 'm' ( temp highp 4X4 matrix of float)
+0:203 Constant:
+0:203 3 (const int)
+0:203 Constant:
+0:203 2 (const int)
+0:203 component-wise multiply ( temp highp float)
+0:203 direct index ( temp highp float)
+0:203 direct index ( temp highp 4-component vector of float)
+0:203 'm' ( temp highp 4X4 matrix of float)
+0:203 Constant:
+0:203 2 (const int)
+0:203 Constant:
+0:203 2 (const int)
+0:203 direct index ( temp highp float)
+0:203 'tt' ( temp highp 3-component vector of float)
+0:203 Constant:
+0:203 2 (const int)
+0:204 add second child into first child ( temp highp float)
+0:204 direct index ( temp highp float)
+0:204 direct index ( temp highp 4-component vector of float)
+0:204 'm' ( temp highp 4X4 matrix of float)
+0:204 Constant:
+0:204 3 (const int)
+0:204 Constant:
+0:204 3 (const int)
+0:204 component-wise multiply ( temp highp float)
+0:204 direct index ( temp highp float)
+0:204 direct index ( temp highp 4-component vector of float)
+0:204 'm' ( temp highp 4X4 matrix of float)
+0:204 Constant:
+0:204 2 (const int)
+0:204 Constant:
+0:204 3 (const int)
+0:204 direct index ( temp highp float)
+0:204 'tt' ( temp highp 3-component vector of float)
+0:204 Constant:
+0:204 2 (const int)
+0:206 Branch: Return with expression
+0:206 'm' ( temp highp 4X4 matrix of float)
+0:208 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:208 Function Parameters:
+0:208 'id' ( in highp int)
+0:209 Sequence
+0:209 Sequence
+0:209 move second child to first child ( temp highp 3X3 matrix of float)
+0:209 'm' ( temp highp 3X3 matrix of float)
+0:209 Constant:
+0:209 1.000000
+0:209 0.000000
+0:209 0.000000
+0:209 0.000000
+0:209 1.000000
+0:209 0.000000
+0:209 0.000000
+0:209 0.000000
+0:209 1.000000
+0:210 Branch: Return with expression
+0:210 'm' ( temp highp 3X3 matrix of float)
+0:212 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float)
+0:212 Function Parameters:
+0:212 'id' ( in highp int)
+0:213 Sequence
+0:213 Sequence
+0:213 move second child to first child ( temp highp 3X3 matrix of float)
+0:213 'm' ( temp highp 3X3 matrix of float)
+0:213 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:213 'id' ( in highp int)
+0:214 Branch: Return with expression
+0:214 'm' ( temp highp 3X3 matrix of float)
+0:216 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float)
+0:216 Function Parameters:
+0:216 'index' ( in highp int)
+0:216 'curColor' ( in highp 4-component vector of float)
+0:217 Sequence
+0:217 subtract second child into first child ( temp highp int)
+0:217 'index' ( in highp int)
+0:217 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:217 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:217 Constant:
+0:217 0 (const uint)
+0:219 Sequence
+0:219 move second child to first child ( temp highp int)
+0:219 'coord' ( temp highp int)
+0:219 'index' ( in highp int)
+0:220 Sequence
+0:220 move second child to first child ( temp highp 4-component vector of float)
+0:220 'samp' ( temp highp 4-component vector of float)
+0:220 textureFetch ( global highp 4-component vector of float)
+0:220 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+0:220 'coord' ( temp highp int)
+0:221 move second child to first child ( temp highp float)
+0:221 direct index ( temp highp float)
+0:221 'v' ( temp highp 4-component vector of float)
+0:221 Constant:
+0:221 0 (const int)
+0:221 direct index ( temp highp float)
+0:221 'samp' ( temp highp 4-component vector of float)
+0:221 Constant:
+0:221 0 (const int)
+0:222 move second child to first child ( temp highp float)
+0:222 direct index ( temp highp float)
+0:222 'v' ( temp highp 4-component vector of float)
+0:222 Constant:
+0:222 1 (const int)
+0:222 direct index ( temp highp float)
+0:222 'samp' ( temp highp 4-component vector of float)
+0:222 Constant:
+0:222 1 (const int)
+0:223 move second child to first child ( temp highp float)
+0:223 direct index ( temp highp float)
+0:223 'v' ( temp highp 4-component vector of float)
+0:223 Constant:
+0:223 2 (const int)
+0:223 direct index ( temp highp float)
+0:223 'samp' ( temp highp 4-component vector of float)
+0:223 Constant:
+0:223 2 (const int)
+0:224 move second child to first child ( temp highp float)
+0:224 direct index ( temp highp float)
+0:224 'v' ( temp highp 4-component vector of float)
+0:224 Constant:
+0:224 3 (const int)
+0:224 Constant:
+0:224 1.000000
+0:225 move second child to first child ( temp highp float)
+0:225 direct index ( temp highp float)
+0:225 'curColor' ( in highp 4-component vector of float)
+0:225 Constant:
+0:225 0 (const int)
+0:225 direct index ( temp highp float)
+0:225 'v' ( temp highp 4-component vector of float)
+0:225 Constant:
+0:225 0 (const int)
+0:227 move second child to first child ( temp highp float)
+0:227 direct index ( temp highp float)
+0:227 'curColor' ( in highp 4-component vector of float)
+0:227 Constant:
+0:227 1 (const int)
+0:227 direct index ( temp highp float)
+0:227 'v' ( temp highp 4-component vector of float)
+0:227 Constant:
+0:227 1 (const int)
+0:229 move second child to first child ( temp highp float)
+0:229 direct index ( temp highp float)
+0:229 'curColor' ( in highp 4-component vector of float)
+0:229 Constant:
+0:229 2 (const int)
+0:229 direct index ( temp highp float)
+0:229 'v' ( temp highp 4-component vector of float)
+0:229 Constant:
+0:229 2 (const int)
+0:231 Branch: Return with expression
+0:231 'curColor' ( in highp 4-component vector of float)
+0:233 Function Definition: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float)
+0:233 Function Parameters:
+0:233 'id' ( in highp int)
+0:233 'pos' ( in highp 4-component vector of float)
+0:234 Sequence
+0:234 move second child to first child ( temp highp 4-component vector of float)
+0:234 'pos' ( in highp 4-component vector of float)
+0:234 matrix-times-vector ( temp highp 4-component vector of float)
+0:234 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:234 'id' ( in highp int)
+0:234 'pos' ( in highp 4-component vector of float)
+0:235 Branch: Return with expression
+0:235 matrix-times-vector ( temp highp 4-component vector of float)
+0:235 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:235 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:235 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:235 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:235 Constant:
+0:235 0 (const uint)
+0:235 Function Call: TDCameraIndex( ( global highp int)
+0:235 Constant:
+0:235 0 (const int)
+0:235 'pos' ( in highp 4-component vector of float)
+0:238 Function Definition: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:238 Function Parameters:
+0:238 'id' ( in highp int)
+0:238 'vec' ( in highp 3-component vector of float)
+0:240 Sequence
+0:240 Sequence
+0:240 move second child to first child ( temp highp 3X3 matrix of float)
+0:240 'm' ( temp highp 3X3 matrix of float)
+0:240 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:240 'id' ( in highp int)
+0:241 Branch: Return with expression
+0:241 matrix-times-vector ( temp highp 3-component vector of float)
+0:241 Construct mat3 ( temp highp 3X3 matrix of float)
+0:241 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:241 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:241 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:241 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:241 Constant:
+0:241 0 (const uint)
+0:241 Function Call: TDCameraIndex( ( global highp int)
+0:241 Constant:
+0:241 0 (const int)
+0:241 matrix-times-vector ( temp highp 3-component vector of float)
+0:241 'm' ( temp highp 3X3 matrix of float)
+0:241 'vec' ( in highp 3-component vector of float)
+0:243 Function Definition: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:243 Function Parameters:
+0:243 'id' ( in highp int)
+0:243 'vec' ( in highp 3-component vector of float)
+0:245 Sequence
+0:245 Sequence
+0:245 move second child to first child ( temp highp 3X3 matrix of float)
+0:245 'm' ( temp highp 3X3 matrix of float)
+0:245 Function Call: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float)
+0:245 'id' ( in highp int)
+0:246 Branch: Return with expression
+0:246 matrix-times-vector ( temp highp 3-component vector of float)
+0:246 Construct mat3 ( temp highp 3X3 matrix of float)
+0:246 worldForNormals: direct index for structure (layout( column_major std140) global highp 3X3 matrix of float)
+0:246 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:246 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:246 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:246 Constant:
+0:246 0 (const uint)
+0:246 Function Call: TDCameraIndex( ( global highp int)
+0:246 Constant:
+0:246 13 (const int)
+0:246 matrix-times-vector ( temp highp 3-component vector of float)
+0:246 'm' ( temp highp 3X3 matrix of float)
+0:246 'vec' ( in highp 3-component vector of float)
+0:248 Function Definition: TDInstanceDeform(vf4; ( global highp 4-component vector of float)
+0:248 Function Parameters:
+0:248 'pos' ( in highp 4-component vector of float)
+0:249 Sequence
+0:249 Branch: Return with expression
+0:249 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float)
+0:249 Function Call: TDInstanceID( ( global highp int)
+0:249 'pos' ( in highp 4-component vector of float)
+0:251 Function Definition: TDInstanceDeformVec(vf3; ( global highp 3-component vector of float)
+0:251 Function Parameters:
+0:251 'vec' ( in highp 3-component vector of float)
+0:252 Sequence
+0:252 Branch: Return with expression
+0:252 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:252 Function Call: TDInstanceID( ( global highp int)
+0:252 'vec' ( in highp 3-component vector of float)
+0:254 Function Definition: TDInstanceDeformNorm(vf3; ( global highp 3-component vector of float)
+0:254 Function Parameters:
+0:254 'vec' ( in highp 3-component vector of float)
+0:255 Sequence
+0:255 Branch: Return with expression
+0:255 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:255 Function Call: TDInstanceID( ( global highp int)
+0:255 'vec' ( in highp 3-component vector of float)
+0:257 Function Definition: TDInstanceActive( ( global bool)
+0:257 Function Parameters:
+0:257 Sequence
+0:257 Branch: Return with expression
+0:257 Function Call: TDInstanceActive(i1; ( global bool)
+0:257 Function Call: TDInstanceID( ( global highp int)
+0:258 Function Definition: TDInstanceTranslate( ( global highp 3-component vector of float)
+0:258 Function Parameters:
+0:258 Sequence
+0:258 Branch: Return with expression
+0:258 Function Call: TDInstanceTranslate(i1; ( global highp 3-component vector of float)
+0:258 Function Call: TDInstanceID( ( global highp int)
+0:259 Function Definition: TDInstanceRotateMat( ( global highp 3X3 matrix of float)
+0:259 Function Parameters:
+0:259 Sequence
+0:259 Branch: Return with expression
+0:259 Function Call: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float)
+0:259 Function Call: TDInstanceID( ( global highp int)
+0:260 Function Definition: TDInstanceScale( ( global highp 3-component vector of float)
+0:260 Function Parameters:
+0:260 Sequence
+0:260 Branch: Return with expression
+0:260 Function Call: TDInstanceScale(i1; ( global highp 3-component vector of float)
+0:260 Function Call: TDInstanceID( ( global highp int)
+0:261 Function Definition: TDInstanceMat( ( global highp 4X4 matrix of float)
+0:261 Function Parameters:
+0:261 Sequence
+0:261 Branch: Return with expression
+0:261 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:261 Function Call: TDInstanceID( ( global highp int)
+0:263 Function Definition: TDInstanceMat3( ( global highp 3X3 matrix of float)
+0:263 Function Parameters:
+0:263 Sequence
+0:263 Branch: Return with expression
+0:263 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:263 Function Call: TDInstanceID( ( global highp int)
+0:265 Function Definition: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float)
+0:265 Function Parameters:
+0:265 't' ( in highp 3-component vector of float)
+0:266 Sequence
+0:266 Branch: Return with expression
+0:266 Function Call: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float)
+0:266 Function Call: TDInstanceID( ( global highp int)
+0:266 't' ( in highp 3-component vector of float)
+0:268 Function Definition: TDInstanceColor(vf4; ( global highp 4-component vector of float)
+0:268 Function Parameters:
+0:268 'curColor' ( in highp 4-component vector of float)
+0:269 Sequence
+0:269 Branch: Return with expression
+0:269 Function Call: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float)
+0:269 Function Call: TDInstanceID( ( global highp int)
+0:269 'curColor' ( in highp 4-component vector of float)
+0:271 Function Definition: TDSkinnedDeform(vf4; ( global highp 4-component vector of float)
+0:271 Function Parameters:
+0:271 'pos' ( in highp 4-component vector of float)
+0:271 Sequence
+0:271 Branch: Return with expression
+0:271 'pos' ( in highp 4-component vector of float)
+0:273 Function Definition: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:273 Function Parameters:
+0:273 'vec' ( in highp 3-component vector of float)
+0:273 Sequence
+0:273 Branch: Return with expression
+0:273 'vec' ( in highp 3-component vector of float)
+0:275 Function Definition: TDFastDeformTangent(vf3;vf4;vf3; ( global highp 3-component vector of float)
+0:275 Function Parameters:
+0:275 'oldNorm' ( in highp 3-component vector of float)
+0:275 'oldTangent' ( in highp 4-component vector of float)
+0:275 'deformedNorm' ( in highp 3-component vector of float)
+0:276 Sequence
+0:276 Branch: Return with expression
+0:276 vector swizzle ( temp highp 3-component vector of float)
+0:276 'oldTangent' ( in highp 4-component vector of float)
+0:276 Sequence
+0:276 Constant:
+0:276 0 (const int)
+0:276 Constant:
+0:276 1 (const int)
+0:276 Constant:
+0:276 2 (const int)
+0:277 Function Definition: TDBoneMat(i1; ( global highp 4X4 matrix of float)
+0:277 Function Parameters:
+0:277 'index' ( in highp int)
+0:278 Sequence
+0:278 Branch: Return with expression
+0:278 Constant:
+0:278 1.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 1.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 1.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 1.000000
+0:280 Function Definition: TDDeform(vf4; ( global highp 4-component vector of float)
+0:280 Function Parameters:
+0:280 'pos' ( in highp 4-component vector of float)
+0:281 Sequence
+0:281 move second child to first child ( temp highp 4-component vector of float)
+0:281 'pos' ( in highp 4-component vector of float)
+0:281 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float)
+0:281 'pos' ( in highp 4-component vector of float)
+0:282 move second child to first child ( temp highp 4-component vector of float)
+0:282 'pos' ( in highp 4-component vector of float)
+0:282 Function Call: TDInstanceDeform(vf4; ( global highp 4-component vector of float)
+0:282 'pos' ( in highp 4-component vector of float)
+0:283 Branch: Return with expression
+0:283 'pos' ( in highp 4-component vector of float)
+0:286 Function Definition: TDDeform(i1;vf3; ( global highp 4-component vector of float)
+0:286 Function Parameters:
+0:286 'instanceID' ( in highp int)
+0:286 'p' ( in highp 3-component vector of float)
+0:287 Sequence
+0:287 Sequence
+0:287 move second child to first child ( temp highp 4-component vector of float)
+0:287 'pos' ( temp highp 4-component vector of float)
+0:287 Construct vec4 ( temp highp 4-component vector of float)
+0:287 'p' ( in highp 3-component vector of float)
+0:287 Constant:
+0:287 1.000000
+0:288 move second child to first child ( temp highp 4-component vector of float)
+0:288 'pos' ( temp highp 4-component vector of float)
+0:288 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float)
+0:288 'pos' ( temp highp 4-component vector of float)
+0:289 move second child to first child ( temp highp 4-component vector of float)
+0:289 'pos' ( temp highp 4-component vector of float)
+0:289 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float)
+0:289 'instanceID' ( in highp int)
+0:289 'pos' ( temp highp 4-component vector of float)
+0:290 Branch: Return with expression
+0:290 'pos' ( temp highp 4-component vector of float)
+0:293 Function Definition: TDDeform(vf3; ( global highp 4-component vector of float)
+0:293 Function Parameters:
+0:293 'pos' ( in highp 3-component vector of float)
+0:294 Sequence
+0:294 Branch: Return with expression
+0:294 Function Call: TDDeform(i1;vf3; ( global highp 4-component vector of float)
+0:294 Function Call: TDInstanceID( ( global highp int)
+0:294 'pos' ( in highp 3-component vector of float)
+0:297 Function Definition: TDDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:297 Function Parameters:
+0:297 'instanceID' ( in highp int)
+0:297 'vec' ( in highp 3-component vector of float)
+0:298 Sequence
+0:298 move second child to first child ( temp highp 3-component vector of float)
+0:298 'vec' ( in highp 3-component vector of float)
+0:298 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:298 'vec' ( in highp 3-component vector of float)
+0:299 move second child to first child ( temp highp 3-component vector of float)
+0:299 'vec' ( in highp 3-component vector of float)
+0:299 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:299 'instanceID' ( in highp int)
+0:299 'vec' ( in highp 3-component vector of float)
+0:300 Branch: Return with expression
+0:300 'vec' ( in highp 3-component vector of float)
+0:303 Function Definition: TDDeformVec(vf3; ( global highp 3-component vector of float)
+0:303 Function Parameters:
+0:303 'vec' ( in highp 3-component vector of float)
+0:304 Sequence
+0:304 Branch: Return with expression
+0:304 Function Call: TDDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:304 Function Call: TDInstanceID( ( global highp int)
+0:304 'vec' ( in highp 3-component vector of float)
+0:307 Function Definition: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:307 Function Parameters:
+0:307 'instanceID' ( in highp int)
+0:307 'vec' ( in highp 3-component vector of float)
+0:308 Sequence
+0:308 move second child to first child ( temp highp 3-component vector of float)
+0:308 'vec' ( in highp 3-component vector of float)
+0:308 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:308 'vec' ( in highp 3-component vector of float)
+0:309 move second child to first child ( temp highp 3-component vector of float)
+0:309 'vec' ( in highp 3-component vector of float)
+0:309 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:309 'instanceID' ( in highp int)
+0:309 'vec' ( in highp 3-component vector of float)
+0:310 Branch: Return with expression
+0:310 'vec' ( in highp 3-component vector of float)
+0:313 Function Definition: TDDeformNorm(vf3; ( global highp 3-component vector of float)
+0:313 Function Parameters:
+0:313 'vec' ( in highp 3-component vector of float)
+0:314 Sequence
+0:314 Branch: Return with expression
+0:314 Function Call: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:314 Function Call: TDInstanceID( ( global highp int)
+0:314 'vec' ( in highp 3-component vector of float)
+0:317 Function Definition: TDSkinnedDeformNorm(vf3; ( global highp 3-component vector of float)
+0:317 Function Parameters:
+0:317 'vec' ( in highp 3-component vector of float)
+0:318 Sequence
+0:318 move second child to first child ( temp highp 3-component vector of float)
+0:318 'vec' ( in highp 3-component vector of float)
+0:318 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:318 'vec' ( in highp 3-component vector of float)
+0:319 Branch: Return with expression
+0:319 'vec' ( in highp 3-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'P' (layout( location=0) in highp 3-component vector of float)
+0:? 'N' (layout( location=1) in highp 3-component vector of float)
+0:? 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:? 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:? 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+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, out 1-element array of float CullDistance gl_CullDistance})
+0:? 'gl_VertexIndex' ( in int VertexIndex)
+0:? 'gl_InstanceIndex' ( in int InstanceIndex)
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights})
+0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs})
+0:? 'mTD2DImageOutputs' (layout( rgba8) uniform 1-element array of highp image2D)
+0:? 'mTD2DArrayImageOutputs' (layout( rgba8) uniform 1-element array of highp image2DArray)
+0:? 'mTD3DImageOutputs' (layout( rgba8) uniform 1-element array of highp image3D)
+0:? 'mTDCubeImageOutputs' (layout( rgba8) uniform 1-element array of highp imageCube)
+0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:95 Function Definition: main( ( global void)
+0:95 Function Parameters:
+0:99 Sequence
+0:99 Function Call: TDCheckDiscard( ( global void)
+0:101 Sequence
+0:101 move second child to first child ( temp highp 4-component vector of float)
+0:101 'outcol' ( temp highp 4-component vector of float)
+0:101 Constant:
+0:101 0.000000
+0:101 0.000000
+0:101 0.000000
+0:101 0.000000
+0:103 Sequence
+0:103 move second child to first child ( temp highp 3-component vector of float)
+0:103 'texCoord0' ( temp highp 3-component vector of float)
+0:103 vector swizzle ( temp highp 3-component vector of float)
+0:103 texCoord0: direct index for structure ( in highp 3-component vector of float)
+0:103 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:103 Constant:
+0:103 2 (const int)
+0:103 Sequence
+0:103 Constant:
+0:103 0 (const int)
+0:103 Constant:
+0:103 1 (const int)
+0:103 Constant:
+0:103 2 (const int)
+0:104 Sequence
+0:104 move second child to first child ( temp highp float)
+0:104 'actualTexZ' ( temp highp float)
+0:104 mod ( global highp float)
+0:104 Convert int to float ( temp highp float)
+0:104 Convert float to int ( temp highp int)
+0:104 direct index ( temp highp float)
+0:104 'texCoord0' ( temp highp 3-component vector of float)
+0:104 Constant:
+0:104 2 (const int)
+0:104 Constant:
+0:104 2048.000000
+0:105 Sequence
+0:105 move second child to first child ( temp highp float)
+0:105 'instanceLoop' ( temp highp float)
+0:105 Floor ( global highp float)
+0:105 Convert int to float ( temp highp float)
+0:105 divide ( temp highp int)
+0:105 Convert float to int ( temp highp int)
+0:105 direct index ( temp highp float)
+0:105 'texCoord0' ( temp highp 3-component vector of float)
+0:105 Constant:
+0:105 2 (const int)
+0:105 Constant:
+0:105 2048 (const int)
+0:106 move second child to first child ( temp highp float)
+0:106 direct index ( temp highp float)
+0:106 'texCoord0' ( temp highp 3-component vector of float)
+0:106 Constant:
+0:106 2 (const int)
+0:106 'actualTexZ' ( temp highp float)
+0:107 Sequence
+0:107 move second child to first child ( temp highp 4-component vector of float)
+0:107 'colorMapColor' ( temp highp 4-component vector of float)
+0:107 texture ( global highp 4-component vector of float)
+0:107 'sColorMap' ( uniform highp sampler2DArray)
+0:107 vector swizzle ( temp highp 3-component vector of float)
+0:107 'texCoord0' ( temp highp 3-component vector of float)
+0:107 Sequence
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:109 Sequence
+0:109 move second child to first child ( temp highp float)
+0:109 'red' ( temp highp float)
+0:109 indirect index ( temp highp float)
+0:109 'colorMapColor' ( temp highp 4-component vector of float)
+0:109 Convert float to int ( temp highp int)
+0:109 'instanceLoop' ( temp highp float)
+0:110 move second child to first child ( temp highp 4-component vector of float)
+0:110 'colorMapColor' ( temp highp 4-component vector of float)
+0:110 Construct vec4 ( temp highp 4-component vector of float)
+0:110 'red' ( temp highp float)
+0:112 add second child into first child ( temp highp 3-component vector of float)
+0:112 vector swizzle ( temp highp 3-component vector of float)
+0:112 'outcol' ( temp highp 4-component vector of float)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:112 component-wise multiply ( temp highp 3-component vector of float)
+0:112 uConstant: direct index for structure ( uniform highp 3-component vector of float)
+0:112 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:112 Constant:
+0:112 3 (const uint)
+0:112 vector swizzle ( temp highp 3-component vector of float)
+0:112 color: direct index for structure ( in highp 4-component vector of float)
+0:112 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:112 Constant:
+0:112 0 (const int)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:114 multiply second child into first child ( temp highp 4-component vector of float)
+0:114 'outcol' ( temp highp 4-component vector of float)
+0:114 'colorMapColor' ( temp highp 4-component vector of float)
+0:117 Sequence
+0:117 move second child to first child ( temp highp float)
+0:117 'alpha' ( temp highp float)
+0:117 component-wise multiply ( temp highp float)
+0:117 direct index ( temp highp float)
+0:117 color: direct index for structure ( in highp 4-component vector of float)
+0:117 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 3 (const int)
+0:117 direct index ( temp highp float)
+0:117 'colorMapColor' ( temp highp 4-component vector of float)
+0:117 Constant:
+0:117 3 (const int)
+0:120 move second child to first child ( temp highp 4-component vector of float)
+0:120 'outcol' ( temp highp 4-component vector of float)
+0:120 Function Call: TDDither(vf4; ( global highp 4-component vector of float)
+0:120 'outcol' ( temp highp 4-component vector of float)
+0:122 vector scale second child into first child ( temp highp 3-component vector of float)
+0:122 vector swizzle ( temp highp 3-component vector of float)
+0:122 'outcol' ( temp highp 4-component vector of float)
+0:122 Sequence
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Constant:
+0:122 2 (const int)
+0:122 'alpha' ( temp highp float)
+0:126 Function Call: TDAlphaTest(f1; ( global void)
+0:126 'alpha' ( temp highp float)
+0:128 move second child to first child ( temp highp float)
+0:128 direct index ( temp highp float)
+0:128 'outcol' ( temp highp 4-component vector of float)
+0:128 Constant:
+0:128 3 (const int)
+0:128 'alpha' ( temp highp float)
+0:129 move second child to first child ( temp highp 4-component vector of float)
+0:129 direct index (layout( location=0) temp highp 4-component vector of float)
+0:129 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float)
+0:129 Constant:
+0:129 0 (const int)
+0:129 Function Call: TDOutputSwizzle(vf4; ( global highp 4-component vector of float)
+0:129 'outcol' ( temp highp 4-component vector of float)
+0:135 Sequence
+0:135 Sequence
+0:135 move second child to first child ( temp highp int)
+0:135 'i' ( temp highp int)
+0:135 Constant:
+0:135 1 (const int)
+0:135 Loop with condition tested first
+0:135 Loop Condition
+0:135 Compare Less Than ( temp bool)
+0:135 'i' ( temp highp int)
+0:135 Constant:
+0:135 1 (const int)
+0:135 Loop Body
+0:137 Sequence
+0:137 move second child to first child ( temp highp 4-component vector of float)
+0:137 indirect index (layout( location=0) temp highp 4-component vector of float)
+0:137 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float)
+0:137 'i' ( temp highp int)
+0:137 Constant:
+0:137 0.000000
+0:137 0.000000
+0:137 0.000000
+0:137 0.000000
+0:135 Loop Terminal Expression
+0:135 Post-Increment ( temp highp int)
+0:135 'i' ( temp highp int)
+0:116 Function Definition: TDColor(vf4; ( global highp 4-component vector of float)
+0:116 Function Parameters:
+0:116 'color' ( in highp 4-component vector of float)
+0:116 Sequence
+0:116 Branch: Return with expression
+0:116 'color' ( in highp 4-component vector of float)
+0:117 Function Definition: TDCheckOrderIndTrans( ( global void)
+0:117 Function Parameters:
+0:119 Function Definition: TDCheckDiscard( ( global void)
+0:119 Function Parameters:
+0:120 Sequence
+0:120 Function Call: TDCheckOrderIndTrans( ( global void)
+0:122 Function Definition: TDDither(vf4; ( global highp 4-component vector of float)
+0:122 Function Parameters:
+0:122 'color' ( in highp 4-component vector of float)
+0:124 Sequence
+0:124 Sequence
+0:124 move second child to first child ( temp highp float)
+0:124 'd' ( temp highp float)
+0:125 direct index ( temp highp float)
+0:125 texture ( global highp 4-component vector of float)
+0:124 'sTDNoiseMap' ( uniform highp sampler2D)
+0:125 divide ( temp highp 2-component vector of float)
+0:125 vector swizzle ( temp highp 2-component vector of float)
+0:125 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord)
+0:125 Sequence
+0:125 Constant:
+0:125 0 (const int)
+0:125 Constant:
+0:125 1 (const int)
+0:125 Constant:
+0:125 256.000000
+0:125 Constant:
+0:125 0 (const int)
+0:126 subtract second child into first child ( temp highp float)
+0:126 'd' ( temp highp float)
+0:126 Constant:
+0:126 0.500000
+0:127 divide second child into first child ( temp highp float)
+0:127 'd' ( temp highp float)
+0:127 Constant:
+0:127 256.000000
+0:128 Branch: Return with expression
+0:128 Construct vec4 ( temp highp 4-component vector of float)
+0:128 add ( temp highp 3-component vector of float)
+0:128 vector swizzle ( temp highp 3-component vector of float)
+0:128 'color' ( in highp 4-component vector of float)
+0:128 Sequence
+0:128 Constant:
+0:128 0 (const int)
+0:128 Constant:
+0:128 1 (const int)
+0:128 Constant:
+0:128 2 (const int)
+0:128 'd' ( temp highp float)
+0:128 direct index ( temp highp float)
+0:128 'color' ( in highp 4-component vector of float)
+0:128 Constant:
+0:128 3 (const int)
+0:130 Function Definition: TDFrontFacing(vf3;vf3; ( global bool)
+0:130 Function Parameters:
+0:130 'pos' ( in highp 3-component vector of float)
+0:130 'normal' ( in highp 3-component vector of float)
+0:132 Sequence
+0:132 Branch: Return with expression
+0:132 'gl_FrontFacing' ( gl_FrontFacing bool Face)
+0:134 Function Definition: TDAttenuateLight(i1;f1; ( global highp float)
+0:134 Function Parameters:
+0:134 'index' ( in highp int)
+0:134 'lightDist' ( in highp float)
+0:136 Sequence
+0:136 Branch: Return with expression
+0:136 Constant:
+0:136 1.000000
+0:138 Function Definition: TDAlphaTest(f1; ( global void)
+0:138 Function Parameters:
+0:138 'alpha' ( in highp float)
+0:140 Function Definition: TDHardShadow(i1;vf3; ( global highp float)
+0:140 Function Parameters:
+0:140 'lightIndex' ( in highp int)
+0:140 'worldSpacePos' ( in highp 3-component vector of float)
+0:141 Sequence
+0:141 Branch: Return with expression
+0:141 Constant:
+0:141 0.000000
+0:142 Function Definition: TDSoftShadow(i1;vf3;i1;i1; ( global highp float)
+0:142 Function Parameters:
+0:142 'lightIndex' ( in highp int)
+0:142 'worldSpacePos' ( in highp 3-component vector of float)
+0:142 'samples' ( in highp int)
+0:142 'steps' ( in highp int)
+0:143 Sequence
+0:143 Branch: Return with expression
+0:143 Constant:
+0:143 0.000000
+0:144 Function Definition: TDSoftShadow(i1;vf3; ( global highp float)
+0:144 Function Parameters:
+0:144 'lightIndex' ( in highp int)
+0:144 'worldSpacePos' ( in highp 3-component vector of float)
+0:145 Sequence
+0:145 Branch: Return with expression
+0:145 Constant:
+0:145 0.000000
+0:146 Function Definition: TDShadow(i1;vf3; ( global highp float)
+0:146 Function Parameters:
+0:146 'lightIndex' ( in highp int)
+0:146 'worldSpacePos' ( in highp 3-component vector of float)
+0:147 Sequence
+0:147 Branch: Return with expression
+0:147 Constant:
+0:147 0.000000
+0:152 Function Definition: iTDRadicalInverse_VdC(u1; ( global highp float)
+0:152 Function Parameters:
+0:152 'bits' ( in highp uint)
+0:154 Sequence
+0:154 move second child to first child ( temp highp uint)
+0:154 'bits' ( in highp uint)
+0:154 inclusive-or ( temp highp uint)
+0:154 left-shift ( temp highp uint)
+0:154 'bits' ( in highp uint)
+0:154 Constant:
+0:154 16 (const uint)
+0:154 right-shift ( temp highp uint)
+0:154 'bits' ( in highp uint)
+0:154 Constant:
+0:154 16 (const uint)
+0:155 move second child to first child ( temp highp uint)
+0:155 'bits' ( in highp uint)
+0:155 inclusive-or ( temp highp uint)
+0:155 left-shift ( temp highp uint)
+0:155 bitwise and ( temp highp uint)
+0:155 'bits' ( in highp uint)
+0:155 Constant:
+0:155 1431655765 (const uint)
+0:155 Constant:
+0:155 1 (const uint)
+0:155 right-shift ( temp highp uint)
+0:155 bitwise and ( temp highp uint)
+0:155 'bits' ( in highp uint)
+0:155 Constant:
+0:155 2863311530 (const uint)
+0:155 Constant:
+0:155 1 (const uint)
+0:156 move second child to first child ( temp highp uint)
+0:156 'bits' ( in highp uint)
+0:156 inclusive-or ( temp highp uint)
+0:156 left-shift ( temp highp uint)
+0:156 bitwise and ( temp highp uint)
+0:156 'bits' ( in highp uint)
+0:156 Constant:
+0:156 858993459 (const uint)
+0:156 Constant:
+0:156 2 (const uint)
+0:156 right-shift ( temp highp uint)
+0:156 bitwise and ( temp highp uint)
+0:156 'bits' ( in highp uint)
+0:156 Constant:
+0:156 3435973836 (const uint)
+0:156 Constant:
+0:156 2 (const uint)
+0:157 move second child to first child ( temp highp uint)
+0:157 'bits' ( in highp uint)
+0:157 inclusive-or ( temp highp uint)
+0:157 left-shift ( temp highp uint)
+0:157 bitwise and ( temp highp uint)
+0:157 'bits' ( in highp uint)
+0:157 Constant:
+0:157 252645135 (const uint)
+0:157 Constant:
+0:157 4 (const uint)
+0:157 right-shift ( temp highp uint)
+0:157 bitwise and ( temp highp uint)
+0:157 'bits' ( in highp uint)
+0:157 Constant:
+0:157 4042322160 (const uint)
+0:157 Constant:
+0:157 4 (const uint)
+0:158 move second child to first child ( temp highp uint)
+0:158 'bits' ( in highp uint)
+0:158 inclusive-or ( temp highp uint)
+0:158 left-shift ( temp highp uint)
+0:158 bitwise and ( temp highp uint)
+0:158 'bits' ( in highp uint)
+0:158 Constant:
+0:158 16711935 (const uint)
+0:158 Constant:
+0:158 8 (const uint)
+0:158 right-shift ( temp highp uint)
+0:158 bitwise and ( temp highp uint)
+0:158 'bits' ( in highp uint)
+0:158 Constant:
+0:158 4278255360 (const uint)
+0:158 Constant:
+0:158 8 (const uint)
+0:159 Branch: Return with expression
+0:159 component-wise multiply ( temp highp float)
+0:159 Convert uint to float ( temp highp float)
+0:159 'bits' ( in highp uint)
+0:159 Constant:
+0:159 2.3283064365387e-10
+0:161 Function Definition: iTDHammersley(u1;u1; ( global highp 2-component vector of float)
+0:161 Function Parameters:
+0:161 'i' ( in highp uint)
+0:161 'N' ( in highp uint)
+0:163 Sequence
+0:163 Branch: Return with expression
+0:163 Construct vec2 ( temp highp 2-component vector of float)
+0:163 divide ( temp highp float)
+0:163 Convert uint to float ( temp highp float)
+0:163 'i' ( in highp uint)
+0:163 Convert uint to float ( temp highp float)
+0:163 'N' ( in highp uint)
+0:163 Function Call: iTDRadicalInverse_VdC(u1; ( global highp float)
+0:163 'i' ( in highp uint)
+0:165 Function Definition: iTDImportanceSampleGGX(vf2;f1;vf3; ( global highp 3-component vector of float)
+0:165 Function Parameters:
+0:165 'Xi' ( in highp 2-component vector of float)
+0:165 'roughness2' ( in highp float)
+0:165 'N' ( in highp 3-component vector of float)
+0:167 Sequence
+0:167 Sequence
+0:167 move second child to first child ( temp highp float)
+0:167 'a' ( temp highp float)
+0:167 'roughness2' ( in highp float)
+0:168 Sequence
+0:168 move second child to first child ( temp highp float)
+0:168 'phi' ( temp highp float)
+0:168 component-wise multiply ( temp highp float)
+0:168 Constant:
+0:168 6.283185
+0:168 direct index ( temp highp float)
+0:168 'Xi' ( in highp 2-component vector of float)
+0:168 Constant:
+0:168 0 (const int)
+0:169 Sequence
+0:169 move second child to first child ( temp highp float)
+0:169 'cosTheta' ( temp highp float)
+0:169 sqrt ( global highp float)
+0:169 divide ( temp highp float)
+0:169 subtract ( temp highp float)
+0:169 Constant:
+0:169 1.000000
+0:169 direct index ( temp highp float)
+0:169 'Xi' ( in highp 2-component vector of float)
+0:169 Constant:
+0:169 1 (const int)
+0:169 add ( temp highp float)
+0:169 Constant:
+0:169 1.000000
+0:169 component-wise multiply ( temp highp float)
+0:169 subtract ( temp highp float)
+0:169 component-wise multiply ( temp highp float)
+0:169 'a' ( temp highp float)
+0:169 'a' ( temp highp float)
+0:169 Constant:
+0:169 1.000000
+0:169 direct index ( temp highp float)
+0:169 'Xi' ( in highp 2-component vector of float)
+0:169 Constant:
+0:169 1 (const int)
+0:170 Sequence
+0:170 move second child to first child ( temp highp float)
+0:170 'sinTheta' ( temp highp float)
+0:170 sqrt ( global highp float)
+0:170 subtract ( temp highp float)
+0:170 Constant:
+0:170 1.000000
+0:170 component-wise multiply ( temp highp float)
+0:170 'cosTheta' ( temp highp float)
+0:170 'cosTheta' ( temp highp float)
+0:173 move second child to first child ( temp highp float)
+0:173 direct index ( temp highp float)
+0:173 'H' ( temp highp 3-component vector of float)
+0:173 Constant:
+0:173 0 (const int)
+0:173 component-wise multiply ( temp highp float)
+0:173 'sinTheta' ( temp highp float)
+0:173 cosine ( global highp float)
+0:173 'phi' ( temp highp float)
+0:174 move second child to first child ( temp highp float)
+0:174 direct index ( temp highp float)
+0:174 'H' ( temp highp 3-component vector of float)
+0:174 Constant:
+0:174 1 (const int)
+0:174 component-wise multiply ( temp highp float)
+0:174 'sinTheta' ( temp highp float)
+0:174 sine ( global highp float)
+0:174 'phi' ( temp highp float)
+0:175 move second child to first child ( temp highp float)
+0:175 direct index ( temp highp float)
+0:175 'H' ( temp highp 3-component vector of float)
+0:175 Constant:
+0:175 2 (const int)
+0:175 'cosTheta' ( temp highp float)
+0:177 Sequence
+0:177 move second child to first child ( temp highp 3-component vector of float)
+0:177 'upVector' ( temp highp 3-component vector of float)
+0:177 Test condition and select ( temp highp 3-component vector of float)
+0:177 Condition
+0:177 Compare Less Than ( temp bool)
+0:177 Absolute value ( global highp float)
+0:177 direct index ( temp highp float)
+0:177 'N' ( in highp 3-component vector of float)
+0:177 Constant:
+0:177 2 (const int)
+0:177 Constant:
+0:177 0.999000
+0:177 true case
+0:177 Constant:
+0:177 0.000000
+0:177 0.000000
+0:177 1.000000
+0:177 false case
+0:177 Constant:
+0:177 1.000000
+0:177 0.000000
+0:177 0.000000
+0:178 Sequence
+0:178 move second child to first child ( temp highp 3-component vector of float)
+0:178 'tangentX' ( temp highp 3-component vector of float)
+0:178 normalize ( global highp 3-component vector of float)
+0:178 cross-product ( global highp 3-component vector of float)
+0:178 'upVector' ( temp highp 3-component vector of float)
+0:178 'N' ( in highp 3-component vector of float)
+0:179 Sequence
+0:179 move second child to first child ( temp highp 3-component vector of float)
+0:179 'tangentY' ( temp highp 3-component vector of float)
+0:179 cross-product ( global highp 3-component vector of float)
+0:179 'N' ( in highp 3-component vector of float)
+0:179 'tangentX' ( temp highp 3-component vector of float)
+0:182 Sequence
+0:182 move second child to first child ( temp highp 3-component vector of float)
+0:182 'worldResult' ( temp highp 3-component vector of float)
+0:182 add ( temp highp 3-component vector of float)
+0:182 add ( temp highp 3-component vector of float)
+0:182 vector-scale ( temp highp 3-component vector of float)
+0:182 'tangentX' ( temp highp 3-component vector of float)
+0:182 direct index ( temp highp float)
+0:182 'H' ( temp highp 3-component vector of float)
+0:182 Constant:
+0:182 0 (const int)
+0:182 vector-scale ( temp highp 3-component vector of float)
+0:182 'tangentY' ( temp highp 3-component vector of float)
+0:182 direct index ( temp highp float)
+0:182 'H' ( temp highp 3-component vector of float)
+0:182 Constant:
+0:182 1 (const int)
+0:182 vector-scale ( temp highp 3-component vector of float)
+0:182 'N' ( in highp 3-component vector of float)
+0:182 direct index ( temp highp float)
+0:182 'H' ( temp highp 3-component vector of float)
+0:182 Constant:
+0:182 2 (const int)
+0:183 Branch: Return with expression
+0:183 'worldResult' ( temp highp 3-component vector of float)
+0:185 Function Definition: iTDDistributionGGX(vf3;vf3;f1; ( global highp float)
+0:185 Function Parameters:
+0:185 'normal' ( in highp 3-component vector of float)
+0:185 'half_vector' ( in highp 3-component vector of float)
+0:185 'roughness2' ( in highp float)
+0:? Sequence
+0:189 Sequence
+0:189 move second child to first child ( temp highp float)
+0:189 'NdotH' ( temp highp float)
+0:189 clamp ( global highp float)
+0:189 dot-product ( global highp float)
+0:189 'normal' ( in highp 3-component vector of float)
+0:189 'half_vector' ( in highp 3-component vector of float)
+0:189 Constant:
+0:189 1.0000000000000e-06
+0:189 Constant:
+0:189 1.000000
+0:191 Sequence
+0:191 move second child to first child ( temp highp float)
+0:191 'alpha2' ( temp highp float)
+0:191 component-wise multiply ( temp highp float)
+0:191 'roughness2' ( in highp float)
+0:191 'roughness2' ( in highp float)
+0:193 Sequence
+0:193 move second child to first child ( temp highp float)
+0:193 'denom' ( temp highp float)
+0:193 add ( temp highp float)
+0:193 component-wise multiply ( temp highp float)
+0:193 component-wise multiply ( temp highp float)
+0:193 'NdotH' ( temp highp float)
+0:193 'NdotH' ( temp highp float)
+0:193 subtract ( temp highp float)
+0:193 'alpha2' ( temp highp float)
+0:193 Constant:
+0:193 1.000000
+0:193 Constant:
+0:193 1.000000
+0:194 move second child to first child ( temp highp float)
+0:194 'denom' ( temp highp float)
+0:194 max ( global highp float)
+0:194 Constant:
+0:194 1.0000000000000e-08
+0:194 'denom' ( temp highp float)
+0:195 Branch: Return with expression
+0:195 divide ( temp highp float)
+0:195 'alpha2' ( temp highp float)
+0:195 component-wise multiply ( temp highp float)
+0:195 component-wise multiply ( temp highp float)
+0:195 Constant:
+0:195 3.141593
+0:195 'denom' ( temp highp float)
+0:195 'denom' ( temp highp float)
+0:197 Function Definition: iTDCalcF(vf3;f1; ( global highp 3-component vector of float)
+0:197 Function Parameters:
+0:197 'F0' ( in highp 3-component vector of float)
+0:197 'VdotH' ( in highp float)
+0:198 Sequence
+0:198 Branch: Return with expression
+0:198 add ( temp highp 3-component vector of float)
+0:198 'F0' ( in highp 3-component vector of float)
+0:198 vector-scale ( temp highp 3-component vector of float)
+0:198 subtract ( temp highp 3-component vector of float)
+0:198 Constant:
+0:198 1.000000
+0:198 1.000000
+0:198 1.000000
+0:198 'F0' ( in highp 3-component vector of float)
+0:198 pow ( global highp float)
+0:198 Constant:
+0:198 2.000000
+0:198 component-wise multiply ( temp highp float)
+0:198 subtract ( temp highp float)
+0:198 component-wise multiply ( temp highp float)
+0:198 Constant:
+0:198 -5.554730
+0:198 'VdotH' ( in highp float)
+0:198 Constant:
+0:198 6.983160
+0:198 'VdotH' ( in highp float)
+0:201 Function Definition: iTDCalcG(f1;f1;f1; ( global highp float)
+0:201 Function Parameters:
+0:201 'NdotL' ( in highp float)
+0:201 'NdotV' ( in highp float)
+0:201 'k' ( in highp float)
+0:202 Sequence
+0:202 Sequence
+0:202 move second child to first child ( temp highp float)
+0:202 'Gl' ( temp highp float)
+0:202 divide ( temp highp float)
+0:202 Constant:
+0:202 1.000000
+0:202 add ( temp highp float)
+0:202 component-wise multiply ( temp highp float)
+0:202 'NdotL' ( in highp float)
+0:202 subtract ( temp highp float)
+0:202 Constant:
+0:202 1.000000
+0:202 'k' ( in highp float)
+0:202 'k' ( in highp float)
+0:203 Sequence
+0:203 move second child to first child ( temp highp float)
+0:203 'Gv' ( temp highp float)
+0:203 divide ( temp highp float)
+0:203 Constant:
+0:203 1.000000
+0:203 add ( temp highp float)
+0:203 component-wise multiply ( temp highp float)
+0:203 'NdotV' ( in highp float)
+0:203 subtract ( temp highp float)
+0:203 Constant:
+0:203 1.000000
+0:203 'k' ( in highp float)
+0:203 'k' ( in highp float)
+0:204 Branch: Return with expression
+0:204 component-wise multiply ( temp highp float)
+0:204 'Gl' ( temp highp float)
+0:204 'Gv' ( temp highp float)
+0:207 Function Definition: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:207 Function Parameters:
+0:207 'index' ( in highp int)
+0:207 'diffuseColor' ( in highp 3-component vector of float)
+0:207 'specularColor' ( in highp 3-component vector of float)
+0:207 'worldSpacePos' ( in highp 3-component vector of float)
+0:207 'normal' ( in highp 3-component vector of float)
+0:207 'shadowStrength' ( in highp float)
+0:207 'shadowColor' ( in highp 3-component vector of float)
+0:207 'camVector' ( in highp 3-component vector of float)
+0:207 'roughness' ( in highp float)
+0:? Sequence
+0:210 Branch: Return with expression
+0:210 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:213 Function Definition: TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void)
+0:213 Function Parameters:
+0:213 'diffuseContrib' ( inout highp 3-component vector of float)
+0:213 'specularContrib' ( inout highp 3-component vector of float)
+0:213 'shadowStrengthOut' ( inout highp float)
+0:213 'index' ( in highp int)
+0:213 'diffuseColor' ( in highp 3-component vector of float)
+0:213 'specularColor' ( in highp 3-component vector of float)
+0:213 'worldSpacePos' ( in highp 3-component vector of float)
+0:213 'normal' ( in highp 3-component vector of float)
+0:213 'shadowStrength' ( in highp float)
+0:213 'shadowColor' ( in highp 3-component vector of float)
+0:213 'camVector' ( in highp 3-component vector of float)
+0:213 'roughness' ( in highp float)
+0:215 Sequence
+0:215 Sequence
+0:215 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 'index' ( in highp int)
+0:215 'diffuseColor' ( in highp 3-component vector of float)
+0:215 'specularColor' ( in highp 3-component vector of float)
+0:215 'worldSpacePos' ( in highp 3-component vector of float)
+0:215 'normal' ( in highp 3-component vector of float)
+0:215 'shadowStrength' ( in highp float)
+0:215 'shadowColor' ( in highp 3-component vector of float)
+0:215 'camVector' ( in highp 3-component vector of float)
+0:215 'roughness' ( in highp float)
+0:215 move second child to first child ( temp highp 3-component vector of float)
+0:215 'diffuseContrib' ( inout highp 3-component vector of float)
+0:215 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 Constant:
+0:215 0 (const int)
+0:216 move second child to first child ( temp highp 3-component vector of float)
+0:216 'specularContrib' ( inout highp 3-component vector of float)
+0:216 specular: direct index for structure ( global highp 3-component vector of float)
+0:216 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:216 Constant:
+0:216 1 (const int)
+0:217 move second child to first child ( temp highp float)
+0:217 'shadowStrengthOut' ( inout highp float)
+0:217 shadowStrength: direct index for structure ( global highp float)
+0:217 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:217 Constant:
+0:217 2 (const int)
+0:220 Function Definition: TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void)
+0:220 Function Parameters:
+0:220 'diffuseContrib' ( inout highp 3-component vector of float)
+0:220 'specularContrib' ( inout highp 3-component vector of float)
+0:220 'index' ( in highp int)
+0:220 'diffuseColor' ( in highp 3-component vector of float)
+0:220 'specularColor' ( in highp 3-component vector of float)
+0:220 'worldSpacePos' ( in highp 3-component vector of float)
+0:220 'normal' ( in highp 3-component vector of float)
+0:220 'shadowStrength' ( in highp float)
+0:220 'shadowColor' ( in highp 3-component vector of float)
+0:220 'camVector' ( in highp 3-component vector of float)
+0:220 'roughness' ( in highp float)
+0:222 Sequence
+0:222 Sequence
+0:222 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 'index' ( in highp int)
+0:222 'diffuseColor' ( in highp 3-component vector of float)
+0:222 'specularColor' ( in highp 3-component vector of float)
+0:222 'worldSpacePos' ( in highp 3-component vector of float)
+0:222 'normal' ( in highp 3-component vector of float)
+0:222 'shadowStrength' ( in highp float)
+0:222 'shadowColor' ( in highp 3-component vector of float)
+0:222 'camVector' ( in highp 3-component vector of float)
+0:222 'roughness' ( in highp float)
+0:222 move second child to first child ( temp highp 3-component vector of float)
+0:222 'diffuseContrib' ( inout highp 3-component vector of float)
+0:222 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 Constant:
+0:222 0 (const int)
+0:223 move second child to first child ( temp highp 3-component vector of float)
+0:223 'specularContrib' ( inout highp 3-component vector of float)
+0:223 specular: direct index for structure ( global highp 3-component vector of float)
+0:223 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:223 Constant:
+0:223 1 (const int)
+0:226 Function Definition: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:226 Function Parameters:
+0:226 'index' ( in highp int)
+0:226 'diffuseColor' ( in highp 3-component vector of float)
+0:226 'specularColor' ( in highp 3-component vector of float)
+0:226 'normal' ( in highp 3-component vector of float)
+0:226 'camVector' ( in highp 3-component vector of float)
+0:226 'roughness' ( in highp float)
+0:226 'ambientOcclusion' ( in highp float)
+0:? Sequence
+0:229 Branch: Return with expression
+0:229 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:232 Function Definition: TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1; ( global void)
+0:232 Function Parameters:
+0:232 'diffuseContrib' ( inout highp 3-component vector of float)
+0:232 'specularContrib' ( inout highp 3-component vector of float)
+0:232 'index' ( in highp int)
+0:232 'diffuseColor' ( in highp 3-component vector of float)
+0:232 'specularColor' ( in highp 3-component vector of float)
+0:232 'normal' ( in highp 3-component vector of float)
+0:232 'camVector' ( in highp 3-component vector of float)
+0:232 'roughness' ( in highp float)
+0:232 'ambientOcclusion' ( in highp float)
+0:234 Sequence
+0:234 Sequence
+0:234 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:234 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:234 Function Call: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:234 'index' ( in highp int)
+0:234 'diffuseColor' ( in highp 3-component vector of float)
+0:234 'specularColor' ( in highp 3-component vector of float)
+0:234 'normal' ( in highp 3-component vector of float)
+0:234 'camVector' ( in highp 3-component vector of float)
+0:234 'roughness' ( in highp float)
+0:234 'ambientOcclusion' ( in highp float)
+0:235 move second child to first child ( temp highp 3-component vector of float)
+0:235 'diffuseContrib' ( inout highp 3-component vector of float)
+0:235 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:235 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:235 Constant:
+0:235 0 (const int)
+0:236 move second child to first child ( temp highp 3-component vector of float)
+0:236 'specularContrib' ( inout highp 3-component vector of float)
+0:236 specular: direct index for structure ( global highp 3-component vector of float)
+0:236 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:236 Constant:
+0:236 1 (const int)
+0:239 Function Definition: TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:239 Function Parameters:
+0:239 'index' ( in highp int)
+0:239 'worldSpacePos' ( in highp 3-component vector of float)
+0:239 'normal' ( in highp 3-component vector of float)
+0:239 'shadowStrength' ( in highp float)
+0:239 'shadowColor' ( in highp 3-component vector of float)
+0:239 'camVector' ( in highp 3-component vector of float)
+0:239 'shininess' ( in highp float)
+0:239 'shininess2' ( in highp float)
+0:? Sequence
+0:242 switch
+0:242 condition
+0:242 'index' ( in highp int)
+0:242 body
+0:242 Sequence
+0:244 default:
+0:? Sequence
+0:245 move second child to first child ( temp highp 3-component vector of float)
+0:245 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:245 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:245 Constant:
+0:245 0 (const int)
+0:245 Constant:
+0:245 0.000000
+0:245 0.000000
+0:245 0.000000
+0:246 move second child to first child ( temp highp 3-component vector of float)
+0:246 specular: direct index for structure ( global highp 3-component vector of float)
+0:246 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:246 Constant:
+0:246 1 (const int)
+0:246 Constant:
+0:246 0.000000
+0:246 0.000000
+0:246 0.000000
+0:247 move second child to first child ( temp highp 3-component vector of float)
+0:247 specular2: direct index for structure ( global highp 3-component vector of float)
+0:247 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:247 Constant:
+0:247 2 (const int)
+0:247 Constant:
+0:247 0.000000
+0:247 0.000000
+0:247 0.000000
+0:248 move second child to first child ( temp highp float)
+0:248 shadowStrength: direct index for structure ( global highp float)
+0:248 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:248 Constant:
+0:248 3 (const int)
+0:248 Constant:
+0:248 0.000000
+0:249 Branch: Break
+0:251 Branch: Return with expression
+0:251 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:254 Function Definition: TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void)
+0:254 Function Parameters:
+0:254 'diffuseContrib' ( inout highp 3-component vector of float)
+0:254 'specularContrib' ( inout highp 3-component vector of float)
+0:254 'specularContrib2' ( inout highp 3-component vector of float)
+0:254 'shadowStrengthOut' ( inout highp float)
+0:254 'index' ( in highp int)
+0:254 'worldSpacePos' ( in highp 3-component vector of float)
+0:254 'normal' ( in highp 3-component vector of float)
+0:254 'shadowStrength' ( in highp float)
+0:254 'shadowColor' ( in highp 3-component vector of float)
+0:254 'camVector' ( in highp 3-component vector of float)
+0:254 'shininess' ( in highp float)
+0:254 'shininess2' ( in highp float)
+0:? Sequence
+0:257 switch
+0:257 condition
+0:257 'index' ( in highp int)
+0:257 body
+0:257 Sequence
+0:259 default:
+0:? Sequence
+0:260 move second child to first child ( temp highp 3-component vector of float)
+0:260 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:260 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:260 Constant:
+0:260 0 (const int)
+0:260 Constant:
+0:260 0.000000
+0:260 0.000000
+0:260 0.000000
+0:261 move second child to first child ( temp highp 3-component vector of float)
+0:261 specular: direct index for structure ( global highp 3-component vector of float)
+0:261 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:261 Constant:
+0:261 1 (const int)
+0:261 Constant:
+0:261 0.000000
+0:261 0.000000
+0:261 0.000000
+0:262 move second child to first child ( temp highp 3-component vector of float)
+0:262 specular2: direct index for structure ( global highp 3-component vector of float)
+0:262 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:262 Constant:
+0:262 2 (const int)
+0:262 Constant:
+0:262 0.000000
+0:262 0.000000
+0:262 0.000000
+0:263 move second child to first child ( temp highp float)
+0:263 shadowStrength: direct index for structure ( global highp float)
+0:263 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:263 Constant:
+0:263 3 (const int)
+0:263 Constant:
+0:263 0.000000
+0:264 Branch: Break
+0:266 move second child to first child ( temp highp 3-component vector of float)
+0:266 'diffuseContrib' ( inout highp 3-component vector of float)
+0:266 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:266 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:266 Constant:
+0:266 0 (const int)
+0:267 move second child to first child ( temp highp 3-component vector of float)
+0:267 'specularContrib' ( inout highp 3-component vector of float)
+0:267 specular: direct index for structure ( global highp 3-component vector of float)
+0:267 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:267 Constant:
+0:267 1 (const int)
+0:268 move second child to first child ( temp highp 3-component vector of float)
+0:268 'specularContrib2' ( inout highp 3-component vector of float)
+0:268 specular2: direct index for structure ( global highp 3-component vector of float)
+0:268 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:268 Constant:
+0:268 2 (const int)
+0:269 move second child to first child ( temp highp float)
+0:269 'shadowStrengthOut' ( inout highp float)
+0:269 shadowStrength: direct index for structure ( global highp float)
+0:269 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:269 Constant:
+0:269 3 (const int)
+0:272 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void)
+0:272 Function Parameters:
+0:272 'diffuseContrib' ( inout highp 3-component vector of float)
+0:272 'specularContrib' ( inout highp 3-component vector of float)
+0:272 'specularContrib2' ( inout highp 3-component vector of float)
+0:272 'index' ( in highp int)
+0:272 'worldSpacePos' ( in highp 3-component vector of float)
+0:272 'normal' ( in highp 3-component vector of float)
+0:272 'shadowStrength' ( in highp float)
+0:272 'shadowColor' ( in highp 3-component vector of float)
+0:272 'camVector' ( in highp 3-component vector of float)
+0:272 'shininess' ( in highp float)
+0:272 'shininess2' ( in highp float)
+0:? Sequence
+0:275 switch
+0:275 condition
+0:275 'index' ( in highp int)
+0:275 body
+0:275 Sequence
+0:277 default:
+0:? Sequence
+0:278 move second child to first child ( temp highp 3-component vector of float)
+0:278 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:278 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:278 Constant:
+0:278 0 (const int)
+0:278 Constant:
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:279 move second child to first child ( temp highp 3-component vector of float)
+0:279 specular: direct index for structure ( global highp 3-component vector of float)
+0:279 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:279 Constant:
+0:279 1 (const int)
+0:279 Constant:
+0:279 0.000000
+0:279 0.000000
+0:279 0.000000
+0:280 move second child to first child ( temp highp 3-component vector of float)
+0:280 specular2: direct index for structure ( global highp 3-component vector of float)
+0:280 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:280 Constant:
+0:280 2 (const int)
+0:280 Constant:
+0:280 0.000000
+0:280 0.000000
+0:280 0.000000
+0:281 move second child to first child ( temp highp float)
+0:281 shadowStrength: direct index for structure ( global highp float)
+0:281 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:281 Constant:
+0:281 3 (const int)
+0:281 Constant:
+0:281 0.000000
+0:282 Branch: Break
+0:284 move second child to first child ( temp highp 3-component vector of float)
+0:284 'diffuseContrib' ( inout highp 3-component vector of float)
+0:284 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:284 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:284 Constant:
+0:284 0 (const int)
+0:285 move second child to first child ( temp highp 3-component vector of float)
+0:285 'specularContrib' ( inout highp 3-component vector of float)
+0:285 specular: direct index for structure ( global highp 3-component vector of float)
+0:285 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:285 Constant:
+0:285 1 (const int)
+0:286 move second child to first child ( temp highp 3-component vector of float)
+0:286 'specularContrib2' ( inout highp 3-component vector of float)
+0:286 specular2: direct index for structure ( global highp 3-component vector of float)
+0:286 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:286 Constant:
+0:286 2 (const int)
+0:289 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1; ( global void)
+0:289 Function Parameters:
+0:289 'diffuseContrib' ( inout highp 3-component vector of float)
+0:289 'specularContrib' ( inout highp 3-component vector of float)
+0:289 'index' ( in highp int)
+0:289 'worldSpacePos' ( in highp 3-component vector of float)
+0:289 'normal' ( in highp 3-component vector of float)
+0:289 'shadowStrength' ( in highp float)
+0:289 'shadowColor' ( in highp 3-component vector of float)
+0:289 'camVector' ( in highp 3-component vector of float)
+0:289 'shininess' ( in highp float)
+0:? Sequence
+0:292 switch
+0:292 condition
+0:292 'index' ( in highp int)
+0:292 body
+0:292 Sequence
+0:294 default:
+0:? Sequence
+0:295 move second child to first child ( temp highp 3-component vector of float)
+0:295 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:295 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:295 Constant:
+0:295 0 (const int)
+0:295 Constant:
+0:295 0.000000
+0:295 0.000000
+0:295 0.000000
+0:296 move second child to first child ( temp highp 3-component vector of float)
+0:296 specular: direct index for structure ( global highp 3-component vector of float)
+0:296 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:296 Constant:
+0:296 1 (const int)
+0:296 Constant:
+0:296 0.000000
+0:296 0.000000
+0:296 0.000000
+0:297 move second child to first child ( temp highp 3-component vector of float)
+0:297 specular2: direct index for structure ( global highp 3-component vector of float)
+0:297 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:297 Constant:
+0:297 2 (const int)
+0:297 Constant:
+0:297 0.000000
+0:297 0.000000
+0:297 0.000000
+0:298 move second child to first child ( temp highp float)
+0:298 shadowStrength: direct index for structure ( global highp float)
+0:298 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:298 Constant:
+0:298 3 (const int)
+0:298 Constant:
+0:298 0.000000
+0:299 Branch: Break
+0:301 move second child to first child ( temp highp 3-component vector of float)
+0:301 'diffuseContrib' ( inout highp 3-component vector of float)
+0:301 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:301 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:301 Constant:
+0:301 0 (const int)
+0:302 move second child to first child ( temp highp 3-component vector of float)
+0:302 'specularContrib' ( inout highp 3-component vector of float)
+0:302 specular: direct index for structure ( global highp 3-component vector of float)
+0:302 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:302 Constant:
+0:302 1 (const int)
+0:305 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1; ( global void)
+0:305 Function Parameters:
+0:305 'diffuseContrib' ( inout highp 3-component vector of float)
+0:305 'specularContrib' ( inout highp 3-component vector of float)
+0:305 'specularContrib2' ( inout highp 3-component vector of float)
+0:305 'index' ( in highp int)
+0:305 'worldSpacePos' ( in highp 3-component vector of float)
+0:305 'normal' ( in highp 3-component vector of float)
+0:305 'camVector' ( in highp 3-component vector of float)
+0:305 'shininess' ( in highp float)
+0:305 'shininess2' ( in highp float)
+0:? Sequence
+0:308 switch
+0:308 condition
+0:308 'index' ( in highp int)
+0:308 body
+0:308 Sequence
+0:310 default:
+0:? Sequence
+0:311 move second child to first child ( temp highp 3-component vector of float)
+0:311 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:311 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:311 Constant:
+0:311 0 (const int)
+0:311 Constant:
+0:311 0.000000
+0:311 0.000000
+0:311 0.000000
+0:312 move second child to first child ( temp highp 3-component vector of float)
+0:312 specular: direct index for structure ( global highp 3-component vector of float)
+0:312 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:312 Constant:
+0:312 1 (const int)
+0:312 Constant:
+0:312 0.000000
+0:312 0.000000
+0:312 0.000000
+0:313 move second child to first child ( temp highp 3-component vector of float)
+0:313 specular2: direct index for structure ( global highp 3-component vector of float)
+0:313 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:313 Constant:
+0:313 2 (const int)
+0:313 Constant:
+0:313 0.000000
+0:313 0.000000
+0:313 0.000000
+0:314 move second child to first child ( temp highp float)
+0:314 shadowStrength: direct index for structure ( global highp float)
+0:314 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:314 Constant:
+0:314 3 (const int)
+0:314 Constant:
+0:314 0.000000
+0:315 Branch: Break
+0:317 move second child to first child ( temp highp 3-component vector of float)
+0:317 'diffuseContrib' ( inout highp 3-component vector of float)
+0:317 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:317 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:317 Constant:
+0:317 0 (const int)
+0:318 move second child to first child ( temp highp 3-component vector of float)
+0:318 'specularContrib' ( inout highp 3-component vector of float)
+0:318 specular: direct index for structure ( global highp 3-component vector of float)
+0:318 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:318 Constant:
+0:318 1 (const int)
+0:319 move second child to first child ( temp highp 3-component vector of float)
+0:319 'specularContrib2' ( inout highp 3-component vector of float)
+0:319 specular2: direct index for structure ( global highp 3-component vector of float)
+0:319 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:319 Constant:
+0:319 2 (const int)
+0:322 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1; ( global void)
+0:322 Function Parameters:
+0:322 'diffuseContrib' ( inout highp 3-component vector of float)
+0:322 'specularContrib' ( inout highp 3-component vector of float)
+0:322 'index' ( in highp int)
+0:322 'worldSpacePos' ( in highp 3-component vector of float)
+0:322 'normal' ( in highp 3-component vector of float)
+0:322 'camVector' ( in highp 3-component vector of float)
+0:322 'shininess' ( in highp float)
+0:? Sequence
+0:325 switch
+0:325 condition
+0:325 'index' ( in highp int)
+0:325 body
+0:325 Sequence
+0:327 default:
+0:? Sequence
+0:328 move second child to first child ( temp highp 3-component vector of float)
+0:328 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:328 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:328 Constant:
+0:328 0 (const int)
+0:328 Constant:
+0:328 0.000000
+0:328 0.000000
+0:328 0.000000
+0:329 move second child to first child ( temp highp 3-component vector of float)
+0:329 specular: direct index for structure ( global highp 3-component vector of float)
+0:329 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:329 Constant:
+0:329 1 (const int)
+0:329 Constant:
+0:329 0.000000
+0:329 0.000000
+0:329 0.000000
+0:330 move second child to first child ( temp highp 3-component vector of float)
+0:330 specular2: direct index for structure ( global highp 3-component vector of float)
+0:330 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:330 Constant:
+0:330 2 (const int)
+0:330 Constant:
+0:330 0.000000
+0:330 0.000000
+0:330 0.000000
+0:331 move second child to first child ( temp highp float)
+0:331 shadowStrength: direct index for structure ( global highp float)
+0:331 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:331 Constant:
+0:331 3 (const int)
+0:331 Constant:
+0:331 0.000000
+0:332 Branch: Break
+0:334 move second child to first child ( temp highp 3-component vector of float)
+0:334 'diffuseContrib' ( inout highp 3-component vector of float)
+0:334 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:334 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:334 Constant:
+0:334 0 (const int)
+0:335 move second child to first child ( temp highp 3-component vector of float)
+0:335 'specularContrib' ( inout highp 3-component vector of float)
+0:335 specular: direct index for structure ( global highp 3-component vector of float)
+0:335 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:335 Constant:
+0:335 1 (const int)
+0:338 Function Definition: TDLighting(vf3;i1;vf3;vf3; ( global void)
+0:338 Function Parameters:
+0:338 'diffuseContrib' ( inout highp 3-component vector of float)
+0:338 'index' ( in highp int)
+0:338 'worldSpacePos' ( in highp 3-component vector of float)
+0:338 'normal' ( in highp 3-component vector of float)
+0:? Sequence
+0:341 switch
+0:341 condition
+0:341 'index' ( in highp int)
+0:341 body
+0:341 Sequence
+0:343 default:
+0:? Sequence
+0:344 move second child to first child ( temp highp 3-component vector of float)
+0:344 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:344 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:344 Constant:
+0:344 0 (const int)
+0:344 Constant:
+0:344 0.000000
+0:344 0.000000
+0:344 0.000000
+0:345 move second child to first child ( temp highp 3-component vector of float)
+0:345 specular: direct index for structure ( global highp 3-component vector of float)
+0:345 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:345 Constant:
+0:345 1 (const int)
+0:345 Constant:
+0:345 0.000000
+0:345 0.000000
+0:345 0.000000
+0:346 move second child to first child ( temp highp 3-component vector of float)
+0:346 specular2: direct index for structure ( global highp 3-component vector of float)
+0:346 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:346 Constant:
+0:346 2 (const int)
+0:346 Constant:
+0:346 0.000000
+0:346 0.000000
+0:346 0.000000
+0:347 move second child to first child ( temp highp float)
+0:347 shadowStrength: direct index for structure ( global highp float)
+0:347 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:347 Constant:
+0:347 3 (const int)
+0:347 Constant:
+0:347 0.000000
+0:348 Branch: Break
+0:350 move second child to first child ( temp highp 3-component vector of float)
+0:350 'diffuseContrib' ( inout highp 3-component vector of float)
+0:350 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:350 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:350 Constant:
+0:350 0 (const int)
+0:353 Function Definition: TDLighting(vf3;i1;vf3;vf3;f1;vf3; ( global void)
+0:353 Function Parameters:
+0:353 'diffuseContrib' ( inout highp 3-component vector of float)
+0:353 'index' ( in highp int)
+0:353 'worldSpacePos' ( in highp 3-component vector of float)
+0:353 'normal' ( in highp 3-component vector of float)
+0:353 'shadowStrength' ( in highp float)
+0:353 'shadowColor' ( in highp 3-component vector of float)
+0:? Sequence
+0:356 switch
+0:356 condition
+0:356 'index' ( in highp int)
+0:356 body
+0:356 Sequence
+0:358 default:
+0:? Sequence
+0:359 move second child to first child ( temp highp 3-component vector of float)
+0:359 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:359 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:359 Constant:
+0:359 0 (const int)
+0:359 Constant:
+0:359 0.000000
+0:359 0.000000
+0:359 0.000000
+0:360 move second child to first child ( temp highp 3-component vector of float)
+0:360 specular: direct index for structure ( global highp 3-component vector of float)
+0:360 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:360 Constant:
+0:360 1 (const int)
+0:360 Constant:
+0:360 0.000000
+0:360 0.000000
+0:360 0.000000
+0:361 move second child to first child ( temp highp 3-component vector of float)
+0:361 specular2: direct index for structure ( global highp 3-component vector of float)
+0:361 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:361 Constant:
+0:361 2 (const int)
+0:361 Constant:
+0:361 0.000000
+0:361 0.000000
+0:361 0.000000
+0:362 move second child to first child ( temp highp float)
+0:362 shadowStrength: direct index for structure ( global highp float)
+0:362 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:362 Constant:
+0:362 3 (const int)
+0:362 Constant:
+0:362 0.000000
+0:363 Branch: Break
+0:365 move second child to first child ( temp highp 3-component vector of float)
+0:365 'diffuseContrib' ( inout highp 3-component vector of float)
+0:365 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:365 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:365 Constant:
+0:365 0 (const int)
+0:367 Function Definition: TDProjMap(i1;vf3;vf4; ( global highp 4-component vector of float)
+0:367 Function Parameters:
+0:367 'index' ( in highp int)
+0:367 'worldSpacePos' ( in highp 3-component vector of float)
+0:367 'defaultColor' ( in highp 4-component vector of float)
+0:368 Sequence
+0:368 switch
+0:368 condition
+0:368 'index' ( in highp int)
+0:368 body
+0:368 Sequence
+0:370 default:
+0:? Sequence
+0:370 Branch: Return with expression
+0:370 'defaultColor' ( in highp 4-component vector of float)
+0:373 Function Definition: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float)
+0:373 Function Parameters:
+0:373 'color' ( in highp 4-component vector of float)
+0:373 'lightingSpacePosition' ( in highp 3-component vector of float)
+0:373 'cameraIndex' ( in highp int)
+0:374 Sequence
+0:374 switch
+0:374 condition
+0:374 'cameraIndex' ( in highp int)
+0:374 body
+0:374 Sequence
+0:375 default:
+0:376 case: with expression
+0:376 Constant:
+0:376 0 (const int)
+0:? Sequence
+0:378 Sequence
+0:378 Branch: Return with expression
+0:378 'color' ( in highp 4-component vector of float)
+0:382 Function Definition: TDFog(vf4;vf3; ( global highp 4-component vector of float)
+0:382 Function Parameters:
+0:382 'color' ( in highp 4-component vector of float)
+0:382 'lightingSpacePosition' ( in highp 3-component vector of float)
+0:384 Sequence
+0:384 Branch: Return with expression
+0:384 Function Call: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float)
+0:384 'color' ( in highp 4-component vector of float)
+0:384 'lightingSpacePosition' ( in highp 3-component vector of float)
+0:384 Constant:
+0:384 0 (const int)
+0:386 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float)
+0:386 Function Parameters:
+0:386 'index' ( in highp int)
+0:386 't' ( in highp 3-component vector of float)
+0:? Sequence
+0:388 Sequence
+0:388 move second child to first child ( temp highp int)
+0:388 'coord' ( temp highp int)
+0:388 'index' ( in highp int)
+0:389 Sequence
+0:389 move second child to first child ( temp highp 4-component vector of float)
+0:389 'samp' ( temp highp 4-component vector of float)
+0:389 textureFetch ( global highp 4-component vector of float)
+0:389 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:389 'coord' ( temp highp int)
+0:390 move second child to first child ( temp highp float)
+0:390 direct index ( temp highp float)
+0:390 'v' ( temp highp 3-component vector of float)
+0:390 Constant:
+0:390 0 (const int)
+0:390 direct index ( temp highp float)
+0:390 't' ( in highp 3-component vector of float)
+0:390 Constant:
+0:390 0 (const int)
+0:391 move second child to first child ( temp highp float)
+0:391 direct index ( temp highp float)
+0:391 'v' ( temp highp 3-component vector of float)
+0:391 Constant:
+0:391 1 (const int)
+0:391 direct index ( temp highp float)
+0:391 't' ( in highp 3-component vector of float)
+0:391 Constant:
+0:391 1 (const int)
+0:392 move second child to first child ( temp highp float)
+0:392 direct index ( temp highp float)
+0:392 'v' ( temp highp 3-component vector of float)
+0:392 Constant:
+0:392 2 (const int)
+0:392 direct index ( temp highp float)
+0:392 'samp' ( temp highp 4-component vector of float)
+0:392 Constant:
+0:392 0 (const int)
+0:393 move second child to first child ( temp highp 3-component vector of float)
+0:393 vector swizzle ( temp highp 3-component vector of float)
+0:393 't' ( in highp 3-component vector of float)
+0:393 Sequence
+0:393 Constant:
+0:393 0 (const int)
+0:393 Constant:
+0:393 1 (const int)
+0:393 Constant:
+0:393 2 (const int)
+0:393 vector swizzle ( temp highp 3-component vector of float)
+0:393 'v' ( temp highp 3-component vector of float)
+0:393 Sequence
+0:393 Constant:
+0:393 0 (const int)
+0:393 Constant:
+0:393 1 (const int)
+0:393 Constant:
+0:393 2 (const int)
+0:394 Branch: Return with expression
+0:394 't' ( in highp 3-component vector of float)
+0:396 Function Definition: TDInstanceActive(i1; ( global bool)
+0:396 Function Parameters:
+0:396 'index' ( in highp int)
+0:397 Sequence
+0:397 subtract second child into first child ( temp highp int)
+0:397 'index' ( in highp int)
+0:397 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:397 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:397 Constant:
+0:397 0 (const uint)
+0:399 Sequence
+0:399 move second child to first child ( temp highp int)
+0:399 'coord' ( temp highp int)
+0:399 'index' ( in highp int)
+0:400 Sequence
+0:400 move second child to first child ( temp highp 4-component vector of float)
+0:400 'samp' ( temp highp 4-component vector of float)
+0:400 textureFetch ( global highp 4-component vector of float)
+0:400 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:400 'coord' ( temp highp int)
+0:401 move second child to first child ( temp highp float)
+0:401 'v' ( temp highp float)
+0:401 direct index ( temp highp float)
+0:401 'samp' ( temp highp 4-component vector of float)
+0:401 Constant:
+0:401 0 (const int)
+0:402 Branch: Return with expression
+0:402 Compare Not Equal ( temp bool)
+0:402 'v' ( temp highp float)
+0:402 Constant:
+0:402 0.000000
+0:404 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:404 Function Parameters:
+0:404 'index' ( in highp int)
+0:404 'instanceActive' ( out bool)
+0:405 Sequence
+0:405 Sequence
+0:405 move second child to first child ( temp highp int)
+0:405 'origIndex' ( temp highp int)
+0:405 'index' ( in highp int)
+0:406 subtract second child into first child ( temp highp int)
+0:406 'index' ( in highp int)
+0:406 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:406 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:406 Constant:
+0:406 0 (const uint)
+0:408 Sequence
+0:408 move second child to first child ( temp highp int)
+0:408 'coord' ( temp highp int)
+0:408 'index' ( in highp int)
+0:409 Sequence
+0:409 move second child to first child ( temp highp 4-component vector of float)
+0:409 'samp' ( temp highp 4-component vector of float)
+0:409 textureFetch ( global highp 4-component vector of float)
+0:409 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:409 'coord' ( temp highp int)
+0:410 move second child to first child ( temp highp float)
+0:410 direct index ( temp highp float)
+0:410 'v' ( temp highp 3-component vector of float)
+0:410 Constant:
+0:410 0 (const int)
+0:410 direct index ( temp highp float)
+0:410 'samp' ( temp highp 4-component vector of float)
+0:410 Constant:
+0:410 1 (const int)
+0:411 move second child to first child ( temp highp float)
+0:411 direct index ( temp highp float)
+0:411 'v' ( temp highp 3-component vector of float)
+0:411 Constant:
+0:411 1 (const int)
+0:411 direct index ( temp highp float)
+0:411 'samp' ( temp highp 4-component vector of float)
+0:411 Constant:
+0:411 2 (const int)
+0:412 move second child to first child ( temp highp float)
+0:412 direct index ( temp highp float)
+0:412 'v' ( temp highp 3-component vector of float)
+0:412 Constant:
+0:412 2 (const int)
+0:412 direct index ( temp highp float)
+0:412 'samp' ( temp highp 4-component vector of float)
+0:412 Constant:
+0:412 3 (const int)
+0:413 move second child to first child ( temp bool)
+0:413 'instanceActive' ( out bool)
+0:413 Compare Not Equal ( temp bool)
+0:413 direct index ( temp highp float)
+0:413 'samp' ( temp highp 4-component vector of float)
+0:413 Constant:
+0:413 0 (const int)
+0:413 Constant:
+0:413 0.000000
+0:414 Branch: Return with expression
+0:414 'v' ( temp highp 3-component vector of float)
+0:416 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float)
+0:416 Function Parameters:
+0:416 'index' ( in highp int)
+0:417 Sequence
+0:417 subtract second child into first child ( temp highp int)
+0:417 'index' ( in highp int)
+0:417 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:417 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:417 Constant:
+0:417 0 (const uint)
+0:419 Sequence
+0:419 move second child to first child ( temp highp int)
+0:419 'coord' ( temp highp int)
+0:419 'index' ( in highp int)
+0:420 Sequence
+0:420 move second child to first child ( temp highp 4-component vector of float)
+0:420 'samp' ( temp highp 4-component vector of float)
+0:420 textureFetch ( global highp 4-component vector of float)
+0:420 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:420 'coord' ( temp highp int)
+0:421 move second child to first child ( temp highp float)
+0:421 direct index ( temp highp float)
+0:421 'v' ( temp highp 3-component vector of float)
+0:421 Constant:
+0:421 0 (const int)
+0:421 direct index ( temp highp float)
+0:421 'samp' ( temp highp 4-component vector of float)
+0:421 Constant:
+0:421 1 (const int)
+0:422 move second child to first child ( temp highp float)
+0:422 direct index ( temp highp float)
+0:422 'v' ( temp highp 3-component vector of float)
+0:422 Constant:
+0:422 1 (const int)
+0:422 direct index ( temp highp float)
+0:422 'samp' ( temp highp 4-component vector of float)
+0:422 Constant:
+0:422 2 (const int)
+0:423 move second child to first child ( temp highp float)
+0:423 direct index ( temp highp float)
+0:423 'v' ( temp highp 3-component vector of float)
+0:423 Constant:
+0:423 2 (const int)
+0:423 direct index ( temp highp float)
+0:423 'samp' ( temp highp 4-component vector of float)
+0:423 Constant:
+0:423 3 (const int)
+0:424 Branch: Return with expression
+0:424 'v' ( temp highp 3-component vector of float)
+0:426 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float)
+0:426 Function Parameters:
+0:426 'index' ( in highp int)
+0:427 Sequence
+0:427 subtract second child into first child ( temp highp int)
+0:427 'index' ( in highp int)
+0:427 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:427 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:427 Constant:
+0:427 0 (const uint)
+0:428 Sequence
+0:428 move second child to first child ( temp highp 3-component vector of float)
+0:428 'v' ( temp highp 3-component vector of float)
+0:428 Constant:
+0:428 0.000000
+0:428 0.000000
+0:428 0.000000
+0:429 Sequence
+0:429 move second child to first child ( temp highp 3X3 matrix of float)
+0:429 'm' ( temp highp 3X3 matrix of float)
+0:429 Constant:
+0:429 1.000000
+0:429 0.000000
+0:429 0.000000
+0:429 0.000000
+0:429 1.000000
+0:429 0.000000
+0:429 0.000000
+0:429 0.000000
+0:429 1.000000
+0:433 Branch: Return with expression
+0:433 'm' ( temp highp 3X3 matrix of float)
+0:435 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float)
+0:435 Function Parameters:
+0:435 'index' ( in highp int)
+0:436 Sequence
+0:436 subtract second child into first child ( temp highp int)
+0:436 'index' ( in highp int)
+0:436 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:436 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:436 Constant:
+0:436 0 (const uint)
+0:437 Sequence
+0:437 move second child to first child ( temp highp 3-component vector of float)
+0:437 'v' ( temp highp 3-component vector of float)
+0:437 Constant:
+0:437 1.000000
+0:437 1.000000
+0:437 1.000000
+0:438 Branch: Return with expression
+0:438 'v' ( temp highp 3-component vector of float)
+0:440 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float)
+0:440 Function Parameters:
+0:440 'index' ( in highp int)
+0:441 Sequence
+0:441 subtract second child into first child ( temp highp int)
+0:441 'index' ( in highp int)
+0:441 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:441 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:441 Constant:
+0:441 0 (const uint)
+0:442 Sequence
+0:442 move second child to first child ( temp highp 3-component vector of float)
+0:442 'v' ( temp highp 3-component vector of float)
+0:442 Constant:
+0:442 0.000000
+0:442 0.000000
+0:442 0.000000
+0:443 Branch: Return with expression
+0:443 'v' ( temp highp 3-component vector of float)
+0:445 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float)
+0:445 Function Parameters:
+0:445 'index' ( in highp int)
+0:446 Sequence
+0:446 subtract second child into first child ( temp highp int)
+0:446 'index' ( in highp int)
+0:446 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:446 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:446 Constant:
+0:446 0 (const uint)
+0:447 Sequence
+0:447 move second child to first child ( temp highp 3-component vector of float)
+0:447 'v' ( temp highp 3-component vector of float)
+0:447 Constant:
+0:447 0.000000
+0:447 0.000000
+0:447 1.000000
+0:448 Branch: Return with expression
+0:448 'v' ( temp highp 3-component vector of float)
+0:450 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float)
+0:450 Function Parameters:
+0:450 'index' ( in highp int)
+0:451 Sequence
+0:451 subtract second child into first child ( temp highp int)
+0:451 'index' ( in highp int)
+0:451 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:451 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:451 Constant:
+0:451 0 (const uint)
+0:452 Sequence
+0:452 move second child to first child ( temp highp 3-component vector of float)
+0:452 'v' ( temp highp 3-component vector of float)
+0:452 Constant:
+0:452 0.000000
+0:452 1.000000
+0:452 0.000000
+0:453 Branch: Return with expression
+0:453 'v' ( temp highp 3-component vector of float)
+0:455 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:455 Function Parameters:
+0:455 'id' ( in highp int)
+0:456 Sequence
+0:456 Sequence
+0:456 move second child to first child ( temp bool)
+0:456 'instanceActive' ( temp bool)
+0:456 Constant:
+0:456 true (const bool)
+0:457 Sequence
+0:457 move second child to first child ( temp highp 3-component vector of float)
+0:457 't' ( temp highp 3-component vector of float)
+0:457 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:457 'id' ( in highp int)
+0:457 'instanceActive' ( temp bool)
+0:458 Test condition and select ( temp void)
+0:458 Condition
+0:458 Negate conditional ( temp bool)
+0:458 'instanceActive' ( temp bool)
+0:458 true case
+0:460 Sequence
+0:460 Branch: Return with expression
+0:460 Constant:
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:462 Sequence
+0:462 move second child to first child ( temp highp 4X4 matrix of float)
+0:462 'm' ( temp highp 4X4 matrix of float)
+0:462 Constant:
+0:462 1.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 1.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 1.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 1.000000
+0:464 Sequence
+0:464 Sequence
+0:464 move second child to first child ( temp highp 3-component vector of float)
+0:464 'tt' ( temp highp 3-component vector of float)
+0:464 't' ( temp highp 3-component vector of float)
+0:465 add second child into first child ( temp highp float)
+0:465 direct index ( temp highp float)
+0:465 direct index ( temp highp 4-component vector of float)
+0:465 'm' ( temp highp 4X4 matrix of float)
+0:465 Constant:
+0:465 3 (const int)
+0:465 Constant:
+0:465 0 (const int)
+0:465 component-wise multiply ( temp highp float)
+0:465 direct index ( temp highp float)
+0:465 direct index ( temp highp 4-component vector of float)
+0:465 'm' ( temp highp 4X4 matrix of float)
+0:465 Constant:
+0:465 0 (const int)
+0:465 Constant:
+0:465 0 (const int)
+0:465 direct index ( temp highp float)
+0:465 'tt' ( temp highp 3-component vector of float)
+0:465 Constant:
+0:465 0 (const int)
+0:466 add second child into first child ( temp highp float)
+0:466 direct index ( temp highp float)
+0:466 direct index ( temp highp 4-component vector of float)
+0:466 'm' ( temp highp 4X4 matrix of float)
+0:466 Constant:
+0:466 3 (const int)
+0:466 Constant:
+0:466 1 (const int)
+0:466 component-wise multiply ( temp highp float)
+0:466 direct index ( temp highp float)
+0:466 direct index ( temp highp 4-component vector of float)
+0:466 'm' ( temp highp 4X4 matrix of float)
+0:466 Constant:
+0:466 0 (const int)
+0:466 Constant:
+0:466 1 (const int)
+0:466 direct index ( temp highp float)
+0:466 'tt' ( temp highp 3-component vector of float)
+0:466 Constant:
+0:466 0 (const int)
+0:467 add second child into first child ( temp highp float)
+0:467 direct index ( temp highp float)
+0:467 direct index ( temp highp 4-component vector of float)
+0:467 'm' ( temp highp 4X4 matrix of float)
+0:467 Constant:
+0:467 3 (const int)
+0:467 Constant:
+0:467 2 (const int)
+0:467 component-wise multiply ( temp highp float)
+0:467 direct index ( temp highp float)
+0:467 direct index ( temp highp 4-component vector of float)
+0:467 'm' ( temp highp 4X4 matrix of float)
+0:467 Constant:
+0:467 0 (const int)
+0:467 Constant:
+0:467 2 (const int)
+0:467 direct index ( temp highp float)
+0:467 'tt' ( temp highp 3-component vector of float)
+0:467 Constant:
+0:467 0 (const int)
+0:468 add second child into first child ( temp highp float)
+0:468 direct index ( temp highp float)
+0:468 direct index ( temp highp 4-component vector of float)
+0:468 'm' ( temp highp 4X4 matrix of float)
+0:468 Constant:
+0:468 3 (const int)
+0:468 Constant:
+0:468 3 (const int)
+0:468 component-wise multiply ( temp highp float)
+0:468 direct index ( temp highp float)
+0:468 direct index ( temp highp 4-component vector of float)
+0:468 'm' ( temp highp 4X4 matrix of float)
+0:468 Constant:
+0:468 0 (const int)
+0:468 Constant:
+0:468 3 (const int)
+0:468 direct index ( temp highp float)
+0:468 'tt' ( temp highp 3-component vector of float)
+0:468 Constant:
+0:468 0 (const int)
+0:469 add second child into first child ( temp highp float)
+0:469 direct index ( temp highp float)
+0:469 direct index ( temp highp 4-component vector of float)
+0:469 'm' ( temp highp 4X4 matrix of float)
+0:469 Constant:
+0:469 3 (const int)
+0:469 Constant:
+0:469 0 (const int)
+0:469 component-wise multiply ( temp highp float)
+0:469 direct index ( temp highp float)
+0:469 direct index ( temp highp 4-component vector of float)
+0:469 'm' ( temp highp 4X4 matrix of float)
+0:469 Constant:
+0:469 1 (const int)
+0:469 Constant:
+0:469 0 (const int)
+0:469 direct index ( temp highp float)
+0:469 'tt' ( temp highp 3-component vector of float)
+0:469 Constant:
+0:469 1 (const int)
+0:470 add second child into first child ( temp highp float)
+0:470 direct index ( temp highp float)
+0:470 direct index ( temp highp 4-component vector of float)
+0:470 'm' ( temp highp 4X4 matrix of float)
+0:470 Constant:
+0:470 3 (const int)
+0:470 Constant:
+0:470 1 (const int)
+0:470 component-wise multiply ( temp highp float)
+0:470 direct index ( temp highp float)
+0:470 direct index ( temp highp 4-component vector of float)
+0:470 'm' ( temp highp 4X4 matrix of float)
+0:470 Constant:
+0:470 1 (const int)
+0:470 Constant:
+0:470 1 (const int)
+0:470 direct index ( temp highp float)
+0:470 'tt' ( temp highp 3-component vector of float)
+0:470 Constant:
+0:470 1 (const int)
+0:471 add second child into first child ( temp highp float)
+0:471 direct index ( temp highp float)
+0:471 direct index ( temp highp 4-component vector of float)
+0:471 'm' ( temp highp 4X4 matrix of float)
+0:471 Constant:
+0:471 3 (const int)
+0:471 Constant:
+0:471 2 (const int)
+0:471 component-wise multiply ( temp highp float)
+0:471 direct index ( temp highp float)
+0:471 direct index ( temp highp 4-component vector of float)
+0:471 'm' ( temp highp 4X4 matrix of float)
+0:471 Constant:
+0:471 1 (const int)
+0:471 Constant:
+0:471 2 (const int)
+0:471 direct index ( temp highp float)
+0:471 'tt' ( temp highp 3-component vector of float)
+0:471 Constant:
+0:471 1 (const int)
+0:472 add second child into first child ( temp highp float)
+0:472 direct index ( temp highp float)
+0:472 direct index ( temp highp 4-component vector of float)
+0:472 'm' ( temp highp 4X4 matrix of float)
+0:472 Constant:
+0:472 3 (const int)
+0:472 Constant:
+0:472 3 (const int)
+0:472 component-wise multiply ( temp highp float)
+0:472 direct index ( temp highp float)
+0:472 direct index ( temp highp 4-component vector of float)
+0:472 'm' ( temp highp 4X4 matrix of float)
+0:472 Constant:
+0:472 1 (const int)
+0:472 Constant:
+0:472 3 (const int)
+0:472 direct index ( temp highp float)
+0:472 'tt' ( temp highp 3-component vector of float)
+0:472 Constant:
+0:472 1 (const int)
+0:473 add second child into first child ( temp highp float)
+0:473 direct index ( temp highp float)
+0:473 direct index ( temp highp 4-component vector of float)
+0:473 'm' ( temp highp 4X4 matrix of float)
+0:473 Constant:
+0:473 3 (const int)
+0:473 Constant:
+0:473 0 (const int)
+0:473 component-wise multiply ( temp highp float)
+0:473 direct index ( temp highp float)
+0:473 direct index ( temp highp 4-component vector of float)
+0:473 'm' ( temp highp 4X4 matrix of float)
+0:473 Constant:
+0:473 2 (const int)
+0:473 Constant:
+0:473 0 (const int)
+0:473 direct index ( temp highp float)
+0:473 'tt' ( temp highp 3-component vector of float)
+0:473 Constant:
+0:473 2 (const int)
+0:474 add second child into first child ( temp highp float)
+0:474 direct index ( temp highp float)
+0:474 direct index ( temp highp 4-component vector of float)
+0:474 'm' ( temp highp 4X4 matrix of float)
+0:474 Constant:
+0:474 3 (const int)
+0:474 Constant:
+0:474 1 (const int)
+0:474 component-wise multiply ( temp highp float)
+0:474 direct index ( temp highp float)
+0:474 direct index ( temp highp 4-component vector of float)
+0:474 'm' ( temp highp 4X4 matrix of float)
+0:474 Constant:
+0:474 2 (const int)
+0:474 Constant:
+0:474 1 (const int)
+0:474 direct index ( temp highp float)
+0:474 'tt' ( temp highp 3-component vector of float)
+0:474 Constant:
+0:474 2 (const int)
+0:475 add second child into first child ( temp highp float)
+0:475 direct index ( temp highp float)
+0:475 direct index ( temp highp 4-component vector of float)
+0:475 'm' ( temp highp 4X4 matrix of float)
+0:475 Constant:
+0:475 3 (const int)
+0:475 Constant:
+0:475 2 (const int)
+0:475 component-wise multiply ( temp highp float)
+0:475 direct index ( temp highp float)
+0:475 direct index ( temp highp 4-component vector of float)
+0:475 'm' ( temp highp 4X4 matrix of float)
+0:475 Constant:
+0:475 2 (const int)
+0:475 Constant:
+0:475 2 (const int)
+0:475 direct index ( temp highp float)
+0:475 'tt' ( temp highp 3-component vector of float)
+0:475 Constant:
+0:475 2 (const int)
+0:476 add second child into first child ( temp highp float)
+0:476 direct index ( temp highp float)
+0:476 direct index ( temp highp 4-component vector of float)
+0:476 'm' ( temp highp 4X4 matrix of float)
+0:476 Constant:
+0:476 3 (const int)
+0:476 Constant:
+0:476 3 (const int)
+0:476 component-wise multiply ( temp highp float)
+0:476 direct index ( temp highp float)
+0:476 direct index ( temp highp 4-component vector of float)
+0:476 'm' ( temp highp 4X4 matrix of float)
+0:476 Constant:
+0:476 2 (const int)
+0:476 Constant:
+0:476 3 (const int)
+0:476 direct index ( temp highp float)
+0:476 'tt' ( temp highp 3-component vector of float)
+0:476 Constant:
+0:476 2 (const int)
+0:478 Branch: Return with expression
+0:478 'm' ( temp highp 4X4 matrix of float)
+0:480 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:480 Function Parameters:
+0:480 'id' ( in highp int)
+0:481 Sequence
+0:481 Sequence
+0:481 move second child to first child ( temp highp 3X3 matrix of float)
+0:481 'm' ( temp highp 3X3 matrix of float)
+0:481 Constant:
+0:481 1.000000
+0:481 0.000000
+0:481 0.000000
+0:481 0.000000
+0:481 1.000000
+0:481 0.000000
+0:481 0.000000
+0:481 0.000000
+0:481 1.000000
+0:482 Branch: Return with expression
+0:482 'm' ( temp highp 3X3 matrix of float)
+0:484 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float)
+0:484 Function Parameters:
+0:484 'id' ( in highp int)
+0:485 Sequence
+0:485 Sequence
+0:485 move second child to first child ( temp highp 3X3 matrix of float)
+0:485 'm' ( temp highp 3X3 matrix of float)
+0:485 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:485 'id' ( in highp int)
+0:486 Branch: Return with expression
+0:486 'm' ( temp highp 3X3 matrix of float)
+0:488 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float)
+0:488 Function Parameters:
+0:488 'index' ( in highp int)
+0:488 'curColor' ( in highp 4-component vector of float)
+0:489 Sequence
+0:489 subtract second child into first child ( temp highp int)
+0:489 'index' ( in highp int)
+0:489 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:489 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:489 Constant:
+0:489 0 (const uint)
+0:491 Sequence
+0:491 move second child to first child ( temp highp int)
+0:491 'coord' ( temp highp int)
+0:491 'index' ( in highp int)
+0:492 Sequence
+0:492 move second child to first child ( temp highp 4-component vector of float)
+0:492 'samp' ( temp highp 4-component vector of float)
+0:492 textureFetch ( global highp 4-component vector of float)
+0:492 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+0:492 'coord' ( temp highp int)
+0:493 move second child to first child ( temp highp float)
+0:493 direct index ( temp highp float)
+0:493 'v' ( temp highp 4-component vector of float)
+0:493 Constant:
+0:493 0 (const int)
+0:493 direct index ( temp highp float)
+0:493 'samp' ( temp highp 4-component vector of float)
+0:493 Constant:
+0:493 0 (const int)
+0:494 move second child to first child ( temp highp float)
+0:494 direct index ( temp highp float)
+0:494 'v' ( temp highp 4-component vector of float)
+0:494 Constant:
+0:494 1 (const int)
+0:494 direct index ( temp highp float)
+0:494 'samp' ( temp highp 4-component vector of float)
+0:494 Constant:
+0:494 1 (const int)
+0:495 move second child to first child ( temp highp float)
+0:495 direct index ( temp highp float)
+0:495 'v' ( temp highp 4-component vector of float)
+0:495 Constant:
+0:495 2 (const int)
+0:495 direct index ( temp highp float)
+0:495 'samp' ( temp highp 4-component vector of float)
+0:495 Constant:
+0:495 2 (const int)
+0:496 move second child to first child ( temp highp float)
+0:496 direct index ( temp highp float)
+0:496 'v' ( temp highp 4-component vector of float)
+0:496 Constant:
+0:496 3 (const int)
+0:496 Constant:
+0:496 1.000000
+0:497 move second child to first child ( temp highp float)
+0:497 direct index ( temp highp float)
+0:497 'curColor' ( in highp 4-component vector of float)
+0:497 Constant:
+0:497 0 (const int)
+0:497 direct index ( temp highp float)
+0:497 'v' ( temp highp 4-component vector of float)
+0:497 Constant:
+0:497 0 (const int)
+0:499 move second child to first child ( temp highp float)
+0:499 direct index ( temp highp float)
+0:499 'curColor' ( in highp 4-component vector of float)
+0:499 Constant:
+0:499 1 (const int)
+0:499 direct index ( temp highp float)
+0:499 'v' ( temp highp 4-component vector of float)
+0:499 Constant:
+0:499 1 (const int)
+0:501 move second child to first child ( temp highp float)
+0:501 direct index ( temp highp float)
+0:501 'curColor' ( in highp 4-component vector of float)
+0:501 Constant:
+0:501 2 (const int)
+0:501 direct index ( temp highp float)
+0:501 'v' ( temp highp 4-component vector of float)
+0:501 Constant:
+0:501 2 (const int)
+0:503 Branch: Return with expression
+0:503 'curColor' ( in highp 4-component vector of float)
+0:2 Function Definition: TDOutputSwizzle(vf4; ( global highp 4-component vector of float)
+0:2 Function Parameters:
+0:2 'c' ( in highp 4-component vector of float)
+0:4 Sequence
+0:4 Branch: Return with expression
+0:4 vector swizzle ( temp highp 4-component vector of float)
+0:4 'c' ( in highp 4-component vector of float)
+0:4 Sequence
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 2 (const int)
+0:4 Constant:
+0:4 3 (const int)
+0:6 Function Definition: TDOutputSwizzle(vu4; ( global highp 4-component vector of uint)
+0:6 Function Parameters:
+0:6 'c' ( in highp 4-component vector of uint)
+0:8 Sequence
+0:8 Branch: Return with expression
+0:8 vector swizzle ( temp highp 4-component vector of uint)
+0:8 'c' ( in highp 4-component vector of uint)
+0:8 Sequence
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'sColorMap' ( uniform highp sampler2DArray)
+0:? 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:? 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float)
+0:? 'sTDNoiseMap' ( uniform highp sampler2D)
+0:? 'sTDSineLookup' ( uniform highp sampler1D)
+0:? 'sTDWhite2D' ( uniform highp sampler2D)
+0:? 'sTDWhite3D' ( uniform highp sampler3D)
+0:? 'sTDWhite2DArray' ( uniform highp sampler2DArray)
+0:? 'sTDWhiteCube' ( uniform highp samplerCube)
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights})
+0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs})
+0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 939
+
+ Capability Shader
+ Capability SampledBuffer
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 207 216 226 238 256 297 905 906
+ Source GLSL 460
+ Name 4 "main"
+ Name 20 "iTDCamToProj(vf4;vf3;i1;b1;"
+ Name 16 "v"
+ Name 17 "uv"
+ Name 18 "cameraIndex"
+ Name 19 "applyPickMod"
+ Name 26 "iTDWorldToProj(vf4;vf3;i1;b1;"
+ Name 22 "v"
+ Name 23 "uv"
+ Name 24 "cameraIndex"
+ Name 25 "applyPickMod"
+ Name 29 "TDInstanceID("
+ Name 31 "TDCameraIndex("
+ Name 34 "TDUVUnwrapCoord("
+ Name 36 "TDPickID("
+ Name 40 "iTDConvertPickId(i1;"
+ Name 39 "id"
+ Name 42 "TDWritePickingValues("
+ Name 47 "TDWorldToProj(vf4;vf3;"
+ Name 45 "v"
+ Name 46 "uv"
+ Name 52 "TDWorldToProj(vf3;vf3;"
+ Name 50 "v"
+ Name 51 "uv"
+ Name 56 "TDWorldToProj(vf4;"
+ Name 55 "v"
+ Name 60 "TDWorldToProj(vf3;"
+ Name 59 "v"
+ Name 63 "TDPointColor("
+ Name 68 "TDInstanceTexCoord(i1;vf3;"
+ Name 66 "index"
+ Name 67 "t"
+ Name 72 "TDInstanceActive(i1;"
+ Name 71 "index"
+ Name 77 "iTDInstanceTranslate(i1;b1;"
+ Name 75 "index"
+ Name 76 "instanceActive"
+ Name 81 "TDInstanceTranslate(i1;"
+ Name 80 "index"
+ Name 86 "TDInstanceRotateMat(i1;"
+ Name 85 "index"
+ Name 89 "TDInstanceScale(i1;"
+ Name 88 "index"
+ Name 92 "TDInstancePivot(i1;"
+ Name 91 "index"
+ Name 95 "TDInstanceRotTo(i1;"
+ Name 94 "index"
+ Name 98 "TDInstanceRotUp(i1;"
+ Name 97 "index"
+ Name 103 "TDInstanceMat(i1;"
+ Name 102 "id"
+ Name 106 "TDInstanceMat3(i1;"
+ Name 105 "id"
+ Name 109 "TDInstanceMat3ForNorm(i1;"
+ Name 108 "id"
+ Name 114 "TDInstanceColor(i1;vf4;"
+ Name 112 "index"
+ Name 113 "curColor"
+ Name 118 "TDInstanceDeform(i1;vf4;"
+ Name 116 "id"
+ Name 117 "pos"
+ Name 122 "TDInstanceDeformVec(i1;vf3;"
+ Name 120 "id"
+ Name 121 "vec"
+ Name 126 "TDInstanceDeformNorm(i1;vf3;"
+ Name 124 "id"
+ Name 125 "vec"
+ Name 129 "TDInstanceDeform(vf4;"
+ Name 128 "pos"
+ Name 133 "TDInstanceDeformVec(vf3;"
+ Name 132 "vec"
+ Name 136 "TDInstanceDeformNorm(vf3;"
+ Name 135 "vec"
+ Name 139 "TDInstanceActive("
+ Name 141 "TDInstanceTranslate("
+ Name 144 "TDInstanceRotateMat("
+ Name 146 "TDInstanceScale("
+ Name 149 "TDInstanceMat("
+ Name 151 "TDInstanceMat3("
+ Name 154 "TDInstanceTexCoord(vf3;"
+ Name 153 "t"
+ Name 157 "TDInstanceColor(vf4;"
+ Name 156 "curColor"
+ Name 160 "TDSkinnedDeform(vf4;"
+ Name 159 "pos"
+ Name 163 "TDSkinnedDeformVec(vf3;"
+ Name 162 "vec"
+ Name 169 "TDFastDeformTangent(vf3;vf4;vf3;"
+ Name 166 "oldNorm"
+ Name 167 "oldTangent"
+ Name 168 "deformedNorm"
+ Name 172 "TDBoneMat(i1;"
+ Name 171 "index"
+ Name 175 "TDDeform(vf4;"
+ Name 174 "pos"
+ Name 180 "TDDeform(i1;vf3;"
+ Name 178 "instanceID"
+ Name 179 "p"
+ Name 183 "TDDeform(vf3;"
+ Name 182 "pos"
+ Name 187 "TDDeformVec(i1;vf3;"
+ Name 185 "instanceID"
+ Name 186 "vec"
+ Name 190 "TDDeformVec(vf3;"
+ Name 189 "vec"
+ Name 194 "TDDeformNorm(i1;vf3;"
+ Name 192 "instanceID"
+ Name 193 "vec"
+ Name 197 "TDDeformNorm(vf3;"
+ Name 196 "vec"
+ Name 200 "TDSkinnedDeformNorm(vf3;"
+ Name 199 "vec"
+ Name 202 "texcoord"
+ Name 207 "uv"
+ Name 209 "param"
+ Name 214 "Vertex"
+ MemberName 214(Vertex) 0 "color"
+ MemberName 214(Vertex) 1 "worldSpacePos"
+ MemberName 214(Vertex) 2 "texCoord0"
+ MemberName 214(Vertex) 3 "cameraIndex"
+ MemberName 214(Vertex) 4 "instance"
+ Name 216 "oVert"
+ Name 225 "worldSpacePos"
+ Name 226 "P"
+ Name 227 "param"
+ Name 230 "uvUnwrapCoord"
+ Name 232 "param"
+ Name 236 "gl_PerVertex"
+ MemberName 236(gl_PerVertex) 0 "gl_Position"
+ MemberName 236(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 236(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 236(gl_PerVertex) 3 "gl_CullDistance"
+ Name 238 ""
+ Name 239 "param"
+ Name 241 "param"
+ Name 246 "cameraIndex"
+ Name 256 "Cd"
+ Name 257 "param"
+ Name 269 "TDMatrix"
+ MemberName 269(TDMatrix) 0 "world"
+ MemberName 269(TDMatrix) 1 "worldInverse"
+ MemberName 269(TDMatrix) 2 "worldCam"
+ MemberName 269(TDMatrix) 3 "worldCamInverse"
+ MemberName 269(TDMatrix) 4 "cam"
+ MemberName 269(TDMatrix) 5 "camInverse"
+ MemberName 269(TDMatrix) 6 "camProj"
+ MemberName 269(TDMatrix) 7 "camProjInverse"
+ MemberName 269(TDMatrix) 8 "proj"
+ MemberName 269(TDMatrix) 9 "projInverse"
+ MemberName 269(TDMatrix) 10 "worldCamProj"
+ MemberName 269(TDMatrix) 11 "worldCamProjInverse"
+ MemberName 269(TDMatrix) 12 "quadReproject"
+ MemberName 269(TDMatrix) 13 "worldForNormals"
+ MemberName 269(TDMatrix) 14 "camForNormals"
+ MemberName 269(TDMatrix) 15 "worldCamForNormals"
+ Name 271 "TDMatricesBlock"
+ MemberName 271(TDMatricesBlock) 0 "uTDMats"
+ Name 273 ""
+ Name 297 "gl_InstanceIndex"
+ Name 299 "gl_DefaultUniformBlock"
+ MemberName 299(gl_DefaultUniformBlock) 0 "uTDInstanceIDOffset"
+ MemberName 299(gl_DefaultUniformBlock) 1 "uTDNumInstances"
+ MemberName 299(gl_DefaultUniformBlock) 2 "uTDAlphaTestVal"
+ MemberName 299(gl_DefaultUniformBlock) 3 "uConstant"
+ MemberName 299(gl_DefaultUniformBlock) 4 "uShadowStrength"
+ MemberName 299(gl_DefaultUniformBlock) 5 "uShadowColor"
+ MemberName 299(gl_DefaultUniformBlock) 6 "uDiffuseColor"
+ MemberName 299(gl_DefaultUniformBlock) 7 "uAmbientColor"
+ Name 301 ""
+ Name 325 "param"
+ Name 327 "param"
+ Name 329 "param"
+ Name 330 "param"
+ Name 340 "param"
+ Name 341 "param"
+ Name 347 "param"
+ Name 349 "param"
+ Name 358 "param"
+ Name 365 "coord"
+ Name 367 "samp"
+ Name 371 "sTDInstanceTexCoord"
+ Name 376 "v"
+ Name 397 "coord"
+ Name 399 "samp"
+ Name 400 "sTDInstanceT"
+ Name 405 "v"
+ Name 412 "origIndex"
+ Name 418 "coord"
+ Name 420 "samp"
+ Name 425 "v"
+ Name 446 "coord"
+ Name 448 "samp"
+ Name 453 "v"
+ Name 470 "v"
+ Name 472 "m"
+ Name 484 "v"
+ Name 493 "v"
+ Name 501 "v"
+ Name 509 "v"
+ Name 513 "instanceActive"
+ Name 514 "t"
+ Name 515 "param"
+ Name 517 "param"
+ Name 528 "m"
+ Name 534 "tt"
+ Name 647 "m"
+ Name 651 "m"
+ Name 652 "param"
+ Name 662 "coord"
+ Name 664 "samp"
+ Name 665 "sTDInstanceColor"
+ Name 670 "v"
+ Name 693 "param"
+ Name 705 "m"
+ Name 706 "param"
+ Name 725 "m"
+ Name 726 "param"
+ Name 745 "param"
+ Name 746 "param"
+ Name 752 "param"
+ Name 753 "param"
+ Name 759 "param"
+ Name 760 "param"
+ Name 766 "param"
+ Name 771 "param"
+ Name 776 "param"
+ Name 781 "param"
+ Name 786 "param"
+ Name 791 "param"
+ Name 796 "param"
+ Name 797 "param"
+ Name 803 "param"
+ Name 804 "param"
+ Name 821 "param"
+ Name 824 "param"
+ Name 830 "pos"
+ Name 836 "param"
+ Name 839 "param"
+ Name 841 "param"
+ Name 848 "param"
+ Name 849 "param"
+ Name 854 "param"
+ Name 857 "param"
+ Name 859 "param"
+ Name 866 "param"
+ Name 867 "param"
+ Name 872 "param"
+ Name 875 "param"
+ Name 877 "param"
+ Name 884 "param"
+ Name 885 "param"
+ Name 890 "param"
+ Name 896 "TDCameraInfo"
+ MemberName 896(TDCameraInfo) 0 "nearFar"
+ MemberName 896(TDCameraInfo) 1 "fog"
+ MemberName 896(TDCameraInfo) 2 "fogColor"
+ MemberName 896(TDCameraInfo) 3 "renderTOPCameraIndex"
+ Name 898 "TDCameraInfoBlock"
+ MemberName 898(TDCameraInfoBlock) 0 "uTDCamInfos"
+ Name 900 ""
+ Name 901 "TDGeneral"
+ MemberName 901(TDGeneral) 0 "ambientColor"
+ MemberName 901(TDGeneral) 1 "nearFar"
+ MemberName 901(TDGeneral) 2 "viewport"
+ MemberName 901(TDGeneral) 3 "viewportRes"
+ MemberName 901(TDGeneral) 4 "fog"
+ MemberName 901(TDGeneral) 5 "fogColor"
+ Name 902 "TDGeneralBlock"
+ MemberName 902(TDGeneralBlock) 0 "uTDGeneral"
+ Name 904 ""
+ Name 905 "N"
+ Name 906 "gl_VertexIndex"
+ Name 907 "TDLight"
+ MemberName 907(TDLight) 0 "position"
+ MemberName 907(TDLight) 1 "direction"
+ MemberName 907(TDLight) 2 "diffuse"
+ MemberName 907(TDLight) 3 "nearFar"
+ MemberName 907(TDLight) 4 "lightSize"
+ MemberName 907(TDLight) 5 "misc"
+ MemberName 907(TDLight) 6 "coneLookupScaleBias"
+ MemberName 907(TDLight) 7 "attenScaleBiasRoll"
+ MemberName 907(TDLight) 8 "shadowMapMatrix"
+ MemberName 907(TDLight) 9 "shadowMapCamMatrix"
+ MemberName 907(TDLight) 10 "shadowMapRes"
+ MemberName 907(TDLight) 11 "projMapMatrix"
+ Name 909 "TDLightBlock"
+ MemberName 909(TDLightBlock) 0 "uTDLights"
+ Name 911 ""
+ Name 912 "TDEnvLight"
+ MemberName 912(TDEnvLight) 0 "color"
+ MemberName 912(TDEnvLight) 1 "rotate"
+ Name 914 "TDEnvLightBlock"
+ MemberName 914(TDEnvLightBlock) 0 "uTDEnvLights"
+ Name 916 ""
+ Name 919 "TDEnvLightBuffer"
+ MemberName 919(TDEnvLightBuffer) 0 "shCoeffs"
+ Name 922 "uTDEnvLightBuffers"
+ Name 926 "mTD2DImageOutputs"
+ Name 930 "mTD2DArrayImageOutputs"
+ Name 934 "mTD3DImageOutputs"
+ Name 938 "mTDCubeImageOutputs"
+ Decorate 207(uv) Location 3
+ MemberDecorate 214(Vertex) 3 Flat
+ MemberDecorate 214(Vertex) 4 Flat
+ Decorate 214(Vertex) Block
+ Decorate 216(oVert) Location 0
+ Decorate 226(P) Location 0
+ MemberDecorate 236(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 236(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 236(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 236(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 236(gl_PerVertex) Block
+ Decorate 256(Cd) Location 2
+ MemberDecorate 269(TDMatrix) 0 ColMajor
+ MemberDecorate 269(TDMatrix) 0 Offset 0
+ MemberDecorate 269(TDMatrix) 0 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 1 ColMajor
+ MemberDecorate 269(TDMatrix) 1 Offset 64
+ MemberDecorate 269(TDMatrix) 1 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 2 ColMajor
+ MemberDecorate 269(TDMatrix) 2 Offset 128
+ MemberDecorate 269(TDMatrix) 2 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 3 ColMajor
+ MemberDecorate 269(TDMatrix) 3 Offset 192
+ MemberDecorate 269(TDMatrix) 3 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 4 ColMajor
+ MemberDecorate 269(TDMatrix) 4 Offset 256
+ MemberDecorate 269(TDMatrix) 4 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 5 ColMajor
+ MemberDecorate 269(TDMatrix) 5 Offset 320
+ MemberDecorate 269(TDMatrix) 5 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 6 ColMajor
+ MemberDecorate 269(TDMatrix) 6 Offset 384
+ MemberDecorate 269(TDMatrix) 6 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 7 ColMajor
+ MemberDecorate 269(TDMatrix) 7 Offset 448
+ MemberDecorate 269(TDMatrix) 7 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 8 ColMajor
+ MemberDecorate 269(TDMatrix) 8 Offset 512
+ MemberDecorate 269(TDMatrix) 8 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 9 ColMajor
+ MemberDecorate 269(TDMatrix) 9 Offset 576
+ MemberDecorate 269(TDMatrix) 9 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 10 ColMajor
+ MemberDecorate 269(TDMatrix) 10 Offset 640
+ MemberDecorate 269(TDMatrix) 10 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 11 ColMajor
+ MemberDecorate 269(TDMatrix) 11 Offset 704
+ MemberDecorate 269(TDMatrix) 11 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 12 ColMajor
+ MemberDecorate 269(TDMatrix) 12 Offset 768
+ MemberDecorate 269(TDMatrix) 12 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 13 ColMajor
+ MemberDecorate 269(TDMatrix) 13 Offset 832
+ MemberDecorate 269(TDMatrix) 13 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 14 ColMajor
+ MemberDecorate 269(TDMatrix) 14 Offset 880
+ MemberDecorate 269(TDMatrix) 14 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 15 ColMajor
+ MemberDecorate 269(TDMatrix) 15 Offset 928
+ MemberDecorate 269(TDMatrix) 15 MatrixStride 16
+ Decorate 270 ArrayStride 976
+ MemberDecorate 271(TDMatricesBlock) 0 Offset 0
+ Decorate 271(TDMatricesBlock) Block
+ Decorate 273 DescriptorSet 0
+ Decorate 273 Binding 1
+ Decorate 297(gl_InstanceIndex) BuiltIn InstanceIndex
+ MemberDecorate 299(gl_DefaultUniformBlock) 0 Offset 0
+ MemberDecorate 299(gl_DefaultUniformBlock) 1 Offset 4
+ MemberDecorate 299(gl_DefaultUniformBlock) 2 Offset 8
+ MemberDecorate 299(gl_DefaultUniformBlock) 3 Offset 16
+ MemberDecorate 299(gl_DefaultUniformBlock) 4 Offset 28
+ MemberDecorate 299(gl_DefaultUniformBlock) 5 Offset 32
+ MemberDecorate 299(gl_DefaultUniformBlock) 6 Offset 48
+ MemberDecorate 299(gl_DefaultUniformBlock) 7 Offset 64
+ Decorate 299(gl_DefaultUniformBlock) Block
+ Decorate 301 DescriptorSet 0
+ Decorate 301 Binding 0
+ Decorate 371(sTDInstanceTexCoord) DescriptorSet 0
+ Decorate 371(sTDInstanceTexCoord) Binding 16
+ Decorate 400(sTDInstanceT) DescriptorSet 0
+ Decorate 400(sTDInstanceT) Binding 15
+ Decorate 665(sTDInstanceColor) DescriptorSet 0
+ Decorate 665(sTDInstanceColor) Binding 17
+ MemberDecorate 896(TDCameraInfo) 0 Offset 0
+ MemberDecorate 896(TDCameraInfo) 1 Offset 16
+ MemberDecorate 896(TDCameraInfo) 2 Offset 32
+ MemberDecorate 896(TDCameraInfo) 3 Offset 48
+ Decorate 897 ArrayStride 64
+ MemberDecorate 898(TDCameraInfoBlock) 0 Offset 0
+ Decorate 898(TDCameraInfoBlock) Block
+ Decorate 900 DescriptorSet 0
+ Decorate 900 Binding 0
+ MemberDecorate 901(TDGeneral) 0 Offset 0
+ MemberDecorate 901(TDGeneral) 1 Offset 16
+ MemberDecorate 901(TDGeneral) 2 Offset 32
+ MemberDecorate 901(TDGeneral) 3 Offset 48
+ MemberDecorate 901(TDGeneral) 4 Offset 64
+ MemberDecorate 901(TDGeneral) 5 Offset 80
+ MemberDecorate 902(TDGeneralBlock) 0 Offset 0
+ Decorate 902(TDGeneralBlock) Block
+ Decorate 904 DescriptorSet 0
+ Decorate 904 Binding 0
+ Decorate 905(N) Location 1
+ Decorate 906(gl_VertexIndex) BuiltIn VertexIndex
+ MemberDecorate 907(TDLight) 0 Offset 0
+ MemberDecorate 907(TDLight) 1 Offset 16
+ MemberDecorate 907(TDLight) 2 Offset 32
+ MemberDecorate 907(TDLight) 3 Offset 48
+ MemberDecorate 907(TDLight) 4 Offset 64
+ MemberDecorate 907(TDLight) 5 Offset 80
+ MemberDecorate 907(TDLight) 6 Offset 96
+ MemberDecorate 907(TDLight) 7 Offset 112
+ MemberDecorate 907(TDLight) 8 ColMajor
+ MemberDecorate 907(TDLight) 8 Offset 128
+ MemberDecorate 907(TDLight) 8 MatrixStride 16
+ MemberDecorate 907(TDLight) 9 ColMajor
+ MemberDecorate 907(TDLight) 9 Offset 192
+ MemberDecorate 907(TDLight) 9 MatrixStride 16
+ MemberDecorate 907(TDLight) 10 Offset 256
+ MemberDecorate 907(TDLight) 11 ColMajor
+ MemberDecorate 907(TDLight) 11 Offset 272
+ MemberDecorate 907(TDLight) 11 MatrixStride 16
+ Decorate 908 ArrayStride 336
+ MemberDecorate 909(TDLightBlock) 0 Offset 0
+ Decorate 909(TDLightBlock) Block
+ Decorate 911 DescriptorSet 0
+ Decorate 911 Binding 0
+ MemberDecorate 912(TDEnvLight) 0 Offset 0
+ MemberDecorate 912(TDEnvLight) 1 ColMajor
+ MemberDecorate 912(TDEnvLight) 1 Offset 16
+ MemberDecorate 912(TDEnvLight) 1 MatrixStride 16
+ Decorate 913 ArrayStride 64
+ MemberDecorate 914(TDEnvLightBlock) 0 Offset 0
+ Decorate 914(TDEnvLightBlock) Block
+ Decorate 916 DescriptorSet 0
+ Decorate 916 Binding 0
+ Decorate 918 ArrayStride 16
+ MemberDecorate 919(TDEnvLightBuffer) 0 Restrict
+ MemberDecorate 919(TDEnvLightBuffer) 0 NonWritable
+ MemberDecorate 919(TDEnvLightBuffer) 0 Offset 0
+ Decorate 919(TDEnvLightBuffer) BufferBlock
+ Decorate 922(uTDEnvLightBuffers) DescriptorSet 0
+ Decorate 922(uTDEnvLightBuffers) Binding 0
+ Decorate 926(mTD2DImageOutputs) DescriptorSet 0
+ Decorate 926(mTD2DImageOutputs) Binding 0
+ Decorate 930(mTD2DArrayImageOutputs) DescriptorSet 0
+ Decorate 930(mTD2DArrayImageOutputs) Binding 0
+ Decorate 934(mTD3DImageOutputs) DescriptorSet 0
+ Decorate 934(mTD3DImageOutputs) Binding 0
+ Decorate 938(mTDCubeImageOutputs) DescriptorSet 0
+ Decorate 938(mTDCubeImageOutputs) Binding 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeVector 6(float) 3
+ 10: TypePointer Function 9(fvec3)
+ 11: TypeInt 32 1
+ 12: TypePointer Function 11(int)
+ 13: TypeBool
+ 14: TypePointer Function 13(bool)
+ 15: TypeFunction 7(fvec4) 8(ptr) 10(ptr) 12(ptr) 14(ptr)
+ 28: TypeFunction 11(int)
+ 33: TypeFunction 9(fvec3)
+ 38: TypeFunction 6(float) 12(ptr)
+ 44: TypeFunction 7(fvec4) 8(ptr) 10(ptr)
+ 49: TypeFunction 7(fvec4) 10(ptr) 10(ptr)
+ 54: TypeFunction 7(fvec4) 8(ptr)
+ 58: TypeFunction 7(fvec4) 10(ptr)
+ 62: TypeFunction 7(fvec4)
+ 65: TypeFunction 9(fvec3) 12(ptr) 10(ptr)
+ 70: TypeFunction 13(bool) 12(ptr)
+ 74: TypeFunction 9(fvec3) 12(ptr) 14(ptr)
+ 79: TypeFunction 9(fvec3) 12(ptr)
+ 83: TypeMatrix 9(fvec3) 3
+ 84: TypeFunction 83 12(ptr)
+ 100: TypeMatrix 7(fvec4) 4
+ 101: TypeFunction 100 12(ptr)
+ 111: TypeFunction 7(fvec4) 12(ptr) 8(ptr)
+ 131: TypeFunction 9(fvec3) 10(ptr)
+ 138: TypeFunction 13(bool)
+ 143: TypeFunction 83
+ 148: TypeFunction 100
+ 165: TypeFunction 9(fvec3) 10(ptr) 8(ptr) 10(ptr)
+ 177: TypeFunction 7(fvec4) 12(ptr) 10(ptr)
+ 203: TypeInt 32 0
+ 204: 203(int) Constant 8
+ 205: TypeArray 9(fvec3) 204
+ 206: TypePointer Input 205
+ 207(uv): 206(ptr) Variable Input
+ 208: 11(int) Constant 0
+ 210: TypePointer Input 9(fvec3)
+ 214(Vertex): TypeStruct 7(fvec4) 9(fvec3) 9(fvec3) 11(int) 11(int)
+ 215: TypePointer Output 214(Vertex)
+ 216(oVert): 215(ptr) Variable Output
+ 217: 11(int) Constant 2
+ 219: TypePointer Output 9(fvec3)
+ 221: 11(int) Constant 4
+ 223: TypePointer Output 11(int)
+ 226(P): 210(ptr) Variable Input
+ 234: 203(int) Constant 1
+ 235: TypeArray 6(float) 234
+236(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 235 235
+ 237: TypePointer Output 236(gl_PerVertex)
+ 238: 237(ptr) Variable Output
+ 244: TypePointer Output 7(fvec4)
+ 248: 11(int) Constant 3
+ 251: 11(int) Constant 1
+ 255: TypePointer Input 7(fvec4)
+ 256(Cd): 255(ptr) Variable Input
+ 265: 6(float) Constant 1073741824
+ 266: 6(float) Constant 0
+ 267: 7(fvec4) ConstantComposite 265 265 265 266
+ 269(TDMatrix): TypeStruct 100 100 100 100 100 100 100 100 100 100 100 100 100 83 83 83
+ 270: TypeArray 269(TDMatrix) 234
+271(TDMatricesBlock): TypeStruct 270
+ 272: TypePointer Uniform 271(TDMatricesBlock)
+ 273: 272(ptr) Variable Uniform
+ 274: 11(int) Constant 8
+ 275: TypePointer Uniform 100
+ 288: 11(int) Constant 6
+ 296: TypePointer Input 11(int)
+297(gl_InstanceIndex): 296(ptr) Variable Input
+299(gl_DefaultUniformBlock): TypeStruct 11(int) 11(int) 6(float) 9(fvec3) 6(float) 9(fvec3) 7(fvec4) 7(fvec4)
+ 300: TypePointer Uniform 299(gl_DefaultUniformBlock)
+ 301: 300(ptr) Variable Uniform
+ 302: TypePointer Uniform 11(int)
+ 316: 11(int) Constant 1073741824
+ 324: 13(bool) ConstantTrue
+ 335: 6(float) Constant 1065353216
+ 346: 9(fvec3) ConstantComposite 266 266 266
+ 368: TypeImage 6(float) Buffer sampled format:Unknown
+ 369: TypeSampledImage 368
+ 370: TypePointer UniformConstant 369
+371(sTDInstanceTexCoord): 370(ptr) Variable UniformConstant
+ 377: 203(int) Constant 0
+ 378: TypePointer Function 6(float)
+ 387: 203(int) Constant 2
+400(sTDInstanceT): 370(ptr) Variable UniformConstant
+ 432: 203(int) Constant 3
+ 471: TypePointer Function 83
+ 473: 9(fvec3) ConstantComposite 335 266 266
+ 474: 9(fvec3) ConstantComposite 266 335 266
+ 475: 9(fvec3) ConstantComposite 266 266 335
+ 476: 83 ConstantComposite 473 474 475
+ 485: 9(fvec3) ConstantComposite 335 335 335
+ 524: 7(fvec4) ConstantComposite 266 266 266 266
+ 525: 100 ConstantComposite 524 524 524 524
+ 527: TypePointer Function 100
+ 529: 7(fvec4) ConstantComposite 335 266 266 266
+ 530: 7(fvec4) ConstantComposite 266 335 266 266
+ 531: 7(fvec4) ConstantComposite 266 266 335 266
+ 532: 7(fvec4) ConstantComposite 266 266 266 335
+ 533: 100 ConstantComposite 529 530 531 532
+665(sTDInstanceColor): 370(ptr) Variable UniformConstant
+ 730: 11(int) Constant 13
+ 731: TypePointer Uniform 83
+896(TDCameraInfo): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 11(int)
+ 897: TypeArray 896(TDCameraInfo) 234
+898(TDCameraInfoBlock): TypeStruct 897
+ 899: TypePointer Uniform 898(TDCameraInfoBlock)
+ 900: 899(ptr) Variable Uniform
+ 901(TDGeneral): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4)
+902(TDGeneralBlock): TypeStruct 901(TDGeneral)
+ 903: TypePointer Uniform 902(TDGeneralBlock)
+ 904: 903(ptr) Variable Uniform
+ 905(N): 210(ptr) Variable Input
+906(gl_VertexIndex): 296(ptr) Variable Input
+ 907(TDLight): TypeStruct 7(fvec4) 9(fvec3) 9(fvec3) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 100 100 7(fvec4) 100
+ 908: TypeArray 907(TDLight) 234
+909(TDLightBlock): TypeStruct 908
+ 910: TypePointer Uniform 909(TDLightBlock)
+ 911: 910(ptr) Variable Uniform
+ 912(TDEnvLight): TypeStruct 9(fvec3) 83
+ 913: TypeArray 912(TDEnvLight) 234
+914(TDEnvLightBlock): TypeStruct 913
+ 915: TypePointer Uniform 914(TDEnvLightBlock)
+ 916: 915(ptr) Variable Uniform
+ 917: 203(int) Constant 9
+ 918: TypeArray 9(fvec3) 917
+919(TDEnvLightBuffer): TypeStruct 918
+ 920: TypeArray 919(TDEnvLightBuffer) 234
+ 921: TypePointer Uniform 920
+922(uTDEnvLightBuffers): 921(ptr) Variable Uniform
+ 923: TypeImage 6(float) 2D nonsampled format:Rgba8
+ 924: TypeArray 923 234
+ 925: TypePointer UniformConstant 924
+926(mTD2DImageOutputs): 925(ptr) Variable UniformConstant
+ 927: TypeImage 6(float) 2D array nonsampled format:Rgba8
+ 928: TypeArray 927 234
+ 929: TypePointer UniformConstant 928
+930(mTD2DArrayImageOutputs): 929(ptr) Variable UniformConstant
+ 931: TypeImage 6(float) 3D nonsampled format:Rgba8
+ 932: TypeArray 931 234
+ 933: TypePointer UniformConstant 932
+934(mTD3DImageOutputs): 933(ptr) Variable UniformConstant
+ 935: TypeImage 6(float) Cube nonsampled format:Rgba8
+ 936: TypeArray 935 234
+ 937: TypePointer UniformConstant 936
+938(mTDCubeImageOutputs): 937(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 202(texcoord): 10(ptr) Variable Function
+ 209(param): 10(ptr) Variable Function
+225(worldSpacePos): 8(ptr) Variable Function
+ 227(param): 10(ptr) Variable Function
+230(uvUnwrapCoord): 10(ptr) Variable Function
+ 232(param): 10(ptr) Variable Function
+ 239(param): 8(ptr) Variable Function
+ 241(param): 10(ptr) Variable Function
+246(cameraIndex): 12(ptr) Variable Function
+ 257(param): 8(ptr) Variable Function
+ 211: 210(ptr) AccessChain 207(uv) 208
+ 212: 9(fvec3) Load 211
+ Store 209(param) 212
+ 213: 9(fvec3) FunctionCall 154(TDInstanceTexCoord(vf3;) 209(param)
+ Store 202(texcoord) 213
+ 218: 9(fvec3) Load 202(texcoord)
+ 220: 219(ptr) AccessChain 216(oVert) 217
+ Store 220 218
+ 222: 11(int) FunctionCall 29(TDInstanceID()
+ 224: 223(ptr) AccessChain 216(oVert) 221
+ Store 224 222
+ 228: 9(fvec3) Load 226(P)
+ Store 227(param) 228
+ 229: 7(fvec4) FunctionCall 183(TDDeform(vf3;) 227(param)
+ Store 225(worldSpacePos) 229
+ 231: 9(fvec3) FunctionCall 34(TDUVUnwrapCoord()
+ Store 232(param) 231
+ 233: 9(fvec3) FunctionCall 154(TDInstanceTexCoord(vf3;) 232(param)
+ Store 230(uvUnwrapCoord) 233
+ 240: 7(fvec4) Load 225(worldSpacePos)
+ Store 239(param) 240
+ 242: 9(fvec3) Load 230(uvUnwrapCoord)
+ Store 241(param) 242
+ 243: 7(fvec4) FunctionCall 47(TDWorldToProj(vf4;vf3;) 239(param) 241(param)
+ 245: 244(ptr) AccessChain 238 208
+ Store 245 243
+ 247: 11(int) FunctionCall 31(TDCameraIndex()
+ Store 246(cameraIndex) 247
+ 249: 11(int) Load 246(cameraIndex)
+ 250: 223(ptr) AccessChain 216(oVert) 248
+ Store 250 249
+ 252: 7(fvec4) Load 225(worldSpacePos)
+ 253: 9(fvec3) VectorShuffle 252 252 0 1 2
+ 254: 219(ptr) AccessChain 216(oVert) 251
+ Store 254 253
+ 258: 7(fvec4) Load 256(Cd)
+ Store 257(param) 258
+ 259: 7(fvec4) FunctionCall 157(TDInstanceColor(vf4;) 257(param)
+ 260: 244(ptr) AccessChain 216(oVert) 208
+ Store 260 259
+ Return
+ FunctionEnd
+20(iTDCamToProj(vf4;vf3;i1;b1;): 7(fvec4) Function None 15
+ 16(v): 8(ptr) FunctionParameter
+ 17(uv): 10(ptr) FunctionParameter
+ 18(cameraIndex): 12(ptr) FunctionParameter
+19(applyPickMod): 14(ptr) FunctionParameter
+ 21: Label
+ 261: 13(bool) FunctionCall 139(TDInstanceActive()
+ 262: 13(bool) LogicalNot 261
+ SelectionMerge 264 None
+ BranchConditional 262 263 264
+ 263: Label
+ ReturnValue 267
+ 264: Label
+ 276: 275(ptr) AccessChain 273 208 208 274
+ 277: 100 Load 276
+ 278: 7(fvec4) Load 16(v)
+ 279: 7(fvec4) MatrixTimesVector 277 278
+ Store 16(v) 279
+ 280: 7(fvec4) Load 16(v)
+ ReturnValue 280
+ FunctionEnd
+26(iTDWorldToProj(vf4;vf3;i1;b1;): 7(fvec4) Function None 15
+ 22(v): 8(ptr) FunctionParameter
+ 23(uv): 10(ptr) FunctionParameter
+ 24(cameraIndex): 12(ptr) FunctionParameter
+25(applyPickMod): 14(ptr) FunctionParameter
+ 27: Label
+ 283: 13(bool) FunctionCall 139(TDInstanceActive()
+ 284: 13(bool) LogicalNot 283
+ SelectionMerge 286 None
+ BranchConditional 284 285 286
+ 285: Label
+ ReturnValue 267
+ 286: Label
+ 289: 275(ptr) AccessChain 273 208 208 288
+ 290: 100 Load 289
+ 291: 7(fvec4) Load 22(v)
+ 292: 7(fvec4) MatrixTimesVector 290 291
+ Store 22(v) 292
+ 293: 7(fvec4) Load 22(v)
+ ReturnValue 293
+ FunctionEnd
+29(TDInstanceID(): 11(int) Function None 28
+ 30: Label
+ 298: 11(int) Load 297(gl_InstanceIndex)
+ 303: 302(ptr) AccessChain 301 208
+ 304: 11(int) Load 303
+ 305: 11(int) IAdd 298 304
+ ReturnValue 305
+ FunctionEnd
+31(TDCameraIndex(): 11(int) Function None 28
+ 32: Label
+ ReturnValue 208
+ FunctionEnd
+34(TDUVUnwrapCoord(): 9(fvec3) Function None 33
+ 35: Label
+ 310: 210(ptr) AccessChain 207(uv) 208
+ 311: 9(fvec3) Load 310
+ ReturnValue 311
+ FunctionEnd
+ 36(TDPickID(): 11(int) Function None 28
+ 37: Label
+ ReturnValue 208
+ FunctionEnd
+40(iTDConvertPickId(i1;): 6(float) Function None 38
+ 39(id): 12(ptr) FunctionParameter
+ 41: Label
+ 317: 11(int) Load 39(id)
+ 318: 11(int) BitwiseOr 317 316
+ Store 39(id) 318
+ 319: 11(int) Load 39(id)
+ 320: 6(float) Bitcast 319
+ ReturnValue 320
+ FunctionEnd
+42(TDWritePickingValues(): 2 Function None 3
+ 43: Label
+ Return
+ FunctionEnd
+47(TDWorldToProj(vf4;vf3;): 7(fvec4) Function None 44
+ 45(v): 8(ptr) FunctionParameter
+ 46(uv): 10(ptr) FunctionParameter
+ 48: Label
+ 325(param): 8(ptr) Variable Function
+ 327(param): 10(ptr) Variable Function
+ 329(param): 12(ptr) Variable Function
+ 330(param): 14(ptr) Variable Function
+ 323: 11(int) FunctionCall 31(TDCameraIndex()
+ 326: 7(fvec4) Load 45(v)
+ Store 325(param) 326
+ 328: 9(fvec3) Load 46(uv)
+ Store 327(param) 328
+ Store 329(param) 323
+ Store 330(param) 324
+ 331: 7(fvec4) FunctionCall 26(iTDWorldToProj(vf4;vf3;i1;b1;) 325(param) 327(param) 329(param) 330(param)
+ ReturnValue 331
+ FunctionEnd
+52(TDWorldToProj(vf3;vf3;): 7(fvec4) Function None 49
+ 50(v): 10(ptr) FunctionParameter
+ 51(uv): 10(ptr) FunctionParameter
+ 53: Label
+ 340(param): 8(ptr) Variable Function
+ 341(param): 10(ptr) Variable Function
+ 334: 9(fvec3) Load 50(v)
+ 336: 6(float) CompositeExtract 334 0
+ 337: 6(float) CompositeExtract 334 1
+ 338: 6(float) CompositeExtract 334 2
+ 339: 7(fvec4) CompositeConstruct 336 337 338 335
+ Store 340(param) 339
+ 342: 9(fvec3) Load 51(uv)
+ Store 341(param) 342
+ 343: 7(fvec4) FunctionCall 47(TDWorldToProj(vf4;vf3;) 340(param) 341(param)
+ ReturnValue 343
+ FunctionEnd
+56(TDWorldToProj(vf4;): 7(fvec4) Function None 54
+ 55(v): 8(ptr) FunctionParameter
+ 57: Label
+ 347(param): 8(ptr) Variable Function
+ 349(param): 10(ptr) Variable Function
+ 348: 7(fvec4) Load 55(v)
+ Store 347(param) 348
+ Store 349(param) 346
+ 350: 7(fvec4) FunctionCall 47(TDWorldToProj(vf4;vf3;) 347(param) 349(param)
+ ReturnValue 350
+ FunctionEnd
+60(TDWorldToProj(vf3;): 7(fvec4) Function None 58
+ 59(v): 10(ptr) FunctionParameter
+ 61: Label
+ 358(param): 8(ptr) Variable Function
+ 353: 9(fvec3) Load 59(v)
+ 354: 6(float) CompositeExtract 353 0
+ 355: 6(float) CompositeExtract 353 1
+ 356: 6(float) CompositeExtract 353 2
+ 357: 7(fvec4) CompositeConstruct 354 355 356 335
+ Store 358(param) 357
+ 359: 7(fvec4) FunctionCall 56(TDWorldToProj(vf4;) 358(param)
+ ReturnValue 359
+ FunctionEnd
+63(TDPointColor(): 7(fvec4) Function None 62
+ 64: Label
+ 362: 7(fvec4) Load 256(Cd)
+ ReturnValue 362
+ FunctionEnd
+68(TDInstanceTexCoord(i1;vf3;): 9(fvec3) Function None 65
+ 66(index): 12(ptr) FunctionParameter
+ 67(t): 10(ptr) FunctionParameter
+ 69: Label
+ 365(coord): 12(ptr) Variable Function
+ 367(samp): 8(ptr) Variable Function
+ 376(v): 10(ptr) Variable Function
+ 366: 11(int) Load 66(index)
+ Store 365(coord) 366
+ 372: 369 Load 371(sTDInstanceTexCoord)
+ 373: 11(int) Load 365(coord)
+ 374: 368 Image 372
+ 375: 7(fvec4) ImageFetch 374 373
+ Store 367(samp) 375
+ 379: 378(ptr) AccessChain 67(t) 377
+ 380: 6(float) Load 379
+ 381: 378(ptr) AccessChain 376(v) 377
+ Store 381 380
+ 382: 378(ptr) AccessChain 67(t) 234
+ 383: 6(float) Load 382
+ 384: 378(ptr) AccessChain 376(v) 234
+ Store 384 383
+ 385: 378(ptr) AccessChain 367(samp) 377
+ 386: 6(float) Load 385
+ 388: 378(ptr) AccessChain 376(v) 387
+ Store 388 386
+ 389: 9(fvec3) Load 376(v)
+ Store 67(t) 389
+ 390: 9(fvec3) Load 67(t)
+ ReturnValue 390
+ FunctionEnd
+72(TDInstanceActive(i1;): 13(bool) Function None 70
+ 71(index): 12(ptr) FunctionParameter
+ 73: Label
+ 397(coord): 12(ptr) Variable Function
+ 399(samp): 8(ptr) Variable Function
+ 405(v): 378(ptr) Variable Function
+ 393: 302(ptr) AccessChain 301 208
+ 394: 11(int) Load 393
+ 395: 11(int) Load 71(index)
+ 396: 11(int) ISub 395 394
+ Store 71(index) 396
+ 398: 11(int) Load 71(index)
+ Store 397(coord) 398
+ 401: 369 Load 400(sTDInstanceT)
+ 402: 11(int) Load 397(coord)
+ 403: 368 Image 401
+ 404: 7(fvec4) ImageFetch 403 402
+ Store 399(samp) 404
+ 406: 378(ptr) AccessChain 399(samp) 377
+ 407: 6(float) Load 406
+ Store 405(v) 407
+ 408: 6(float) Load 405(v)
+ 409: 13(bool) FUnordNotEqual 408 266
+ ReturnValue 409
+ FunctionEnd
+77(iTDInstanceTranslate(i1;b1;): 9(fvec3) Function None 74
+ 75(index): 12(ptr) FunctionParameter
+76(instanceActive): 14(ptr) FunctionParameter
+ 78: Label
+ 412(origIndex): 12(ptr) Variable Function
+ 418(coord): 12(ptr) Variable Function
+ 420(samp): 8(ptr) Variable Function
+ 425(v): 10(ptr) Variable Function
+ 413: 11(int) Load 75(index)
+ Store 412(origIndex) 413
+ 414: 302(ptr) AccessChain 301 208
+ 415: 11(int) Load 414
+ 416: 11(int) Load 75(index)
+ 417: 11(int) ISub 416 415
+ Store 75(index) 417
+ 419: 11(int) Load 75(index)
+ Store 418(coord) 419
+ 421: 369 Load 400(sTDInstanceT)
+ 422: 11(int) Load 418(coord)
+ 423: 368 Image 421
+ 424: 7(fvec4) ImageFetch 423 422
+ Store 420(samp) 424
+ 426: 378(ptr) AccessChain 420(samp) 234
+ 427: 6(float) Load 426
+ 428: 378(ptr) AccessChain 425(v) 377
+ Store 428 427
+ 429: 378(ptr) AccessChain 420(samp) 387
+ 430: 6(float) Load 429
+ 431: 378(ptr) AccessChain 425(v) 234
+ Store 431 430
+ 433: 378(ptr) AccessChain 420(samp) 432
+ 434: 6(float) Load 433
+ 435: 378(ptr) AccessChain 425(v) 387
+ Store 435 434
+ 436: 378(ptr) AccessChain 420(samp) 377
+ 437: 6(float) Load 436
+ 438: 13(bool) FUnordNotEqual 437 266
+ Store 76(instanceActive) 438
+ 439: 9(fvec3) Load 425(v)
+ ReturnValue 439
+ FunctionEnd
+81(TDInstanceTranslate(i1;): 9(fvec3) Function None 79
+ 80(index): 12(ptr) FunctionParameter
+ 82: Label
+ 446(coord): 12(ptr) Variable Function
+ 448(samp): 8(ptr) Variable Function
+ 453(v): 10(ptr) Variable Function
+ 442: 302(ptr) AccessChain 301 208
+ 443: 11(int) Load 442
+ 444: 11(int) Load 80(index)
+ 445: 11(int) ISub 444 443
+ Store 80(index) 445
+ 447: 11(int) Load 80(index)
+ Store 446(coord) 447
+ 449: 369 Load 400(sTDInstanceT)
+ 450: 11(int) Load 446(coord)
+ 451: 368 Image 449
+ 452: 7(fvec4) ImageFetch 451 450
+ Store 448(samp) 452
+ 454: 378(ptr) AccessChain 448(samp) 234
+ 455: 6(float) Load 454
+ 456: 378(ptr) AccessChain 453(v) 377
+ Store 456 455
+ 457: 378(ptr) AccessChain 448(samp) 387
+ 458: 6(float) Load 457
+ 459: 378(ptr) AccessChain 453(v) 234
+ Store 459 458
+ 460: 378(ptr) AccessChain 448(samp) 432
+ 461: 6(float) Load 460
+ 462: 378(ptr) AccessChain 453(v) 387
+ Store 462 461
+ 463: 9(fvec3) Load 453(v)
+ ReturnValue 463
+ FunctionEnd
+86(TDInstanceRotateMat(i1;): 83 Function None 84
+ 85(index): 12(ptr) FunctionParameter
+ 87: Label
+ 470(v): 10(ptr) Variable Function
+ 472(m): 471(ptr) Variable Function
+ 466: 302(ptr) AccessChain 301 208
+ 467: 11(int) Load 466
+ 468: 11(int) Load 85(index)
+ 469: 11(int) ISub 468 467
+ Store 85(index) 469
+ Store 470(v) 346
+ Store 472(m) 476
+ 477: 83 Load 472(m)
+ ReturnValue 477
+ FunctionEnd
+89(TDInstanceScale(i1;): 9(fvec3) Function None 79
+ 88(index): 12(ptr) FunctionParameter
+ 90: Label
+ 484(v): 10(ptr) Variable Function
+ 480: 302(ptr) AccessChain 301 208
+ 481: 11(int) Load 480
+ 482: 11(int) Load 88(index)
+ 483: 11(int) ISub 482 481
+ Store 88(index) 483
+ Store 484(v) 485
+ 486: 9(fvec3) Load 484(v)
+ ReturnValue 486
+ FunctionEnd
+92(TDInstancePivot(i1;): 9(fvec3) Function None 79
+ 91(index): 12(ptr) FunctionParameter
+ 93: Label
+ 493(v): 10(ptr) Variable Function
+ 489: 302(ptr) AccessChain 301 208
+ 490: 11(int) Load 489
+ 491: 11(int) Load 91(index)
+ 492: 11(int) ISub 491 490
+ Store 91(index) 492
+ Store 493(v) 346
+ 494: 9(fvec3) Load 493(v)
+ ReturnValue 494
+ FunctionEnd
+95(TDInstanceRotTo(i1;): 9(fvec3) Function None 79
+ 94(index): 12(ptr) FunctionParameter
+ 96: Label
+ 501(v): 10(ptr) Variable Function
+ 497: 302(ptr) AccessChain 301 208
+ 498: 11(int) Load 497
+ 499: 11(int) Load 94(index)
+ 500: 11(int) ISub 499 498
+ Store 94(index) 500
+ Store 501(v) 475
+ 502: 9(fvec3) Load 501(v)
+ ReturnValue 502
+ FunctionEnd
+98(TDInstanceRotUp(i1;): 9(fvec3) Function None 79
+ 97(index): 12(ptr) FunctionParameter
+ 99: Label
+ 509(v): 10(ptr) Variable Function
+ 505: 302(ptr) AccessChain 301 208
+ 506: 11(int) Load 505
+ 507: 11(int) Load 97(index)
+ 508: 11(int) ISub 507 506
+ Store 97(index) 508
+ Store 509(v) 474
+ 510: 9(fvec3) Load 509(v)
+ ReturnValue 510
+ FunctionEnd
+103(TDInstanceMat(i1;): 100 Function None 101
+ 102(id): 12(ptr) FunctionParameter
+ 104: Label
+513(instanceActive): 14(ptr) Variable Function
+ 514(t): 10(ptr) Variable Function
+ 515(param): 12(ptr) Variable Function
+ 517(param): 14(ptr) Variable Function
+ 528(m): 527(ptr) Variable Function
+ 534(tt): 10(ptr) Variable Function
+ Store 513(instanceActive) 324
+ 516: 11(int) Load 102(id)
+ Store 515(param) 516
+ 518: 9(fvec3) FunctionCall 77(iTDInstanceTranslate(i1;b1;) 515(param) 517(param)
+ 519: 13(bool) Load 517(param)
+ Store 513(instanceActive) 519
+ Store 514(t) 518
+ 520: 13(bool) Load 513(instanceActive)
+ 521: 13(bool) LogicalNot 520
+ SelectionMerge 523 None
+ BranchConditional 521 522 523
+ 522: Label
+ ReturnValue 525
+ 523: Label
+ Store 528(m) 533
+ 535: 9(fvec3) Load 514(t)
+ Store 534(tt) 535
+ 536: 378(ptr) AccessChain 528(m) 208 377
+ 537: 6(float) Load 536
+ 538: 378(ptr) AccessChain 534(tt) 377
+ 539: 6(float) Load 538
+ 540: 6(float) FMul 537 539
+ 541: 378(ptr) AccessChain 528(m) 248 377
+ 542: 6(float) Load 541
+ 543: 6(float) FAdd 542 540
+ 544: 378(ptr) AccessChain 528(m) 248 377
+ Store 544 543
+ 545: 378(ptr) AccessChain 528(m) 208 234
+ 546: 6(float) Load 545
+ 547: 378(ptr) AccessChain 534(tt) 377
+ 548: 6(float) Load 547
+ 549: 6(float) FMul 546 548
+ 550: 378(ptr) AccessChain 528(m) 248 234
+ 551: 6(float) Load 550
+ 552: 6(float) FAdd 551 549
+ 553: 378(ptr) AccessChain 528(m) 248 234
+ Store 553 552
+ 554: 378(ptr) AccessChain 528(m) 208 387
+ 555: 6(float) Load 554
+ 556: 378(ptr) AccessChain 534(tt) 377
+ 557: 6(float) Load 556
+ 558: 6(float) FMul 555 557
+ 559: 378(ptr) AccessChain 528(m) 248 387
+ 560: 6(float) Load 559
+ 561: 6(float) FAdd 560 558
+ 562: 378(ptr) AccessChain 528(m) 248 387
+ Store 562 561
+ 563: 378(ptr) AccessChain 528(m) 208 432
+ 564: 6(float) Load 563
+ 565: 378(ptr) AccessChain 534(tt) 377
+ 566: 6(float) Load 565
+ 567: 6(float) FMul 564 566
+ 568: 378(ptr) AccessChain 528(m) 248 432
+ 569: 6(float) Load 568
+ 570: 6(float) FAdd 569 567
+ 571: 378(ptr) AccessChain 528(m) 248 432
+ Store 571 570
+ 572: 378(ptr) AccessChain 528(m) 251 377
+ 573: 6(float) Load 572
+ 574: 378(ptr) AccessChain 534(tt) 234
+ 575: 6(float) Load 574
+ 576: 6(float) FMul 573 575
+ 577: 378(ptr) AccessChain 528(m) 248 377
+ 578: 6(float) Load 577
+ 579: 6(float) FAdd 578 576
+ 580: 378(ptr) AccessChain 528(m) 248 377
+ Store 580 579
+ 581: 378(ptr) AccessChain 528(m) 251 234
+ 582: 6(float) Load 581
+ 583: 378(ptr) AccessChain 534(tt) 234
+ 584: 6(float) Load 583
+ 585: 6(float) FMul 582 584
+ 586: 378(ptr) AccessChain 528(m) 248 234
+ 587: 6(float) Load 586
+ 588: 6(float) FAdd 587 585
+ 589: 378(ptr) AccessChain 528(m) 248 234
+ Store 589 588
+ 590: 378(ptr) AccessChain 528(m) 251 387
+ 591: 6(float) Load 590
+ 592: 378(ptr) AccessChain 534(tt) 234
+ 593: 6(float) Load 592
+ 594: 6(float) FMul 591 593
+ 595: 378(ptr) AccessChain 528(m) 248 387
+ 596: 6(float) Load 595
+ 597: 6(float) FAdd 596 594
+ 598: 378(ptr) AccessChain 528(m) 248 387
+ Store 598 597
+ 599: 378(ptr) AccessChain 528(m) 251 432
+ 600: 6(float) Load 599
+ 601: 378(ptr) AccessChain 534(tt) 234
+ 602: 6(float) Load 601
+ 603: 6(float) FMul 600 602
+ 604: 378(ptr) AccessChain 528(m) 248 432
+ 605: 6(float) Load 604
+ 606: 6(float) FAdd 605 603
+ 607: 378(ptr) AccessChain 528(m) 248 432
+ Store 607 606
+ 608: 378(ptr) AccessChain 528(m) 217 377
+ 609: 6(float) Load 608
+ 610: 378(ptr) AccessChain 534(tt) 387
+ 611: 6(float) Load 610
+ 612: 6(float) FMul 609 611
+ 613: 378(ptr) AccessChain 528(m) 248 377
+ 614: 6(float) Load 613
+ 615: 6(float) FAdd 614 612
+ 616: 378(ptr) AccessChain 528(m) 248 377
+ Store 616 615
+ 617: 378(ptr) AccessChain 528(m) 217 234
+ 618: 6(float) Load 617
+ 619: 378(ptr) AccessChain 534(tt) 387
+ 620: 6(float) Load 619
+ 621: 6(float) FMul 618 620
+ 622: 378(ptr) AccessChain 528(m) 248 234
+ 623: 6(float) Load 622
+ 624: 6(float) FAdd 623 621
+ 625: 378(ptr) AccessChain 528(m) 248 234
+ Store 625 624
+ 626: 378(ptr) AccessChain 528(m) 217 387
+ 627: 6(float) Load 626
+ 628: 378(ptr) AccessChain 534(tt) 387
+ 629: 6(float) Load 628
+ 630: 6(float) FMul 627 629
+ 631: 378(ptr) AccessChain 528(m) 248 387
+ 632: 6(float) Load 631
+ 633: 6(float) FAdd 632 630
+ 634: 378(ptr) AccessChain 528(m) 248 387
+ Store 634 633
+ 635: 378(ptr) AccessChain 528(m) 217 432
+ 636: 6(float) Load 635
+ 637: 378(ptr) AccessChain 534(tt) 387
+ 638: 6(float) Load 637
+ 639: 6(float) FMul 636 638
+ 640: 378(ptr) AccessChain 528(m) 248 432
+ 641: 6(float) Load 640
+ 642: 6(float) FAdd 641 639
+ 643: 378(ptr) AccessChain 528(m) 248 432
+ Store 643 642
+ 644: 100 Load 528(m)
+ ReturnValue 644
+ FunctionEnd
+106(TDInstanceMat3(i1;): 83 Function None 84
+ 105(id): 12(ptr) FunctionParameter
+ 107: Label
+ 647(m): 471(ptr) Variable Function
+ Store 647(m) 476
+ 648: 83 Load 647(m)
+ ReturnValue 648
+ FunctionEnd
+109(TDInstanceMat3ForNorm(i1;): 83 Function None 84
+ 108(id): 12(ptr) FunctionParameter
+ 110: Label
+ 651(m): 471(ptr) Variable Function
+ 652(param): 12(ptr) Variable Function
+ 653: 11(int) Load 108(id)
+ Store 652(param) 653
+ 654: 83 FunctionCall 106(TDInstanceMat3(i1;) 652(param)
+ Store 651(m) 654
+ 655: 83 Load 651(m)
+ ReturnValue 655
+ FunctionEnd
+114(TDInstanceColor(i1;vf4;): 7(fvec4) Function None 111
+ 112(index): 12(ptr) FunctionParameter
+ 113(curColor): 8(ptr) FunctionParameter
+ 115: Label
+ 662(coord): 12(ptr) Variable Function
+ 664(samp): 8(ptr) Variable Function
+ 670(v): 8(ptr) Variable Function
+ 658: 302(ptr) AccessChain 301 208
+ 659: 11(int) Load 658
+ 660: 11(int) Load 112(index)
+ 661: 11(int) ISub 660 659
+ Store 112(index) 661
+ 663: 11(int) Load 112(index)
+ Store 662(coord) 663
+ 666: 369 Load 665(sTDInstanceColor)
+ 667: 11(int) Load 662(coord)
+ 668: 368 Image 666
+ 669: 7(fvec4) ImageFetch 668 667
+ Store 664(samp) 669
+ 671: 378(ptr) AccessChain 664(samp) 377
+ 672: 6(float) Load 671
+ 673: 378(ptr) AccessChain 670(v) 377
+ Store 673 672
+ 674: 378(ptr) AccessChain 664(samp) 234
+ 675: 6(float) Load 674
+ 676: 378(ptr) AccessChain 670(v) 234
+ Store 676 675
+ 677: 378(ptr) AccessChain 664(samp) 387
+ 678: 6(float) Load 677
+ 679: 378(ptr) AccessChain 670(v) 387
+ Store 679 678
+ 680: 378(ptr) AccessChain 670(v) 432
+ Store 680 335
+ 681: 378(ptr) AccessChain 670(v) 377
+ 682: 6(float) Load 681
+ 683: 378(ptr) AccessChain 113(curColor) 377
+ Store 683 682
+ 684: 378(ptr) AccessChain 670(v) 234
+ 685: 6(float) Load 684
+ 686: 378(ptr) AccessChain 113(curColor) 234
+ Store 686 685
+ 687: 378(ptr) AccessChain 670(v) 387
+ 688: 6(float) Load 687
+ 689: 378(ptr) AccessChain 113(curColor) 387
+ Store 689 688
+ 690: 7(fvec4) Load 113(curColor)
+ ReturnValue 690
+ FunctionEnd
+118(TDInstanceDeform(i1;vf4;): 7(fvec4) Function None 111
+ 116(id): 12(ptr) FunctionParameter
+ 117(pos): 8(ptr) FunctionParameter
+ 119: Label
+ 693(param): 12(ptr) Variable Function
+ 694: 11(int) Load 116(id)
+ Store 693(param) 694
+ 695: 100 FunctionCall 103(TDInstanceMat(i1;) 693(param)
+ 696: 7(fvec4) Load 117(pos)
+ 697: 7(fvec4) MatrixTimesVector 695 696
+ Store 117(pos) 697
+ 698: 11(int) FunctionCall 31(TDCameraIndex()
+ 699: 275(ptr) AccessChain 273 208 698 208
+ 700: 100 Load 699
+ 701: 7(fvec4) Load 117(pos)
+ 702: 7(fvec4) MatrixTimesVector 700 701
+ ReturnValue 702
+ FunctionEnd
+122(TDInstanceDeformVec(i1;vf3;): 9(fvec3) Function None 65
+ 120(id): 12(ptr) FunctionParameter
+ 121(vec): 10(ptr) FunctionParameter
+ 123: Label
+ 705(m): 471(ptr) Variable Function
+ 706(param): 12(ptr) Variable Function
+ 707: 11(int) Load 120(id)
+ Store 706(param) 707
+ 708: 83 FunctionCall 106(TDInstanceMat3(i1;) 706(param)
+ Store 705(m) 708
+ 709: 11(int) FunctionCall 31(TDCameraIndex()
+ 710: 275(ptr) AccessChain 273 208 709 208
+ 711: 100 Load 710
+ 712: 7(fvec4) CompositeExtract 711 0
+ 713: 9(fvec3) VectorShuffle 712 712 0 1 2
+ 714: 7(fvec4) CompositeExtract 711 1
+ 715: 9(fvec3) VectorShuffle 714 714 0 1 2
+ 716: 7(fvec4) CompositeExtract 711 2
+ 717: 9(fvec3) VectorShuffle 716 716 0 1 2
+ 718: 83 CompositeConstruct 713 715 717
+ 719: 83 Load 705(m)
+ 720: 9(fvec3) Load 121(vec)
+ 721: 9(fvec3) MatrixTimesVector 719 720
+ 722: 9(fvec3) MatrixTimesVector 718 721
+ ReturnValue 722
+ FunctionEnd
+126(TDInstanceDeformNorm(i1;vf3;): 9(fvec3) Function None 65
+ 124(id): 12(ptr) FunctionParameter
+ 125(vec): 10(ptr) FunctionParameter
+ 127: Label
+ 725(m): 471(ptr) Variable Function
+ 726(param): 12(ptr) Variable Function
+ 727: 11(int) Load 124(id)
+ Store 726(param) 727
+ 728: 83 FunctionCall 109(TDInstanceMat3ForNorm(i1;) 726(param)
+ Store 725(m) 728
+ 729: 11(int) FunctionCall 31(TDCameraIndex()
+ 732: 731(ptr) AccessChain 273 208 729 730
+ 733: 83 Load 732
+ 734: 9(fvec3) CompositeExtract 733 0
+ 735: 9(fvec3) CompositeExtract 733 1
+ 736: 9(fvec3) CompositeExtract 733 2
+ 737: 83 CompositeConstruct 734 735 736
+ 738: 83 Load 725(m)
+ 739: 9(fvec3) Load 125(vec)
+ 740: 9(fvec3) MatrixTimesVector 738 739
+ 741: 9(fvec3) MatrixTimesVector 737 740
+ ReturnValue 741
+ FunctionEnd
+129(TDInstanceDeform(vf4;): 7(fvec4) Function None 54
+ 128(pos): 8(ptr) FunctionParameter
+ 130: Label
+ 745(param): 12(ptr) Variable Function
+ 746(param): 8(ptr) Variable Function
+ 744: 11(int) FunctionCall 29(TDInstanceID()
+ Store 745(param) 744
+ 747: 7(fvec4) Load 128(pos)
+ Store 746(param) 747
+ 748: 7(fvec4) FunctionCall 118(TDInstanceDeform(i1;vf4;) 745(param) 746(param)
+ ReturnValue 748
+ FunctionEnd
+133(TDInstanceDeformVec(vf3;): 9(fvec3) Function None 131
+ 132(vec): 10(ptr) FunctionParameter
+ 134: Label
+ 752(param): 12(ptr) Variable Function
+ 753(param): 10(ptr) Variable Function
+ 751: 11(int) FunctionCall 29(TDInstanceID()
+ Store 752(param) 751
+ 754: 9(fvec3) Load 132(vec)
+ Store 753(param) 754
+ 755: 9(fvec3) FunctionCall 122(TDInstanceDeformVec(i1;vf3;) 752(param) 753(param)
+ ReturnValue 755
+ FunctionEnd
+136(TDInstanceDeformNorm(vf3;): 9(fvec3) Function None 131
+ 135(vec): 10(ptr) FunctionParameter
+ 137: Label
+ 759(param): 12(ptr) Variable Function
+ 760(param): 10(ptr) Variable Function
+ 758: 11(int) FunctionCall 29(TDInstanceID()
+ Store 759(param) 758
+ 761: 9(fvec3) Load 135(vec)
+ Store 760(param) 761
+ 762: 9(fvec3) FunctionCall 126(TDInstanceDeformNorm(i1;vf3;) 759(param) 760(param)
+ ReturnValue 762
+ FunctionEnd
+139(TDInstanceActive(): 13(bool) Function None 138
+ 140: Label
+ 766(param): 12(ptr) Variable Function
+ 765: 11(int) FunctionCall 29(TDInstanceID()
+ Store 766(param) 765
+ 767: 13(bool) FunctionCall 72(TDInstanceActive(i1;) 766(param)
+ ReturnValue 767
+ FunctionEnd
+141(TDInstanceTranslate(): 9(fvec3) Function None 33
+ 142: Label
+ 771(param): 12(ptr) Variable Function
+ 770: 11(int) FunctionCall 29(TDInstanceID()
+ Store 771(param) 770
+ 772: 9(fvec3) FunctionCall 81(TDInstanceTranslate(i1;) 771(param)
+ ReturnValue 772
+ FunctionEnd
+144(TDInstanceRotateMat(): 83 Function None 143
+ 145: Label
+ 776(param): 12(ptr) Variable Function
+ 775: 11(int) FunctionCall 29(TDInstanceID()
+ Store 776(param) 775
+ 777: 83 FunctionCall 86(TDInstanceRotateMat(i1;) 776(param)
+ ReturnValue 777
+ FunctionEnd
+146(TDInstanceScale(): 9(fvec3) Function None 33
+ 147: Label
+ 781(param): 12(ptr) Variable Function
+ 780: 11(int) FunctionCall 29(TDInstanceID()
+ Store 781(param) 780
+ 782: 9(fvec3) FunctionCall 89(TDInstanceScale(i1;) 781(param)
+ ReturnValue 782
+ FunctionEnd
+149(TDInstanceMat(): 100 Function None 148
+ 150: Label
+ 786(param): 12(ptr) Variable Function
+ 785: 11(int) FunctionCall 29(TDInstanceID()
+ Store 786(param) 785
+ 787: 100 FunctionCall 103(TDInstanceMat(i1;) 786(param)
+ ReturnValue 787
+ FunctionEnd
+151(TDInstanceMat3(): 83 Function None 143
+ 152: Label
+ 791(param): 12(ptr) Variable Function
+ 790: 11(int) FunctionCall 29(TDInstanceID()
+ Store 791(param) 790
+ 792: 83 FunctionCall 106(TDInstanceMat3(i1;) 791(param)
+ ReturnValue 792
+ FunctionEnd
+154(TDInstanceTexCoord(vf3;): 9(fvec3) Function None 131
+ 153(t): 10(ptr) FunctionParameter
+ 155: Label
+ 796(param): 12(ptr) Variable Function
+ 797(param): 10(ptr) Variable Function
+ 795: 11(int) FunctionCall 29(TDInstanceID()
+ Store 796(param) 795
+ 798: 9(fvec3) Load 153(t)
+ Store 797(param) 798
+ 799: 9(fvec3) FunctionCall 68(TDInstanceTexCoord(i1;vf3;) 796(param) 797(param)
+ ReturnValue 799
+ FunctionEnd
+157(TDInstanceColor(vf4;): 7(fvec4) Function None 54
+ 156(curColor): 8(ptr) FunctionParameter
+ 158: Label
+ 803(param): 12(ptr) Variable Function
+ 804(param): 8(ptr) Variable Function
+ 802: 11(int) FunctionCall 29(TDInstanceID()
+ Store 803(param) 802
+ 805: 7(fvec4) Load 156(curColor)
+ Store 804(param) 805
+ 806: 7(fvec4) FunctionCall 114(TDInstanceColor(i1;vf4;) 803(param) 804(param)
+ ReturnValue 806
+ FunctionEnd
+160(TDSkinnedDeform(vf4;): 7(fvec4) Function None 54
+ 159(pos): 8(ptr) FunctionParameter
+ 161: Label
+ 809: 7(fvec4) Load 159(pos)
+ ReturnValue 809
+ FunctionEnd
+163(TDSkinnedDeformVec(vf3;): 9(fvec3) Function None 131
+ 162(vec): 10(ptr) FunctionParameter
+ 164: Label
+ 812: 9(fvec3) Load 162(vec)
+ ReturnValue 812
+ FunctionEnd
+169(TDFastDeformTangent(vf3;vf4;vf3;): 9(fvec3) Function None 165
+ 166(oldNorm): 10(ptr) FunctionParameter
+ 167(oldTangent): 8(ptr) FunctionParameter
+168(deformedNorm): 10(ptr) FunctionParameter
+ 170: Label
+ 815: 7(fvec4) Load 167(oldTangent)
+ 816: 9(fvec3) VectorShuffle 815 815 0 1 2
+ ReturnValue 816
+ FunctionEnd
+172(TDBoneMat(i1;): 100 Function None 101
+ 171(index): 12(ptr) FunctionParameter
+ 173: Label
+ ReturnValue 533
+ FunctionEnd
+175(TDDeform(vf4;): 7(fvec4) Function None 54
+ 174(pos): 8(ptr) FunctionParameter
+ 176: Label
+ 821(param): 8(ptr) Variable Function
+ 824(param): 8(ptr) Variable Function
+ 822: 7(fvec4) Load 174(pos)
+ Store 821(param) 822
+ 823: 7(fvec4) FunctionCall 160(TDSkinnedDeform(vf4;) 821(param)
+ Store 174(pos) 823
+ 825: 7(fvec4) Load 174(pos)
+ Store 824(param) 825
+ 826: 7(fvec4) FunctionCall 129(TDInstanceDeform(vf4;) 824(param)
+ Store 174(pos) 826
+ 827: 7(fvec4) Load 174(pos)
+ ReturnValue 827
+ FunctionEnd
+180(TDDeform(i1;vf3;): 7(fvec4) Function None 177
+ 178(instanceID): 12(ptr) FunctionParameter
+ 179(p): 10(ptr) FunctionParameter
+ 181: Label
+ 830(pos): 8(ptr) Variable Function
+ 836(param): 8(ptr) Variable Function
+ 839(param): 12(ptr) Variable Function
+ 841(param): 8(ptr) Variable Function
+ 831: 9(fvec3) Load 179(p)
+ 832: 6(float) CompositeExtract 831 0
+ 833: 6(float) CompositeExtract 831 1
+ 834: 6(float) CompositeExtract 831 2
+ 835: 7(fvec4) CompositeConstruct 832 833 834 335
+ Store 830(pos) 835
+ 837: 7(fvec4) Load 830(pos)
+ Store 836(param) 837
+ 838: 7(fvec4) FunctionCall 160(TDSkinnedDeform(vf4;) 836(param)
+ Store 830(pos) 838
+ 840: 11(int) Load 178(instanceID)
+ Store 839(param) 840
+ 842: 7(fvec4) Load 830(pos)
+ Store 841(param) 842
+ 843: 7(fvec4) FunctionCall 118(TDInstanceDeform(i1;vf4;) 839(param) 841(param)
+ Store 830(pos) 843
+ 844: 7(fvec4) Load 830(pos)
+ ReturnValue 844
+ FunctionEnd
+183(TDDeform(vf3;): 7(fvec4) Function None 58
+ 182(pos): 10(ptr) FunctionParameter
+ 184: Label
+ 848(param): 12(ptr) Variable Function
+ 849(param): 10(ptr) Variable Function
+ 847: 11(int) FunctionCall 29(TDInstanceID()
+ Store 848(param) 847
+ 850: 9(fvec3) Load 182(pos)
+ Store 849(param) 850
+ 851: 7(fvec4) FunctionCall 180(TDDeform(i1;vf3;) 848(param) 849(param)
+ ReturnValue 851
+ FunctionEnd
+187(TDDeformVec(i1;vf3;): 9(fvec3) Function None 65
+ 185(instanceID): 12(ptr) FunctionParameter
+ 186(vec): 10(ptr) FunctionParameter
+ 188: Label
+ 854(param): 10(ptr) Variable Function
+ 857(param): 12(ptr) Variable Function
+ 859(param): 10(ptr) Variable Function
+ 855: 9(fvec3) Load 186(vec)
+ Store 854(param) 855
+ 856: 9(fvec3) FunctionCall 163(TDSkinnedDeformVec(vf3;) 854(param)
+ Store 186(vec) 856
+ 858: 11(int) Load 185(instanceID)
+ Store 857(param) 858
+ 860: 9(fvec3) Load 186(vec)
+ Store 859(param) 860
+ 861: 9(fvec3) FunctionCall 122(TDInstanceDeformVec(i1;vf3;) 857(param) 859(param)
+ Store 186(vec) 861
+ 862: 9(fvec3) Load 186(vec)
+ ReturnValue 862
+ FunctionEnd
+190(TDDeformVec(vf3;): 9(fvec3) Function None 131
+ 189(vec): 10(ptr) FunctionParameter
+ 191: Label
+ 866(param): 12(ptr) Variable Function
+ 867(param): 10(ptr) Variable Function
+ 865: 11(int) FunctionCall 29(TDInstanceID()
+ Store 866(param) 865
+ 868: 9(fvec3) Load 189(vec)
+ Store 867(param) 868
+ 869: 9(fvec3) FunctionCall 187(TDDeformVec(i1;vf3;) 866(param) 867(param)
+ ReturnValue 869
+ FunctionEnd
+194(TDDeformNorm(i1;vf3;): 9(fvec3) Function None 65
+ 192(instanceID): 12(ptr) FunctionParameter
+ 193(vec): 10(ptr) FunctionParameter
+ 195: Label
+ 872(param): 10(ptr) Variable Function
+ 875(param): 12(ptr) Variable Function
+ 877(param): 10(ptr) Variable Function
+ 873: 9(fvec3) Load 193(vec)
+ Store 872(param) 873
+ 874: 9(fvec3) FunctionCall 163(TDSkinnedDeformVec(vf3;) 872(param)
+ Store 193(vec) 874
+ 876: 11(int) Load 192(instanceID)
+ Store 875(param) 876
+ 878: 9(fvec3) Load 193(vec)
+ Store 877(param) 878
+ 879: 9(fvec3) FunctionCall 126(TDInstanceDeformNorm(i1;vf3;) 875(param) 877(param)
+ Store 193(vec) 879
+ 880: 9(fvec3) Load 193(vec)
+ ReturnValue 880
+ FunctionEnd
+197(TDDeformNorm(vf3;): 9(fvec3) Function None 131
+ 196(vec): 10(ptr) FunctionParameter
+ 198: Label
+ 884(param): 12(ptr) Variable Function
+ 885(param): 10(ptr) Variable Function
+ 883: 11(int) FunctionCall 29(TDInstanceID()
+ Store 884(param) 883
+ 886: 9(fvec3) Load 196(vec)
+ Store 885(param) 886
+ 887: 9(fvec3) FunctionCall 194(TDDeformNorm(i1;vf3;) 884(param) 885(param)
+ ReturnValue 887
+ FunctionEnd
+200(TDSkinnedDeformNorm(vf3;): 9(fvec3) Function None 131
+ 199(vec): 10(ptr) FunctionParameter
+ 201: Label
+ 890(param): 10(ptr) Variable Function
+ 891: 9(fvec3) Load 199(vec)
+ Store 890(param) 891
+ 892: 9(fvec3) FunctionCall 163(TDSkinnedDeformVec(vf3;) 890(param)
+ Store 199(vec) 892
+ 893: 9(fvec3) Load 199(vec)
+ ReturnValue 893
+ FunctionEnd
+// Module Version 10000
+// Generated by (magic number): 8000b
+// Id's are bound by 1297
+
+ Capability Shader
+ Capability Sampled1D
+ Capability SampledBuffer
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 336 429 458 485
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 460
+ Name 4 "main"
+ Name 11 "TDColor(vf4;"
+ Name 10 "color"
+ Name 13 "TDCheckOrderIndTrans("
+ Name 15 "TDCheckDiscard("
+ Name 18 "TDDither(vf4;"
+ Name 17 "color"
+ Name 26 "TDFrontFacing(vf3;vf3;"
+ Name 24 "pos"
+ Name 25 "normal"
+ Name 34 "TDAttenuateLight(i1;f1;"
+ Name 32 "index"
+ Name 33 "lightDist"
+ Name 38 "TDAlphaTest(f1;"
+ Name 37 "alpha"
+ Name 43 "TDHardShadow(i1;vf3;"
+ Name 41 "lightIndex"
+ Name 42 "worldSpacePos"
+ Name 50 "TDSoftShadow(i1;vf3;i1;i1;"
+ Name 46 "lightIndex"
+ Name 47 "worldSpacePos"
+ Name 48 "samples"
+ Name 49 "steps"
+ Name 54 "TDSoftShadow(i1;vf3;"
+ Name 52 "lightIndex"
+ Name 53 "worldSpacePos"
+ Name 58 "TDShadow(i1;vf3;"
+ Name 56 "lightIndex"
+ Name 57 "worldSpacePos"
+ Name 64 "iTDRadicalInverse_VdC(u1;"
+ Name 63 "bits"
+ Name 70 "iTDHammersley(u1;u1;"
+ Name 68 "i"
+ Name 69 "N"
+ Name 77 "iTDImportanceSampleGGX(vf2;f1;vf3;"
+ Name 74 "Xi"
+ Name 75 "roughness2"
+ Name 76 "N"
+ Name 83 "iTDDistributionGGX(vf3;vf3;f1;"
+ Name 80 "normal"
+ Name 81 "half_vector"
+ Name 82 "roughness2"
+ Name 88 "iTDCalcF(vf3;f1;"
+ Name 86 "F0"
+ Name 87 "VdotH"
+ Name 94 "iTDCalcG(f1;f1;f1;"
+ Name 91 "NdotL"
+ Name 92 "NdotV"
+ Name 93 "k"
+ Name 96 "TDPBRResult"
+ MemberName 96(TDPBRResult) 0 "diffuse"
+ MemberName 96(TDPBRResult) 1 "specular"
+ MemberName 96(TDPBRResult) 2 "shadowStrength"
+ Name 107 "TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;"
+ Name 98 "index"
+ Name 99 "diffuseColor"
+ Name 100 "specularColor"
+ Name 101 "worldSpacePos"
+ Name 102 "normal"
+ Name 103 "shadowStrength"
+ Name 104 "shadowColor"
+ Name 105 "camVector"
+ Name 106 "roughness"
+ Name 122 "TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;"
+ Name 110 "diffuseContrib"
+ Name 111 "specularContrib"
+ Name 112 "shadowStrengthOut"
+ Name 113 "index"
+ Name 114 "diffuseColor"
+ Name 115 "specularColor"
+ Name 116 "worldSpacePos"
+ Name 117 "normal"
+ Name 118 "shadowStrength"
+ Name 119 "shadowColor"
+ Name 120 "camVector"
+ Name 121 "roughness"
+ Name 136 "TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;"
+ Name 125 "diffuseContrib"
+ Name 126 "specularContrib"
+ Name 127 "index"
+ Name 128 "diffuseColor"
+ Name 129 "specularColor"
+ Name 130 "worldSpacePos"
+ Name 131 "normal"
+ Name 132 "shadowStrength"
+ Name 133 "shadowColor"
+ Name 134 "camVector"
+ Name 135 "roughness"
+ Name 146 "TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1;"
+ Name 139 "index"
+ Name 140 "diffuseColor"
+ Name 141 "specularColor"
+ Name 142 "normal"
+ Name 143 "camVector"
+ Name 144 "roughness"
+ Name 145 "ambientOcclusion"
+ Name 158 "TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1;"
+ Name 149 "diffuseContrib"
+ Name 150 "specularContrib"
+ Name 151 "index"
+ Name 152 "diffuseColor"
+ Name 153 "specularColor"
+ Name 154 "normal"
+ Name 155 "camVector"
+ Name 156 "roughness"
+ Name 157 "ambientOcclusion"
+ Name 160 "TDPhongResult"
+ MemberName 160(TDPhongResult) 0 "diffuse"
+ MemberName 160(TDPhongResult) 1 "specular"
+ MemberName 160(TDPhongResult) 2 "specular2"
+ MemberName 160(TDPhongResult) 3 "shadowStrength"
+ Name 170 "TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1;"
+ Name 162 "index"
+ Name 163 "worldSpacePos"
+ Name 164 "normal"
+ Name 165 "shadowStrength"
+ Name 166 "shadowColor"
+ Name 167 "camVector"
+ Name 168 "shininess"
+ Name 169 "shininess2"
+ Name 185 "TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1;"
+ Name 173 "diffuseContrib"
+ Name 174 "specularContrib"
+ Name 175 "specularContrib2"
+ Name 176 "shadowStrengthOut"
+ Name 177 "index"
+ Name 178 "worldSpacePos"
+ Name 179 "normal"
+ Name 180 "shadowStrength"
+ Name 181 "shadowColor"
+ Name 182 "camVector"
+ Name 183 "shininess"
+ Name 184 "shininess2"
+ Name 199 "TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1;"
+ Name 188 "diffuseContrib"
+ Name 189 "specularContrib"
+ Name 190 "specularContrib2"
+ Name 191 "index"
+ Name 192 "worldSpacePos"
+ Name 193 "normal"
+ Name 194 "shadowStrength"
+ Name 195 "shadowColor"
+ Name 196 "camVector"
+ Name 197 "shininess"
+ Name 198 "shininess2"
+ Name 211 "TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;"
+ Name 202 "diffuseContrib"
+ Name 203 "specularContrib"
+ Name 204 "index"
+ Name 205 "worldSpacePos"
+ Name 206 "normal"
+ Name 207 "shadowStrength"
+ Name 208 "shadowColor"
+ Name 209 "camVector"
+ Name 210 "shininess"
+ Name 223 "TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1;"
+ Name 214 "diffuseContrib"
+ Name 215 "specularContrib"
+ Name 216 "specularContrib2"
+ Name 217 "index"
+ Name 218 "worldSpacePos"
+ Name 219 "normal"
+ Name 220 "camVector"
+ Name 221 "shininess"
+ Name 222 "shininess2"
+ Name 233 "TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1;"
+ Name 226 "diffuseContrib"
+ Name 227 "specularContrib"
+ Name 228 "index"
+ Name 229 "worldSpacePos"
+ Name 230 "normal"
+ Name 231 "camVector"
+ Name 232 "shininess"
+ Name 240 "TDLighting(vf3;i1;vf3;vf3;"
+ Name 236 "diffuseContrib"
+ Name 237 "index"
+ Name 238 "worldSpacePos"
+ Name 239 "normal"
+ Name 249 "TDLighting(vf3;i1;vf3;vf3;f1;vf3;"
+ Name 243 "diffuseContrib"
+ Name 244 "index"
+ Name 245 "worldSpacePos"
+ Name 246 "normal"
+ Name 247 "shadowStrength"
+ Name 248 "shadowColor"
+ Name 255 "TDProjMap(i1;vf3;vf4;"
+ Name 252 "index"
+ Name 253 "worldSpacePos"
+ Name 254 "defaultColor"
+ Name 261 "TDFog(vf4;vf3;i1;"
+ Name 258 "color"
+ Name 259 "lightingSpacePosition"
+ Name 260 "cameraIndex"
+ Name 266 "TDFog(vf4;vf3;"
+ Name 264 "color"
+ Name 265 "lightingSpacePosition"
+ Name 271 "TDInstanceTexCoord(i1;vf3;"
+ Name 269 "index"
+ Name 270 "t"
+ Name 275 "TDInstanceActive(i1;"
+ Name 274 "index"
+ Name 281 "iTDInstanceTranslate(i1;b1;"
+ Name 279 "index"
+ Name 280 "instanceActive"
+ Name 285 "TDInstanceTranslate(i1;"
+ Name 284 "index"
+ Name 290 "TDInstanceRotateMat(i1;"
+ Name 289 "index"
+ Name 293 "TDInstanceScale(i1;"
+ Name 292 "index"
+ Name 296 "TDInstancePivot(i1;"
+ Name 295 "index"
+ Name 299 "TDInstanceRotTo(i1;"
+ Name 298 "index"
+ Name 302 "TDInstanceRotUp(i1;"
+ Name 301 "index"
+ Name 307 "TDInstanceMat(i1;"
+ Name 306 "id"
+ Name 310 "TDInstanceMat3(i1;"
+ Name 309 "id"
+ Name 313 "TDInstanceMat3ForNorm(i1;"
+ Name 312 "id"
+ Name 318 "TDInstanceColor(i1;vf4;"
+ Name 316 "index"
+ Name 317 "curColor"
+ Name 321 "TDOutputSwizzle(vf4;"
+ Name 320 "c"
+ Name 327 "TDOutputSwizzle(vu4;"
+ Name 326 "c"
+ Name 330 "outcol"
+ Name 333 "texCoord0"
+ Name 334 "Vertex"
+ MemberName 334(Vertex) 0 "color"
+ MemberName 334(Vertex) 1 "worldSpacePos"
+ MemberName 334(Vertex) 2 "texCoord0"
+ MemberName 334(Vertex) 3 "cameraIndex"
+ MemberName 334(Vertex) 4 "instance"
+ Name 336 "iVert"
+ Name 341 "actualTexZ"
+ Name 349 "instanceLoop"
+ Name 359 "colorMapColor"
+ Name 363 "sColorMap"
+ Name 367 "red"
+ Name 374 "gl_DefaultUniformBlock"
+ MemberName 374(gl_DefaultUniformBlock) 0 "uTDInstanceIDOffset"
+ MemberName 374(gl_DefaultUniformBlock) 1 "uTDNumInstances"
+ MemberName 374(gl_DefaultUniformBlock) 2 "uTDAlphaTestVal"
+ MemberName 374(gl_DefaultUniformBlock) 3 "uConstant"
+ MemberName 374(gl_DefaultUniformBlock) 4 "uShadowStrength"
+ MemberName 374(gl_DefaultUniformBlock) 5 "uShadowColor"
+ MemberName 374(gl_DefaultUniformBlock) 6 "uDiffuseColor"
+ MemberName 374(gl_DefaultUniformBlock) 7 "uAmbientColor"
+ Name 376 ""
+ Name 401 "alpha"
+ Name 409 "param"
+ Name 422 "param"
+ Name 429 "oFragColor"
+ Name 430 "param"
+ Name 435 "i"
+ Name 452 "d"
+ Name 456 "sTDNoiseMap"
+ Name 458 "gl_FragCoord"
+ Name 485 "gl_FrontFacing"
+ Name 555 "param"
+ Name 561 "a"
+ Name 563 "phi"
+ Name 568 "cosTheta"
+ Name 582 "sinTheta"
+ Name 588 "H"
+ Name 601 "upVector"
+ Name 612 "tangentX"
+ Name 617 "tangentY"
+ Name 621 "worldResult"
+ Name 639 "NdotH"
+ Name 645 "alpha2"
+ Name 649 "denom"
+ Name 686 "Gl"
+ Name 694 "Gv"
+ Name 708 "res"
+ Name 712 "res"
+ Name 713 "param"
+ Name 715 "param"
+ Name 717 "param"
+ Name 719 "param"
+ Name 721 "param"
+ Name 723 "param"
+ Name 725 "param"
+ Name 727 "param"
+ Name 729 "param"
+ Name 738 "res"
+ Name 739 "param"
+ Name 741 "param"
+ Name 743 "param"
+ Name 745 "param"
+ Name 747 "param"
+ Name 749 "param"
+ Name 751 "param"
+ Name 753 "param"
+ Name 755 "param"
+ Name 762 "res"
+ Name 766 "res"
+ Name 767 "param"
+ Name 769 "param"
+ Name 771 "param"
+ Name 773 "param"
+ Name 775 "param"
+ Name 777 "param"
+ Name 779 "param"
+ Name 790 "res"
+ Name 804 "res"
+ Name 822 "res"
+ Name 838 "res"
+ Name 852 "res"
+ Name 868 "res"
+ Name 882 "res"
+ Name 894 "res"
+ Name 917 "param"
+ Name 919 "param"
+ Name 921 "param"
+ Name 925 "coord"
+ Name 927 "samp"
+ Name 931 "sTDInstanceTexCoord"
+ Name 936 "v"
+ Name 955 "coord"
+ Name 957 "samp"
+ Name 958 "sTDInstanceT"
+ Name 963 "v"
+ Name 970 "origIndex"
+ Name 976 "coord"
+ Name 978 "samp"
+ Name 983 "v"
+ Name 1003 "coord"
+ Name 1005 "samp"
+ Name 1010 "v"
+ Name 1027 "v"
+ Name 1029 "m"
+ Name 1039 "v"
+ Name 1047 "v"
+ Name 1055 "v"
+ Name 1063 "v"
+ Name 1067 "instanceActive"
+ Name 1069 "t"
+ Name 1070 "param"
+ Name 1072 "param"
+ Name 1082 "m"
+ Name 1088 "tt"
+ Name 1201 "m"
+ Name 1205 "m"
+ Name 1206 "param"
+ Name 1216 "coord"
+ Name 1218 "samp"
+ Name 1219 "sTDInstanceColor"
+ Name 1224 "v"
+ Name 1253 "TDMatrix"
+ MemberName 1253(TDMatrix) 0 "world"
+ MemberName 1253(TDMatrix) 1 "worldInverse"
+ MemberName 1253(TDMatrix) 2 "worldCam"
+ MemberName 1253(TDMatrix) 3 "worldCamInverse"
+ MemberName 1253(TDMatrix) 4 "cam"
+ MemberName 1253(TDMatrix) 5 "camInverse"
+ MemberName 1253(TDMatrix) 6 "camProj"
+ MemberName 1253(TDMatrix) 7 "camProjInverse"
+ MemberName 1253(TDMatrix) 8 "proj"
+ MemberName 1253(TDMatrix) 9 "projInverse"
+ MemberName 1253(TDMatrix) 10 "worldCamProj"
+ MemberName 1253(TDMatrix) 11 "worldCamProjInverse"
+ MemberName 1253(TDMatrix) 12 "quadReproject"
+ MemberName 1253(TDMatrix) 13 "worldForNormals"
+ MemberName 1253(TDMatrix) 14 "camForNormals"
+ MemberName 1253(TDMatrix) 15 "worldCamForNormals"
+ Name 1255 "TDMatricesBlock"
+ MemberName 1255(TDMatricesBlock) 0 "uTDMats"
+ Name 1257 ""
+ Name 1258 "TDCameraInfo"
+ MemberName 1258(TDCameraInfo) 0 "nearFar"
+ MemberName 1258(TDCameraInfo) 1 "fog"
+ MemberName 1258(TDCameraInfo) 2 "fogColor"
+ MemberName 1258(TDCameraInfo) 3 "renderTOPCameraIndex"
+ Name 1260 "TDCameraInfoBlock"
+ MemberName 1260(TDCameraInfoBlock) 0 "uTDCamInfos"
+ Name 1262 ""
+ Name 1263 "TDGeneral"
+ MemberName 1263(TDGeneral) 0 "ambientColor"
+ MemberName 1263(TDGeneral) 1 "nearFar"
+ MemberName 1263(TDGeneral) 2 "viewport"
+ MemberName 1263(TDGeneral) 3 "viewportRes"
+ MemberName 1263(TDGeneral) 4 "fog"
+ MemberName 1263(TDGeneral) 5 "fogColor"
+ Name 1264 "TDGeneralBlock"
+ MemberName 1264(TDGeneralBlock) 0 "uTDGeneral"
+ Name 1266 ""
+ Name 1270 "sTDSineLookup"
+ Name 1271 "sTDWhite2D"
+ Name 1275 "sTDWhite3D"
+ Name 1276 "sTDWhite2DArray"
+ Name 1280 "sTDWhiteCube"
+ Name 1281 "TDLight"
+ MemberName 1281(TDLight) 0 "position"
+ MemberName 1281(TDLight) 1 "direction"
+ MemberName 1281(TDLight) 2 "diffuse"
+ MemberName 1281(TDLight) 3 "nearFar"
+ MemberName 1281(TDLight) 4 "lightSize"
+ MemberName 1281(TDLight) 5 "misc"
+ MemberName 1281(TDLight) 6 "coneLookupScaleBias"
+ MemberName 1281(TDLight) 7 "attenScaleBiasRoll"
+ MemberName 1281(TDLight) 8 "shadowMapMatrix"
+ MemberName 1281(TDLight) 9 "shadowMapCamMatrix"
+ MemberName 1281(TDLight) 10 "shadowMapRes"
+ MemberName 1281(TDLight) 11 "projMapMatrix"
+ Name 1283 "TDLightBlock"
+ MemberName 1283(TDLightBlock) 0 "uTDLights"
+ Name 1285 ""
+ Name 1286 "TDEnvLight"
+ MemberName 1286(TDEnvLight) 0 "color"
+ MemberName 1286(TDEnvLight) 1 "rotate"
+ Name 1288 "TDEnvLightBlock"
+ MemberName 1288(TDEnvLightBlock) 0 "uTDEnvLights"
+ Name 1290 ""
+ Name 1293 "TDEnvLightBuffer"
+ MemberName 1293(TDEnvLightBuffer) 0 "shCoeffs"
+ Name 1296 "uTDEnvLightBuffers"
+ MemberDecorate 334(Vertex) 3 Flat
+ MemberDecorate 334(Vertex) 4 Flat
+ Decorate 334(Vertex) Block
+ Decorate 336(iVert) Location 0
+ Decorate 363(sColorMap) DescriptorSet 0
+ Decorate 363(sColorMap) Binding 2
+ MemberDecorate 374(gl_DefaultUniformBlock) 0 Offset 0
+ MemberDecorate 374(gl_DefaultUniformBlock) 1 Offset 4
+ MemberDecorate 374(gl_DefaultUniformBlock) 2 Offset 8
+ MemberDecorate 374(gl_DefaultUniformBlock) 3 Offset 16
+ MemberDecorate 374(gl_DefaultUniformBlock) 4 Offset 28
+ MemberDecorate 374(gl_DefaultUniformBlock) 5 Offset 32
+ MemberDecorate 374(gl_DefaultUniformBlock) 6 Offset 48
+ MemberDecorate 374(gl_DefaultUniformBlock) 7 Offset 64
+ Decorate 374(gl_DefaultUniformBlock) Block
+ Decorate 376 DescriptorSet 0
+ Decorate 376 Binding 0
+ Decorate 429(oFragColor) Location 0
+ Decorate 456(sTDNoiseMap) DescriptorSet 0
+ Decorate 456(sTDNoiseMap) Binding 3
+ Decorate 458(gl_FragCoord) BuiltIn FragCoord
+ Decorate 485(gl_FrontFacing) BuiltIn FrontFacing
+ Decorate 931(sTDInstanceTexCoord) DescriptorSet 0
+ Decorate 931(sTDInstanceTexCoord) Binding 16
+ Decorate 958(sTDInstanceT) DescriptorSet 0
+ Decorate 958(sTDInstanceT) Binding 15
+ Decorate 1219(sTDInstanceColor) DescriptorSet 0
+ Decorate 1219(sTDInstanceColor) Binding 17
+ MemberDecorate 1253(TDMatrix) 0 ColMajor
+ MemberDecorate 1253(TDMatrix) 0 Offset 0
+ MemberDecorate 1253(TDMatrix) 0 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 1 ColMajor
+ MemberDecorate 1253(TDMatrix) 1 Offset 64
+ MemberDecorate 1253(TDMatrix) 1 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 2 ColMajor
+ MemberDecorate 1253(TDMatrix) 2 Offset 128
+ MemberDecorate 1253(TDMatrix) 2 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 3 ColMajor
+ MemberDecorate 1253(TDMatrix) 3 Offset 192
+ MemberDecorate 1253(TDMatrix) 3 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 4 ColMajor
+ MemberDecorate 1253(TDMatrix) 4 Offset 256
+ MemberDecorate 1253(TDMatrix) 4 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 5 ColMajor
+ MemberDecorate 1253(TDMatrix) 5 Offset 320
+ MemberDecorate 1253(TDMatrix) 5 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 6 ColMajor
+ MemberDecorate 1253(TDMatrix) 6 Offset 384
+ MemberDecorate 1253(TDMatrix) 6 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 7 ColMajor
+ MemberDecorate 1253(TDMatrix) 7 Offset 448
+ MemberDecorate 1253(TDMatrix) 7 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 8 ColMajor
+ MemberDecorate 1253(TDMatrix) 8 Offset 512
+ MemberDecorate 1253(TDMatrix) 8 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 9 ColMajor
+ MemberDecorate 1253(TDMatrix) 9 Offset 576
+ MemberDecorate 1253(TDMatrix) 9 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 10 ColMajor
+ MemberDecorate 1253(TDMatrix) 10 Offset 640
+ MemberDecorate 1253(TDMatrix) 10 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 11 ColMajor
+ MemberDecorate 1253(TDMatrix) 11 Offset 704
+ MemberDecorate 1253(TDMatrix) 11 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 12 ColMajor
+ MemberDecorate 1253(TDMatrix) 12 Offset 768
+ MemberDecorate 1253(TDMatrix) 12 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 13 ColMajor
+ MemberDecorate 1253(TDMatrix) 13 Offset 832
+ MemberDecorate 1253(TDMatrix) 13 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 14 ColMajor
+ MemberDecorate 1253(TDMatrix) 14 Offset 880
+ MemberDecorate 1253(TDMatrix) 14 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 15 ColMajor
+ MemberDecorate 1253(TDMatrix) 15 Offset 928
+ MemberDecorate 1253(TDMatrix) 15 MatrixStride 16
+ Decorate 1254 ArrayStride 976
+ MemberDecorate 1255(TDMatricesBlock) 0 Offset 0
+ Decorate 1255(TDMatricesBlock) Block
+ Decorate 1257 DescriptorSet 0
+ Decorate 1257 Binding 1
+ MemberDecorate 1258(TDCameraInfo) 0 Offset 0
+ MemberDecorate 1258(TDCameraInfo) 1 Offset 16
+ MemberDecorate 1258(TDCameraInfo) 2 Offset 32
+ MemberDecorate 1258(TDCameraInfo) 3 Offset 48
+ Decorate 1259 ArrayStride 64
+ MemberDecorate 1260(TDCameraInfoBlock) 0 Offset 0
+ Decorate 1260(TDCameraInfoBlock) Block
+ Decorate 1262 DescriptorSet 0
+ Decorate 1262 Binding 0
+ MemberDecorate 1263(TDGeneral) 0 Offset 0
+ MemberDecorate 1263(TDGeneral) 1 Offset 16
+ MemberDecorate 1263(TDGeneral) 2 Offset 32
+ MemberDecorate 1263(TDGeneral) 3 Offset 48
+ MemberDecorate 1263(TDGeneral) 4 Offset 64
+ MemberDecorate 1263(TDGeneral) 5 Offset 80
+ MemberDecorate 1264(TDGeneralBlock) 0 Offset 0
+ Decorate 1264(TDGeneralBlock) Block
+ Decorate 1266 DescriptorSet 0
+ Decorate 1266 Binding 0
+ Decorate 1270(sTDSineLookup) DescriptorSet 0
+ Decorate 1270(sTDSineLookup) Binding 0
+ Decorate 1271(sTDWhite2D) DescriptorSet 0
+ Decorate 1271(sTDWhite2D) Binding 0
+ Decorate 1275(sTDWhite3D) DescriptorSet 0
+ Decorate 1275(sTDWhite3D) Binding 0
+ Decorate 1276(sTDWhite2DArray) DescriptorSet 0
+ Decorate 1276(sTDWhite2DArray) Binding 0
+ Decorate 1280(sTDWhiteCube) DescriptorSet 0
+ Decorate 1280(sTDWhiteCube) Binding 0
+ MemberDecorate 1281(TDLight) 0 Offset 0
+ MemberDecorate 1281(TDLight) 1 Offset 16
+ MemberDecorate 1281(TDLight) 2 Offset 32
+ MemberDecorate 1281(TDLight) 3 Offset 48
+ MemberDecorate 1281(TDLight) 4 Offset 64
+ MemberDecorate 1281(TDLight) 5 Offset 80
+ MemberDecorate 1281(TDLight) 6 Offset 96
+ MemberDecorate 1281(TDLight) 7 Offset 112
+ MemberDecorate 1281(TDLight) 8 ColMajor
+ MemberDecorate 1281(TDLight) 8 Offset 128
+ MemberDecorate 1281(TDLight) 8 MatrixStride 16
+ MemberDecorate 1281(TDLight) 9 ColMajor
+ MemberDecorate 1281(TDLight) 9 Offset 192
+ MemberDecorate 1281(TDLight) 9 MatrixStride 16
+ MemberDecorate 1281(TDLight) 10 Offset 256
+ MemberDecorate 1281(TDLight) 11 ColMajor
+ MemberDecorate 1281(TDLight) 11 Offset 272
+ MemberDecorate 1281(TDLight) 11 MatrixStride 16
+ Decorate 1282 ArrayStride 336
+ MemberDecorate 1283(TDLightBlock) 0 Offset 0
+ Decorate 1283(TDLightBlock) Block
+ Decorate 1285 DescriptorSet 0
+ Decorate 1285 Binding 0
+ MemberDecorate 1286(TDEnvLight) 0 Offset 0
+ MemberDecorate 1286(TDEnvLight) 1 ColMajor
+ MemberDecorate 1286(TDEnvLight) 1 Offset 16
+ MemberDecorate 1286(TDEnvLight) 1 MatrixStride 16
+ Decorate 1287 ArrayStride 64
+ MemberDecorate 1288(TDEnvLightBlock) 0 Offset 0
+ Decorate 1288(TDEnvLightBlock) Block
+ Decorate 1290 DescriptorSet 0
+ Decorate 1290 Binding 0
+ Decorate 1292 ArrayStride 16
+ MemberDecorate 1293(TDEnvLightBuffer) 0 Restrict
+ MemberDecorate 1293(TDEnvLightBuffer) 0 NonWritable
+ MemberDecorate 1293(TDEnvLightBuffer) 0 Offset 0
+ Decorate 1293(TDEnvLightBuffer) BufferBlock
+ Decorate 1296(uTDEnvLightBuffers) DescriptorSet 0
+ Decorate 1296(uTDEnvLightBuffers) Binding 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)
+ 20: TypeVector 6(float) 3
+ 21: TypePointer Function 20(fvec3)
+ 22: TypeBool
+ 23: TypeFunction 22(bool) 21(ptr) 21(ptr)
+ 28: TypeInt 32 1
+ 29: TypePointer Function 28(int)
+ 30: TypePointer Function 6(float)
+ 31: TypeFunction 6(float) 29(ptr) 30(ptr)
+ 36: TypeFunction 2 30(ptr)
+ 40: TypeFunction 6(float) 29(ptr) 21(ptr)
+ 45: TypeFunction 6(float) 29(ptr) 21(ptr) 29(ptr) 29(ptr)
+ 60: TypeInt 32 0
+ 61: TypePointer Function 60(int)
+ 62: TypeFunction 6(float) 61(ptr)
+ 66: TypeVector 6(float) 2
+ 67: TypeFunction 66(fvec2) 61(ptr) 61(ptr)
+ 72: TypePointer Function 66(fvec2)
+ 73: TypeFunction 20(fvec3) 72(ptr) 30(ptr) 21(ptr)
+ 79: TypeFunction 6(float) 21(ptr) 21(ptr) 30(ptr)
+ 85: TypeFunction 20(fvec3) 21(ptr) 30(ptr)
+ 90: TypeFunction 6(float) 30(ptr) 30(ptr) 30(ptr)
+ 96(TDPBRResult): TypeStruct 20(fvec3) 20(fvec3) 6(float)
+ 97: TypeFunction 96(TDPBRResult) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr)
+ 109: TypeFunction 2 21(ptr) 21(ptr) 30(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr)
+ 124: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr)
+ 138: TypeFunction 96(TDPBRResult) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr)
+ 148: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr)
+160(TDPhongResult): TypeStruct 20(fvec3) 20(fvec3) 20(fvec3) 6(float)
+ 161: TypeFunction 160(TDPhongResult) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr)
+ 172: TypeFunction 2 21(ptr) 21(ptr) 21(ptr) 30(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr)
+ 187: TypeFunction 2 21(ptr) 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr)
+ 201: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr)
+ 213: TypeFunction 2 21(ptr) 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr)
+ 225: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr)
+ 235: TypeFunction 2 21(ptr) 29(ptr) 21(ptr) 21(ptr)
+ 242: TypeFunction 2 21(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr)
+ 251: TypeFunction 7(fvec4) 29(ptr) 21(ptr) 8(ptr)
+ 257: TypeFunction 7(fvec4) 8(ptr) 21(ptr) 29(ptr)
+ 263: TypeFunction 7(fvec4) 8(ptr) 21(ptr)
+ 268: TypeFunction 20(fvec3) 29(ptr) 21(ptr)
+ 273: TypeFunction 22(bool) 29(ptr)
+ 277: TypePointer Function 22(bool)
+ 278: TypeFunction 20(fvec3) 29(ptr) 277(ptr)
+ 283: TypeFunction 20(fvec3) 29(ptr)
+ 287: TypeMatrix 20(fvec3) 3
+ 288: TypeFunction 287 29(ptr)
+ 304: TypeMatrix 7(fvec4) 4
+ 305: TypeFunction 304 29(ptr)
+ 315: TypeFunction 7(fvec4) 29(ptr) 8(ptr)
+ 323: TypeVector 60(int) 4
+ 324: TypePointer Function 323(ivec4)
+ 325: TypeFunction 323(ivec4) 324(ptr)
+ 331: 6(float) Constant 0
+ 332: 7(fvec4) ConstantComposite 331 331 331 331
+ 334(Vertex): TypeStruct 7(fvec4) 20(fvec3) 20(fvec3) 28(int) 28(int)
+ 335: TypePointer Input 334(Vertex)
+ 336(iVert): 335(ptr) Variable Input
+ 337: 28(int) Constant 2
+ 338: TypePointer Input 20(fvec3)
+ 342: 60(int) Constant 2
+ 347: 6(float) Constant 1157627904
+ 353: 28(int) Constant 2048
+ 360: TypeImage 6(float) 2D array sampled format:Unknown
+ 361: TypeSampledImage 360
+ 362: TypePointer UniformConstant 361
+ 363(sColorMap): 362(ptr) Variable UniformConstant
+374(gl_DefaultUniformBlock): TypeStruct 28(int) 28(int) 6(float) 20(fvec3) 6(float) 20(fvec3) 7(fvec4) 7(fvec4)
+ 375: TypePointer Uniform 374(gl_DefaultUniformBlock)
+ 376: 375(ptr) Variable Uniform
+ 377: 28(int) Constant 3
+ 378: TypePointer Uniform 20(fvec3)
+ 381: 28(int) Constant 0
+ 382: TypePointer Input 7(fvec4)
+ 390: 60(int) Constant 0
+ 393: 60(int) Constant 1
+ 402: 60(int) Constant 3
+ 403: TypePointer Input 6(float)
+ 427: TypeArray 7(fvec4) 393
+ 428: TypePointer Output 427
+ 429(oFragColor): 428(ptr) Variable Output
+ 433: TypePointer Output 7(fvec4)
+ 436: 28(int) Constant 1
+ 453: TypeImage 6(float) 2D sampled format:Unknown
+ 454: TypeSampledImage 453
+ 455: TypePointer UniformConstant 454
+456(sTDNoiseMap): 455(ptr) Variable UniformConstant
+458(gl_FragCoord): 382(ptr) Variable Input
+ 461: 6(float) Constant 1132462080
+ 466: 6(float) Constant 1056964608
+ 484: TypePointer Input 22(bool)
+485(gl_FrontFacing): 484(ptr) Variable Input
+ 489: 6(float) Constant 1065353216
+ 501: 60(int) Constant 16
+ 507: 60(int) Constant 1431655765
+ 511: 60(int) Constant 2863311530
+ 516: 60(int) Constant 858993459
+ 520: 60(int) Constant 3435973836
+ 525: 60(int) Constant 252645135
+ 527: 60(int) Constant 4
+ 530: 60(int) Constant 4042322160
+ 535: 60(int) Constant 16711935
+ 537: 60(int) Constant 8
+ 540: 60(int) Constant 4278255360
+ 546: 6(float) Constant 796917760
+ 564: 6(float) Constant 1086918619
+ 605: 6(float) Constant 1065336439
+ 607: 20(fvec3) ConstantComposite 331 331 489
+ 608: 20(fvec3) ConstantComposite 489 331 331
+ 609: TypeVector 22(bool) 3
+ 643: 6(float) Constant 897988541
+ 657: 6(float) Constant 841731191
+ 661: 6(float) Constant 1078530011
+ 670: 20(fvec3) ConstantComposite 489 489 489
+ 673: 6(float) Constant 1073741824
+ 674: 6(float) Constant 3232874585
+ 677: 6(float) Constant 1088386572
+ 707: TypePointer Function 96(TDPBRResult)
+ 789: TypePointer Function 160(TDPhongResult)
+ 791: 20(fvec3) ConstantComposite 331 331 331
+ 928: TypeImage 6(float) Buffer sampled format:Unknown
+ 929: TypeSampledImage 928
+ 930: TypePointer UniformConstant 929
+931(sTDInstanceTexCoord): 930(ptr) Variable UniformConstant
+ 950: TypePointer Uniform 28(int)
+958(sTDInstanceT): 930(ptr) Variable UniformConstant
+ 1028: TypePointer Function 287
+ 1030: 20(fvec3) ConstantComposite 331 489 331
+ 1031: 287 ConstantComposite 608 1030 607
+ 1068: 22(bool) ConstantTrue
+ 1079: 304 ConstantComposite 332 332 332 332
+ 1081: TypePointer Function 304
+ 1083: 7(fvec4) ConstantComposite 489 331 331 331
+ 1084: 7(fvec4) ConstantComposite 331 489 331 331
+ 1085: 7(fvec4) ConstantComposite 331 331 489 331
+ 1086: 7(fvec4) ConstantComposite 331 331 331 489
+ 1087: 304 ConstantComposite 1083 1084 1085 1086
+1219(sTDInstanceColor): 930(ptr) Variable UniformConstant
+ 1253(TDMatrix): TypeStruct 304 304 304 304 304 304 304 304 304 304 304 304 304 287 287 287
+ 1254: TypeArray 1253(TDMatrix) 393
+1255(TDMatricesBlock): TypeStruct 1254
+ 1256: TypePointer Uniform 1255(TDMatricesBlock)
+ 1257: 1256(ptr) Variable Uniform
+1258(TDCameraInfo): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 28(int)
+ 1259: TypeArray 1258(TDCameraInfo) 393
+1260(TDCameraInfoBlock): TypeStruct 1259
+ 1261: TypePointer Uniform 1260(TDCameraInfoBlock)
+ 1262: 1261(ptr) Variable Uniform
+ 1263(TDGeneral): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4)
+1264(TDGeneralBlock): TypeStruct 1263(TDGeneral)
+ 1265: TypePointer Uniform 1264(TDGeneralBlock)
+ 1266: 1265(ptr) Variable Uniform
+ 1267: TypeImage 6(float) 1D sampled format:Unknown
+ 1268: TypeSampledImage 1267
+ 1269: TypePointer UniformConstant 1268
+1270(sTDSineLookup): 1269(ptr) Variable UniformConstant
+1271(sTDWhite2D): 455(ptr) Variable UniformConstant
+ 1272: TypeImage 6(float) 3D sampled format:Unknown
+ 1273: TypeSampledImage 1272
+ 1274: TypePointer UniformConstant 1273
+1275(sTDWhite3D): 1274(ptr) Variable UniformConstant
+1276(sTDWhite2DArray): 362(ptr) Variable UniformConstant
+ 1277: TypeImage 6(float) Cube sampled format:Unknown
+ 1278: TypeSampledImage 1277
+ 1279: TypePointer UniformConstant 1278
+1280(sTDWhiteCube): 1279(ptr) Variable UniformConstant
+ 1281(TDLight): TypeStruct 7(fvec4) 20(fvec3) 20(fvec3) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 304 304 7(fvec4) 304
+ 1282: TypeArray 1281(TDLight) 393
+1283(TDLightBlock): TypeStruct 1282
+ 1284: TypePointer Uniform 1283(TDLightBlock)
+ 1285: 1284(ptr) Variable Uniform
+1286(TDEnvLight): TypeStruct 20(fvec3) 287
+ 1287: TypeArray 1286(TDEnvLight) 393
+1288(TDEnvLightBlock): TypeStruct 1287
+ 1289: TypePointer Uniform 1288(TDEnvLightBlock)
+ 1290: 1289(ptr) Variable Uniform
+ 1291: 60(int) Constant 9
+ 1292: TypeArray 20(fvec3) 1291
+1293(TDEnvLightBuffer): TypeStruct 1292
+ 1294: TypeArray 1293(TDEnvLightBuffer) 393
+ 1295: TypePointer Uniform 1294
+1296(uTDEnvLightBuffers): 1295(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 330(outcol): 8(ptr) Variable Function
+ 333(texCoord0): 21(ptr) Variable Function
+ 341(actualTexZ): 30(ptr) Variable Function
+349(instanceLoop): 30(ptr) Variable Function
+359(colorMapColor): 8(ptr) Variable Function
+ 367(red): 30(ptr) Variable Function
+ 401(alpha): 30(ptr) Variable Function
+ 409(param): 8(ptr) Variable Function
+ 422(param): 30(ptr) Variable Function
+ 430(param): 8(ptr) Variable Function
+ 435(i): 29(ptr) Variable Function
+ 329: 2 FunctionCall 15(TDCheckDiscard()
+ Store 330(outcol) 332
+ 339: 338(ptr) AccessChain 336(iVert) 337
+ 340: 20(fvec3) Load 339
+ Store 333(texCoord0) 340
+ 343: 30(ptr) AccessChain 333(texCoord0) 342
+ 344: 6(float) Load 343
+ 345: 28(int) ConvertFToS 344
+ 346: 6(float) ConvertSToF 345
+ 348: 6(float) FMod 346 347
+ Store 341(actualTexZ) 348
+ 350: 30(ptr) AccessChain 333(texCoord0) 342
+ 351: 6(float) Load 350
+ 352: 28(int) ConvertFToS 351
+ 354: 28(int) SDiv 352 353
+ 355: 6(float) ConvertSToF 354
+ 356: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 355
+ Store 349(instanceLoop) 356
+ 357: 6(float) Load 341(actualTexZ)
+ 358: 30(ptr) AccessChain 333(texCoord0) 342
+ Store 358 357
+ 364: 361 Load 363(sColorMap)
+ 365: 20(fvec3) Load 333(texCoord0)
+ 366: 7(fvec4) ImageSampleImplicitLod 364 365
+ Store 359(colorMapColor) 366
+ 368: 6(float) Load 349(instanceLoop)
+ 369: 28(int) ConvertFToS 368
+ 370: 30(ptr) AccessChain 359(colorMapColor) 369
+ 371: 6(float) Load 370
+ Store 367(red) 371
+ 372: 6(float) Load 367(red)
+ 373: 7(fvec4) CompositeConstruct 372 372 372 372
+ Store 359(colorMapColor) 373
+ 379: 378(ptr) AccessChain 376 377
+ 380: 20(fvec3) Load 379
+ 383: 382(ptr) AccessChain 336(iVert) 381
+ 384: 7(fvec4) Load 383
+ 385: 20(fvec3) VectorShuffle 384 384 0 1 2
+ 386: 20(fvec3) FMul 380 385
+ 387: 7(fvec4) Load 330(outcol)
+ 388: 20(fvec3) VectorShuffle 387 387 0 1 2
+ 389: 20(fvec3) FAdd 388 386
+ 391: 30(ptr) AccessChain 330(outcol) 390
+ 392: 6(float) CompositeExtract 389 0
+ Store 391 392
+ 394: 30(ptr) AccessChain 330(outcol) 393
+ 395: 6(float) CompositeExtract 389 1
+ Store 394 395
+ 396: 30(ptr) AccessChain 330(outcol) 342
+ 397: 6(float) CompositeExtract 389 2
+ Store 396 397
+ 398: 7(fvec4) Load 359(colorMapColor)
+ 399: 7(fvec4) Load 330(outcol)
+ 400: 7(fvec4) FMul 399 398
+ Store 330(outcol) 400
+ 404: 403(ptr) AccessChain 336(iVert) 381 402
+ 405: 6(float) Load 404
+ 406: 30(ptr) AccessChain 359(colorMapColor) 402
+ 407: 6(float) Load 406
+ 408: 6(float) FMul 405 407
+ Store 401(alpha) 408
+ 410: 7(fvec4) Load 330(outcol)
+ Store 409(param) 410
+ 411: 7(fvec4) FunctionCall 18(TDDither(vf4;) 409(param)
+ Store 330(outcol) 411
+ 412: 6(float) Load 401(alpha)
+ 413: 7(fvec4) Load 330(outcol)
+ 414: 20(fvec3) VectorShuffle 413 413 0 1 2
+ 415: 20(fvec3) VectorTimesScalar 414 412
+ 416: 30(ptr) AccessChain 330(outcol) 390
+ 417: 6(float) CompositeExtract 415 0
+ Store 416 417
+ 418: 30(ptr) AccessChain 330(outcol) 393
+ 419: 6(float) CompositeExtract 415 1
+ Store 418 419
+ 420: 30(ptr) AccessChain 330(outcol) 342
+ 421: 6(float) CompositeExtract 415 2
+ Store 420 421
+ 423: 6(float) Load 401(alpha)
+ Store 422(param) 423
+ 424: 2 FunctionCall 38(TDAlphaTest(f1;) 422(param)
+ 425: 6(float) Load 401(alpha)
+ 426: 30(ptr) AccessChain 330(outcol) 402
+ Store 426 425
+ 431: 7(fvec4) Load 330(outcol)
+ Store 430(param) 431
+ 432: 7(fvec4) FunctionCall 321(TDOutputSwizzle(vf4;) 430(param)
+ 434: 433(ptr) AccessChain 429(oFragColor) 381
+ Store 434 432
+ Store 435(i) 436
+ Branch 437
+ 437: Label
+ LoopMerge 439 440 None
+ Branch 441
+ 441: Label
+ 442: 28(int) Load 435(i)
+ 443: 22(bool) SLessThan 442 436
+ BranchConditional 443 438 439
+ 438: Label
+ 444: 28(int) Load 435(i)
+ 445: 433(ptr) AccessChain 429(oFragColor) 444
+ Store 445 332
+ Branch 440
+ 440: Label
+ 446: 28(int) Load 435(i)
+ 447: 28(int) IAdd 446 436
+ Store 435(i) 447
+ Branch 437
+ 439: Label
+ Return
+ FunctionEnd
+11(TDColor(vf4;): 7(fvec4) Function None 9
+ 10(color): 8(ptr) FunctionParameter
+ 12: Label
+ 448: 7(fvec4) Load 10(color)
+ ReturnValue 448
+ FunctionEnd
+13(TDCheckOrderIndTrans(): 2 Function None 3
+ 14: Label
+ Return
+ FunctionEnd
+15(TDCheckDiscard(): 2 Function None 3
+ 16: Label
+ 451: 2 FunctionCall 13(TDCheckOrderIndTrans()
+ Return
+ FunctionEnd
+18(TDDither(vf4;): 7(fvec4) Function None 9
+ 17(color): 8(ptr) FunctionParameter
+ 19: Label
+ 452(d): 30(ptr) Variable Function
+ 457: 454 Load 456(sTDNoiseMap)
+ 459: 7(fvec4) Load 458(gl_FragCoord)
+ 460: 66(fvec2) VectorShuffle 459 459 0 1
+ 462: 66(fvec2) CompositeConstruct 461 461
+ 463: 66(fvec2) FDiv 460 462
+ 464: 7(fvec4) ImageSampleImplicitLod 457 463
+ 465: 6(float) CompositeExtract 464 0
+ Store 452(d) 465
+ 467: 6(float) Load 452(d)
+ 468: 6(float) FSub 467 466
+ Store 452(d) 468
+ 469: 6(float) Load 452(d)
+ 470: 6(float) FDiv 469 461
+ Store 452(d) 470
+ 471: 7(fvec4) Load 17(color)
+ 472: 20(fvec3) VectorShuffle 471 471 0 1 2
+ 473: 6(float) Load 452(d)
+ 474: 20(fvec3) CompositeConstruct 473 473 473
+ 475: 20(fvec3) FAdd 472 474
+ 476: 30(ptr) AccessChain 17(color) 402
+ 477: 6(float) Load 476
+ 478: 6(float) CompositeExtract 475 0
+ 479: 6(float) CompositeExtract 475 1
+ 480: 6(float) CompositeExtract 475 2
+ 481: 7(fvec4) CompositeConstruct 478 479 480 477
+ ReturnValue 481
+ FunctionEnd
+26(TDFrontFacing(vf3;vf3;): 22(bool) Function None 23
+ 24(pos): 21(ptr) FunctionParameter
+ 25(normal): 21(ptr) FunctionParameter
+ 27: Label
+ 486: 22(bool) Load 485(gl_FrontFacing)
+ ReturnValue 486
+ FunctionEnd
+34(TDAttenuateLight(i1;f1;): 6(float) Function None 31
+ 32(index): 29(ptr) FunctionParameter
+ 33(lightDist): 30(ptr) FunctionParameter
+ 35: Label
+ ReturnValue 489
+ FunctionEnd
+38(TDAlphaTest(f1;): 2 Function None 36
+ 37(alpha): 30(ptr) FunctionParameter
+ 39: Label
+ Return
+ FunctionEnd
+43(TDHardShadow(i1;vf3;): 6(float) Function None 40
+ 41(lightIndex): 29(ptr) FunctionParameter
+42(worldSpacePos): 21(ptr) FunctionParameter
+ 44: Label
+ ReturnValue 331
+ FunctionEnd
+50(TDSoftShadow(i1;vf3;i1;i1;): 6(float) Function None 45
+ 46(lightIndex): 29(ptr) FunctionParameter
+47(worldSpacePos): 21(ptr) FunctionParameter
+ 48(samples): 29(ptr) FunctionParameter
+ 49(steps): 29(ptr) FunctionParameter
+ 51: Label
+ ReturnValue 331
+ FunctionEnd
+54(TDSoftShadow(i1;vf3;): 6(float) Function None 40
+ 52(lightIndex): 29(ptr) FunctionParameter
+53(worldSpacePos): 21(ptr) FunctionParameter
+ 55: Label
+ ReturnValue 331
+ FunctionEnd
+58(TDShadow(i1;vf3;): 6(float) Function None 40
+ 56(lightIndex): 29(ptr) FunctionParameter
+57(worldSpacePos): 21(ptr) FunctionParameter
+ 59: Label
+ ReturnValue 331
+ FunctionEnd
+64(iTDRadicalInverse_VdC(u1;): 6(float) Function None 62
+ 63(bits): 61(ptr) FunctionParameter
+ 65: Label
+ 500: 60(int) Load 63(bits)
+ 502: 60(int) ShiftLeftLogical 500 501
+ 503: 60(int) Load 63(bits)
+ 504: 60(int) ShiftRightLogical 503 501
+ 505: 60(int) BitwiseOr 502 504
+ Store 63(bits) 505
+ 506: 60(int) Load 63(bits)
+ 508: 60(int) BitwiseAnd 506 507
+ 509: 60(int) ShiftLeftLogical 508 393
+ 510: 60(int) Load 63(bits)
+ 512: 60(int) BitwiseAnd 510 511
+ 513: 60(int) ShiftRightLogical 512 393
+ 514: 60(int) BitwiseOr 509 513
+ Store 63(bits) 514
+ 515: 60(int) Load 63(bits)
+ 517: 60(int) BitwiseAnd 515 516
+ 518: 60(int) ShiftLeftLogical 517 342
+ 519: 60(int) Load 63(bits)
+ 521: 60(int) BitwiseAnd 519 520
+ 522: 60(int) ShiftRightLogical 521 342
+ 523: 60(int) BitwiseOr 518 522
+ Store 63(bits) 523
+ 524: 60(int) Load 63(bits)
+ 526: 60(int) BitwiseAnd 524 525
+ 528: 60(int) ShiftLeftLogical 526 527
+ 529: 60(int) Load 63(bits)
+ 531: 60(int) BitwiseAnd 529 530
+ 532: 60(int) ShiftRightLogical 531 527
+ 533: 60(int) BitwiseOr 528 532
+ Store 63(bits) 533
+ 534: 60(int) Load 63(bits)
+ 536: 60(int) BitwiseAnd 534 535
+ 538: 60(int) ShiftLeftLogical 536 537
+ 539: 60(int) Load 63(bits)
+ 541: 60(int) BitwiseAnd 539 540
+ 542: 60(int) ShiftRightLogical 541 537
+ 543: 60(int) BitwiseOr 538 542
+ Store 63(bits) 543
+ 544: 60(int) Load 63(bits)
+ 545: 6(float) ConvertUToF 544
+ 547: 6(float) FMul 545 546
+ ReturnValue 547
+ FunctionEnd
+70(iTDHammersley(u1;u1;): 66(fvec2) Function None 67
+ 68(i): 61(ptr) FunctionParameter
+ 69(N): 61(ptr) FunctionParameter
+ 71: Label
+ 555(param): 61(ptr) Variable Function
+ 550: 60(int) Load 68(i)
+ 551: 6(float) ConvertUToF 550
+ 552: 60(int) Load 69(N)
+ 553: 6(float) ConvertUToF 552
+ 554: 6(float) FDiv 551 553
+ 556: 60(int) Load 68(i)
+ Store 555(param) 556
+ 557: 6(float) FunctionCall 64(iTDRadicalInverse_VdC(u1;) 555(param)
+ 558: 66(fvec2) CompositeConstruct 554 557
+ ReturnValue 558
+ FunctionEnd
+77(iTDImportanceSampleGGX(vf2;f1;vf3;): 20(fvec3) Function None 73
+ 74(Xi): 72(ptr) FunctionParameter
+ 75(roughness2): 30(ptr) FunctionParameter
+ 76(N): 21(ptr) FunctionParameter
+ 78: Label
+ 561(a): 30(ptr) Variable Function
+ 563(phi): 30(ptr) Variable Function
+ 568(cosTheta): 30(ptr) Variable Function
+ 582(sinTheta): 30(ptr) Variable Function
+ 588(H): 21(ptr) Variable Function
+ 601(upVector): 21(ptr) Variable Function
+ 612(tangentX): 21(ptr) Variable Function
+ 617(tangentY): 21(ptr) Variable Function
+621(worldResult): 21(ptr) Variable Function
+ 562: 6(float) Load 75(roughness2)
+ Store 561(a) 562
+ 565: 30(ptr) AccessChain 74(Xi) 390
+ 566: 6(float) Load 565
+ 567: 6(float) FMul 564 566
+ Store 563(phi) 567
+ 569: 30(ptr) AccessChain 74(Xi) 393
+ 570: 6(float) Load 569
+ 571: 6(float) FSub 489 570
+ 572: 6(float) Load 561(a)
+ 573: 6(float) Load 561(a)
+ 574: 6(float) FMul 572 573
+ 575: 6(float) FSub 574 489
+ 576: 30(ptr) AccessChain 74(Xi) 393
+ 577: 6(float) Load 576
+ 578: 6(float) FMul 575 577
+ 579: 6(float) FAdd 489 578
+ 580: 6(float) FDiv 571 579
+ 581: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 580
+ Store 568(cosTheta) 581
+ 583: 6(float) Load 568(cosTheta)
+ 584: 6(float) Load 568(cosTheta)
+ 585: 6(float) FMul 583 584
+ 586: 6(float) FSub 489 585
+ 587: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 586
+ Store 582(sinTheta) 587
+ 589: 6(float) Load 582(sinTheta)
+ 590: 6(float) Load 563(phi)
+ 591: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 590
+ 592: 6(float) FMul 589 591
+ 593: 30(ptr) AccessChain 588(H) 390
+ Store 593 592
+ 594: 6(float) Load 582(sinTheta)
+ 595: 6(float) Load 563(phi)
+ 596: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 595
+ 597: 6(float) FMul 594 596
+ 598: 30(ptr) AccessChain 588(H) 393
+ Store 598 597
+ 599: 6(float) Load 568(cosTheta)
+ 600: 30(ptr) AccessChain 588(H) 342
+ Store 600 599
+ 602: 30(ptr) AccessChain 76(N) 342
+ 603: 6(float) Load 602
+ 604: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 603
+ 606: 22(bool) FOrdLessThan 604 605
+ 610: 609(bvec3) CompositeConstruct 606 606 606
+ 611: 20(fvec3) Select 610 607 608
+ Store 601(upVector) 611
+ 613: 20(fvec3) Load 601(upVector)
+ 614: 20(fvec3) Load 76(N)
+ 615: 20(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 613 614
+ 616: 20(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 615
+ Store 612(tangentX) 616
+ 618: 20(fvec3) Load 76(N)
+ 619: 20(fvec3) Load 612(tangentX)
+ 620: 20(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 618 619
+ Store 617(tangentY) 620
+ 622: 20(fvec3) Load 612(tangentX)
+ 623: 30(ptr) AccessChain 588(H) 390
+ 624: 6(float) Load 623
+ 625: 20(fvec3) VectorTimesScalar 622 624
+ 626: 20(fvec3) Load 617(tangentY)
+ 627: 30(ptr) AccessChain 588(H) 393
+ 628: 6(float) Load 627
+ 629: 20(fvec3) VectorTimesScalar 626 628
+ 630: 20(fvec3) FAdd 625 629
+ 631: 20(fvec3) Load 76(N)
+ 632: 30(ptr) AccessChain 588(H) 342
+ 633: 6(float) Load 632
+ 634: 20(fvec3) VectorTimesScalar 631 633
+ 635: 20(fvec3) FAdd 630 634
+ Store 621(worldResult) 635
+ 636: 20(fvec3) Load 621(worldResult)
+ ReturnValue 636
+ FunctionEnd
+83(iTDDistributionGGX(vf3;vf3;f1;): 6(float) Function None 79
+ 80(normal): 21(ptr) FunctionParameter
+ 81(half_vector): 21(ptr) FunctionParameter
+ 82(roughness2): 30(ptr) FunctionParameter
+ 84: Label
+ 639(NdotH): 30(ptr) Variable Function
+ 645(alpha2): 30(ptr) Variable Function
+ 649(denom): 30(ptr) Variable Function
+ 640: 20(fvec3) Load 80(normal)
+ 641: 20(fvec3) Load 81(half_vector)
+ 642: 6(float) Dot 640 641
+ 644: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 642 643 489
+ Store 639(NdotH) 644
+ 646: 6(float) Load 82(roughness2)
+ 647: 6(float) Load 82(roughness2)
+ 648: 6(float) FMul 646 647
+ Store 645(alpha2) 648
+ 650: 6(float) Load 639(NdotH)
+ 651: 6(float) Load 639(NdotH)
+ 652: 6(float) FMul 650 651
+ 653: 6(float) Load 645(alpha2)
+ 654: 6(float) FSub 653 489
+ 655: 6(float) FMul 652 654
+ 656: 6(float) FAdd 655 489
+ Store 649(denom) 656
+ 658: 6(float) Load 649(denom)
+ 659: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 657 658
+ Store 649(denom) 659
+ 660: 6(float) Load 645(alpha2)
+ 662: 6(float) Load 649(denom)
+ 663: 6(float) FMul 661 662
+ 664: 6(float) Load 649(denom)
+ 665: 6(float) FMul 663 664
+ 666: 6(float) FDiv 660 665
+ ReturnValue 666
+ FunctionEnd
+88(iTDCalcF(vf3;f1;): 20(fvec3) Function None 85
+ 86(F0): 21(ptr) FunctionParameter
+ 87(VdotH): 30(ptr) FunctionParameter
+ 89: Label
+ 669: 20(fvec3) Load 86(F0)
+ 671: 20(fvec3) Load 86(F0)
+ 672: 20(fvec3) FSub 670 671
+ 675: 6(float) Load 87(VdotH)
+ 676: 6(float) FMul 674 675
+ 678: 6(float) FSub 676 677
+ 679: 6(float) Load 87(VdotH)
+ 680: 6(float) FMul 678 679
+ 681: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 673 680
+ 682: 20(fvec3) VectorTimesScalar 672 681
+ 683: 20(fvec3) FAdd 669 682
+ ReturnValue 683
+ FunctionEnd
+94(iTDCalcG(f1;f1;f1;): 6(float) Function None 90
+ 91(NdotL): 30(ptr) FunctionParameter
+ 92(NdotV): 30(ptr) FunctionParameter
+ 93(k): 30(ptr) FunctionParameter
+ 95: Label
+ 686(Gl): 30(ptr) Variable Function
+ 694(Gv): 30(ptr) Variable Function
+ 687: 6(float) Load 91(NdotL)
+ 688: 6(float) Load 93(k)
+ 689: 6(float) FSub 489 688
+ 690: 6(float) FMul 687 689
+ 691: 6(float) Load 93(k)
+ 692: 6(float) FAdd 690 691
+ 693: 6(float) FDiv 489 692
+ Store 686(Gl) 693
+ 695: 6(float) Load 92(NdotV)
+ 696: 6(float) Load 93(k)
+ 697: 6(float) FSub 489 696
+ 698: 6(float) FMul 695 697
+ 699: 6(float) Load 93(k)
+ 700: 6(float) FAdd 698 699
+ 701: 6(float) FDiv 489 700
+ Store 694(Gv) 701
+ 702: 6(float) Load 686(Gl)
+ 703: 6(float) Load 694(Gv)
+ 704: 6(float) FMul 702 703
+ ReturnValue 704
+ FunctionEnd
+107(TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;):96(TDPBRResult) Function None 97
+ 98(index): 29(ptr) FunctionParameter
+99(diffuseColor): 21(ptr) FunctionParameter
+100(specularColor): 21(ptr) FunctionParameter
+101(worldSpacePos): 21(ptr) FunctionParameter
+ 102(normal): 21(ptr) FunctionParameter
+103(shadowStrength): 30(ptr) FunctionParameter
+104(shadowColor): 21(ptr) FunctionParameter
+ 105(camVector): 21(ptr) FunctionParameter
+ 106(roughness): 30(ptr) FunctionParameter
+ 108: Label
+ 708(res): 707(ptr) Variable Function
+ 709:96(TDPBRResult) Load 708(res)
+ ReturnValue 709
+ FunctionEnd
+122(TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;): 2 Function None 109
+110(diffuseContrib): 21(ptr) FunctionParameter
+111(specularContrib): 21(ptr) FunctionParameter
+112(shadowStrengthOut): 30(ptr) FunctionParameter
+ 113(index): 29(ptr) FunctionParameter
+114(diffuseColor): 21(ptr) FunctionParameter
+115(specularColor): 21(ptr) FunctionParameter
+116(worldSpacePos): 21(ptr) FunctionParameter
+ 117(normal): 21(ptr) FunctionParameter
+118(shadowStrength): 30(ptr) FunctionParameter
+119(shadowColor): 21(ptr) FunctionParameter
+ 120(camVector): 21(ptr) FunctionParameter
+ 121(roughness): 30(ptr) FunctionParameter
+ 123: Label
+ 712(res): 707(ptr) Variable Function
+ 713(param): 29(ptr) Variable Function
+ 715(param): 21(ptr) Variable Function
+ 717(param): 21(ptr) Variable Function
+ 719(param): 21(ptr) Variable Function
+ 721(param): 21(ptr) Variable Function
+ 723(param): 30(ptr) Variable Function
+ 725(param): 21(ptr) Variable Function
+ 727(param): 21(ptr) Variable Function
+ 729(param): 30(ptr) Variable Function
+ 714: 28(int) Load 113(index)
+ Store 713(param) 714
+ 716: 20(fvec3) Load 114(diffuseColor)
+ Store 715(param) 716
+ 718: 20(fvec3) Load 115(specularColor)
+ Store 717(param) 718
+ 720: 20(fvec3) Load 116(worldSpacePos)
+ Store 719(param) 720
+ 722: 20(fvec3) Load 117(normal)
+ Store 721(param) 722
+ 724: 6(float) Load 118(shadowStrength)
+ Store 723(param) 724
+ 726: 20(fvec3) Load 119(shadowColor)
+ Store 725(param) 726
+ 728: 20(fvec3) Load 120(camVector)
+ Store 727(param) 728
+ 730: 6(float) Load 121(roughness)
+ Store 729(param) 730
+ 731:96(TDPBRResult) FunctionCall 107(TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;) 713(param) 715(param) 717(param) 719(param) 721(param) 723(param) 725(param) 727(param) 729(param)
+ Store 712(res) 731
+ 732: 21(ptr) AccessChain 712(res) 381
+ 733: 20(fvec3) Load 732
+ Store 110(diffuseContrib) 733
+ 734: 21(ptr) AccessChain 712(res) 436
+ 735: 20(fvec3) Load 734
+ Store 111(specularContrib) 735
+ 736: 30(ptr) AccessChain 712(res) 337
+ 737: 6(float) Load 736
+ Store 112(shadowStrengthOut) 737
+ Return
+ FunctionEnd
+136(TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;): 2 Function None 124
+125(diffuseContrib): 21(ptr) FunctionParameter
+126(specularContrib): 21(ptr) FunctionParameter
+ 127(index): 29(ptr) FunctionParameter
+128(diffuseColor): 21(ptr) FunctionParameter
+129(specularColor): 21(ptr) FunctionParameter
+130(worldSpacePos): 21(ptr) FunctionParameter
+ 131(normal): 21(ptr) FunctionParameter
+132(shadowStrength): 30(ptr) FunctionParameter
+133(shadowColor): 21(ptr) FunctionParameter
+ 134(camVector): 21(ptr) FunctionParameter
+ 135(roughness): 30(ptr) FunctionParameter
+ 137: Label
+ 738(res): 707(ptr) Variable Function
+ 739(param): 29(ptr) Variable Function
+ 741(param): 21(ptr) Variable Function
+ 743(param): 21(ptr) Variable Function
+ 745(param): 21(ptr) Variable Function
+ 747(param): 21(ptr) Variable Function
+ 749(param): 30(ptr) Variable Function
+ 751(param): 21(ptr) Variable Function
+ 753(param): 21(ptr) Variable Function
+ 755(param): 30(ptr) Variable Function
+ 740: 28(int) Load 127(index)
+ Store 739(param) 740
+ 742: 20(fvec3) Load 128(diffuseColor)
+ Store 741(param) 742
+ 744: 20(fvec3) Load 129(specularColor)
+ Store 743(param) 744
+ 746: 20(fvec3) Load 130(worldSpacePos)
+ Store 745(param) 746
+ 748: 20(fvec3) Load 131(normal)
+ Store 747(param) 748
+ 750: 6(float) Load 132(shadowStrength)
+ Store 749(param) 750
+ 752: 20(fvec3) Load 133(shadowColor)
+ Store 751(param) 752
+ 754: 20(fvec3) Load 134(camVector)
+ Store 753(param) 754
+ 756: 6(float) Load 135(roughness)
+ Store 755(param) 756
+ 757:96(TDPBRResult) FunctionCall 107(TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;) 739(param) 741(param) 743(param) 745(param) 747(param) 749(param) 751(param) 753(param) 755(param)
+ Store 738(res) 757
+ 758: 21(ptr) AccessChain 738(res) 381
+ 759: 20(fvec3) Load 758
+ Store 125(diffuseContrib) 759
+ 760: 21(ptr) AccessChain 738(res) 436
+ 761: 20(fvec3) Load 760
+ Store 126(specularContrib) 761
+ Return
+ FunctionEnd
+146(TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1;):96(TDPBRResult) Function None 138
+ 139(index): 29(ptr) FunctionParameter
+140(diffuseColor): 21(ptr) FunctionParameter
+141(specularColor): 21(ptr) FunctionParameter
+ 142(normal): 21(ptr) FunctionParameter
+ 143(camVector): 21(ptr) FunctionParameter
+ 144(roughness): 30(ptr) FunctionParameter
+145(ambientOcclusion): 30(ptr) FunctionParameter
+ 147: Label
+ 762(res): 707(ptr) Variable Function
+ 763:96(TDPBRResult) Load 762(res)
+ ReturnValue 763
+ FunctionEnd
+158(TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1;): 2 Function None 148
+149(diffuseContrib): 21(ptr) FunctionParameter
+150(specularContrib): 21(ptr) FunctionParameter
+ 151(index): 29(ptr) FunctionParameter
+152(diffuseColor): 21(ptr) FunctionParameter
+153(specularColor): 21(ptr) FunctionParameter
+ 154(normal): 21(ptr) FunctionParameter
+ 155(camVector): 21(ptr) FunctionParameter
+ 156(roughness): 30(ptr) FunctionParameter
+157(ambientOcclusion): 30(ptr) FunctionParameter
+ 159: Label
+ 766(res): 707(ptr) Variable Function
+ 767(param): 29(ptr) Variable Function
+ 769(param): 21(ptr) Variable Function
+ 771(param): 21(ptr) Variable Function
+ 773(param): 21(ptr) Variable Function
+ 775(param): 21(ptr) Variable Function
+ 777(param): 30(ptr) Variable Function
+ 779(param): 30(ptr) Variable Function
+ 768: 28(int) Load 151(index)
+ Store 767(param) 768
+ 770: 20(fvec3) Load 152(diffuseColor)
+ Store 769(param) 770
+ 772: 20(fvec3) Load 153(specularColor)
+ Store 771(param) 772
+ 774: 20(fvec3) Load 154(normal)
+ Store 773(param) 774
+ 776: 20(fvec3) Load 155(camVector)
+ Store 775(param) 776
+ 778: 6(float) Load 156(roughness)
+ Store 777(param) 778
+ 780: 6(float) Load 157(ambientOcclusion)
+ Store 779(param) 780
+ 781:96(TDPBRResult) FunctionCall 146(TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1;) 767(param) 769(param) 771(param) 773(param) 775(param) 777(param) 779(param)
+ Store 766(res) 781
+ 782: 21(ptr) AccessChain 766(res) 381
+ 783: 20(fvec3) Load 782
+ Store 149(diffuseContrib) 783
+ 784: 21(ptr) AccessChain 766(res) 436
+ 785: 20(fvec3) Load 784
+ Store 150(specularContrib) 785
+ Return
+ FunctionEnd
+170(TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1;):160(TDPhongResult) Function None 161
+ 162(index): 29(ptr) FunctionParameter
+163(worldSpacePos): 21(ptr) FunctionParameter
+ 164(normal): 21(ptr) FunctionParameter
+165(shadowStrength): 30(ptr) FunctionParameter
+166(shadowColor): 21(ptr) FunctionParameter
+ 167(camVector): 21(ptr) FunctionParameter
+ 168(shininess): 30(ptr) FunctionParameter
+ 169(shininess2): 30(ptr) FunctionParameter
+ 171: Label
+ 790(res): 789(ptr) Variable Function
+ 786: 28(int) Load 162(index)
+ SelectionMerge 788 None
+ Switch 786 787
+ 787: Label
+ 792: 21(ptr) AccessChain 790(res) 381
+ Store 792 791
+ 793: 21(ptr) AccessChain 790(res) 436
+ Store 793 791
+ 794: 21(ptr) AccessChain 790(res) 337
+ Store 794 791
+ 795: 30(ptr) AccessChain 790(res) 377
+ Store 795 331
+ Branch 788
+ 788: Label
+ 798:160(TDPhongResult) Load 790(res)
+ ReturnValue 798
+ FunctionEnd
+185(TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1;): 2 Function None 172
+173(diffuseContrib): 21(ptr) FunctionParameter
+174(specularContrib): 21(ptr) FunctionParameter
+175(specularContrib2): 21(ptr) FunctionParameter
+176(shadowStrengthOut): 30(ptr) FunctionParameter
+ 177(index): 29(ptr) FunctionParameter
+178(worldSpacePos): 21(ptr) FunctionParameter
+ 179(normal): 21(ptr) FunctionParameter
+180(shadowStrength): 30(ptr) FunctionParameter
+181(shadowColor): 21(ptr) FunctionParameter
+ 182(camVector): 21(ptr) FunctionParameter
+ 183(shininess): 30(ptr) FunctionParameter
+ 184(shininess2): 30(ptr) FunctionParameter
+ 186: Label
+ 804(res): 789(ptr) Variable Function
+ 801: 28(int) Load 177(index)
+ SelectionMerge 803 None
+ Switch 801 802
+ 802: Label
+ 805: 21(ptr) AccessChain 804(res) 381
+ Store 805 791
+ 806: 21(ptr) AccessChain 804(res) 436
+ Store 806 791
+ 807: 21(ptr) AccessChain 804(res) 337
+ Store 807 791
+ 808: 30(ptr) AccessChain 804(res) 377
+ Store 808 331
+ Branch 803
+ 803: Label
+ 811: 21(ptr) AccessChain 804(res) 381
+ 812: 20(fvec3) Load 811
+ Store 173(diffuseContrib) 812
+ 813: 21(ptr) AccessChain 804(res) 436
+ 814: 20(fvec3) Load 813
+ Store 174(specularContrib) 814
+ 815: 21(ptr) AccessChain 804(res) 337
+ 816: 20(fvec3) Load 815
+ Store 175(specularContrib2) 816
+ 817: 30(ptr) AccessChain 804(res) 377
+ 818: 6(float) Load 817
+ Store 176(shadowStrengthOut) 818
+ Return
+ FunctionEnd
+199(TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1;): 2 Function None 187
+188(diffuseContrib): 21(ptr) FunctionParameter
+189(specularContrib): 21(ptr) FunctionParameter
+190(specularContrib2): 21(ptr) FunctionParameter
+ 191(index): 29(ptr) FunctionParameter
+192(worldSpacePos): 21(ptr) FunctionParameter
+ 193(normal): 21(ptr) FunctionParameter
+194(shadowStrength): 30(ptr) FunctionParameter
+195(shadowColor): 21(ptr) FunctionParameter
+ 196(camVector): 21(ptr) FunctionParameter
+ 197(shininess): 30(ptr) FunctionParameter
+ 198(shininess2): 30(ptr) FunctionParameter
+ 200: Label
+ 822(res): 789(ptr) Variable Function
+ 819: 28(int) Load 191(index)
+ SelectionMerge 821 None
+ Switch 819 820
+ 820: Label
+ 823: 21(ptr) AccessChain 822(res) 381
+ Store 823 791
+ 824: 21(ptr) AccessChain 822(res) 436
+ Store 824 791
+ 825: 21(ptr) AccessChain 822(res) 337
+ Store 825 791
+ 826: 30(ptr) AccessChain 822(res) 377
+ Store 826 331
+ Branch 821
+ 821: Label
+ 829: 21(ptr) AccessChain 822(res) 381
+ 830: 20(fvec3) Load 829
+ Store 188(diffuseContrib) 830
+ 831: 21(ptr) AccessChain 822(res) 436
+ 832: 20(fvec3) Load 831
+ Store 189(specularContrib) 832
+ 833: 21(ptr) AccessChain 822(res) 337
+ 834: 20(fvec3) Load 833
+ Store 190(specularContrib2) 834
+ Return
+ FunctionEnd
+211(TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;): 2 Function None 201
+202(diffuseContrib): 21(ptr) FunctionParameter
+203(specularContrib): 21(ptr) FunctionParameter
+ 204(index): 29(ptr) FunctionParameter
+205(worldSpacePos): 21(ptr) FunctionParameter
+ 206(normal): 21(ptr) FunctionParameter
+207(shadowStrength): 30(ptr) FunctionParameter
+208(shadowColor): 21(ptr) FunctionParameter
+ 209(camVector): 21(ptr) FunctionParameter
+ 210(shininess): 30(ptr) FunctionParameter
+ 212: Label
+ 838(res): 789(ptr) Variable Function
+ 835: 28(int) Load 204(index)
+ SelectionMerge 837 None
+ Switch 835 836
+ 836: Label
+ 839: 21(ptr) AccessChain 838(res) 381
+ Store 839 791
+ 840: 21(ptr) AccessChain 838(res) 436
+ Store 840 791
+ 841: 21(ptr) AccessChain 838(res) 337
+ Store 841 791
+ 842: 30(ptr) AccessChain 838(res) 377
+ Store 842 331
+ Branch 837
+ 837: Label
+ 845: 21(ptr) AccessChain 838(res) 381
+ 846: 20(fvec3) Load 845
+ Store 202(diffuseContrib) 846
+ 847: 21(ptr) AccessChain 838(res) 436
+ 848: 20(fvec3) Load 847
+ Store 203(specularContrib) 848
+ Return
+ FunctionEnd
+223(TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1;): 2 Function None 213
+214(diffuseContrib): 21(ptr) FunctionParameter
+215(specularContrib): 21(ptr) FunctionParameter
+216(specularContrib2): 21(ptr) FunctionParameter
+ 217(index): 29(ptr) FunctionParameter
+218(worldSpacePos): 21(ptr) FunctionParameter
+ 219(normal): 21(ptr) FunctionParameter
+ 220(camVector): 21(ptr) FunctionParameter
+ 221(shininess): 30(ptr) FunctionParameter
+ 222(shininess2): 30(ptr) FunctionParameter
+ 224: Label
+ 852(res): 789(ptr) Variable Function
+ 849: 28(int) Load 217(index)
+ SelectionMerge 851 None
+ Switch 849 850
+ 850: Label
+ 853: 21(ptr) AccessChain 852(res) 381
+ Store 853 791
+ 854: 21(ptr) AccessChain 852(res) 436
+ Store 854 791
+ 855: 21(ptr) AccessChain 852(res) 337
+ Store 855 791
+ 856: 30(ptr) AccessChain 852(res) 377
+ Store 856 331
+ Branch 851
+ 851: Label
+ 859: 21(ptr) AccessChain 852(res) 381
+ 860: 20(fvec3) Load 859
+ Store 214(diffuseContrib) 860
+ 861: 21(ptr) AccessChain 852(res) 436
+ 862: 20(fvec3) Load 861
+ Store 215(specularContrib) 862
+ 863: 21(ptr) AccessChain 852(res) 337
+ 864: 20(fvec3) Load 863
+ Store 216(specularContrib2) 864
+ Return
+ FunctionEnd
+233(TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1;): 2 Function None 225
+226(diffuseContrib): 21(ptr) FunctionParameter
+227(specularContrib): 21(ptr) FunctionParameter
+ 228(index): 29(ptr) FunctionParameter
+229(worldSpacePos): 21(ptr) FunctionParameter
+ 230(normal): 21(ptr) FunctionParameter
+ 231(camVector): 21(ptr) FunctionParameter
+ 232(shininess): 30(ptr) FunctionParameter
+ 234: Label
+ 868(res): 789(ptr) Variable Function
+ 865: 28(int) Load 228(index)
+ SelectionMerge 867 None
+ Switch 865 866
+ 866: Label
+ 869: 21(ptr) AccessChain 868(res) 381
+ Store 869 791
+ 870: 21(ptr) AccessChain 868(res) 436
+ Store 870 791
+ 871: 21(ptr) AccessChain 868(res) 337
+ Store 871 791
+ 872: 30(ptr) AccessChain 868(res) 377
+ Store 872 331
+ Branch 867
+ 867: Label
+ 875: 21(ptr) AccessChain 868(res) 381
+ 876: 20(fvec3) Load 875
+ Store 226(diffuseContrib) 876
+ 877: 21(ptr) AccessChain 868(res) 436
+ 878: 20(fvec3) Load 877
+ Store 227(specularContrib) 878
+ Return
+ FunctionEnd
+240(TDLighting(vf3;i1;vf3;vf3;): 2 Function None 235
+236(diffuseContrib): 21(ptr) FunctionParameter
+ 237(index): 29(ptr) FunctionParameter
+238(worldSpacePos): 21(ptr) FunctionParameter
+ 239(normal): 21(ptr) FunctionParameter
+ 241: Label
+ 882(res): 789(ptr) Variable Function
+ 879: 28(int) Load 237(index)
+ SelectionMerge 881 None
+ Switch 879 880
+ 880: Label
+ 883: 21(ptr) AccessChain 882(res) 381
+ Store 883 791
+ 884: 21(ptr) AccessChain 882(res) 436
+ Store 884 791
+ 885: 21(ptr) AccessChain 882(res) 337
+ Store 885 791
+ 886: 30(ptr) AccessChain 882(res) 377
+ Store 886 331
+ Branch 881
+ 881: Label
+ 889: 21(ptr) AccessChain 882(res) 381
+ 890: 20(fvec3) Load 889
+ Store 236(diffuseContrib) 890
+ Return
+ FunctionEnd
+249(TDLighting(vf3;i1;vf3;vf3;f1;vf3;): 2 Function None 242
+243(diffuseContrib): 21(ptr) FunctionParameter
+ 244(index): 29(ptr) FunctionParameter
+245(worldSpacePos): 21(ptr) FunctionParameter
+ 246(normal): 21(ptr) FunctionParameter
+247(shadowStrength): 30(ptr) FunctionParameter
+248(shadowColor): 21(ptr) FunctionParameter
+ 250: Label
+ 894(res): 789(ptr) Variable Function
+ 891: 28(int) Load 244(index)
+ SelectionMerge 893 None
+ Switch 891 892
+ 892: Label
+ 895: 21(ptr) AccessChain 894(res) 381
+ Store 895 791
+ 896: 21(ptr) AccessChain 894(res) 436
+ Store 896 791
+ 897: 21(ptr) AccessChain 894(res) 337
+ Store 897 791
+ 898: 30(ptr) AccessChain 894(res) 377
+ Store 898 331
+ Branch 893
+ 893: Label
+ 901: 21(ptr) AccessChain 894(res) 381
+ 902: 20(fvec3) Load 901
+ Store 243(diffuseContrib) 902
+ Return
+ FunctionEnd
+255(TDProjMap(i1;vf3;vf4;): 7(fvec4) Function None 251
+ 252(index): 29(ptr) FunctionParameter
+253(worldSpacePos): 21(ptr) FunctionParameter
+254(defaultColor): 8(ptr) FunctionParameter
+ 256: Label
+ 903: 28(int) Load 252(index)
+ SelectionMerge 905 None
+ Switch 903 904
+ 904: Label
+ 906: 7(fvec4) Load 254(defaultColor)
+ ReturnValue 906
+ 905: Label
+ Unreachable
+ FunctionEnd
+261(TDFog(vf4;vf3;i1;): 7(fvec4) Function None 257
+ 258(color): 8(ptr) FunctionParameter
+259(lightingSpacePosition): 21(ptr) FunctionParameter
+260(cameraIndex): 29(ptr) FunctionParameter
+ 262: Label
+ 910: 28(int) Load 260(cameraIndex)
+ SelectionMerge 912 None
+ Switch 910 911
+ case 0: 911
+ 911: Label
+ 913: 7(fvec4) Load 258(color)
+ ReturnValue 913
+ 912: Label
+ Unreachable
+ FunctionEnd
+266(TDFog(vf4;vf3;): 7(fvec4) Function None 263
+ 264(color): 8(ptr) FunctionParameter
+265(lightingSpacePosition): 21(ptr) FunctionParameter
+ 267: Label
+ 917(param): 8(ptr) Variable Function
+ 919(param): 21(ptr) Variable Function
+ 921(param): 29(ptr) Variable Function
+ 918: 7(fvec4) Load 264(color)
+ Store 917(param) 918
+ 920: 20(fvec3) Load 265(lightingSpacePosition)
+ Store 919(param) 920
+ Store 921(param) 381
+ 922: 7(fvec4) FunctionCall 261(TDFog(vf4;vf3;i1;) 917(param) 919(param) 921(param)
+ ReturnValue 922
+ FunctionEnd
+271(TDInstanceTexCoord(i1;vf3;): 20(fvec3) Function None 268
+ 269(index): 29(ptr) FunctionParameter
+ 270(t): 21(ptr) FunctionParameter
+ 272: Label
+ 925(coord): 29(ptr) Variable Function
+ 927(samp): 8(ptr) Variable Function
+ 936(v): 21(ptr) Variable Function
+ 926: 28(int) Load 269(index)
+ Store 925(coord) 926
+ 932: 929 Load 931(sTDInstanceTexCoord)
+ 933: 28(int) Load 925(coord)
+ 934: 928 Image 932
+ 935: 7(fvec4) ImageFetch 934 933
+ Store 927(samp) 935
+ 937: 30(ptr) AccessChain 270(t) 390
+ 938: 6(float) Load 937
+ 939: 30(ptr) AccessChain 936(v) 390
+ Store 939 938
+ 940: 30(ptr) AccessChain 270(t) 393
+ 941: 6(float) Load 940
+ 942: 30(ptr) AccessChain 936(v) 393
+ Store 942 941
+ 943: 30(ptr) AccessChain 927(samp) 390
+ 944: 6(float) Load 943
+ 945: 30(ptr) AccessChain 936(v) 342
+ Store 945 944
+ 946: 20(fvec3) Load 936(v)
+ Store 270(t) 946
+ 947: 20(fvec3) Load 270(t)
+ ReturnValue 947
+ FunctionEnd
+275(TDInstanceActive(i1;): 22(bool) Function None 273
+ 274(index): 29(ptr) FunctionParameter
+ 276: Label
+ 955(coord): 29(ptr) Variable Function
+ 957(samp): 8(ptr) Variable Function
+ 963(v): 30(ptr) Variable Function
+ 951: 950(ptr) AccessChain 376 381
+ 952: 28(int) Load 951
+ 953: 28(int) Load 274(index)
+ 954: 28(int) ISub 953 952
+ Store 274(index) 954
+ 956: 28(int) Load 274(index)
+ Store 955(coord) 956
+ 959: 929 Load 958(sTDInstanceT)
+ 960: 28(int) Load 955(coord)
+ 961: 928 Image 959
+ 962: 7(fvec4) ImageFetch 961 960
+ Store 957(samp) 962
+ 964: 30(ptr) AccessChain 957(samp) 390
+ 965: 6(float) Load 964
+ Store 963(v) 965
+ 966: 6(float) Load 963(v)
+ 967: 22(bool) FUnordNotEqual 966 331
+ ReturnValue 967
+ FunctionEnd
+281(iTDInstanceTranslate(i1;b1;): 20(fvec3) Function None 278
+ 279(index): 29(ptr) FunctionParameter
+280(instanceActive): 277(ptr) FunctionParameter
+ 282: Label
+ 970(origIndex): 29(ptr) Variable Function
+ 976(coord): 29(ptr) Variable Function
+ 978(samp): 8(ptr) Variable Function
+ 983(v): 21(ptr) Variable Function
+ 971: 28(int) Load 279(index)
+ Store 970(origIndex) 971
+ 972: 950(ptr) AccessChain 376 381
+ 973: 28(int) Load 972
+ 974: 28(int) Load 279(index)
+ 975: 28(int) ISub 974 973
+ Store 279(index) 975
+ 977: 28(int) Load 279(index)
+ Store 976(coord) 977
+ 979: 929 Load 958(sTDInstanceT)
+ 980: 28(int) Load 976(coord)
+ 981: 928 Image 979
+ 982: 7(fvec4) ImageFetch 981 980
+ Store 978(samp) 982
+ 984: 30(ptr) AccessChain 978(samp) 393
+ 985: 6(float) Load 984
+ 986: 30(ptr) AccessChain 983(v) 390
+ Store 986 985
+ 987: 30(ptr) AccessChain 978(samp) 342
+ 988: 6(float) Load 987
+ 989: 30(ptr) AccessChain 983(v) 393
+ Store 989 988
+ 990: 30(ptr) AccessChain 978(samp) 402
+ 991: 6(float) Load 990
+ 992: 30(ptr) AccessChain 983(v) 342
+ Store 992 991
+ 993: 30(ptr) AccessChain 978(samp) 390
+ 994: 6(float) Load 993
+ 995: 22(bool) FUnordNotEqual 994 331
+ Store 280(instanceActive) 995
+ 996: 20(fvec3) Load 983(v)
+ ReturnValue 996
+ FunctionEnd
+285(TDInstanceTranslate(i1;): 20(fvec3) Function None 283
+ 284(index): 29(ptr) FunctionParameter
+ 286: Label
+ 1003(coord): 29(ptr) Variable Function
+ 1005(samp): 8(ptr) Variable Function
+ 1010(v): 21(ptr) Variable Function
+ 999: 950(ptr) AccessChain 376 381
+ 1000: 28(int) Load 999
+ 1001: 28(int) Load 284(index)
+ 1002: 28(int) ISub 1001 1000
+ Store 284(index) 1002
+ 1004: 28(int) Load 284(index)
+ Store 1003(coord) 1004
+ 1006: 929 Load 958(sTDInstanceT)
+ 1007: 28(int) Load 1003(coord)
+ 1008: 928 Image 1006
+ 1009: 7(fvec4) ImageFetch 1008 1007
+ Store 1005(samp) 1009
+ 1011: 30(ptr) AccessChain 1005(samp) 393
+ 1012: 6(float) Load 1011
+ 1013: 30(ptr) AccessChain 1010(v) 390
+ Store 1013 1012
+ 1014: 30(ptr) AccessChain 1005(samp) 342
+ 1015: 6(float) Load 1014
+ 1016: 30(ptr) AccessChain 1010(v) 393
+ Store 1016 1015
+ 1017: 30(ptr) AccessChain 1005(samp) 402
+ 1018: 6(float) Load 1017
+ 1019: 30(ptr) AccessChain 1010(v) 342
+ Store 1019 1018
+ 1020: 20(fvec3) Load 1010(v)
+ ReturnValue 1020
+ FunctionEnd
+290(TDInstanceRotateMat(i1;): 287 Function None 288
+ 289(index): 29(ptr) FunctionParameter
+ 291: Label
+ 1027(v): 21(ptr) Variable Function
+ 1029(m): 1028(ptr) Variable Function
+ 1023: 950(ptr) AccessChain 376 381
+ 1024: 28(int) Load 1023
+ 1025: 28(int) Load 289(index)
+ 1026: 28(int) ISub 1025 1024
+ Store 289(index) 1026
+ Store 1027(v) 791
+ Store 1029(m) 1031
+ 1032: 287 Load 1029(m)
+ ReturnValue 1032
+ FunctionEnd
+293(TDInstanceScale(i1;): 20(fvec3) Function None 283
+ 292(index): 29(ptr) FunctionParameter
+ 294: Label
+ 1039(v): 21(ptr) Variable Function
+ 1035: 950(ptr) AccessChain 376 381
+ 1036: 28(int) Load 1035
+ 1037: 28(int) Load 292(index)
+ 1038: 28(int) ISub 1037 1036
+ Store 292(index) 1038
+ Store 1039(v) 670
+ 1040: 20(fvec3) Load 1039(v)
+ ReturnValue 1040
+ FunctionEnd
+296(TDInstancePivot(i1;): 20(fvec3) Function None 283
+ 295(index): 29(ptr) FunctionParameter
+ 297: Label
+ 1047(v): 21(ptr) Variable Function
+ 1043: 950(ptr) AccessChain 376 381
+ 1044: 28(int) Load 1043
+ 1045: 28(int) Load 295(index)
+ 1046: 28(int) ISub 1045 1044
+ Store 295(index) 1046
+ Store 1047(v) 791
+ 1048: 20(fvec3) Load 1047(v)
+ ReturnValue 1048
+ FunctionEnd
+299(TDInstanceRotTo(i1;): 20(fvec3) Function None 283
+ 298(index): 29(ptr) FunctionParameter
+ 300: Label
+ 1055(v): 21(ptr) Variable Function
+ 1051: 950(ptr) AccessChain 376 381
+ 1052: 28(int) Load 1051
+ 1053: 28(int) Load 298(index)
+ 1054: 28(int) ISub 1053 1052
+ Store 298(index) 1054
+ Store 1055(v) 607
+ 1056: 20(fvec3) Load 1055(v)
+ ReturnValue 1056
+ FunctionEnd
+302(TDInstanceRotUp(i1;): 20(fvec3) Function None 283
+ 301(index): 29(ptr) FunctionParameter
+ 303: Label
+ 1063(v): 21(ptr) Variable Function
+ 1059: 950(ptr) AccessChain 376 381
+ 1060: 28(int) Load 1059
+ 1061: 28(int) Load 301(index)
+ 1062: 28(int) ISub 1061 1060
+ Store 301(index) 1062
+ Store 1063(v) 1030
+ 1064: 20(fvec3) Load 1063(v)
+ ReturnValue 1064
+ FunctionEnd
+307(TDInstanceMat(i1;): 304 Function None 305
+ 306(id): 29(ptr) FunctionParameter
+ 308: Label
+1067(instanceActive): 277(ptr) Variable Function
+ 1069(t): 21(ptr) Variable Function
+ 1070(param): 29(ptr) Variable Function
+ 1072(param): 277(ptr) Variable Function
+ 1082(m): 1081(ptr) Variable Function
+ 1088(tt): 21(ptr) Variable Function
+ Store 1067(instanceActive) 1068
+ 1071: 28(int) Load 306(id)
+ Store 1070(param) 1071
+ 1073: 20(fvec3) FunctionCall 281(iTDInstanceTranslate(i1;b1;) 1070(param) 1072(param)
+ 1074: 22(bool) Load 1072(param)
+ Store 1067(instanceActive) 1074
+ Store 1069(t) 1073
+ 1075: 22(bool) Load 1067(instanceActive)
+ 1076: 22(bool) LogicalNot 1075
+ SelectionMerge 1078 None
+ BranchConditional 1076 1077 1078
+ 1077: Label
+ ReturnValue 1079
+ 1078: Label
+ Store 1082(m) 1087
+ 1089: 20(fvec3) Load 1069(t)
+ Store 1088(tt) 1089
+ 1090: 30(ptr) AccessChain 1082(m) 381 390
+ 1091: 6(float) Load 1090
+ 1092: 30(ptr) AccessChain 1088(tt) 390
+ 1093: 6(float) Load 1092
+ 1094: 6(float) FMul 1091 1093
+ 1095: 30(ptr) AccessChain 1082(m) 377 390
+ 1096: 6(float) Load 1095
+ 1097: 6(float) FAdd 1096 1094
+ 1098: 30(ptr) AccessChain 1082(m) 377 390
+ Store 1098 1097
+ 1099: 30(ptr) AccessChain 1082(m) 381 393
+ 1100: 6(float) Load 1099
+ 1101: 30(ptr) AccessChain 1088(tt) 390
+ 1102: 6(float) Load 1101
+ 1103: 6(float) FMul 1100 1102
+ 1104: 30(ptr) AccessChain 1082(m) 377 393
+ 1105: 6(float) Load 1104
+ 1106: 6(float) FAdd 1105 1103
+ 1107: 30(ptr) AccessChain 1082(m) 377 393
+ Store 1107 1106
+ 1108: 30(ptr) AccessChain 1082(m) 381 342
+ 1109: 6(float) Load 1108
+ 1110: 30(ptr) AccessChain 1088(tt) 390
+ 1111: 6(float) Load 1110
+ 1112: 6(float) FMul 1109 1111
+ 1113: 30(ptr) AccessChain 1082(m) 377 342
+ 1114: 6(float) Load 1113
+ 1115: 6(float) FAdd 1114 1112
+ 1116: 30(ptr) AccessChain 1082(m) 377 342
+ Store 1116 1115
+ 1117: 30(ptr) AccessChain 1082(m) 381 402
+ 1118: 6(float) Load 1117
+ 1119: 30(ptr) AccessChain 1088(tt) 390
+ 1120: 6(float) Load 1119
+ 1121: 6(float) FMul 1118 1120
+ 1122: 30(ptr) AccessChain 1082(m) 377 402
+ 1123: 6(float) Load 1122
+ 1124: 6(float) FAdd 1123 1121
+ 1125: 30(ptr) AccessChain 1082(m) 377 402
+ Store 1125 1124
+ 1126: 30(ptr) AccessChain 1082(m) 436 390
+ 1127: 6(float) Load 1126
+ 1128: 30(ptr) AccessChain 1088(tt) 393
+ 1129: 6(float) Load 1128
+ 1130: 6(float) FMul 1127 1129
+ 1131: 30(ptr) AccessChain 1082(m) 377 390
+ 1132: 6(float) Load 1131
+ 1133: 6(float) FAdd 1132 1130
+ 1134: 30(ptr) AccessChain 1082(m) 377 390
+ Store 1134 1133
+ 1135: 30(ptr) AccessChain 1082(m) 436 393
+ 1136: 6(float) Load 1135
+ 1137: 30(ptr) AccessChain 1088(tt) 393
+ 1138: 6(float) Load 1137
+ 1139: 6(float) FMul 1136 1138
+ 1140: 30(ptr) AccessChain 1082(m) 377 393
+ 1141: 6(float) Load 1140
+ 1142: 6(float) FAdd 1141 1139
+ 1143: 30(ptr) AccessChain 1082(m) 377 393
+ Store 1143 1142
+ 1144: 30(ptr) AccessChain 1082(m) 436 342
+ 1145: 6(float) Load 1144
+ 1146: 30(ptr) AccessChain 1088(tt) 393
+ 1147: 6(float) Load 1146
+ 1148: 6(float) FMul 1145 1147
+ 1149: 30(ptr) AccessChain 1082(m) 377 342
+ 1150: 6(float) Load 1149
+ 1151: 6(float) FAdd 1150 1148
+ 1152: 30(ptr) AccessChain 1082(m) 377 342
+ Store 1152 1151
+ 1153: 30(ptr) AccessChain 1082(m) 436 402
+ 1154: 6(float) Load 1153
+ 1155: 30(ptr) AccessChain 1088(tt) 393
+ 1156: 6(float) Load 1155
+ 1157: 6(float) FMul 1154 1156
+ 1158: 30(ptr) AccessChain 1082(m) 377 402
+ 1159: 6(float) Load 1158
+ 1160: 6(float) FAdd 1159 1157
+ 1161: 30(ptr) AccessChain 1082(m) 377 402
+ Store 1161 1160
+ 1162: 30(ptr) AccessChain 1082(m) 337 390
+ 1163: 6(float) Load 1162
+ 1164: 30(ptr) AccessChain 1088(tt) 342
+ 1165: 6(float) Load 1164
+ 1166: 6(float) FMul 1163 1165
+ 1167: 30(ptr) AccessChain 1082(m) 377 390
+ 1168: 6(float) Load 1167
+ 1169: 6(float) FAdd 1168 1166
+ 1170: 30(ptr) AccessChain 1082(m) 377 390
+ Store 1170 1169
+ 1171: 30(ptr) AccessChain 1082(m) 337 393
+ 1172: 6(float) Load 1171
+ 1173: 30(ptr) AccessChain 1088(tt) 342
+ 1174: 6(float) Load 1173
+ 1175: 6(float) FMul 1172 1174
+ 1176: 30(ptr) AccessChain 1082(m) 377 393
+ 1177: 6(float) Load 1176
+ 1178: 6(float) FAdd 1177 1175
+ 1179: 30(ptr) AccessChain 1082(m) 377 393
+ Store 1179 1178
+ 1180: 30(ptr) AccessChain 1082(m) 337 342
+ 1181: 6(float) Load 1180
+ 1182: 30(ptr) AccessChain 1088(tt) 342
+ 1183: 6(float) Load 1182
+ 1184: 6(float) FMul 1181 1183
+ 1185: 30(ptr) AccessChain 1082(m) 377 342
+ 1186: 6(float) Load 1185
+ 1187: 6(float) FAdd 1186 1184
+ 1188: 30(ptr) AccessChain 1082(m) 377 342
+ Store 1188 1187
+ 1189: 30(ptr) AccessChain 1082(m) 337 402
+ 1190: 6(float) Load 1189
+ 1191: 30(ptr) AccessChain 1088(tt) 342
+ 1192: 6(float) Load 1191
+ 1193: 6(float) FMul 1190 1192
+ 1194: 30(ptr) AccessChain 1082(m) 377 402
+ 1195: 6(float) Load 1194
+ 1196: 6(float) FAdd 1195 1193
+ 1197: 30(ptr) AccessChain 1082(m) 377 402
+ Store 1197 1196
+ 1198: 304 Load 1082(m)
+ ReturnValue 1198
+ FunctionEnd
+310(TDInstanceMat3(i1;): 287 Function None 288
+ 309(id): 29(ptr) FunctionParameter
+ 311: Label
+ 1201(m): 1028(ptr) Variable Function
+ Store 1201(m) 1031
+ 1202: 287 Load 1201(m)
+ ReturnValue 1202
+ FunctionEnd
+313(TDInstanceMat3ForNorm(i1;): 287 Function None 288
+ 312(id): 29(ptr) FunctionParameter
+ 314: Label
+ 1205(m): 1028(ptr) Variable Function
+ 1206(param): 29(ptr) Variable Function
+ 1207: 28(int) Load 312(id)
+ Store 1206(param) 1207
+ 1208: 287 FunctionCall 310(TDInstanceMat3(i1;) 1206(param)
+ Store 1205(m) 1208
+ 1209: 287 Load 1205(m)
+ ReturnValue 1209
+ FunctionEnd
+318(TDInstanceColor(i1;vf4;): 7(fvec4) Function None 315
+ 316(index): 29(ptr) FunctionParameter
+ 317(curColor): 8(ptr) FunctionParameter
+ 319: Label
+ 1216(coord): 29(ptr) Variable Function
+ 1218(samp): 8(ptr) Variable Function
+ 1224(v): 8(ptr) Variable Function
+ 1212: 950(ptr) AccessChain 376 381
+ 1213: 28(int) Load 1212
+ 1214: 28(int) Load 316(index)
+ 1215: 28(int) ISub 1214 1213
+ Store 316(index) 1215
+ 1217: 28(int) Load 316(index)
+ Store 1216(coord) 1217
+ 1220: 929 Load 1219(sTDInstanceColor)
+ 1221: 28(int) Load 1216(coord)
+ 1222: 928 Image 1220
+ 1223: 7(fvec4) ImageFetch 1222 1221
+ Store 1218(samp) 1223
+ 1225: 30(ptr) AccessChain 1218(samp) 390
+ 1226: 6(float) Load 1225
+ 1227: 30(ptr) AccessChain 1224(v) 390
+ Store 1227 1226
+ 1228: 30(ptr) AccessChain 1218(samp) 393
+ 1229: 6(float) Load 1228
+ 1230: 30(ptr) AccessChain 1224(v) 393
+ Store 1230 1229
+ 1231: 30(ptr) AccessChain 1218(samp) 342
+ 1232: 6(float) Load 1231
+ 1233: 30(ptr) AccessChain 1224(v) 342
+ Store 1233 1232
+ 1234: 30(ptr) AccessChain 1224(v) 402
+ Store 1234 489
+ 1235: 30(ptr) AccessChain 1224(v) 390
+ 1236: 6(float) Load 1235
+ 1237: 30(ptr) AccessChain 317(curColor) 390
+ Store 1237 1236
+ 1238: 30(ptr) AccessChain 1224(v) 393
+ 1239: 6(float) Load 1238
+ 1240: 30(ptr) AccessChain 317(curColor) 393
+ Store 1240 1239
+ 1241: 30(ptr) AccessChain 1224(v) 342
+ 1242: 6(float) Load 1241
+ 1243: 30(ptr) AccessChain 317(curColor) 342
+ Store 1243 1242
+ 1244: 7(fvec4) Load 317(curColor)
+ ReturnValue 1244
+ FunctionEnd
+321(TDOutputSwizzle(vf4;): 7(fvec4) Function None 9
+ 320(c): 8(ptr) FunctionParameter
+ 322: Label
+ 1247: 7(fvec4) Load 320(c)
+ ReturnValue 1247
+ FunctionEnd
+327(TDOutputSwizzle(vu4;): 323(ivec4) Function None 325
+ 326(c): 324(ptr) FunctionParameter
+ 328: Label
+ 1250: 323(ivec4) Load 326(c)
+ ReturnValue 1250
+ FunctionEnd
diff --git a/Test/baseResults/vk.relaxed.stagelink.vert.out b/Test/baseResults/vk.relaxed.stagelink.vert.out
index b9173f2..47e1b4f 100644
--- a/Test/baseResults/vk.relaxed.stagelink.vert.out
+++ b/Test/baseResults/vk.relaxed.stagelink.vert.out
@@ -435,7 +435,7 @@
0:? 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2})
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 92
Capability Shader
@@ -593,7 +593,7 @@
ReturnValue 64
FunctionEnd
// Module Version 10000
-// Generated by (magic number): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 74
Capability Shader
diff --git a/Test/baseResults/vulkan.ast.vert.out b/Test/baseResults/vulkan.ast.vert.out
index 68e892b..c893103 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): 8000a
+// Generated by (magic number): 8000b
// Id's are bound by 50
Capability Shader
diff --git a/Test/baseResults/vulkan.frag.out b/Test/baseResults/vulkan.frag.out
index 28134ae..78aea82 100644
--- a/Test/baseResults/vulkan.frag.out
+++ b/Test/baseResults/vulkan.frag.out
@@ -25,37 +25,38 @@
ERROR: 0:43: 'push_constant' : can only be used with a block
ERROR: 0:45: 'push_constant' : cannot declare a default, can only be used on a block
ERROR: 0:46: 'binding' : cannot be used with push_constant
-ERROR: 0:54: 'binding' : sampler/texture/image requires layout(binding=X)
-ERROR: 0:55: 'binding' : sampler/texture/image requires layout(binding=X)
-ERROR: 0:55: 'input_attachment_index' : can only be used with a subpass
-ERROR: 0:56: 'binding' : sampler/texture/image requires layout(binding=X)
-ERROR: 0:56: 'input_attachment_index' : can only be used with a subpass
+ERROR: 0:49: 'push_constant' : Push constants blocks can't be an array
ERROR: 0:57: 'binding' : sampler/texture/image requires layout(binding=X)
-ERROR: 0:57: 'subpass' : requires an input_attachment_index layout qualifier
ERROR: 0:58: 'binding' : sampler/texture/image requires layout(binding=X)
-ERROR: 0:63: 'subpassLoadMS' : no matching overloaded function found
-ERROR: 0:64: 'subpassLoad' : no matching overloaded function found
+ERROR: 0:58: 'input_attachment_index' : can only be used with a subpass
+ERROR: 0:59: 'binding' : sampler/texture/image requires layout(binding=X)
+ERROR: 0:59: 'input_attachment_index' : can only be used with a subpass
+ERROR: 0:60: 'binding' : sampler/texture/image requires layout(binding=X)
+ERROR: 0:60: 'subpass' : requires an input_attachment_index layout qualifier
+ERROR: 0:61: 'binding' : sampler/texture/image requires layout(binding=X)
ERROR: 0:66: 'subpassLoadMS' : no matching overloaded function found
-ERROR: 0:69: 'subroutine' : not allowed when generating SPIR-V
-ERROR: 0:69: 'subroutine' : feature not yet implemented
-ERROR: 0:70: 'subroutine' : not allowed when generating SPIR-V
-ERROR: 0:70: 'subroutine' : feature not yet implemented
-ERROR: 0:72: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan
-ERROR: 0:76: 'texture' : no matching overloaded function found
-ERROR: 0:77: 'imageStore' : no matching overloaded function found
-WARNING: 0:85: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
+ERROR: 0:67: 'subpassLoad' : no matching overloaded function found
+ERROR: 0:69: 'subpassLoadMS' : no matching overloaded function found
+ERROR: 0:72: 'subroutine' : not allowed when generating SPIR-V
+ERROR: 0:72: 'subroutine' : feature not yet implemented
+ERROR: 0:73: 'subroutine' : not allowed when generating SPIR-V
+ERROR: 0:73: 'subroutine' : feature not yet implemented
+ERROR: 0:75: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan
+ERROR: 0:79: 'texture' : no matching overloaded function found
+ERROR: 0:80: 'imageStore' : no matching overloaded function found
+WARNING: 0:88: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
"precision mediump int; precision highp float;"
-ERROR: 0:94: 'call argument' : sampler constructor must appear at point of use
-ERROR: 0:95: 'call argument' : sampler constructor must appear at point of use
-ERROR: 0:96: ',' : sampler constructor must appear at point of use
-ERROR: 0:97: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp sampler2D' and a right operand of type ' temp sampler2D' (or there is no acceptable conversion)
ERROR: 0:97: 'call argument' : sampler constructor must appear at point of use
-ERROR: 0:99: 'gl_NumSamples' : undeclared identifier
-ERROR: 0:104: 'noise1' : no matching overloaded function found
-ERROR: 0:105: 'noise2' : no matching overloaded function found
-ERROR: 0:106: 'noise3' : no matching overloaded function found
-ERROR: 0:107: 'noise4' : no matching overloaded function found
-ERROR: 54 compilation errors. No code generated.
+ERROR: 0:98: 'call argument' : sampler constructor must appear at point of use
+ERROR: 0:99: ',' : sampler constructor must appear at point of use
+ERROR: 0:100: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp sampler2D' and a right operand of type ' temp sampler2D' (or there is no acceptable conversion)
+ERROR: 0:100: 'call argument' : sampler constructor must appear at point of use
+ERROR: 0:102: 'gl_NumSamples' : undeclared identifier
+ERROR: 0:107: 'noise1' : no matching overloaded function found
+ERROR: 0:108: 'noise2' : no matching overloaded function found
+ERROR: 0:109: 'noise3' : no matching overloaded function found
+ERROR: 0:110: 'noise4' : no matching overloaded function found
+ERROR: 55 compilation errors. No code generated.
ERROR: Linking fragment stage: Only one push_constant block is allowed per stage
diff --git a/Test/baseResults/xfbUnsizedArray.error.tese.out b/Test/baseResults/xfbUnsizedArray.error.tese.out
new file mode 100644
index 0000000..df3495f
--- /dev/null
+++ b/Test/baseResults/xfbUnsizedArray.error.tese.out
@@ -0,0 +1,35 @@
+xfbUnsizedArray.error.tese
+ERROR: 0:4: 'xfb_offset' : unsized array in buffer 0
+ERROR: 1 compilation errors. No code generated.
+
+
+Shader version: 430
+Requested GL_ARB_enhanced_layouts
+in xfb mode
+input primitive = isolines
+vertex spacing = none
+triangle order = none
+using point mode
+ERROR: node is still EOpNull!
+0:6 Function Definition: main( ( global void)
+0:6 Function Parameters:
+0:? Linker Objects
+0:? 'unsized' (layout( xfb_buffer=0 xfb_offset=0) out unsized 1-element array of 4-component vector of float)
+
+
+Linked tessellation evaluation stage:
+
+
+Shader version: 430
+Requested GL_ARB_enhanced_layouts
+in xfb mode
+input primitive = isolines
+vertex spacing = equal_spacing
+triangle order = ccw
+using point mode
+ERROR: node is still EOpNull!
+0:6 Function Definition: main( ( global void)
+0:6 Function Parameters:
+0:? Linker Objects
+0:? 'unsized' (layout( xfb_buffer=0 xfb_offset=0) out 1-element array of 4-component vector of float)
+
diff --git a/Test/constantUnaryConversion.comp b/Test/constantUnaryConversion.comp
index 3c479ae..f0710cd 100644
--- a/Test/constantUnaryConversion.comp
+++ b/Test/constantUnaryConversion.comp
@@ -13,11 +13,18 @@
const uint64_t uint64_t_init = uint64_t(4);
const float16_t float16_t_init = float16_t(42.0);
const float32_t float32_t_init = float32_t(13.0);
-const float64_t float64_t_init = float64_t(-4.0);
+const float64_t float64_t_init = float64_t(4.0);
+
+const float16_t neg_float16_t_init = float16_t(-42.0);
+const float32_t neg_float32_t_init = float32_t(-13.0);
+const float64_t neg_float64_t_init = float64_t(-4.0);
#define TYPE_TO_TYPE(x, y) \
const x y##_to_##x = x(y##_init)
+#define TYPE_TO_TYPE_PREFIX(prefix, x, y) \
+ const x prefix##_##y##_to_##x = x(prefix##_##y##_init)
+
#define TYPE_TO(x) \
TYPE_TO_TYPE(x, bool); \
TYPE_TO_TYPE(x, int8_t); \
@@ -45,4 +52,18 @@
TYPE_TO(float32_t);
TYPE_TO(float64_t);
+#define NEG_FLOAT_TO(x) \
+ TYPE_TO_TYPE_PREFIX(neg, x, float16_t); \
+ TYPE_TO_TYPE_PREFIX(neg, x, float32_t); \
+ TYPE_TO_TYPE_PREFIX(neg, x, float64_t)
+
+NEG_FLOAT_TO(bool);
+NEG_FLOAT_TO(int8_t);
+NEG_FLOAT_TO(int16_t);
+NEG_FLOAT_TO(int32_t);
+NEG_FLOAT_TO(int64_t);
+NEG_FLOAT_TO(float16_t);
+NEG_FLOAT_TO(float32_t);
+NEG_FLOAT_TO(float64_t);
+
void main() {}
diff --git a/Test/coord_conventions.frag b/Test/coord_conventions.frag
new file mode 100644
index 0000000..4ae6060
--- /dev/null
+++ b/Test/coord_conventions.frag
@@ -0,0 +1,36 @@
+#version 140
+
+#extension GL_ARB_fragment_coord_conventions: require
+#extension GL_ARB_explicit_attrib_location : enable
+
+#ifdef GL_ES
+precision mediump float;
+#endif
+
+in vec4 i;
+
+layout (origin_upper_left,pixel_center_integer) in vec4 gl_FragCoord;
+layout (location = 0) out vec4 myColor;
+
+const float eps=0.001;
+
+void main()
+{
+ myColor = vec4(0.2);
+ if (gl_FragCoord.y >= 10) {
+ myColor.b = 0.8;
+ }
+ if (gl_FragCoord.y == trunc(gl_FragCoord.y)) {
+ myColor.g = 0.8;
+ }
+ if (gl_FragCoord.x == trunc(gl_FragCoord.x)) {
+ myColor.r = 0.8;
+ }
+
+ vec4 diff = gl_FragCoord - i;
+ if (abs(diff.z)>eps)
+ myColor.b = 0.5;
+ if (abs(diff.w)>eps)
+ myColor.a = 0.5;
+
+}
\ No newline at end of file
diff --git a/Test/enhanced.0.frag b/Test/enhanced.0.frag
new file mode 100644
index 0000000..7a42c05
--- /dev/null
+++ b/Test/enhanced.0.frag
@@ -0,0 +1,9 @@
+#version 450
+
+in vec3 v;
+
+void main()
+{
+ vec4 color = vec4(v);
+}
+
diff --git a/Test/enhanced.1.frag b/Test/enhanced.1.frag
new file mode 100644
index 0000000..9aab34d
--- /dev/null
+++ b/Test/enhanced.1.frag
@@ -0,0 +1,11 @@
+#version 450
+
+in Vertex {
+ vec4 v;
+} vVert;
+
+void main()
+{
+ vec4 color = vec4(vVert.v2.rgb, 1.0);
+}
+
diff --git a/Test/enhanced.2.frag b/Test/enhanced.2.frag
new file mode 100644
index 0000000..c3c194c
--- /dev/null
+++ b/Test/enhanced.2.frag
@@ -0,0 +1,7 @@
+#version 450
+
+void main()
+{
+ vec3 color = vec3(0.0,0.0,0.0,1.0);
+}
+
diff --git a/Test/enhanced.3.frag b/Test/enhanced.3.frag
new file mode 100644
index 0000000..1de9f4b
--- /dev/null
+++ b/Test/enhanced.3.frag
@@ -0,0 +1,16 @@
+#version 450 core
+
+layout (location = 0) out vec4 FragColor;
+
+layout (location = 0) in VS_OUT
+{
+ vec2 foobar;
+} fs_in;
+
+layout (binding = 1) uniform sampler2D t0;
+
+void main()
+{
+ FragColor = texture(t0, fs_in.foobar);
+}
+
diff --git a/Test/enhanced.3.vert b/Test/enhanced.3.vert
new file mode 100644
index 0000000..043ee24
--- /dev/null
+++ b/Test/enhanced.3.vert
@@ -0,0 +1,22 @@
+#version 450 core
+
+layout (location = 0) in vec3 aPos;
+layout (location = 1) in vec2 aTexCoords;
+
+layout (binding = 0) uniform anonblock {
+ mat4 model;
+ mat4 view;
+ mat4 projection;
+} ;
+
+layout (location = 0) out VS_OUT
+{
+ vec2 TexCoords;
+} vs_out;
+
+void main()
+{
+ gl_Position = projection * view * model * vec4(aPos, 1.0);
+ vs_out.TexCoords = aTexCoords;
+}
+
diff --git a/Test/enhanced.4.frag b/Test/enhanced.4.frag
new file mode 100644
index 0000000..9c16606
--- /dev/null
+++ b/Test/enhanced.4.frag
@@ -0,0 +1,16 @@
+#version 450 core
+
+layout (location = 0) out vec4 FragColor;
+
+layout (location = 1) in VS_OUT
+{
+ vec2 TexCoords;
+} fs_in;
+
+layout (binding = 1) uniform sampler2D t0;
+
+void main()
+{
+ FragColor = texture(t0, fs_in.TexCoords);
+}
+
diff --git a/Test/enhanced.4.vert b/Test/enhanced.4.vert
new file mode 100644
index 0000000..043ee24
--- /dev/null
+++ b/Test/enhanced.4.vert
@@ -0,0 +1,22 @@
+#version 450 core
+
+layout (location = 0) in vec3 aPos;
+layout (location = 1) in vec2 aTexCoords;
+
+layout (binding = 0) uniform anonblock {
+ mat4 model;
+ mat4 view;
+ mat4 projection;
+} ;
+
+layout (location = 0) out VS_OUT
+{
+ vec2 TexCoords;
+} vs_out;
+
+void main()
+{
+ gl_Position = projection * view * model * vec4(aPos, 1.0);
+ vs_out.TexCoords = aTexCoords;
+}
+
diff --git a/Test/enhanced.5.frag b/Test/enhanced.5.frag
new file mode 100644
index 0000000..b2a51e2
--- /dev/null
+++ b/Test/enhanced.5.frag
@@ -0,0 +1,16 @@
+#version 450 core
+
+layout (location = 0) out vec4 FragColor;
+
+layout (location = 0) in VS_OUT
+{
+ vec3 TexCoords;
+} fs_in;
+
+layout (binding = 1) uniform sampler2D t0;
+
+void main()
+{
+ FragColor = texture(t0, fs_in.TexCoords.xy);
+}
+
diff --git a/Test/enhanced.5.vert b/Test/enhanced.5.vert
new file mode 100644
index 0000000..043ee24
--- /dev/null
+++ b/Test/enhanced.5.vert
@@ -0,0 +1,22 @@
+#version 450 core
+
+layout (location = 0) in vec3 aPos;
+layout (location = 1) in vec2 aTexCoords;
+
+layout (binding = 0) uniform anonblock {
+ mat4 model;
+ mat4 view;
+ mat4 projection;
+} ;
+
+layout (location = 0) out VS_OUT
+{
+ vec2 TexCoords;
+} vs_out;
+
+void main()
+{
+ gl_Position = projection * view * model * vec4(aPos, 1.0);
+ vs_out.TexCoords = aTexCoords;
+}
+
diff --git a/Test/enhanced.6.frag b/Test/enhanced.6.frag
new file mode 100644
index 0000000..e1cf685
--- /dev/null
+++ b/Test/enhanced.6.frag
@@ -0,0 +1,16 @@
+#version 450 core
+
+layout (location = 0) out vec4 FragColor;
+
+layout (location = 0) in VS_OUT
+{
+ vec2 TexCoords;
+} fs_in[1];
+
+layout (binding = 1) uniform sampler2D t0;
+
+void main()
+{
+ FragColor = texture(t0, fs_in[0].TexCoords);
+}
+
diff --git a/Test/enhanced.6.vert b/Test/enhanced.6.vert
new file mode 100644
index 0000000..876a903
--- /dev/null
+++ b/Test/enhanced.6.vert
@@ -0,0 +1,22 @@
+#version 450 core
+
+layout (location = 0) in vec3 aPos;
+layout (location = 1) in vec2 aTexCoords;
+
+layout (binding = 0) uniform anonblock {
+ mat4 model;
+ mat4 view;
+ mat4 projection;
+} ;
+
+layout (location = 0) out VS_OUT
+{
+ vec2 TexCoords;
+} vs_out[2];
+
+void main()
+{
+ gl_Position = projection * view * model * vec4(aPos, 1.0);
+ vs_out[0].TexCoords = aTexCoords;
+}
+
diff --git a/Test/enhanced.7.frag b/Test/enhanced.7.frag
new file mode 100644
index 0000000..f6e5279
--- /dev/null
+++ b/Test/enhanced.7.frag
@@ -0,0 +1,20 @@
+#version 450 core
+
+layout (location = 0) out vec4 FragColor;
+
+layout (location = 0) in Vertex
+{
+ vec4 color;
+ vec3 worldSpacePos;
+ vec3 worldSpaceNorm;
+ vec2 texCoord1;
+ flat int cameraIndex;
+} fs_in;
+
+layout (binding = 1) uniform sampler2D t0;
+
+void main()
+{
+ FragColor = texture(t0, fs_in.texCoord1);
+}
+
diff --git a/Test/enhanced.7.vert b/Test/enhanced.7.vert
new file mode 100644
index 0000000..4e70a61
--- /dev/null
+++ b/Test/enhanced.7.vert
@@ -0,0 +1,27 @@
+#version 450 core
+
+layout (location = 0) in vec3 aPos;
+layout (location = 1) in vec2 aTexCoords;
+
+layout (binding = 0) uniform anonblock {
+ mat4 model;
+ mat4 view;
+ mat4 projection;
+} ;
+
+layout (location = 0) out Vertex
+{
+ vec4 color;
+ vec3 worldSpacePos;
+ vec3 worldSpaceNorm;
+ vec2 texCoord1;
+ flat int cameraIndex;
+ float ii;
+} vs_out;
+
+void main()
+{
+ gl_Position = projection * view * model * vec4(aPos, 1.0);
+ vs_out.texCoord1 = aTexCoords;
+}
+
diff --git a/Test/floatBitsToInt.vert b/Test/floatBitsToInt.vert
new file mode 100644
index 0000000..a6bb18a
--- /dev/null
+++ b/Test/floatBitsToInt.vert
@@ -0,0 +1,18 @@
+#version 150
+#extension GL_ARB_gpu_shader5 : require
+uniform int expected_value;
+uniform float value;
+out vec4 result;
+void main()
+{
+ result = vec4(1.0, 1.0, 1.0, 1.0);
+ int ret_val = floatBitsToInt(value);
+ if (expected_value != ret_val){ result = vec4(0.0, 0.0, 0.0, 0.0); }
+
+ switch (gl_VertexID) {
+ case 0: gl_Position = vec4(-1.0, 1.0, 0.0, 1.0); break;
+ case 1: gl_Position = vec4( 1.0, 1.0, 0.0, 1.0); break;
+ case 2: gl_Position = vec4(-1.0,-1.0, 0.0, 1.0); break;
+ case 3: gl_Position = vec4( 1.0,-1.0, 0.0, 1.0); break;
+ }
+}
\ No newline at end of file
diff --git a/Test/gl_FragCoord.frag b/Test/gl_FragCoord.frag
new file mode 100644
index 0000000..7bb1792
--- /dev/null
+++ b/Test/gl_FragCoord.frag
@@ -0,0 +1,31 @@
+#version 150 core
+#extension GL_ARB_explicit_attrib_location : enable
+
+#ifdef GL_ES
+precision mediump float;
+#endif
+
+layout (origin_upper_left,pixel_center_integer) in vec4 gl_FragCoord;
+float myGlobalVar = gl_FragCoord.x;
+layout (origin_upper_left,pixel_center_integer) in vec4 gl_FragCoord;
+
+in vec4 i;
+layout (location = 0) out vec4 myColor;
+const float eps=0.001;
+
+void main() {
+ myColor = vec4(0.2);
+ if (gl_FragCoord.y >= 10) {
+ myColor.b = 0.8;
+ }
+ if (gl_FragCoord.y == trunc(gl_FragCoord.y)) {
+ myColor.g = 0.8;
+ }
+ if (gl_FragCoord.x == trunc(gl_FragCoord.x)) {
+ myColor.r = 0.8;
+ }
+
+ vec4 diff = gl_FragCoord - i;
+ if (abs(diff.z)>eps) myColor.b = 0.5;
+ if (abs(diff.w)>eps) myColor.a = 0.5;
+}
diff --git a/Test/glsl.versionOverride.comp b/Test/glsl.versionOverride.comp
new file mode 100644
index 0000000..f72663e
--- /dev/null
+++ b/Test/glsl.versionOverride.comp
@@ -0,0 +1,11 @@
+/*
+
+glslangValidator.exe --glsl-version 460 -V -S comp -o glsl.versionOverride.comp.out glsl.versionOverride.comp
+
+*/
+
+#version 110
+
+void main()
+{
+}
diff --git a/Test/glsl.versionOverride.frag b/Test/glsl.versionOverride.frag
new file mode 100644
index 0000000..1267994
--- /dev/null
+++ b/Test/glsl.versionOverride.frag
@@ -0,0 +1,11 @@
+/*
+
+glslangValidator.exe --glsl-version 420 -V -S frag -o glsl.versionOverride.frag.out glsl.versionOverride.frag
+
+*/
+
+#version 110
+
+void main()
+{
+}
diff --git a/Test/glsl.versionOverride.geom b/Test/glsl.versionOverride.geom
new file mode 100644
index 0000000..bcfc2f2
--- /dev/null
+++ b/Test/glsl.versionOverride.geom
@@ -0,0 +1,16 @@
+/*
+
+glslangValidator.exe --glsl-version 430 -V -S geom -o glsl.versionOverride.geom.out glsl.versionOverride.geom
+
+*/
+
+#version 110
+
+layout (points) in;
+layout (line_strip, max_vertices = 2) out;
+
+void main() {
+ EmitVertex();
+ EmitVertex();
+ EndPrimitive();
+}
diff --git a/Test/glsl.versionOverride.tesc b/Test/glsl.versionOverride.tesc
new file mode 100644
index 0000000..3b7b1e3
--- /dev/null
+++ b/Test/glsl.versionOverride.tesc
@@ -0,0 +1,13 @@
+/*
+
+glslangValidator.exe --glsl-version 440 -V -S tesc -o glsl.versionOverride.tesc.out glsl.versionOverride.tesc
+
+*/
+
+#version 110
+
+layout(vertices = 3) out;
+
+void main()
+{
+}
diff --git a/Test/glsl.versionOverride.tese b/Test/glsl.versionOverride.tese
new file mode 100644
index 0000000..e92d5a9
--- /dev/null
+++ b/Test/glsl.versionOverride.tese
@@ -0,0 +1,13 @@
+/*
+
+glslangValidator.exe --glsl-version 450 -V -S tese -o glsl.versionOverride.tese.out glsl.versionOverride.tese
+
+*/
+
+#version 110
+
+layout(triangles) in;
+
+void main()
+{
+}
diff --git a/Test/glsl.versionOverride.vert b/Test/glsl.versionOverride.vert
new file mode 100644
index 0000000..2d5effc
--- /dev/null
+++ b/Test/glsl.versionOverride.vert
@@ -0,0 +1,11 @@
+/*
+
+glslangValidator.exe --glsl-version 410 -V -S vert -o glsl.versionOverride.vert.out glsl.versionOverride.vert
+
+*/
+
+#version 110
+
+void main()
+{
+}
diff --git a/Test/hlsl.instance.geom b/Test/hlsl.instance.geom
new file mode 100644
index 0000000..5295f38
--- /dev/null
+++ b/Test/hlsl.instance.geom
@@ -0,0 +1,17 @@
+struct VertexShaderOutput
+{
+ float4 m_position : SV_POSITION;
+ float4 m_color : COLOR0;
+};
+
+[maxvertexcount(3)]
+[instance(5)]
+void GeometryShader(triangle VertexShaderOutput input[3], inout TriangleStream<VertexShaderOutput> output, uint id : SV_GSInstanceID)
+{
+ [loop]
+ for (int i = 0; i < 3; ++i)
+ {
+ output.Append(input[i]);
+ }
+ output.RestartStrip();
+}
\ No newline at end of file
diff --git a/Test/hlsl.namespace.frag b/Test/hlsl.namespace.frag
index 76c3062..d2b0445 100644
--- a/Test/hlsl.namespace.frag
+++ b/Test/hlsl.namespace.frag
@@ -12,7 +12,7 @@
float4 getVec() { return v2; }
class C1 {
- float4 getVec() { return v2; }
+ static float4 getVec() { return v2; }
};
}
}
diff --git a/Test/hlsl.spv.1.6.discard.frag b/Test/hlsl.spv.1.6.discard.frag
new file mode 100644
index 0000000..7d9271c
--- /dev/null
+++ b/Test/hlsl.spv.1.6.discard.frag
@@ -0,0 +1,14 @@
+void foo(float f)
+{
+ if (f < 1.0)
+ discard;
+}
+
+void PixelShaderFunction(float4 input) : COLOR0
+{
+ foo(input.z);
+ if (input.x)
+ discard;
+ float f = input.x;
+ discard;
+}
diff --git a/Test/hlsl.structbuffer.rwbyte2.comp b/Test/hlsl.structbuffer.rwbyte2.comp
new file mode 100644
index 0000000..42d61c0
--- /dev/null
+++ b/Test/hlsl.structbuffer.rwbyte2.comp
@@ -0,0 +1,10 @@
+RWStructuredBuffer<uint> g_sbuf;
+RWByteAddressBuffer g_bbuf;
+
+
+void main()
+{
+ uint f = g_bbuf.Load(16);
+ g_sbuf[0] = f;
+}
+
diff --git a/Test/hlsl.w-recip.frag b/Test/hlsl.w-recip.frag
new file mode 100644
index 0000000..4812d26
--- /dev/null
+++ b/Test/hlsl.w-recip.frag
@@ -0,0 +1,12 @@
+float4 AmbientColor = float4(1, 0.5, 0, 1);
+float4 AmbientColor2 = float4(0.5, 1, 0, 0);
+
+float4 main(float4 vpos : SV_POSITION) : SV_TARGET
+{
+ float4 vpos_t = float4(vpos.xyz, 1 / vpos.w);
+ if (vpos_t.x < 400)
+ return AmbientColor;
+ else
+ return AmbientColor2;
+}
+
diff --git a/Test/hlsl.w-recip2.frag b/Test/hlsl.w-recip2.frag
new file mode 100644
index 0000000..8ef49c9
--- /dev/null
+++ b/Test/hlsl.w-recip2.frag
@@ -0,0 +1,19 @@
+struct VSOutput
+{
+ float4 PositionPS : SV_Position;
+ float3 PosInLightViewSpace : LIGHT_SPACE_POS;
+ float3 NormalWS : NORMALWS;
+ float2 TexCoord : TEXCOORD;
+};
+
+float4 AmbientColor = float4(1, 0.5, 0, 1);
+float4 AmbientColor2 = float4(0.5, 1, 0, 0);
+
+float4 main(VSOutput VSOut) : SV_TARGET
+{
+ if (VSOut.PositionPS.x < 400)
+ return AmbientColor;
+ else
+ return AmbientColor2;
+}
+
diff --git a/Test/iomap.blockOutVariableIn.2.vert b/Test/iomap.blockOutVariableIn.2.vert
new file mode 100644
index 0000000..67f45c9
--- /dev/null
+++ b/Test/iomap.blockOutVariableIn.2.vert
@@ -0,0 +1,14 @@
+#version 440
+
+layout(location = 0) out Block
+{
+ vec4 a1;
+ vec2 a2;
+};
+
+void main()
+{
+ a1 = vec4(1.0);
+ a2 = vec2(0.5);
+ gl_Position = vec4(1.0);
+}
diff --git a/Test/iomap.blockOutVariableIn.frag b/Test/iomap.blockOutVariableIn.frag
new file mode 100644
index 0000000..f2cb26e
--- /dev/null
+++ b/Test/iomap.blockOutVariableIn.frag
@@ -0,0 +1,11 @@
+#version 440
+
+layout(location = 0) in vec4 a1;
+layout(location = 1) in vec2 a2;
+
+layout(location = 0) out vec4 color;
+
+void main()
+{
+ color = vec4(a1.xy, a2);
+}
diff --git a/Test/iomap.blockOutVariableIn.geom b/Test/iomap.blockOutVariableIn.geom
new file mode 100644
index 0000000..feefdd1
--- /dev/null
+++ b/Test/iomap.blockOutVariableIn.geom
@@ -0,0 +1,28 @@
+#version 440
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices=3) out;
+
+layout(location = 0) in vec4 in_a1[3];
+layout(location = 1) in vec2 in_a2[3];
+
+layout(location = 0) out vec4 a1;
+layout(location = 1) out vec2 a2;
+
+void main()
+{
+ a1 = in_a1[0];
+ a2 = in_a2[0];
+ gl_Position = vec4(1.0);
+ EmitVertex();
+
+ a1 = in_a1[1];
+ a2 = in_a2[1];
+ gl_Position = vec4(1.0);
+ EmitVertex();
+
+ a1 = in_a1[2];
+ a2 = in_a2[2];
+ gl_Position = vec4(1.0);
+ EmitVertex();
+}
diff --git a/Test/iomap.blockOutVariableIn.vert b/Test/iomap.blockOutVariableIn.vert
new file mode 100644
index 0000000..67f45c9
--- /dev/null
+++ b/Test/iomap.blockOutVariableIn.vert
@@ -0,0 +1,14 @@
+#version 440
+
+layout(location = 0) out Block
+{
+ vec4 a1;
+ vec2 a2;
+};
+
+void main()
+{
+ a1 = vec4(1.0);
+ a2 = vec2(0.5);
+ gl_Position = vec4(1.0);
+}
diff --git a/Test/iomap.variableOutBlockIn.2.vert b/Test/iomap.variableOutBlockIn.2.vert
new file mode 100644
index 0000000..f9b80b4
--- /dev/null
+++ b/Test/iomap.variableOutBlockIn.2.vert
@@ -0,0 +1,11 @@
+#version 440
+
+layout(location = 0) out vec4 a1;
+layout(location = 1) out vec2 a2;
+
+void main()
+{
+ a1 = vec4(1.0);
+ a2 = vec2(0.5);
+ gl_Position = vec4(1.0);
+}
diff --git a/Test/iomap.variableOutBlockIn.frag b/Test/iomap.variableOutBlockIn.frag
new file mode 100644
index 0000000..967d769
--- /dev/null
+++ b/Test/iomap.variableOutBlockIn.frag
@@ -0,0 +1,13 @@
+#version 440
+
+layout(location = 0) in Inputs {
+ vec4 a1;
+ vec2 a2;
+};
+
+layout(location = 0) out vec4 color;
+
+void main()
+{
+ color = vec4(a1.xy, a2);
+}
diff --git a/Test/iomap.variableOutBlockIn.geom b/Test/iomap.variableOutBlockIn.geom
new file mode 100644
index 0000000..637ddab
--- /dev/null
+++ b/Test/iomap.variableOutBlockIn.geom
@@ -0,0 +1,19 @@
+#version 440
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices=3) out;
+
+layout(location = 0) in Inputs {
+ vec4 a1;
+ vec2 a2;
+} gin[3];
+
+layout(location = 0) out vec4 a1;
+layout(location = 1) out vec2 a2;
+
+void main()
+{
+ a1 = vec4(1.0);
+ a2 = vec2(0.5);
+ gl_Position = vec4(1.0);
+}
diff --git a/Test/iomap.variableOutBlockIn.vert b/Test/iomap.variableOutBlockIn.vert
new file mode 100644
index 0000000..f9b80b4
--- /dev/null
+++ b/Test/iomap.variableOutBlockIn.vert
@@ -0,0 +1,11 @@
+#version 440
+
+layout(location = 0) out vec4 a1;
+layout(location = 1) out vec2 a2;
+
+void main()
+{
+ a1 = vec4(1.0);
+ a2 = vec2(0.5);
+ gl_Position = vec4(1.0);
+}
diff --git a/Test/noMatchingFunction.frag b/Test/noMatchingFunction.frag
new file mode 100644
index 0000000..d095645
--- /dev/null
+++ b/Test/noMatchingFunction.frag
@@ -0,0 +1,19 @@
+#version 330
+
+struct S
+{
+ float a;
+};
+
+float func(S s)
+{
+ return s.a;
+}
+
+layout(location = 0) out vec4 o_color;
+
+void main()
+{
+ float c = func(1.0f); // ERROR: no matching function
+ o_color = vec4(c);
+}
diff --git a/Test/rayQuery-OpConvertUToAccelerationStructureKHR.comp b/Test/rayQuery-OpConvertUToAccelerationStructureKHR.comp
new file mode 100644
index 0000000..673f9b0
--- /dev/null
+++ b/Test/rayQuery-OpConvertUToAccelerationStructureKHR.comp
@@ -0,0 +1,15 @@
+#version 460
+
+#extension GL_EXT_ray_query : enable
+
+layout(push_constant, std140) uniform params
+{
+ uvec2 tlas;
+};
+
+void main()
+{
+ rayQueryEXT rayQuery;
+ rayQueryInitializeEXT(rayQuery, accelerationStructureEXT(tlas), 0, 0, vec3(0.0), 0.0, vec3(1.0), 1.0);
+ rayQueryTerminateEXT(rayQuery);
+}
\ No newline at end of file
diff --git a/Test/runtests b/Test/runtests
index a7bdda7..2ee0db0 100755
--- a/Test/runtests
+++ b/Test/runtests
@@ -255,6 +255,15 @@
diff -b $BASEDIR/hlsl.y-negate-3.vert.out $TARGETDIR/hlsl.y-negate-3.vert.out || HASERROR=1
#
+# Testing position W reciprocal
+#
+echo "Testing position W reciprocal"
+run -H -e main -V -D -Od -H -i --hlsl-dx-position-w hlsl.w-recip.frag > $TARGETDIR/hlsl.w-recip.frag.out
+diff -b $BASEDIR/hlsl.w-recip.frag.out $TARGETDIR/hlsl.w-recip.frag.out || HASERROR=1
+run -H -e main -V -D -Od -H -i --hlsl-dx-position-w hlsl.w-recip2.frag > $TARGETDIR/hlsl.w-recip2.frag.out
+diff -b $BASEDIR/hlsl.w-recip2.frag.out $TARGETDIR/hlsl.w-recip2.frag.out || HASERROR=1
+
+#
# Testing hlsl_functionality1
#
echo "Testing hlsl_functionality1"
@@ -289,6 +298,46 @@
run --auto-sampled-textures -H -Od -S frag glsl.autosampledtextures.frag > $TARGETDIR/glsl.autosampledtextures.frag.out
diff -b $BASEDIR/glsl.autosampledtextures.frag.out $TARGETDIR/glsl.autosampledtextures.frag.out || HASERROR=1
+# Test --glsl-version
+#
+echo "Testing --glsl-version"
+run --glsl-version 410 -V -S vert glsl.versionOverride.vert > $TARGETDIR/glsl.versionOverride.vert.out
+diff -b $BASEDIR/glsl.versionOverride.vert.out $TARGETDIR/glsl.versionOverride.vert.out || HASERROR=1
+run --glsl-version 420 -V -S frag glsl.versionOverride.frag > $TARGETDIR/glsl.versionOverride.frag.out
+diff -b $BASEDIR/glsl.versionOverride.frag.out $TARGETDIR/glsl.versionOverride.frag.out || HASERROR=1
+run --glsl-version 430 -V -S geom glsl.versionOverride.geom > $TARGETDIR/glsl.versionOverride.geom.out
+diff -b $BASEDIR/glsl.versionOverride.geom.out $TARGETDIR/glsl.versionOverride.geom.out || HASERROR=1
+run --glsl-version 440 -V -S tesc glsl.versionOverride.tesc > $TARGETDIR/glsl.versionOverride.tesc.out
+diff -b $BASEDIR/glsl.versionOverride.tesc.out $TARGETDIR/glsl.versionOverride.tesc.out || HASERROR=1
+run --glsl-version 450 -V -S tese glsl.versionOverride.tese > $TARGETDIR/glsl.versionOverride.tese.out
+diff -b $BASEDIR/glsl.versionOverride.tese.out $TARGETDIR/glsl.versionOverride.tese.out || HASERROR=1
+run --glsl-version 460 -V -S comp glsl.versionOverride.comp > $TARGETDIR/glsl.versionOverride.comp.out
+diff -b $BASEDIR/glsl.versionOverride.comp.out $TARGETDIR/glsl.versionOverride.comp.out || HASERROR=1
+
+#
+# Test --enhanced-msgs
+#
+
+echo "Testing enhanced-msgs"
+run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.0.frag > $TARGETDIR/enhanced.0.frag.out
+diff -b $BASEDIR/enhanced.0.frag.out $TARGETDIR/enhanced.0.frag.out || HASERROR=1
+run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.1.frag > $TARGETDIR/enhanced.1.frag.out
+diff -b $BASEDIR/enhanced.1.frag.out $TARGETDIR/enhanced.1.frag.out || HASERROR=1
+run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.2.frag > $TARGETDIR/enhanced.2.frag.out
+diff -b $BASEDIR/enhanced.2.frag.out $TARGETDIR/enhanced.2.frag.out || HASERROR=1
+run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.3.vert enhanced.3.frag > $TARGETDIR/enhanced.3.link.out
+diff -b $BASEDIR/enhanced.3.link.out $TARGETDIR/enhanced.3.link.out || HASERROR=1
+run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.4.vert enhanced.4.frag > $TARGETDIR/enhanced.4.link.out
+diff -b $BASEDIR/enhanced.4.link.out $TARGETDIR/enhanced.4.link.out || HASERROR=1
+run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.5.vert enhanced.5.frag > $TARGETDIR/enhanced.5.link.out
+diff -b $BASEDIR/enhanced.5.link.out $TARGETDIR/enhanced.5.link.out || HASERROR=1
+run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.6.vert enhanced.6.frag > $TARGETDIR/enhanced.6.link.out
+diff -b $BASEDIR/enhanced.6.link.out $TARGETDIR/enhanced.6.link.out || HASERROR=1
+run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.7.vert enhanced.7.frag > $TARGETDIR/enhanced.7.link.out
+diff -b $BASEDIR/enhanced.7.link.out $TARGETDIR/enhanced.7.link.out || HASERROR=1
+run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml spv.textureError.frag > $TARGETDIR/spv.textureError.frag.out
+diff -b $BASEDIR/spv.textureError.frag.out $TARGETDIR/spv.textureError.frag.out || HASERROR=1
+
#
# Final checking
#
diff --git a/Test/spv.1.6.conditionalDiscard.frag b/Test/spv.1.6.conditionalDiscard.frag
new file mode 100644
index 0000000..ea80337
--- /dev/null
+++ b/Test/spv.1.6.conditionalDiscard.frag
@@ -0,0 +1,14 @@
+#version 400
+
+uniform sampler2D tex;
+in vec2 coord;
+
+void main (void)
+{
+ vec4 v = texture(tex, coord);
+
+ if (v == vec4(0.1,0.2,0.3,0.4))
+ discard;
+
+ gl_FragColor = v;
+}
diff --git a/Test/spv.1.6.helperInvocation.frag b/Test/spv.1.6.helperInvocation.frag
new file mode 100644
index 0000000..4d306db
--- /dev/null
+++ b/Test/spv.1.6.helperInvocation.frag
@@ -0,0 +1,10 @@
+#version 310 es
+precision highp float;
+
+out vec4 outp;
+void main()
+{
+ if (gl_HelperInvocation)
+ ++outp;
+}
+
diff --git a/Test/spv.1.6.samplerBuffer.frag b/Test/spv.1.6.samplerBuffer.frag
new file mode 100644
index 0000000..d12ff3d
--- /dev/null
+++ b/Test/spv.1.6.samplerBuffer.frag
@@ -0,0 +1,11 @@
+#version 140
+
+out vec4 o;
+
+uniform isamplerBuffer sampB;
+
+void main()
+{
+ o.w = float(textureSize(sampB)) / 100.0;
+}
+
diff --git a/Test/spv.1.6.separate.frag b/Test/spv.1.6.separate.frag
new file mode 100644
index 0000000..3e51be4
--- /dev/null
+++ b/Test/spv.1.6.separate.frag
@@ -0,0 +1,14 @@
+#version 400
+
+uniform sampler s;
+
+uniform textureBuffer texBuffer;
+uniform itextureBuffer itexBuffer;
+uniform utextureBuffer utexBuffer;
+
+void main()
+{
+ samplerBuffer (texBuffer, s);
+ isamplerBuffer (itexBuffer, s);
+ usamplerBuffer (utexBuffer, s);
+}
diff --git a/Test/spv.1.6.specConstant.comp b/Test/spv.1.6.specConstant.comp
new file mode 100644
index 0000000..6b47515
--- /dev/null
+++ b/Test/spv.1.6.specConstant.comp
@@ -0,0 +1,18 @@
+#version 450
+
+layout(local_size_x_id = 18, local_size_z_id = 19) in;
+layout(local_size_x = 32, local_size_y = 32) in;
+
+buffer bn {
+ uint a;
+} bi;
+
+void foo(uvec3 wgs)
+{
+ bi.a = wgs.x * gl_WorkGroupSize.y * wgs.z;
+}
+
+void main()
+{
+ foo(gl_WorkGroupSize);
+}
diff --git a/Test/spv.460.subgroupEXT.mesh b/Test/spv.460.subgroupEXT.mesh
new file mode 100644
index 0000000..8ccc14e
--- /dev/null
+++ b/Test/spv.460.subgroupEXT.mesh
@@ -0,0 +1,164 @@
+#version 460
+
+#define MAX_VER 81
+#define MAX_PRIM 32
+
+#define BARRIER() \
+ memoryBarrierShared(); \
+ barrier();
+
+#extension GL_EXT_mesh_shader : enable
+
+layout(local_size_x = 32, local_size_y=1, local_size_z=1) in;
+
+layout(max_vertices=MAX_VER) out;
+layout(max_primitives=MAX_PRIM) out;
+layout(triangles) out;
+
+// test use of builtins in mesh shaders:
+
+void main()
+{
+ uint iid = gl_LocalInvocationID.x;
+ uint gid = gl_WorkGroupID.x;
+ uint vertexCount = MAX_VER; // vertexCount <= max_vertices
+ uint primitiveCount = MAX_PRIM; // primitiveCount <= max_primtives
+ SetMeshOutputsEXT(vertexCount, primitiveCount);
+
+ gl_MeshVerticesEXT[iid].gl_Position = vec4(1.0);
+ gl_MeshVerticesEXT[iid].gl_PointSize = 2.0;
+ gl_MeshVerticesEXT[iid].gl_ClipDistance[3] = 3.0;
+ gl_MeshVerticesEXT[iid].gl_CullDistance[2] = 4.0;
+
+ BARRIER();
+
+ gl_MeshVerticesEXT[iid+1].gl_Position = gl_MeshVerticesEXT[iid].gl_Position;
+ gl_MeshVerticesEXT[iid+1].gl_PointSize = gl_MeshVerticesEXT[iid].gl_PointSize;
+ gl_MeshVerticesEXT[iid+1].gl_ClipDistance[3] = gl_MeshVerticesEXT[iid].gl_ClipDistance[3];
+ gl_MeshVerticesEXT[iid+1].gl_CullDistance[2] = gl_MeshVerticesEXT[iid].gl_CullDistance[2];
+
+ BARRIER();
+
+ gl_MeshPrimitivesEXT[iid].gl_PrimitiveID = 6;
+ gl_MeshPrimitivesEXT[iid].gl_Layer = 7;
+ gl_MeshPrimitivesEXT[iid].gl_ViewportIndex = 8;
+ gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT = false;
+
+ BARRIER();
+
+ gl_MeshPrimitivesEXT[iid+1].gl_PrimitiveID = gl_MeshPrimitivesEXT[iid].gl_PrimitiveID;
+ gl_MeshPrimitivesEXT[iid+1].gl_Layer = gl_MeshPrimitivesEXT[iid].gl_Layer;
+ gl_MeshPrimitivesEXT[iid+1].gl_ViewportIndex = gl_MeshPrimitivesEXT[iid].gl_ViewportIndex;
+ gl_MeshPrimitivesEXT[iid+1].gl_CullPrimitiveEXT = false;
+
+ BARRIER();
+
+ // check bound limits
+ gl_PrimitiveTriangleIndicesEXT[0] = uvec3(1, 1, 1); // range is between [0, vertexCount-1]
+ gl_PrimitiveTriangleIndicesEXT[primitiveCount - 1] = uvec3(2, 2, 2); // array size is primitiveCount*3 for triangle
+ gl_PrimitiveTriangleIndicesEXT[gid] = gl_PrimitiveTriangleIndicesEXT[gid-1];
+
+
+ BARRIER();
+}
+
+#extension GL_KHR_shader_subgroup_basic: enable
+void basic_works (void)
+{
+ gl_SubgroupSize;
+ gl_SubgroupInvocationID;
+ subgroupBarrier();
+ subgroupMemoryBarrier();
+ subgroupMemoryBarrierBuffer();
+ subgroupMemoryBarrierImage();
+ subgroupElect();
+ gl_NumSubgroups; // allowed in mesh
+ gl_SubgroupID; // allowed in mesh
+ subgroupMemoryBarrierShared(); // allowed in mesh
+}
+
+#extension GL_KHR_shader_subgroup_ballot: enable
+void ballot_works(vec4 f4) {
+ gl_SubgroupEqMask;
+ gl_SubgroupGeMask;
+ gl_SubgroupGtMask;
+ gl_SubgroupLeMask;
+ gl_SubgroupLtMask;
+ subgroupBroadcast(f4, 0);
+ subgroupBroadcastFirst(f4);
+ uvec4 ballot = subgroupBallot(false);
+ subgroupInverseBallot(uvec4(0x1));
+ subgroupBallotBitExtract(ballot, 0);
+ subgroupBallotBitCount(ballot);
+ subgroupBallotInclusiveBitCount(ballot);
+ subgroupBallotExclusiveBitCount(ballot);
+ subgroupBallotFindLSB(ballot);
+ subgroupBallotFindMSB(ballot);
+}
+
+#extension GL_KHR_shader_subgroup_vote: enable
+void vote_works(vec4 f4)
+{
+ subgroupAll(true);
+ subgroupAny(false);
+ subgroupAllEqual(f4);
+}
+
+#extension GL_KHR_shader_subgroup_shuffle: enable
+#extension GL_KHR_shader_subgroup_shuffle_relative: enable
+void shuffle_works(vec4 f4)
+{
+ subgroupShuffle(f4, 0);
+ subgroupShuffleXor(f4, 0x1);
+ subgroupShuffleUp(f4, 1);
+ subgroupShuffleDown(f4, 1);
+}
+
+#extension GL_KHR_shader_subgroup_arithmetic: enable
+void arith_works(vec4 f4)
+{
+ uvec4 ballot;
+ subgroupAdd(f4);
+ subgroupMul(f4);
+ subgroupMin(f4);
+ subgroupMax(f4);
+ subgroupAnd(ballot);
+ subgroupOr(ballot);
+ subgroupXor(ballot);
+ subgroupInclusiveAdd(f4);
+ subgroupInclusiveMul(f4);
+ subgroupInclusiveMin(f4);
+ subgroupInclusiveMax(f4);
+ subgroupInclusiveAnd(ballot);
+ subgroupInclusiveOr(ballot);
+ subgroupInclusiveXor(ballot);
+ subgroupExclusiveAdd(f4);
+ subgroupExclusiveMul(f4);
+ subgroupExclusiveMin(f4);
+ subgroupExclusiveMax(f4);
+ subgroupExclusiveAnd(ballot);
+ subgroupExclusiveOr(ballot);
+ subgroupExclusiveXor(ballot);
+}
+
+#extension GL_KHR_shader_subgroup_clustered: enable
+void clustered_works(vec4 f4)
+{
+ uvec4 ballot = uvec4(0x55,0,0,0);
+ subgroupClusteredAdd(f4, 2);
+ subgroupClusteredMul(f4, 2);
+ subgroupClusteredMin(f4, 2);
+ subgroupClusteredMax(f4, 2);
+ subgroupClusteredAnd(ballot, 2);
+ subgroupClusteredOr(ballot, 2);
+ subgroupClusteredXor(ballot, 2);
+}
+
+#extension GL_KHR_shader_subgroup_quad: enable
+void quad_works(vec4 f4)
+{
+ subgroupQuadBroadcast(f4, 0);
+ subgroupQuadSwapHorizontal(f4);
+ subgroupQuadSwapVertical(f4);
+ subgroupQuadSwapDiagonal(f4);
+}
diff --git a/Test/spv.460.subgroupEXT.task b/Test/spv.460.subgroupEXT.task
new file mode 100644
index 0000000..cffe98e
--- /dev/null
+++ b/Test/spv.460.subgroupEXT.task
@@ -0,0 +1,153 @@
+#version 460
+
+
+#define BARRIER() \
+ memoryBarrierShared(); \
+ barrier();
+
+#extension GL_EXT_mesh_shader : enable
+
+layout(local_size_x = 32, local_size_y=1, local_size_z=1) in;
+
+// test use of shared memory in task shaders:
+layout(binding=0) writeonly uniform image2D uni_image;
+uniform block0 {
+ uint uni_value;
+};
+shared vec4 mem[10];
+
+// test use of task memory in task shaders:
+struct Task {
+ vec2 dummy;
+ vec2 submesh[3];
+};
+
+taskPayloadSharedEXT Task mytask;
+void main()
+{
+ uint iid = gl_LocalInvocationID.x;
+ uint gid = gl_WorkGroupID.x;
+
+ // 1. shared memory load and stores
+ for (uint i = 0; i < 10; ++i) {
+ mem[i] = vec4(i + uni_value);
+ }
+ imageStore(uni_image, ivec2(iid), mem[gid]);
+ imageStore(uni_image, ivec2(iid), mem[gid+1]);
+
+ BARRIER();
+
+ // 2. task memory stores
+
+ mytask.dummy = vec2(30.0, 31.0);
+ mytask.submesh[0] = vec2(32.0, 33.0);
+ mytask.submesh[1] = vec2(34.0, 35.0);
+ mytask.submesh[2] = mytask.submesh[gid%2];
+
+ BARRIER();
+
+ // 3. emit task count under uniform control flow
+ EmitMeshTasksEXT(3U, 1U, 1U);
+}
+
+#extension GL_KHR_shader_subgroup_basic: enable
+void basic_works (void)
+{
+ gl_SubgroupSize;
+ gl_SubgroupInvocationID;
+ subgroupBarrier();
+ subgroupMemoryBarrier();
+ subgroupMemoryBarrierBuffer();
+ subgroupMemoryBarrierImage();
+ subgroupElect();
+ gl_NumSubgroups; // allowed in task
+ gl_SubgroupID; // allowed in task
+ subgroupMemoryBarrierShared(); // allowed in task
+}
+
+#extension GL_KHR_shader_subgroup_ballot: enable
+void ballot_works(vec4 f4) {
+ gl_SubgroupEqMask;
+ gl_SubgroupGeMask;
+ gl_SubgroupGtMask;
+ gl_SubgroupLeMask;
+ gl_SubgroupLtMask;
+ subgroupBroadcast(f4, 0);
+ subgroupBroadcastFirst(f4);
+ uvec4 ballot = subgroupBallot(false);
+ subgroupInverseBallot(uvec4(0x1));
+ subgroupBallotBitExtract(ballot, 0);
+ subgroupBallotBitCount(ballot);
+ subgroupBallotInclusiveBitCount(ballot);
+ subgroupBallotExclusiveBitCount(ballot);
+ subgroupBallotFindLSB(ballot);
+ subgroupBallotFindMSB(ballot);
+}
+
+#extension GL_KHR_shader_subgroup_vote: enable
+void vote_works(vec4 f4)
+{
+ subgroupAll(true);
+ subgroupAny(false);
+ subgroupAllEqual(f4);
+}
+
+#extension GL_KHR_shader_subgroup_shuffle: enable
+#extension GL_KHR_shader_subgroup_shuffle_relative: enable
+void shuffle_works(vec4 f4)
+{
+ subgroupShuffle(f4, 0);
+ subgroupShuffleXor(f4, 0x1);
+ subgroupShuffleUp(f4, 1);
+ subgroupShuffleDown(f4, 1);
+}
+
+#extension GL_KHR_shader_subgroup_arithmetic: enable
+void arith_works(vec4 f4)
+{
+ uvec4 ballot;
+ subgroupAdd(f4);
+ subgroupMul(f4);
+ subgroupMin(f4);
+ subgroupMax(f4);
+ subgroupAnd(ballot);
+ subgroupOr(ballot);
+ subgroupXor(ballot);
+ subgroupInclusiveAdd(f4);
+ subgroupInclusiveMul(f4);
+ subgroupInclusiveMin(f4);
+ subgroupInclusiveMax(f4);
+ subgroupInclusiveAnd(ballot);
+ subgroupInclusiveOr(ballot);
+ subgroupInclusiveXor(ballot);
+ subgroupExclusiveAdd(f4);
+ subgroupExclusiveMul(f4);
+ subgroupExclusiveMin(f4);
+ subgroupExclusiveMax(f4);
+ subgroupExclusiveAnd(ballot);
+ subgroupExclusiveOr(ballot);
+ subgroupExclusiveXor(ballot);
+}
+
+#extension GL_KHR_shader_subgroup_clustered: enable
+void clustered_works(vec4 f4)
+{
+ uvec4 ballot = uvec4(0x55,0,0,0);
+ subgroupClusteredAdd(f4, 2);
+ subgroupClusteredMul(f4, 2);
+ subgroupClusteredMin(f4, 2);
+ subgroupClusteredMax(f4, 2);
+ subgroupClusteredAnd(ballot, 2);
+ subgroupClusteredOr(ballot, 2);
+ subgroupClusteredXor(ballot, 2);
+}
+
+#extension GL_KHR_shader_subgroup_quad: enable
+void quad_works(vec4 f4)
+{
+ subgroupQuadBroadcast(f4, 0);
+ subgroupQuadSwapHorizontal(f4);
+ subgroupQuadSwapVertical(f4);
+ subgroupQuadSwapDiagonal(f4);
+}
+
diff --git a/Test/spv.atomiAddEXT.error.mesh b/Test/spv.atomiAddEXT.error.mesh
new file mode 100644
index 0000000..5d4247d
--- /dev/null
+++ b/Test/spv.atomiAddEXT.error.mesh
@@ -0,0 +1,22 @@
+#version 460
+#extension GL_EXT_mesh_shader : enable
+
+#define MAX_VER 81
+#define MAX_PRIM 32
+
+layout(local_size_x = 1) in;
+
+layout(max_vertices=MAX_VER) out;
+layout(max_primitives=MAX_PRIM) out;
+layout(triangles) out;
+
+// use of storage qualifier "taskPayloadSharedEXT" in mesh shaders:
+struct taskBlock {
+ int atom1;
+};
+taskPayloadSharedEXT taskBlock mytask;
+
+
+void main() {
+ atomicAdd(mytask.atom1, 1);
+}
\ No newline at end of file
diff --git a/Test/spv.atomiAddEXT.task b/Test/spv.atomiAddEXT.task
new file mode 100644
index 0000000..703117d
--- /dev/null
+++ b/Test/spv.atomiAddEXT.task
@@ -0,0 +1,27 @@
+#version 460
+#extension GL_EXT_mesh_shader : enable
+
+layout(local_size_x = 1) in;
+
+struct structType{
+ int y[3];
+};
+
+layout(std430) buffer t2 {
+ structType f;
+} t;
+
+buffer coherent Buffer { int x; };
+
+// use of storage qualifier "taskPayloadSharedEXT" in mesh shaders:
+struct taskBlock {
+ int atom1;
+};
+taskPayloadSharedEXT taskBlock mytask;
+
+
+void main() {
+ atomicAdd(x, 1);
+ atomicAdd(t.f.y[1], 1);
+ atomicAdd(mytask.atom1, 1);
+}
\ No newline at end of file
diff --git a/Test/spv.debuginfo.glsl.comp b/Test/spv.debuginfo.glsl.comp
new file mode 100644
index 0000000..c37d05d
--- /dev/null
+++ b/Test/spv.debuginfo.glsl.comp
@@ -0,0 +1,177 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) 2022 Sascha Willems
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+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 Software.
+
+THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+#version 450
+
+struct Particle {
+ vec4 pos;
+ vec4 vel;
+ vec4 uv;
+ vec4 normal;
+ float pinned;
+};
+
+layout(std430, binding = 0) buffer ParticleIn {
+ Particle particleIn[ ];
+};
+
+layout(std430, binding = 1) buffer ParticleOut {
+ Particle particleOut[ ];
+};
+
+// todo: use shared memory to speed up calculation
+
+layout (local_size_x = 10, local_size_y = 10) in;
+
+layout (binding = 2) uniform UBO
+{
+ float deltaT;
+ float particleMass;
+ float springStiffness;
+ float damping;
+ float restDistH;
+ float restDistV;
+ float restDistD;
+ float sphereRadius;
+ vec4 spherePos;
+ vec4 gravity;
+ ivec2 particleCount;
+} params;
+
+layout (push_constant) uniform PushConsts {
+ uint calculateNormals;
+} pushConsts;
+
+vec3 springForce(vec3 p0, vec3 p1, float restDist)
+{
+ vec3 dist = p0 - p1;
+ return normalize(dist) * params.springStiffness * (length(dist) - restDist);
+}
+
+void main()
+{
+ uvec3 id = gl_GlobalInvocationID;
+
+ uint index = id.y * params.particleCount.x + id.x;
+ if (index > params.particleCount.x * params.particleCount.y)
+ return;
+
+ // Pinned?
+ if (particleIn[index].pinned == 1.0) {
+ particleOut[index].pos = particleOut[index].pos;
+ particleOut[index].vel = vec4(0.0);
+ return;
+ }
+
+ // Initial force from gravity
+ vec3 force = params.gravity.xyz * params.particleMass;
+
+ vec3 pos = particleIn[index].pos.xyz;
+ vec3 vel = particleIn[index].vel.xyz;
+
+ // Spring forces from neighboring particles
+ // left
+ if (id.x > 0) {
+ force += springForce(particleIn[index-1].pos.xyz, pos, params.restDistH);
+ }
+ // right
+ if (id.x < params.particleCount.x - 1) {
+ force += springForce(particleIn[index + 1].pos.xyz, pos, params.restDistH);
+ }
+ // upper
+ if (id.y < params.particleCount.y - 1) {
+ force += springForce(particleIn[index + params.particleCount.x].pos.xyz, pos, params.restDistV);
+ }
+ // lower
+ if (id.y > 0) {
+ force += springForce(particleIn[index - params.particleCount.x].pos.xyz, pos, params.restDistV);
+ }
+ // upper-left
+ if ((id.x > 0) && (id.y < params.particleCount.y - 1)) {
+ force += springForce(particleIn[index + params.particleCount.x - 1].pos.xyz, pos, params.restDistD);
+ }
+ // lower-left
+ if ((id.x > 0) && (id.y > 0)) {
+ force += springForce(particleIn[index - params.particleCount.x - 1].pos.xyz, pos, params.restDistD);
+ }
+ // upper-right
+ if ((id.x < params.particleCount.x - 1) && (id.y < params.particleCount.y - 1)) {
+ force += springForce(particleIn[index + params.particleCount.x + 1].pos.xyz, pos, params.restDistD);
+ }
+ // lower-right
+ if ((id.x < params.particleCount.x - 1) && (id.y > 0)) {
+ force += springForce(particleIn[index - params.particleCount.x + 1].pos.xyz, pos, params.restDistD);
+ }
+
+ force += (-params.damping * vel);
+
+ // Integrate
+ vec3 f = force * (1.0 / params.particleMass);
+ particleOut[index].pos = vec4(pos + vel * params.deltaT + 0.5 * f * params.deltaT * params.deltaT, 1.0);
+ particleOut[index].vel = vec4(vel + f * params.deltaT, 0.0);
+
+ // Sphere collision
+ vec3 sphereDist = particleOut[index].pos.xyz - params.spherePos.xyz;
+ if (length(sphereDist) < params.sphereRadius + 0.01) {
+ // If the particle is inside the sphere, push it to the outer radius
+ particleOut[index].pos.xyz = params.spherePos.xyz + normalize(sphereDist) * (params.sphereRadius + 0.01);
+ // Cancel out velocity
+ particleOut[index].vel = vec4(0.0);
+ }
+
+ // Normals
+ if (pushConsts.calculateNormals == 1) {
+ vec3 normal = vec3(0.0);
+ vec3 a, b, c;
+ if (id.y > 0) {
+ if (id.x > 0) {
+ a = particleIn[index - 1].pos.xyz - pos;
+ b = particleIn[index - params.particleCount.x - 1].pos.xyz - pos;
+ c = particleIn[index - params.particleCount.x].pos.xyz - pos;
+ normal += cross(a,b) + cross(b,c);
+ }
+ if (id.x < params.particleCount.x - 1) {
+ a = particleIn[index - params.particleCount.x].pos.xyz - pos;
+ b = particleIn[index - params.particleCount.x + 1].pos.xyz - pos;
+ c = particleIn[index + 1].pos.xyz - pos;
+ normal += cross(a,b) + cross(b,c);
+ }
+ }
+ if (id.y < params.particleCount.y - 1) {
+ if (id.x > 0) {
+ a = particleIn[index + params.particleCount.x].pos.xyz - pos;
+ b = particleIn[index + params.particleCount.x - 1].pos.xyz - pos;
+ c = particleIn[index - 1].pos.xyz - pos;
+ normal += cross(a,b) + cross(b,c);
+ }
+ if (id.x < params.particleCount.x - 1) {
+ a = particleIn[index + 1].pos.xyz - pos;
+ b = particleIn[index + params.particleCount.x + 1].pos.xyz - pos;
+ c = particleIn[index + params.particleCount.x].pos.xyz - pos;
+ normal += cross(a,b) + cross(b,c);
+ }
+ }
+ particleOut[index].normal = vec4(normalize(normal), 0.0f);
+ }
+}
diff --git a/Test/spv.debuginfo.glsl.frag b/Test/spv.debuginfo.glsl.frag
new file mode 100644
index 0000000..bf5f622
--- /dev/null
+++ b/Test/spv.debuginfo.glsl.frag
@@ -0,0 +1,192 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) 2022 Sascha Willems
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+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 Software.
+
+THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+#version 450
+
+layout (binding = 1) uniform sampler2D samplerposition;
+layout (binding = 2) uniform sampler2D samplerNormal;
+layout (binding = 3) uniform sampler2D samplerAlbedo;
+layout (binding = 5) uniform sampler2DArray samplerShadowMap;
+
+layout (location = 0) in vec2 inUV;
+
+layout (location = 0) out vec4 outFragColor;
+
+#define LIGHT_COUNT 3
+#define SHADOW_FACTOR 0.25
+#define AMBIENT_LIGHT 0.1
+#define USE_PCF
+
+struct Light
+{
+ vec4 position;
+ vec4 target;
+ vec4 color;
+ mat4 viewMatrix;
+};
+
+layout (binding = 4) uniform UBO
+{
+ vec4 viewPos;
+ Light lights[LIGHT_COUNT];
+ int useShadows;
+ int debugDisplayTarget;
+} ubo;
+
+float textureProj(vec4 P, float layer, vec2 offset)
+{
+ float shadow = 1.0;
+ vec4 shadowCoord = P / P.w;
+ shadowCoord.st = shadowCoord.st * 0.5 + 0.5;
+
+ if (shadowCoord.z > -1.0 && shadowCoord.z < 1.0)
+ {
+ float dist = texture(samplerShadowMap, vec3(shadowCoord.st + offset, layer)).r;
+ if (shadowCoord.w > 0.0 && dist < shadowCoord.z)
+ {
+ shadow = SHADOW_FACTOR;
+ }
+ }
+ return shadow;
+}
+
+float filterPCF(vec4 sc, float layer)
+{
+ ivec2 texDim = textureSize(samplerShadowMap, 0).xy;
+ float scale = 1.5;
+ float dx = scale * 1.0 / float(texDim.x);
+ float dy = scale * 1.0 / float(texDim.y);
+
+ float shadowFactor = 0.0;
+ int count = 0;
+ int range = 1;
+
+ for (int x = -range; x <= range; x++)
+ {
+ for (int y = -range; y <= range; y++)
+ {
+ shadowFactor += textureProj(sc, layer, vec2(dx*x, dy*y));
+ count++;
+ }
+
+ }
+ return shadowFactor / count;
+}
+
+vec3 shadow(vec3 fragcolor, vec3 fragpos) {
+ for(int i = 0; i < LIGHT_COUNT; ++i)
+ {
+ vec4 shadowClip = ubo.lights[i].viewMatrix * vec4(fragpos, 1.0);
+
+ float shadowFactor;
+ #ifdef USE_PCF
+ shadowFactor= filterPCF(shadowClip, i);
+ #else
+ shadowFactor = textureProj(shadowClip, i, vec2(0.0));
+ #endif
+
+ fragcolor *= shadowFactor;
+ }
+ return fragcolor;
+}
+
+void main()
+{
+ // Get G-Buffer values
+ vec3 fragPos = texture(samplerposition, inUV).rgb;
+ vec3 normal = texture(samplerNormal, inUV).rgb;
+ vec4 albedo = texture(samplerAlbedo, inUV);
+
+ // Debug display
+ if (ubo.debugDisplayTarget > 0) {
+ switch (ubo.debugDisplayTarget) {
+ case 1:
+ outFragColor.rgb = shadow(vec3(1.0), fragPos).rgb;
+ break;
+ case 2:
+ outFragColor.rgb = fragPos;
+ break;
+ case 3:
+ outFragColor.rgb = normal;
+ break;
+ case 4:
+ outFragColor.rgb = albedo.rgb;
+ break;
+ case 5:
+ outFragColor.rgb = albedo.aaa;
+ break;
+ }
+ outFragColor.a = 1.0;
+ return;
+ }
+
+ // Ambient part
+ vec3 fragcolor = albedo.rgb * AMBIENT_LIGHT;
+
+ vec3 N = normalize(normal);
+
+ for(int i = 0; i < LIGHT_COUNT; ++i)
+ {
+ // Vector to light
+ vec3 L = ubo.lights[i].position.xyz - fragPos;
+ // Distance from light to fragment position
+ float dist = length(L);
+ L = normalize(L);
+
+ // Viewer to fragment
+ vec3 V = ubo.viewPos.xyz - fragPos;
+ V = normalize(V);
+
+ float lightCosInnerAngle = cos(radians(15.0));
+ float lightCosOuterAngle = cos(radians(25.0));
+ float lightRange = 100.0;
+
+ // Direction vector from source to target
+ vec3 dir = normalize(ubo.lights[i].position.xyz - ubo.lights[i].target.xyz);
+
+ // Dual cone spot light with smooth transition between inner and outer angle
+ float cosDir = dot(L, dir);
+ float spotEffect = smoothstep(lightCosOuterAngle, lightCosInnerAngle, cosDir);
+ float heightAttenuation = smoothstep(lightRange, 0.0f, dist);
+
+ // Diffuse lighting
+ float NdotL = max(0.0, dot(N, L));
+ vec3 diff = vec3(NdotL);
+
+ // Specular lighting
+ vec3 R = reflect(-L, N);
+ float NdotR = max(0.0, dot(R, V));
+ vec3 spec = vec3(pow(NdotR, 16.0) * albedo.a * 2.5);
+
+ fragcolor += vec3((diff + spec) * spotEffect * heightAttenuation) * ubo.lights[i].color.rgb * albedo.rgb;
+ }
+
+ // Shadow calculations in a separate pass
+ if (ubo.useShadows > 0)
+ {
+ fragcolor = shadow(fragcolor, fragPos);
+ }
+
+ outFragColor = vec4(fragcolor, 1.0);
+}
diff --git a/Test/spv.debuginfo.glsl.geom b/Test/spv.debuginfo.glsl.geom
new file mode 100644
index 0000000..756885f
--- /dev/null
+++ b/Test/spv.debuginfo.glsl.geom
@@ -0,0 +1,69 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) 2022 Sascha Willems
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+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 Software.
+
+THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+#version 450
+
+#extension GL_ARB_viewport_array : enable
+
+layout (triangles, invocations = 2) in;
+layout (triangle_strip, max_vertices = 3) out;
+
+layout (binding = 0) uniform UBO
+{
+ mat4 projection[2];
+ mat4 modelview[2];
+ vec4 lightPos;
+} ubo;
+
+layout (location = 0) in vec3 inNormal[];
+layout (location = 1) in vec3 inColor[];
+
+layout (location = 0) out vec3 outNormal;
+layout (location = 1) out vec3 outColor;
+layout (location = 2) out vec3 outViewVec;
+layout (location = 3) out vec3 outLightVec;
+
+void main(void)
+{
+ for(int i = 0; i < gl_in.length(); i++)
+ {
+ outNormal = mat3(ubo.modelview[gl_InvocationID]) * inNormal[i];
+ outColor = inColor[i];
+
+ vec4 pos = gl_in[i].gl_Position;
+ vec4 worldPos = (ubo.modelview[gl_InvocationID] * pos);
+
+ vec3 lPos = vec3(ubo.modelview[gl_InvocationID] * ubo.lightPos);
+ outLightVec = lPos - worldPos.xyz;
+ outViewVec = -worldPos.xyz;
+
+ gl_Position = ubo.projection[gl_InvocationID] * worldPos;
+
+ // Set the viewport index that the vertex will be emitted to
+ gl_ViewportIndex = gl_InvocationID;
+ gl_PrimitiveID = gl_PrimitiveIDIn;
+ EmitVertex();
+ }
+ EndPrimitive();
+}
diff --git a/Test/spv.debuginfo.glsl.tesc b/Test/spv.debuginfo.glsl.tesc
new file mode 100644
index 0000000..41c8fe3
--- /dev/null
+++ b/Test/spv.debuginfo.glsl.tesc
@@ -0,0 +1,140 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) 2022 Sascha Willems
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+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 Software.
+
+THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+#version 450
+
+layout(set = 0, binding = 0) uniform UBO
+{
+ mat4 projection;
+ mat4 modelview;
+ vec4 lightPos;
+ vec4 frustumPlanes[6];
+ float displacementFactor;
+ float tessellationFactor;
+ vec2 viewportDim;
+ float tessellatedEdgeSize;
+} ubo;
+
+layout(set = 0, binding = 1) uniform sampler2D samplerHeight;
+
+layout (vertices = 4) out;
+
+layout (location = 0) in vec3 inNormal[];
+layout (location = 1) in vec2 inUV[];
+
+layout (location = 0) out vec3 outNormal[4];
+layout (location = 1) out vec2 outUV[4];
+
+// Calculate the tessellation factor based on screen space
+// dimensions of the edge
+float screenSpaceTessFactor(vec4 p0, vec4 p1)
+{
+ // Calculate edge mid point
+ vec4 midPoint = 0.5 * (p0 + p1);
+ // Sphere radius as distance between the control points
+ float radius = distance(p0, p1) / 2.0;
+
+ // View space
+ vec4 v0 = ubo.modelview * midPoint;
+
+ // Project into clip space
+ vec4 clip0 = (ubo.projection * (v0 - vec4(radius, vec3(0.0))));
+ vec4 clip1 = (ubo.projection * (v0 + vec4(radius, vec3(0.0))));
+
+ // Get normalized device coordinates
+ clip0 /= clip0.w;
+ clip1 /= clip1.w;
+
+ // Convert to viewport coordinates
+ clip0.xy *= ubo.viewportDim;
+ clip1.xy *= ubo.viewportDim;
+
+ // Return the tessellation factor based on the screen size
+ // given by the distance of the two edge control points in screen space
+ // and a reference (min.) tessellation size for the edge set by the application
+ return clamp(distance(clip0, clip1) / ubo.tessellatedEdgeSize * ubo.tessellationFactor, 1.0, 64.0);
+}
+
+// Checks the current's patch visibility against the frustum using a sphere check
+// Sphere radius is given by the patch size
+bool frustumCheck()
+{
+ // Fixed radius (increase if patch size is increased in example)
+ const float radius = 8.0f;
+ vec4 pos = gl_in[gl_InvocationID].gl_Position;
+ pos.y -= textureLod(samplerHeight, inUV[0], 0.0).r * ubo.displacementFactor;
+
+ // Check sphere against frustum planes
+ for (int i = 0; i < 6; i++) {
+ if (dot(pos, ubo.frustumPlanes[i]) + radius < 0.0)
+ {
+ return false;
+ }
+ }
+ return true;
+}
+
+void main()
+{
+ if (gl_InvocationID == 0)
+ {
+ if (!frustumCheck())
+ {
+ gl_TessLevelInner[0] = 0.0;
+ gl_TessLevelInner[1] = 0.0;
+ gl_TessLevelOuter[0] = 0.0;
+ gl_TessLevelOuter[1] = 0.0;
+ gl_TessLevelOuter[2] = 0.0;
+ gl_TessLevelOuter[3] = 0.0;
+ }
+ else
+ {
+ if (ubo.tessellationFactor > 0.0)
+ {
+ gl_TessLevelOuter[0] = screenSpaceTessFactor(gl_in[3].gl_Position, gl_in[0].gl_Position);
+ gl_TessLevelOuter[1] = screenSpaceTessFactor(gl_in[0].gl_Position, gl_in[1].gl_Position);
+ gl_TessLevelOuter[2] = screenSpaceTessFactor(gl_in[1].gl_Position, gl_in[2].gl_Position);
+ gl_TessLevelOuter[3] = screenSpaceTessFactor(gl_in[2].gl_Position, gl_in[3].gl_Position);
+ gl_TessLevelInner[0] = mix(gl_TessLevelOuter[0], gl_TessLevelOuter[3], 0.5);
+ gl_TessLevelInner[1] = mix(gl_TessLevelOuter[2], gl_TessLevelOuter[1], 0.5);
+ }
+ else
+ {
+ // Tessellation factor can be set to zero by example
+ // to demonstrate a simple passthrough
+ gl_TessLevelInner[0] = 1.0;
+ gl_TessLevelInner[1] = 1.0;
+ gl_TessLevelOuter[0] = 1.0;
+ gl_TessLevelOuter[1] = 1.0;
+ gl_TessLevelOuter[2] = 1.0;
+ gl_TessLevelOuter[3] = 1.0;
+ }
+ }
+
+ }
+
+ gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
+ outNormal[gl_InvocationID] = inNormal[gl_InvocationID];
+ outUV[gl_InvocationID] = inUV[gl_InvocationID];
+}
diff --git a/Test/spv.debuginfo.glsl.tese b/Test/spv.debuginfo.glsl.tese
new file mode 100644
index 0000000..f24ed94
--- /dev/null
+++ b/Test/spv.debuginfo.glsl.tese
@@ -0,0 +1,78 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) 2022 Sascha Willems
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+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 Software.
+
+THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+#version 450
+
+layout (set = 0, binding = 0) uniform UBO
+{
+ mat4 projection;
+ mat4 modelview;
+ vec4 lightPos;
+ vec4 frustumPlanes[6];
+ float displacementFactor;
+ float tessellationFactor;
+ vec2 viewportDim;
+ float tessellatedEdgeSize;
+} ubo;
+
+layout (set = 0, binding = 1) uniform sampler2D displacementMap;
+
+layout(quads, equal_spacing, cw) in;
+
+layout (location = 0) in vec3 inNormal[];
+layout (location = 1) in vec2 inUV[];
+
+layout (location = 0) out vec3 outNormal;
+layout (location = 1) out vec2 outUV;
+layout (location = 2) out vec3 outViewVec;
+layout (location = 3) out vec3 outLightVec;
+layout (location = 4) out vec3 outEyePos;
+layout (location = 5) out vec3 outWorldPos;
+
+void main()
+{
+ // Interpolate UV coordinates
+ vec2 uv1 = mix(inUV[0], inUV[1], gl_TessCoord.x);
+ vec2 uv2 = mix(inUV[3], inUV[2], gl_TessCoord.x);
+ outUV = mix(uv1, uv2, gl_TessCoord.y);
+
+ vec3 n1 = mix(inNormal[0], inNormal[1], gl_TessCoord.x);
+ vec3 n2 = mix(inNormal[3], inNormal[2], gl_TessCoord.x);
+ outNormal = mix(n1, n2, gl_TessCoord.y);
+
+ // Interpolate positions
+ vec4 pos1 = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);
+ vec4 pos2 = mix(gl_in[3].gl_Position, gl_in[2].gl_Position, gl_TessCoord.x);
+ vec4 pos = mix(pos1, pos2, gl_TessCoord.y);
+ // Displace
+ pos.y -= textureLod(displacementMap, outUV, 0.0).r * ubo.displacementFactor;
+ // Perspective projection
+ gl_Position = ubo.projection * ubo.modelview * pos;
+
+ // Calculate vectors for lighting based on tessellated position
+ outViewVec = -pos.xyz;
+ outLightVec = normalize(ubo.lightPos.xyz + outViewVec);
+ outWorldPos = pos.xyz;
+ outEyePos = vec3(ubo.modelview * pos);
+}
diff --git a/Test/spv.debuginfo.glsl.vert b/Test/spv.debuginfo.glsl.vert
new file mode 100644
index 0000000..d922d95
--- /dev/null
+++ b/Test/spv.debuginfo.glsl.vert
@@ -0,0 +1,105 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) 2022 Sascha Willems
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+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 Software.
+
+THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+#version 450
+
+// Vertex attributes
+layout (location = 0) in vec3 inPos;
+layout (location = 1) in vec3 inNormal;
+layout (location = 2) in vec2 inUV;
+layout (location = 3) in vec3 inColor;
+
+// Instanced attributes
+layout (location = 4) in vec3 instancePos;
+layout (location = 5) in vec3 instanceRot;
+layout (location = 6) in float instanceScale;
+layout (location = 7) in int instanceTexIndex;
+
+layout (binding = 0) uniform UBO
+{
+ mat4 projection;
+ mat4 modelview;
+ vec4 lightPos;
+ float locSpeed;
+ float globSpeed;
+} ubo;
+
+layout (location = 0) out vec3 outNormal;
+layout (location = 1) out vec3 outColor;
+layout (location = 2) out vec3 outUV;
+layout (location = 3) out vec3 outViewVec;
+layout (location = 4) out vec3 outLightVec;
+
+void main()
+{
+ outColor = inColor;
+ outUV = vec3(inUV, instanceTexIndex);
+
+ mat3 mx, my, mz;
+
+ // rotate around x
+ float s = sin(instanceRot.x + ubo.locSpeed);
+ float c = cos(instanceRot.x + ubo.locSpeed);
+
+ mx[0] = vec3(c, s, 0.0);
+ mx[1] = vec3(-s, c, 0.0);
+ mx[2] = vec3(0.0, 0.0, 1.0);
+
+ // rotate around y
+ s = sin(instanceRot.y + ubo.locSpeed);
+ c = cos(instanceRot.y + ubo.locSpeed);
+
+ my[0] = vec3(c, 0.0, s);
+ my[1] = vec3(0.0, 1.0, 0.0);
+ my[2] = vec3(-s, 0.0, c);
+
+ // rot around z
+ s = sin(instanceRot.z + ubo.locSpeed);
+ c = cos(instanceRot.z + ubo.locSpeed);
+
+ mz[0] = vec3(1.0, 0.0, 0.0);
+ mz[1] = vec3(0.0, c, s);
+ mz[2] = vec3(0.0, -s, c);
+
+ mat3 rotMat = mz * my * mx;
+
+ mat4 gRotMat;
+ s = sin(instanceRot.y + ubo.globSpeed);
+ c = cos(instanceRot.y + ubo.globSpeed);
+ gRotMat[0] = vec4(c, 0.0, s, 0.0);
+ gRotMat[1] = vec4(0.0, 1.0, 0.0, 0.0);
+ gRotMat[2] = vec4(-s, 0.0, c, 0.0);
+ gRotMat[3] = vec4(0.0, 0.0, 0.0, 1.0);
+
+ vec4 locPos = vec4(inPos.xyz * rotMat, 1.0);
+ vec4 pos = vec4((locPos.xyz * instanceScale) + instancePos, 1.0);
+
+ gl_Position = ubo.projection * ubo.modelview * gRotMat * pos;
+ outNormal = mat3(ubo.modelview * gRotMat) * inverse(rotMat) * inNormal;
+
+ pos = ubo.modelview * vec4(inPos.xyz + instancePos, 1.0);
+ vec3 lPos = mat3(ubo.modelview) * ubo.lightPos.xyz;
+ outLightVec = lPos - pos.xyz;
+ outViewVec = -pos.xyz;
+}
diff --git a/Test/spv.debuginfo.hlsl.comp b/Test/spv.debuginfo.hlsl.comp
new file mode 100644
index 0000000..b700534
--- /dev/null
+++ b/Test/spv.debuginfo.hlsl.comp
@@ -0,0 +1,184 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) 2022 Google LLC
+Copyright (c) 2022 Sascha Willems
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+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 Software.
+
+THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+struct Particle {
+ float4 pos;
+ float4 vel;
+ float4 uv;
+ float4 normal;
+ float pinned;
+};
+
+[[vk::binding(0)]]
+StructuredBuffer<Particle> particleIn;
+[[vk::binding(1)]]
+RWStructuredBuffer<Particle> particleOut;
+
+struct UBO
+{
+ float deltaT;
+ float particleMass;
+ float springStiffness;
+ float damping;
+ float restDistH;
+ float restDistV;
+ float restDistD;
+ float sphereRadius;
+ float4 spherePos;
+ float4 gravity;
+ int2 particleCount;
+};
+
+cbuffer ubo : register(b2)
+{
+ UBO params;
+};
+
+#ifdef GLSLANG
+layout ( push_constant ) cbuffer PushConstants
+{
+ uint calculateNormals;
+} pushConstants;
+#else
+struct PushConstants
+{
+ uint calculateNormals;
+};
+
+[[vk::push_constant]]
+PushConstants pushConstants;
+#endif
+
+float3 springForce(float3 p0, float3 p1, float restDist)
+{
+ float3 dist = p0 - p1;
+ return normalize(dist) * params.springStiffness * (length(dist) - restDist);
+}
+
+[numthreads(10, 10, 1)]
+void main(uint3 id : SV_DispatchThreadID)
+{
+ uint index = id.y * params.particleCount.x + id.x;
+ if (index > params.particleCount.x * params.particleCount.y)
+ return;
+
+ // Pinned?
+ if (particleIn[index].pinned == 1.0) {
+ particleOut[index].pos = particleOut[index].pos;
+ particleOut[index].vel = float4(0, 0, 0, 0);
+ return;
+ }
+
+ // Initial force from gravity
+ float3 force = params.gravity.xyz * params.particleMass;
+
+ float3 pos = particleIn[index].pos.xyz;
+ float3 vel = particleIn[index].vel.xyz;
+
+ // Spring forces from neighboring particles
+ // left
+ if (id.x > 0) {
+ force += springForce(particleIn[index-1].pos.xyz, pos, params.restDistH);
+ }
+ // right
+ if (id.x < params.particleCount.x - 1) {
+ force += springForce(particleIn[index + 1].pos.xyz, pos, params.restDistH);
+ }
+ // upper
+ if (id.y < params.particleCount.y - 1) {
+ force += springForce(particleIn[index + params.particleCount.x].pos.xyz, pos, params.restDistV);
+ }
+ // lower
+ if (id.y > 0) {
+ force += springForce(particleIn[index - params.particleCount.x].pos.xyz, pos, params.restDistV);
+ }
+ // upper-left
+ if ((id.x > 0) && (id.y < params.particleCount.y - 1)) {
+ force += springForce(particleIn[index + params.particleCount.x - 1].pos.xyz, pos, params.restDistD);
+ }
+ // lower-left
+ if ((id.x > 0) && (id.y > 0)) {
+ force += springForce(particleIn[index - params.particleCount.x - 1].pos.xyz, pos, params.restDistD);
+ }
+ // upper-right
+ if ((id.x < params.particleCount.x - 1) && (id.y < params.particleCount.y - 1)) {
+ force += springForce(particleIn[index + params.particleCount.x + 1].pos.xyz, pos, params.restDistD);
+ }
+ // lower-right
+ if ((id.x < params.particleCount.x - 1) && (id.y > 0)) {
+ force += springForce(particleIn[index - params.particleCount.x + 1].pos.xyz, pos, params.restDistD);
+ }
+
+ force += (-params.damping * vel);
+
+ // Integrate
+ float3 f = force * (1.0 / params.particleMass);
+ particleOut[index].pos = float4(pos + vel * params.deltaT + 0.5 * f * params.deltaT * params.deltaT, 1.0);
+ particleOut[index].vel = float4(vel + f * params.deltaT, 0.0);
+
+ // Sphere collision
+ float3 sphereDist = particleOut[index].pos.xyz - params.spherePos.xyz;
+ if (length(sphereDist) < params.sphereRadius + 0.01) {
+ // If the particle is inside the sphere, push it to the outer radius
+ particleOut[index].pos.xyz = params.spherePos.xyz + normalize(sphereDist) * (params.sphereRadius + 0.01);
+ // Cancel out velocity
+ particleOut[index].vel = float4(0, 0, 0, 0);
+ }
+
+ // Normals
+ if (pushConstants.calculateNormals == 1) {
+ float3 normal = float3(0, 0, 0);
+ float3 a, b, c;
+ if (id.y > 0) {
+ if (id.x > 0) {
+ a = particleIn[index - 1].pos.xyz - pos;
+ b = particleIn[index - params.particleCount.x - 1].pos.xyz - pos;
+ c = particleIn[index - params.particleCount.x].pos.xyz - pos;
+ normal += cross(a,b) + cross(b,c);
+ }
+ if (id.x < params.particleCount.x - 1) {
+ a = particleIn[index - params.particleCount.x].pos.xyz - pos;
+ b = particleIn[index - params.particleCount.x + 1].pos.xyz - pos;
+ c = particleIn[index + 1].pos.xyz - pos;
+ normal += cross(a,b) + cross(b,c);
+ }
+ }
+ if (id.y < params.particleCount.y - 1) {
+ if (id.x > 0) {
+ a = particleIn[index + params.particleCount.x].pos.xyz - pos;
+ b = particleIn[index + params.particleCount.x - 1].pos.xyz - pos;
+ c = particleIn[index - 1].pos.xyz - pos;
+ normal += cross(a,b) + cross(b,c);
+ }
+ if (id.x < params.particleCount.x - 1) {
+ a = particleIn[index + 1].pos.xyz - pos;
+ b = particleIn[index + params.particleCount.x + 1].pos.xyz - pos;
+ c = particleIn[index + params.particleCount.x].pos.xyz - pos;
+ normal += cross(a,b) + cross(b,c);
+ }
+ }
+ particleOut[index].normal = float4(normalize(normal), 0.0f);
+ }
+}
diff --git a/Test/spv.debuginfo.hlsl.frag b/Test/spv.debuginfo.hlsl.frag
new file mode 100644
index 0000000..93072d4
--- /dev/null
+++ b/Test/spv.debuginfo.hlsl.frag
@@ -0,0 +1,197 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) 2022 Google LLC
+Copyright (c) 2022 Sascha Willems
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+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 Software.
+
+THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+Texture2D textureposition : register(t1);
+SamplerState samplerposition : register(s1);
+Texture2D textureNormal : register(t2);
+SamplerState samplerNormal : register(s2);
+Texture2D textureAlbedo : register(t3);
+SamplerState samplerAlbedo : register(s3);
+// Depth from the light's point of view
+//layout (binding = 5) uniform sampler2DShadow samplerShadowMap;
+Texture2DArray textureShadowMap : register(t5);
+SamplerState samplerShadowMap : register(s5);
+
+#define LIGHT_COUNT 3
+#define SHADOW_FACTOR 0.25
+#define AMBIENT_LIGHT 0.1
+#define USE_PCF
+
+struct Light
+{
+ float4 position;
+ float4 target;
+ float4 color;
+ float4x4 viewMatrix;
+};
+
+struct UBO
+{
+ float4 viewPos;
+ Light lights[LIGHT_COUNT];
+ int useShadows;
+ int displayDebugTarget;
+};
+
+cbuffer ubo : register(b4) { UBO ubo; }
+
+float textureProj(float4 P, float layer, float2 offset)
+{
+ float shadow = 1.0;
+ float4 shadowCoord = P / P.w;
+ shadowCoord.xy = shadowCoord.xy * 0.5 + 0.5;
+
+ if (shadowCoord.z > -1.0 && shadowCoord.z < 1.0)
+ {
+ float dist = textureShadowMap.Sample(samplerShadowMap, float3(shadowCoord.xy + offset, layer)).r;
+ if (shadowCoord.w > 0.0 && dist < shadowCoord.z)
+ {
+ shadow = SHADOW_FACTOR;
+ }
+ }
+ return shadow;
+}
+
+float filterPCF(float4 sc, float layer)
+{
+ int2 texDim; int elements; int levels;
+ textureShadowMap.GetDimensions(0, texDim.x, texDim.y, elements, levels);
+ float scale = 1.5;
+ float dx = scale * 1.0 / float(texDim.x);
+ float dy = scale * 1.0 / float(texDim.y);
+
+ float shadowFactor = 0.0;
+ int count = 0;
+ int range = 1;
+
+ for (int x = -range; x <= range; x++)
+ {
+ for (int y = -range; y <= range; y++)
+ {
+ shadowFactor += textureProj(sc, layer, float2(dx*x, dy*y));
+ count++;
+ }
+
+ }
+ return shadowFactor / count;
+}
+
+float3 shadow(float3 fragcolor, float3 fragPos) {
+ for (int i = 0; i < LIGHT_COUNT; ++i)
+ {
+ float4 shadowClip = mul(ubo.lights[i].viewMatrix, float4(fragPos.xyz, 1.0));
+
+ float shadowFactor;
+ #ifdef USE_PCF
+ shadowFactor= filterPCF(shadowClip, i);
+ #else
+ shadowFactor = textureProj(shadowClip, i, float2(0.0, 0.0));
+ #endif
+
+ fragcolor *= shadowFactor;
+ }
+ return fragcolor;
+}
+
+float4 main([[vk::location(0)]] float2 inUV : TEXCOORD0) : SV_TARGET
+{
+ // Get G-Buffer values
+ float3 fragPos = textureposition.Sample(samplerposition, inUV).rgb;
+ float3 normal = textureNormal.Sample(samplerNormal, inUV).rgb;
+ float4 albedo = textureAlbedo.Sample(samplerAlbedo, inUV);
+
+ float3 fragcolor;
+
+ // Debug display
+ if (ubo.displayDebugTarget > 0) {
+ switch (ubo.displayDebugTarget) {
+ case 1:
+ fragcolor.rgb = shadow(float3(1.0, 1.0, 1.0), fragPos);
+ break;
+ case 2:
+ fragcolor.rgb = fragPos;
+ break;
+ case 3:
+ fragcolor.rgb = normal;
+ break;
+ case 4:
+ fragcolor.rgb = albedo.rgb;
+ break;
+ case 5:
+ fragcolor.rgb = albedo.aaa;
+ break;
+ }
+ return float4(fragcolor, 1.0);
+ }
+
+ // Ambient part
+ fragcolor = albedo.rgb * AMBIENT_LIGHT;
+
+ float3 N = normalize(normal);
+
+ for(int i = 0; i < LIGHT_COUNT; ++i)
+ {
+ // Vector to light
+ float3 L = ubo.lights[i].position.xyz - fragPos;
+ // Distance from light to fragment position
+ float dist = length(L);
+ L = normalize(L);
+
+ // Viewer to fragment
+ float3 V = ubo.viewPos.xyz - fragPos;
+ V = normalize(V);
+
+ float lightCosInnerAngle = cos(radians(15.0));
+ float lightCosOuterAngle = cos(radians(25.0));
+ float lightRange = 100.0;
+
+ // Direction vector from source to target
+ float3 dir = normalize(ubo.lights[i].position.xyz - ubo.lights[i].target.xyz);
+
+ // Dual cone spot light with smooth transition between inner and outer angle
+ float cosDir = dot(L, dir);
+ float spotEffect = smoothstep(lightCosOuterAngle, lightCosInnerAngle, cosDir);
+ float heightAttenuation = smoothstep(lightRange, 0.0f, dist);
+
+ // Diffuse lighting
+ float NdotL = max(0.0, dot(N, L));
+ float3 diff = NdotL.xxx;
+
+ // Specular lighting
+ float3 R = reflect(-L, N);
+ float NdotR = max(0.0, dot(R, V));
+ float3 spec = (pow(NdotR, 16.0) * albedo.a * 2.5).xxx;
+
+ fragcolor += float3((diff + spec) * spotEffect * heightAttenuation) * ubo.lights[i].color.rgb * albedo.rgb;
+ }
+
+ // Shadow calculations in a separate pass
+ if (ubo.useShadows > 0)
+ {
+ fragcolor = shadow(fragcolor, fragPos);
+ }
+
+ return float4(fragcolor, 1);
+}
diff --git a/Test/spv.debuginfo.hlsl.geom b/Test/spv.debuginfo.hlsl.geom
new file mode 100644
index 0000000..71f9b7c
--- /dev/null
+++ b/Test/spv.debuginfo.hlsl.geom
@@ -0,0 +1,79 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) 2022 Google LLC
+Copyright (c) 2022 Sascha Willems
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+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 Software.
+
+THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+struct UBO
+{
+ float4x4 projection[2];
+ float4x4 modelview[2];
+ float4 lightPos;
+};
+
+cbuffer ubo : register(b0) { UBO ubo; }
+
+struct VSOutput
+{
+ float4 Pos : SV_POSITION;
+[[vk::location(0)]] float3 Normal : NORMAL0;
+[[vk::location(1)]] float3 Color : COLOR0;
+};
+
+struct GSOutput
+{
+ float4 Pos : SV_POSITION;
+ uint ViewportIndex : SV_ViewportArrayIndex;
+ uint PrimitiveID : SV_PrimitiveID;
+[[vk::location(0)]] float3 Normal : NORMAL0;
+[[vk::location(1)]] float3 Color : COLOR0;
+[[vk::location(2)]] float3 ViewVec : TEXCOOR1;
+[[vk::location(3)]] float3 LightVec : TEXCOOR2;
+};
+
+[maxvertexcount(3)]
+[instance(2)]
+void main(triangle VSOutput input[3], inout TriangleStream<GSOutput> outStream, uint InvocationID : SV_GSInstanceID, uint PrimitiveID : SV_PrimitiveID)
+{
+ for(int i = 0; i < 3; i++)
+ {
+ GSOutput output = (GSOutput)0;
+ output.Normal = mul((float3x3)ubo.modelview[InvocationID], input[i].Normal);
+ output.Color = input[i].Color;
+
+ float4 pos = input[i].Pos;
+ float4 worldPos = mul(ubo.modelview[InvocationID], pos);
+
+ float3 lPos = mul(ubo.modelview[InvocationID], ubo.lightPos).xyz;
+ output.LightVec = lPos - worldPos.xyz;
+ output.ViewVec = -worldPos.xyz;
+
+ output.Pos = mul(ubo.projection[InvocationID], worldPos);
+
+ // Set the viewport index that the vertex will be emitted to
+ output.ViewportIndex = InvocationID;
+ output.PrimitiveID = PrimitiveID;
+ outStream.Append( output );
+ }
+
+ outStream.RestartStrip();
+}
diff --git a/Test/spv.debuginfo.hlsl.tesc b/Test/spv.debuginfo.hlsl.tesc
new file mode 100644
index 0000000..ba52701
--- /dev/null
+++ b/Test/spv.debuginfo.hlsl.tesc
@@ -0,0 +1,164 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) 2022 Google LLC
+Copyright (c) 2022 Sascha Willems
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+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 Software.
+
+THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+struct UBO
+{
+ float4x4 projection;
+ float4x4 modelview;
+ float4 lightPos;
+ float4 frustumPlanes[6];
+ float displacementFactor;
+ float tessellationFactor;
+ float2 viewportDim;
+ float tessellatedEdgeSize;
+};
+cbuffer ubo : register(b0) { UBO ubo; };
+
+Texture2D textureHeight : register(t1);
+SamplerState samplerHeight : register(s1);
+
+struct VSOutput
+{
+ float4 Pos : SV_POSITION;
+[[vk::location(0)]] float3 Normal : NORMAL0;
+[[vk::location(1)]] float2 UV : TEXCOORD0;
+};
+
+struct HSOutput
+{
+[[vk::location(2)]] float4 Pos : SV_POSITION;
+[[vk::location(0)]] float3 Normal : NORMAL0;
+[[vk::location(1)]] float2 UV : TEXCOORD0;
+};
+
+struct ConstantsHSOutput
+{
+ float TessLevelOuter[4] : SV_TessFactor;
+ float TessLevelInner[2] : SV_InsideTessFactor;
+};
+
+// Calculate the tessellation factor based on screen space
+// dimensions of the edge
+float screenSpaceTessFactor(float4 p0, float4 p1)
+{
+ // Calculate edge mid point
+ float4 midPoint = 0.5 * (p0 + p1);
+ // Sphere radius as distance between the control points
+ float radius = distance(p0, p1) / 2.0;
+
+ // View space
+ float4 v0 = mul(ubo.modelview, midPoint);
+
+ // Project into clip space
+ float4 clip0 = mul(ubo.projection, (v0 - float4(radius, float3(0.0, 0.0, 0.0))));
+ float4 clip1 = mul(ubo.projection, (v0 + float4(radius, float3(0.0, 0.0, 0.0))));
+
+ // Get normalized device coordinates
+ clip0 /= clip0.w;
+ clip1 /= clip1.w;
+
+ // Convert to viewport coordinates
+ clip0.xy *= ubo.viewportDim;
+ clip1.xy *= ubo.viewportDim;
+
+ // Return the tessellation factor based on the screen size
+ // given by the distance of the two edge control points in screen space
+ // and a reference (min.) tessellation size for the edge set by the application
+ return clamp(distance(clip0, clip1) / ubo.tessellatedEdgeSize * ubo.tessellationFactor, 1.0, 64.0);
+}
+
+// Checks the current's patch visibility against the frustum using a sphere check
+// Sphere radius is given by the patch size
+bool frustumCheck(float4 Pos, float2 inUV)
+{
+ // Fixed radius (increase if patch size is increased in example)
+ const float radius = 8.0f;
+ float4 pos = Pos;
+ pos.y -= textureHeight.SampleLevel(samplerHeight, inUV, 0.0).r * ubo.displacementFactor;
+
+ // Check sphere against frustum planes
+ for (int i = 0; i < 6; i++) {
+ if (dot(pos, ubo.frustumPlanes[i]) + radius < 0.0)
+ {
+ return false;
+ }
+ }
+ return true;
+}
+
+ConstantsHSOutput ConstantsHS(InputPatch<VSOutput, 4> patch)
+{
+ ConstantsHSOutput output = (ConstantsHSOutput)0;
+
+ if (!frustumCheck(patch[0].Pos, patch[0].UV))
+ {
+ output.TessLevelInner[0] = 0.0;
+ output.TessLevelInner[1] = 0.0;
+ output.TessLevelOuter[0] = 0.0;
+ output.TessLevelOuter[1] = 0.0;
+ output.TessLevelOuter[2] = 0.0;
+ output.TessLevelOuter[3] = 0.0;
+ }
+ else
+ {
+ if (ubo.tessellationFactor > 0.0)
+ {
+ output.TessLevelOuter[0] = screenSpaceTessFactor(patch[3].Pos, patch[0].Pos);
+ output.TessLevelOuter[1] = screenSpaceTessFactor(patch[0].Pos, patch[1].Pos);
+ output.TessLevelOuter[2] = screenSpaceTessFactor(patch[1].Pos, patch[2].Pos);
+ output.TessLevelOuter[3] = screenSpaceTessFactor(patch[2].Pos, patch[3].Pos);
+ output.TessLevelInner[0] = lerp(output.TessLevelOuter[0], output.TessLevelOuter[3], 0.5);
+ output.TessLevelInner[1] = lerp(output.TessLevelOuter[2], output.TessLevelOuter[1], 0.5);
+ }
+ else
+ {
+ // Tessellation factor can be set to zero by example
+ // to demonstrate a simple passthrough
+ output.TessLevelInner[0] = 1.0;
+ output.TessLevelInner[1] = 1.0;
+ output.TessLevelOuter[0] = 1.0;
+ output.TessLevelOuter[1] = 1.0;
+ output.TessLevelOuter[2] = 1.0;
+ output.TessLevelOuter[3] = 1.0;
+ }
+ }
+
+ return output;
+}
+
+[domain("quad")]
+[partitioning("integer")]
+[outputtopology("triangle_cw")]
+[outputcontrolpoints(4)]
+[patchconstantfunc("ConstantsHS")]
+[maxtessfactor(20.0f)]
+HSOutput main(InputPatch<VSOutput, 4> patch, uint InvocationID : SV_OutputControlPointID)
+{
+ HSOutput output = (HSOutput)0;
+ output.Pos = patch[InvocationID].Pos;
+ output.Normal = patch[InvocationID].Normal;
+ output.UV = patch[InvocationID].UV;
+ return output;
+}
diff --git a/Test/spv.debuginfo.hlsl.tese b/Test/spv.debuginfo.hlsl.tese
new file mode 100644
index 0000000..e7add05
--- /dev/null
+++ b/Test/spv.debuginfo.hlsl.tese
@@ -0,0 +1,94 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) 2022 Google LLC
+Copyright (c) 2022 Sascha Willems
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+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 Software.
+
+THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+struct UBO
+{
+ float4x4 projection;
+ float4x4 modelview;
+ float4 lightPos;
+ float4 frustumPlanes[6];
+ float displacementFactor;
+ float tessellationFactor;
+ float2 viewportDim;
+ float tessellatedEdgeSize;
+};
+cbuffer ubo : register(b0) { UBO ubo; };
+
+Texture2D displacementMapTexture : register(t1);
+SamplerState displacementMapSampler : register(s1);
+
+struct HSOutput
+{
+[[vk::location(2)]] float4 Pos : SV_POSITION;
+[[vk::location(0)]] float3 Normal : NORMAL0;
+[[vk::location(1)]] float2 UV : TEXCOORD0;
+};
+
+struct ConstantsHSOutput
+{
+ float TessLevelOuter[4] : SV_TessFactor;
+ float TessLevelInner[2] : SV_InsideTessFactor;
+};
+
+struct DSOutput
+{
+ float4 Pos : SV_POSITION;
+[[vk::location(0)]] float3 Normal : NORMAL0;
+[[vk::location(1)]] float2 UV : TEXCOORD0;
+[[vk::location(2)]] float3 ViewVec : TEXCOORD1;
+[[vk::location(3)]] float3 LightVec : TEXCOORD2;
+[[vk::location(4)]] float3 EyePos : POSITION1;
+[[vk::location(5)]] float3 WorldPos : POSITION0;
+};
+
+[domain("quad")]
+DSOutput main(ConstantsHSOutput input, float2 TessCoord : SV_DomainLocation, const OutputPatch<HSOutput, 4> patch)
+{
+ // Interpolate UV coordinates
+ DSOutput output = (DSOutput)0;
+ float2 uv1 = lerp(patch[0].UV, patch[1].UV, TessCoord.x);
+ float2 uv2 = lerp(patch[3].UV, patch[2].UV, TessCoord.x);
+ output.UV = lerp(uv1, uv2, TessCoord.y);
+
+ float3 n1 = lerp(patch[0].Normal, patch[1].Normal, TessCoord.x);
+ float3 n2 = lerp(patch[3].Normal, patch[2].Normal, TessCoord.x);
+ output.Normal = lerp(n1, n2, TessCoord.y);
+
+ // Interpolate positions
+ float4 pos1 = lerp(patch[0].Pos, patch[1].Pos, TessCoord.x);
+ float4 pos2 = lerp(patch[3].Pos, patch[2].Pos, TessCoord.x);
+ float4 pos = lerp(pos1, pos2, TessCoord.y);
+ // Displace
+ pos.y -= displacementMapTexture.SampleLevel(displacementMapSampler, output.UV, 0.0).r * ubo.displacementFactor;
+ // Perspective projection
+ output.Pos = mul(ubo.projection, mul(ubo.modelview, pos));
+
+ // Calculate vectors for lighting based on tessellated position
+ output.ViewVec = -pos.xyz;
+ output.LightVec = normalize(ubo.lightPos.xyz + output.ViewVec);
+ output.WorldPos = pos.xyz;
+ output.EyePos = mul(ubo.modelview, pos).xyz;
+ return output;
+}
diff --git a/Test/spv.debuginfo.hlsl.vert b/Test/spv.debuginfo.hlsl.vert
new file mode 100644
index 0000000..7d34ef4
--- /dev/null
+++ b/Test/spv.debuginfo.hlsl.vert
@@ -0,0 +1,112 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) 2022 Google LLC
+Copyright (c) 2022 Sascha Willems
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+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 Software.
+
+THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+struct VSInput
+{
+[[vk::location(0)]] float3 Pos : POSITION0;
+[[vk::location(1)]] float3 Normal : NORMAL0;
+[[vk::location(2)]] float2 UV : TEXCOORD0;
+[[vk::location(3)]] float3 Color : COLOR0;
+
+// Instanced attributes
+[[vk::location(4)]] float3 instancePos : POSITION1;
+[[vk::location(5)]] float3 instanceRot : TEXCOORD1;
+[[vk::location(6)]] float instanceScale : TEXCOORD2;
+[[vk::location(7)]] int instanceTexIndex : TEXCOORD3;
+};
+
+struct UBO
+{
+ float4x4 projection;
+ float4x4 modelview;
+ float4 lightPos;
+ float locSpeed;
+ float globSpeed;
+};
+
+cbuffer ubo : register(b0) { UBO ubo; }
+
+struct VSOutput
+{
+ float4 Pos : SV_POSITION;
+[[vk::location(0)]] float3 Normal : NORMAL0;
+[[vk::location(1)]] float3 Color : COLOR0;
+[[vk::location(2)]] float3 UV : TEXCOORD0;
+[[vk::location(3)]] float3 ViewVec : TEXCOORD1;
+[[vk::location(4)]] float3 LightVec : TEXCOORD2;
+};
+
+VSOutput main(VSInput input)
+{
+ VSOutput output = (VSOutput)0;
+ output.Color = input.Color;
+ output.UV = float3(input.UV, input.instanceTexIndex);
+
+ // rotate around x
+ float s = sin(input.instanceRot.x + ubo.locSpeed);
+ float c = cos(input.instanceRot.x + ubo.locSpeed);
+
+ float3x3 mx = { c, -s, 0.0,
+ s, c, 0.0,
+ 0.0, 0.0, 1.0 };
+
+ // rotate around y
+ s = sin(input.instanceRot.y + ubo.locSpeed);
+ c = cos(input.instanceRot.y + ubo.locSpeed);
+
+ float3x3 my = { c, 0.0, -s,
+ 0.0, 1.0, 0.0,
+ s, 0.0, c };
+
+ // rot around z
+ s = sin(input.instanceRot.z + ubo.locSpeed);
+ c = cos(input.instanceRot.z + ubo.locSpeed);
+
+ float3x3 mz = { 1.0, 0.0, 0.0,
+ 0.0, c, -s,
+ 0.0, s, c };
+
+ float3x3 rotMat = mul(mz, mul(my, mx));
+
+ float4x4 gRotMat;
+ s = sin(input.instanceRot.y + ubo.globSpeed);
+ c = cos(input.instanceRot.y + ubo.globSpeed);
+ gRotMat[0] = float4(c, 0.0, -s, 0.0);
+ gRotMat[1] = float4(0.0, 1.0, 0.0, 0.0);
+ gRotMat[2] = float4(s, 0.0, c, 0.0);
+ gRotMat[3] = float4(0.0, 0.0, 0.0, 1.0);
+
+ float4 locPos = float4(mul(rotMat, input.Pos.xyz), 1.0);
+ float4 pos = float4((locPos.xyz * input.instanceScale) + input.instancePos, 1.0);
+
+ output.Pos = mul(ubo.projection, mul(ubo.modelview, mul(gRotMat, pos)));
+ output.Normal = mul((float3x3)mul(ubo.modelview, gRotMat), mul(rotMat, input.Normal));
+
+ pos = mul(ubo.modelview, float4(input.Pos.xyz + input.instancePos, 1.0));
+ float3 lPos = mul((float3x3)ubo.modelview, ubo.lightPos.xyz);
+ output.LightVec = lPos - pos.xyz;
+ output.ViewVec = -pos.xyz;
+ return output;
+}
diff --git a/Test/spv.earlyAndlateFragmentTests.frag b/Test/spv.earlyAndlateFragmentTests.frag
new file mode 100644
index 0000000..ef3b4af
--- /dev/null
+++ b/Test/spv.earlyAndlateFragmentTests.frag
@@ -0,0 +1,12 @@
+#version 450 core
+#extension GL_EXT_fragment_shading_rate : enable
+#extension GL_ARB_shader_stencil_export : enable
+#extension GL_ARB_fragment_shader_interlock : enable
+#extension GL_AMD_shader_early_and_late_fragment_tests : enable
+layout(location = 0) flat in int instanceIndex;
+layout(early_and_late_fragment_tests_amd) in;
+layout(depth_less) out float gl_FragDepth;
+void main()
+{
+ gl_FragDepth = float(instanceIndex) / float(81);
+}
diff --git a/Test/spv.ext.AnyHitShader.rahit b/Test/spv.ext.AnyHitShader.rahit
index 871f8fe..44c32d9 100644
--- a/Test/spv.ext.AnyHitShader.rahit
+++ b/Test/spv.ext.AnyHitShader.rahit
@@ -1,6 +1,8 @@
#version 460
#extension GL_EXT_ray_tracing : enable
#extension GL_KHR_shader_subgroup_basic : enable
+#extension GL_EXT_ray_cull_mask : enable
+
layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
void main()
{
@@ -22,6 +24,7 @@
int v15 = gl_GeometryIndexEXT;
mat3x4 v16 = gl_ObjectToWorld3x4EXT;
mat3x4 v17 = gl_WorldToObject3x4EXT;
+ uint v18 = gl_CullMaskEXT;
incomingPayload = vec4(0.5f);
if (v2 == 1) {
ignoreIntersectionEXT;
diff --git a/Test/spv.ext.ClosestHitShader.rchit b/Test/spv.ext.ClosestHitShader.rchit
index 3f9bbaa..8b5f848 100644
--- a/Test/spv.ext.ClosestHitShader.rchit
+++ b/Test/spv.ext.ClosestHitShader.rchit
@@ -1,5 +1,7 @@
#version 460
#extension GL_EXT_ray_tracing : enable
+#extension GL_EXT_ray_cull_mask : enable
+
layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
layout(location = 0) rayPayloadEXT vec4 localPayload;
layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
@@ -23,5 +25,6 @@
int v15 = gl_GeometryIndexEXT;
mat3x4 v16 = gl_ObjectToWorld3x4EXT;
mat3x4 v17 = gl_WorldToObject3x4EXT;
+ uint v18 = gl_CullMaskEXT;
traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
}
diff --git a/Test/spv.ext.IntersectShader.rint b/Test/spv.ext.IntersectShader.rint
index 4933ff5..2138ea1 100644
--- a/Test/spv.ext.IntersectShader.rint
+++ b/Test/spv.ext.IntersectShader.rint
@@ -1,5 +1,6 @@
#version 460
#extension GL_EXT_ray_tracing : enable
+#extension GL_EXT_ray_cull_mask : enable
hitAttributeEXT vec4 iAttr;
void main()
{
@@ -18,6 +19,7 @@
mat4x3 v12 = gl_WorldToObjectEXT;
mat3x4 v13 = gl_ObjectToWorld3x4EXT;
mat3x4 v14 = gl_WorldToObject3x4EXT;
+ uint v15 = gl_CullMaskEXT;
iAttr = vec4(0.5f,0.5f,0.0f,1.0f);
reportIntersectionEXT(0.5, 1U);
}
diff --git a/Test/spv.ext.MissShader.rmiss b/Test/spv.ext.MissShader.rmiss
index 05311c9..6ab1d1a 100644
--- a/Test/spv.ext.MissShader.rmiss
+++ b/Test/spv.ext.MissShader.rmiss
@@ -5,6 +5,7 @@
#extension GL_ARB_shader_ballot : enable
#extension GL_NV_shader_sm_builtins : enable
#extension GL_ARB_sparse_texture_clamp: enable
+#extension GL_EXT_ray_cull_mask : enable
layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
layout(location = 0) rayPayloadEXT vec4 localPayload;
@@ -22,6 +23,7 @@
vec3 v3 = gl_WorldRayDirectionEXT;
float v4 = gl_RayTminEXT;
float v5 = gl_RayTmaxEXT;
+ uint v6 = gl_CullMaskEXT;
traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
incomingPayload.x = float(gl_SubGroupSizeARB) + float(gl_SubgroupEqMask) + float(gl_WarpIDNV);
vec4 texel = textureGradOffsetClampARB(s2D, c2, c2, c2, ivec2(5), lodClamp);
diff --git a/Test/spv.ext.RayGenShader.rgen b/Test/spv.ext.RayGenShader.rgen
index e9eb2cb..d342d86 100644
--- a/Test/spv.ext.RayGenShader.rgen
+++ b/Test/spv.ext.RayGenShader.rgen
@@ -1,6 +1,7 @@
#version 460
#extension GL_EXT_ray_tracing : enable
#extension GL_EXT_ray_flags_primitive_culling : enable
+#extension GL_EXT_opacity_micromap : enable
layout(binding = 0) uniform accelerationStructureEXT accEXT0;
layout(binding = 1, set = 0) uniform accelerationStructureEXT accEXT1; // Unused
layout(binding = 2, r32ui) shadercallcoherent uniform uimage2D imageu;
@@ -18,5 +19,5 @@
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);
+ traceRayEXT(accEXT0, lx, ly, sx, sy, gl_RayFlagsSkipTrianglesEXT | gl_RayFlagsSkipAABBEXT | gl_RayFlagsForceOpacityMicromap2StateEXT, origin, 0.5f, dir, 0.75f, 1);
}
diff --git a/Test/spv.ext.meshShaderBuiltins.mesh b/Test/spv.ext.meshShaderBuiltins.mesh
new file mode 100644
index 0000000..70a9736
--- /dev/null
+++ b/Test/spv.ext.meshShaderBuiltins.mesh
@@ -0,0 +1,74 @@
+#version 460
+
+#define MAX_VER 81
+#define MAX_PRIM 32
+
+#define BARRIER() \
+ memoryBarrierShared(); \
+ barrier();
+
+#extension GL_EXT_mesh_shader : enable
+
+layout(local_size_x = 32, local_size_y=1, local_size_z=1) in;
+
+layout(max_vertices=MAX_VER) out;
+layout(max_primitives=MAX_PRIM) out;
+layout(triangles) out;
+
+// test use of builtins in mesh shaders:
+
+void main()
+{
+ uint iid = gl_LocalInvocationID.x;
+ uint gid = gl_WorkGroupID.x;
+ uvec3 numWorkGrous = gl_NumWorkGroups;
+ uint vertexCount = MAX_VER; // vertexCount <= max_vertices
+ uint primitiveCount = MAX_PRIM; // primitiveCount <= max_primtives
+ SetMeshOutputsEXT(vertexCount, primitiveCount);
+
+ gl_MeshVerticesEXT[iid].gl_Position = vec4(1.0);
+ gl_MeshVerticesEXT[iid].gl_PointSize = 2.0;
+ gl_MeshVerticesEXT[iid].gl_ClipDistance[3] = 3.0;
+ gl_MeshVerticesEXT[iid].gl_CullDistance[2] = 4.0;
+
+ BARRIER();
+
+ gl_MeshVerticesEXT[iid+1].gl_Position = gl_MeshVerticesEXT[iid].gl_Position;
+ gl_MeshVerticesEXT[iid+1].gl_PointSize = gl_MeshVerticesEXT[iid].gl_PointSize;
+ gl_MeshVerticesEXT[iid+1].gl_ClipDistance[3] = gl_MeshVerticesEXT[iid].gl_ClipDistance[3];
+ gl_MeshVerticesEXT[iid+1].gl_CullDistance[2] = gl_MeshVerticesEXT[iid].gl_CullDistance[2];
+
+ BARRIER();
+
+ gl_MeshPrimitivesEXT[iid].gl_PrimitiveID = 6;
+ gl_MeshPrimitivesEXT[iid].gl_Layer = 7;
+ gl_MeshPrimitivesEXT[iid].gl_ViewportIndex = 8;
+ gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT = false;
+
+ BARRIER();
+
+ gl_MeshPrimitivesEXT[iid+1].gl_PrimitiveID = gl_MeshPrimitivesEXT[iid].gl_PrimitiveID;
+ gl_MeshPrimitivesEXT[iid+1].gl_Layer = gl_MeshPrimitivesEXT[iid].gl_Layer;
+ gl_MeshPrimitivesEXT[iid+1].gl_ViewportIndex = gl_MeshPrimitivesEXT[iid].gl_ViewportIndex;
+ gl_MeshPrimitivesEXT[iid+1].gl_CullPrimitiveEXT = gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT;
+
+ BARRIER();
+
+ // check bound limits
+ gl_PrimitiveTriangleIndicesEXT[0] = uvec3(257); // should truncate 257 -> 1, range is between [0, vertexCount-1]
+ gl_PrimitiveTriangleIndicesEXT[primitiveCount - 1] = uvec3(2); // array size is primitiveCount*3 for triangle
+ gl_PrimitiveTriangleIndicesEXT[gid] = gl_PrimitiveTriangleIndicesEXT[gid-1];
+
+ BARRIER();
+}
+
+// test use of builtins enabled by other extensions
+#extension GL_ARB_shader_draw_parameters : enable
+#extension GL_EXT_multiview : enable
+
+void testAdditionalBuiltins()
+{
+ int id = gl_DrawIDARB; // GL_ARB_shader_draw_parameters
+ int viewIdx = gl_ViewIndex; // GL_EXT_multiview
+
+}
\ No newline at end of file
diff --git a/Test/spv.ext.meshShaderRedeclBuiltins.mesh b/Test/spv.ext.meshShaderRedeclBuiltins.mesh
new file mode 100644
index 0000000..8b67034
--- /dev/null
+++ b/Test/spv.ext.meshShaderRedeclBuiltins.mesh
@@ -0,0 +1,75 @@
+#version 460
+
+#define MAX_VER 81
+#define MAX_PRIM 32
+
+#define BARRIER() \
+ memoryBarrierShared(); \
+ barrier();
+
+#extension GL_EXT_mesh_shader : enable
+
+layout(local_size_x = 32, local_size_y = 1, local_size_z = 1) in;
+
+layout(max_vertices=MAX_VER) out;
+layout(max_primitives=MAX_PRIM) out;
+layout(points) out;
+
+// test use of redeclared single-view builtins in mesh shaders:
+
+out gl_MeshPerVertexEXT {
+ vec4 gl_Position;
+ float gl_PointSize;
+ float gl_ClipDistance[4];
+ float gl_CullDistance[4];
+} gl_MeshVerticesEXT[MAX_VER]; // explicitly sized to MAX_VER
+
+perprimitiveEXT out gl_MeshPerPrimitiveEXT {
+ int gl_PrimitiveID;
+ int gl_Layer;
+ int gl_ViewportIndex;
+ bool gl_CullPrimitiveEXT;
+ int gl_PrimitiveShadingRateEXT;
+} gl_MeshPrimitivesEXT[]; // implicitly sized to MAX_PRIM
+
+out uint gl_PrimitivePointIndicesEXT[MAX_PRIM]; // explicitly sized to MAX_PRIM
+
+void main()
+{
+ uint iid = gl_LocalInvocationID.x;
+ uint gid = gl_WorkGroupID.x;
+
+ SetMeshOutputsEXT(MAX_VER, MAX_PRIM);
+
+ gl_MeshVerticesEXT[iid].gl_Position = vec4(1.0);
+ gl_MeshVerticesEXT[iid].gl_PointSize = 2.0;
+ gl_MeshVerticesEXT[iid].gl_ClipDistance[3] = 3.0;
+ gl_MeshVerticesEXT[iid].gl_CullDistance[2] = 4.0;
+
+ BARRIER();
+
+ gl_MeshVerticesEXT[iid+1].gl_Position = gl_MeshVerticesEXT[iid].gl_Position;
+ gl_MeshVerticesEXT[iid+1].gl_PointSize = gl_MeshVerticesEXT[iid].gl_PointSize;
+ gl_MeshVerticesEXT[iid+1].gl_ClipDistance[3] = gl_MeshVerticesEXT[iid].gl_ClipDistance[3];
+ gl_MeshVerticesEXT[iid+1].gl_CullDistance[2] = gl_MeshVerticesEXT[iid].gl_CullDistance[2];
+
+ BARRIER();
+
+ gl_MeshPrimitivesEXT[iid].gl_PrimitiveID = 6;
+ gl_MeshPrimitivesEXT[iid].gl_Layer = 7;
+ gl_MeshPrimitivesEXT[iid].gl_ViewportIndex = 8;
+ gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT = false;
+
+ BARRIER();
+
+ gl_MeshPrimitivesEXT[iid+1].gl_PrimitiveID = gl_MeshPrimitivesEXT[iid].gl_PrimitiveID;
+ gl_MeshPrimitivesEXT[iid+1].gl_Layer = gl_MeshPrimitivesEXT[iid].gl_Layer;
+ gl_MeshPrimitivesEXT[iid+1].gl_ViewportIndex = gl_MeshPrimitivesEXT[iid].gl_ViewportIndex;
+ gl_MeshPrimitivesEXT[iid+1].gl_CullPrimitiveEXT = gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT;
+
+ BARRIER();
+
+ // check bound limits
+ gl_PrimitivePointIndicesEXT[0] = 1;
+ gl_PrimitivePointIndicesEXT[MAX_PRIM - 1] = 2;
+}
diff --git a/Test/spv.ext.meshShaderTaskMem.mesh b/Test/spv.ext.meshShaderTaskMem.mesh
new file mode 100644
index 0000000..c22f767
--- /dev/null
+++ b/Test/spv.ext.meshShaderTaskMem.mesh
@@ -0,0 +1,41 @@
+#version 450
+
+#define MAX_VER 81
+#define MAX_PRIM 32
+
+#define BARRIER() \
+ memoryBarrierShared(); \
+ barrier();
+
+#extension GL_EXT_mesh_shader : enable
+
+layout(local_size_x = 32) in;
+
+layout(max_vertices=MAX_VER) out;
+layout(max_primitives=MAX_PRIM) out;
+layout(triangles) out;
+
+// use of storage qualifier "taskPayloadSharedEXT" in mesh shaders:
+struct taskBlock {
+ float gid1[2];
+ vec4 gid2;
+};
+taskPayloadSharedEXT taskBlock mytask;
+
+buffer bufferBlock {
+ float gid3[2];
+ vec4 gid4;
+} mybuf;
+
+layout(location=0) out outBlock {
+ float gid5;
+ vec4 gid6;
+} myblk[];
+
+void main()
+{
+ uint iid = gl_LocalInvocationID.x;
+
+ myblk[iid].gid5 = mytask.gid1[1] + mybuf.gid3[1];
+ myblk[iid].gid6 = mytask.gid2 + mybuf.gid4;
+}
diff --git a/Test/spv.ext.meshShaderUserDefined.mesh b/Test/spv.ext.meshShaderUserDefined.mesh
new file mode 100644
index 0000000..c8035e2
--- /dev/null
+++ b/Test/spv.ext.meshShaderUserDefined.mesh
@@ -0,0 +1,59 @@
+#version 450
+
+#define MAX_VER 81
+#define MAX_PRIM 32
+
+#define BARRIER() \
+ memoryBarrierShared(); \
+ barrier();
+
+#extension GL_EXT_mesh_shader : enable
+
+layout(local_size_x = 32) in;
+
+layout(max_vertices=MAX_VER) out;
+layout(max_primitives=MAX_PRIM) out;
+layout(triangles) out;
+
+// test use of user defined interface out blocks:
+
+// per-primitive block
+perprimitiveEXT layout(location=0) out myblock {
+ float f;
+ float fArr[4];
+ vec3 pos;
+ vec4 posArr[4];
+ mat4 m;
+ mat3 mArr[2];
+} blk[];
+
+// per-vertex block
+layout(location=20) out myblock2 {
+ float f;
+ vec4 pos;
+ mat4 m;
+} blk2[];
+
+void main()
+{
+ uint iid = gl_LocalInvocationID.x;
+ uint gid = gl_WorkGroupID.x;
+
+ blk[iid].f = 11.0;
+ blk[iid+1].fArr[gid] = blk[iid].f;
+ blk[iid/2].pos.yzx = vec3(14.0, 15.0, 13.0);
+ blk[iid*2].posArr[1].yzw = blk[iid/2].pos;
+ blk[iid/4].m[2].wzyx = vec4(13.0, 14.0, 15.0, 16.0);
+ blk[iid].mArr[0][1][1] = blk[iid/4].m[2].w;
+ blk[iid*4].mArr[1][gid] = vec3(17.0, 18.0, 19.0);
+
+ BARRIER();
+
+ blk2[iid].f = blk2[iid-1].f + 20.0;
+ blk2[iid].pos = vec4(21.0, 22.0, 23.0, 24.0);
+ blk2[iid+1].m[gid] = blk2[iid].pos;
+ blk2[iid+1].m[gid][2] = 29.0;
+ blk2[iid+2].m[3] = blk2[iid+1].m[gid];
+
+ BARRIER();
+}
diff --git a/Test/spv.ext.meshTaskShader.task b/Test/spv.ext.meshTaskShader.task
new file mode 100644
index 0000000..074fb23
--- /dev/null
+++ b/Test/spv.ext.meshTaskShader.task
@@ -0,0 +1,51 @@
+#version 450
+
+#define BARRIER() \
+ memoryBarrierShared(); \
+ barrier();
+
+#extension GL_EXT_mesh_shader : enable
+
+layout(local_size_x = 32) in;
+
+// test use of shared memory in task shaders:
+layout(binding=0) writeonly uniform image2D uni_image;
+uniform block0 {
+ uint uni_value;
+};
+shared vec4 mem[10];
+
+// use of storage qualifier "taskPayloadSharedEXT" in task shaders
+struct Task {
+ vec2 dummy;
+ vec2 submesh[3];
+};
+taskPayloadSharedEXT Task mytask;
+
+void main()
+{
+ uint iid = gl_LocalInvocationID.x;
+ uint gid = gl_WorkGroupID.x;
+
+ // 1. shared memory load and stores
+ for (uint i = 0; i < 10; ++i) {
+ mem[i] = vec4(i + uni_value);
+ }
+ imageStore(uni_image, ivec2(iid), mem[gid]);
+ imageStore(uni_image, ivec2(iid), mem[gid+1]);
+
+ BARRIER();
+
+ // 2. task memory stores
+
+ mytask.dummy = vec2(30.0, 31.0);
+ mytask.submesh[0] = vec2(32.0, 33.0);
+ mytask.submesh[1] = vec2(34.0, 35.0);
+ mytask.submesh[2] = mytask.submesh[gid%2];
+
+ BARRIER();
+
+ // 3. emit task count under uniform control flow
+ EmitMeshTasksEXT(3U, 1U, 1U);
+
+}
diff --git a/Test/spv.float16NoRelaxed.vert b/Test/spv.float16NoRelaxed.vert
new file mode 100644
index 0000000..d594a1d
--- /dev/null
+++ b/Test/spv.float16NoRelaxed.vert
@@ -0,0 +1,16 @@
+#version 450
+#extension GL_KHR_shader_subgroup_vote: enable
+#extension GL_EXT_shader_subgroup_extended_types_float16 : enable
+layout(set = 0, binding = 0, std430) buffer Buffer1
+{
+ uint result[];
+};
+
+void main (void)
+{
+ uint tempRes;
+ float16_t valueNoEqual = float16_t(gl_SubgroupInvocationID);
+ tempRes = subgroupAllEqual(valueNoEqual) ? 0x0 : 0x10;
+ result[gl_VertexIndex] = tempRes;
+}
+
diff --git a/Test/spv.fragmentShaderBarycentric2.frag b/Test/spv.fragmentShaderBarycentric2.frag
index 4682e4e..2db44af 100644
--- a/Test/spv.fragmentShaderBarycentric2.frag
+++ b/Test/spv.fragmentShaderBarycentric2.frag
@@ -4,6 +4,8 @@
precision highp float;
layout(location = 0) pervertexNV in float vertexIDs[3];
+layout(location = 1) pervertexNV in float vertexIDs2[3];
+
layout(location = 1) out float value;
@@ -12,4 +14,8 @@
gl_BaryCoordNoPerspNV.y * vertexIDs[1] +
gl_BaryCoordNoPerspNV.z * vertexIDs[2]);
+ value += (gl_BaryCoordNoPerspNV.x * vertexIDs2[0] +
+ gl_BaryCoordNoPerspNV.y * vertexIDs2[1] +
+ gl_BaryCoordNoPerspNV.z * vertexIDs2[2]);
+
}
diff --git a/Test/spv.fragmentShaderBarycentric3.frag b/Test/spv.fragmentShaderBarycentric3.frag
new file mode 100644
index 0000000..93e977e
--- /dev/null
+++ b/Test/spv.fragmentShaderBarycentric3.frag
@@ -0,0 +1,15 @@
+#version 450
+#extension GL_EXT_fragment_shader_barycentric : require
+
+layout(location = 0) pervertexEXT in vertices {
+ float attrib;
+ } v[];
+
+layout(location = 1) out float value;
+
+void main () {
+ value = (gl_BaryCoordEXT.x * v[0].attrib +
+ gl_BaryCoordEXT.y * v[1].attrib +
+ gl_BaryCoordEXT.z * v[2].attrib);
+
+}
diff --git a/Test/spv.fragmentShaderBarycentric4.frag b/Test/spv.fragmentShaderBarycentric4.frag
new file mode 100644
index 0000000..fd4902f
--- /dev/null
+++ b/Test/spv.fragmentShaderBarycentric4.frag
@@ -0,0 +1,20 @@
+#version 320 es
+#extension GL_EXT_fragment_shader_barycentric : require
+
+precision highp float;
+
+layout(location = 0) pervertexEXT in float vertexIDs[3];
+layout(location = 1) pervertexEXT in float vertexIDs2[3];
+
+layout(location = 1) out float value;
+
+void main () {
+ value = (gl_BaryCoordNoPerspEXT.x * vertexIDs[0] +
+ gl_BaryCoordNoPerspEXT.y * vertexIDs[1] +
+ gl_BaryCoordNoPerspEXT.z * vertexIDs[2]);
+
+ value += (gl_BaryCoordNoPerspEXT.x * vertexIDs2[0] +
+ gl_BaryCoordNoPerspEXT.y * vertexIDs2[1] +
+ gl_BaryCoordNoPerspEXT.z * vertexIDs2[2]);
+
+}
diff --git a/Test/spv.imageAtomic64.comp b/Test/spv.imageAtomic64.comp
new file mode 100644
index 0000000..f09abf7
--- /dev/null
+++ b/Test/spv.imageAtomic64.comp
@@ -0,0 +1,12 @@
+#version 450
+#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable
+#extension GL_EXT_shader_image_int64 : enable
+#extension GL_KHR_memory_scope_semantics : enable
+
+layout(set = 0, binding = 0) buffer ssbo { uint64_t y; };
+layout(set = 0, binding = 1, r64ui) uniform u64image2D z;
+
+void main() {
+ // Test imageAtomicStore exclusively. Do NOT add other atomic operations to this test.
+ imageAtomicStore(z, ivec2(1, 1), y, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed);
+}
diff --git a/Test/spv.intrinsicsSpecConst.vert b/Test/spv.intrinsicsSpecConst.vert
deleted file mode 100644
index 19cc5ef..0000000
--- a/Test/spv.intrinsicsSpecConst.vert
+++ /dev/null
@@ -1,14 +0,0 @@
-#version 450 core
-
-#extension GL_EXT_spirv_intrinsics: enable
-
-layout(constant_id = 5) const uint targetWidth = 32;
-spirv_execution_mode_id(4460/*=DenormFlushToZero*/, targetWidth);
-
-layout(constant_id = 6) const uint builtIn = 1;
-spirv_decorate_id(11/*=BuiltIn*/, builtIn) out float pointSize;
-
-void main()
-{
- pointSize = 4.0;
-}
diff --git a/Test/spv.intrinsicsSpirvInstruction.vert b/Test/spv.intrinsicsSpirvInstruction.vert
index a4efb7d..2cc1842 100644
--- a/Test/spv.intrinsicsSpirvInstruction.vert
+++ b/Test/spv.intrinsicsSpirvInstruction.vert
@@ -4,10 +4,10 @@
#extension GL_ARB_gpu_shader_int64: enable
spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056)
-uvec2 clockRealtime2x32EXT(void);
+uvec2 clockRealtime2x32EXT(int);
spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056)
-int64_t clockRealtimeEXT(void);
+uint64_t clockRealtimeEXT(int);
spirv_instruction (extensions = ["SPV_AMD_shader_trinary_minmax"], set = "SPV_AMD_shader_trinary_minmax", id = 1)
vec2 min3(vec2 x, vec2 y, vec2 z);
@@ -15,12 +15,12 @@
layout(location = 0) in vec3 vec3In;
layout(location = 0) out uvec2 uvec2Out;
-layout(location = 1) out int64_t i64Out;
+layout(location = 1) out uint64_t u64Out;
layout(location = 2) out vec2 vec2Out;
void main()
{
- uvec2Out = clockRealtime2x32EXT();
- i64Out = clockRealtimeEXT();
+ uvec2Out = clockRealtime2x32EXT(1);
+ u64Out = clockRealtimeEXT(1);
vec2Out = min3(vec3In.xy, vec3In.yz, vec3In.zx);
-}
+}
\ No newline at end of file
diff --git a/Test/spv.intrinsicsSpirvTypeLocalVar.vert b/Test/spv.intrinsicsSpirvTypeLocalVar.vert
new file mode 100644
index 0000000..203d900
--- /dev/null
+++ b/Test/spv.intrinsicsSpirvTypeLocalVar.vert
@@ -0,0 +1,14 @@
+#version 460 core
+
+#extension GL_EXT_spirv_intrinsics: enable
+
+layout(constant_id = 9) const int size = 9;
+
+#define EmptyStruct spirv_type(id = 30)
+void func(EmptyStruct emptyStruct) {}
+
+void main()
+{
+ EmptyStruct dummy[size];
+ func(dummy[1]);
+}
diff --git a/Test/spv.pp.line.frag b/Test/spv.pp.line.frag
index 464463c..6f4702f 100644
--- a/Test/spv.pp.line.frag
+++ b/Test/spv.pp.line.frag
@@ -1,4 +1,5 @@
#version 140
+#extension GL_GOOGLE_cpp_style_line_directive : require
uniform sampler1D texSampler1D;
uniform sampler2D texSampler2D;
@@ -8,9 +9,20 @@
in vec2 coords2D;
+#line 0 "header.h"
+float myAbs(float x) {
+ if (x > 0) {
+ return x;
+ }
+ else {
+ return -x;
+ }
+}
+
+#line 22 "spv.pp.line.frag"
void main()
{
- float blendscale = 1.789;
+ float blendscale = myAbs(1.789);
float bias = 2.0;
float coords1D = 1.789;
vec4 color = vec4(0.0, 0.0, 0.0, 0.0);
diff --git a/Test/spv.subgroupSizeARB.frag b/Test/spv.subgroupSizeARB.frag
new file mode 100644
index 0000000..45a1701
--- /dev/null
+++ b/Test/spv.subgroupSizeARB.frag
@@ -0,0 +1,10 @@
+#version 450
+#extension GL_ARB_shader_ballot : enable
+#extension GL_KHR_shader_subgroup_basic : enable
+
+layout(location = 0) out uint result;
+
+void main (void)
+{
+ result = gl_SubGroupSizeARB;
+}
diff --git a/Test/spv.textureError.frag b/Test/spv.textureError.frag
new file mode 100644
index 0000000..a40ea36
--- /dev/null
+++ b/Test/spv.textureError.frag
@@ -0,0 +1,10 @@
+#version 140
+
+uniform sampler2D s2D;
+centroid vec2 centTexCoord;
+
+void main()
+{
+ gl_FragColor = texture2D(s2D, centTexCoord);
+}
+
diff --git a/Test/textureQueryLOD.frag b/Test/textureQueryLOD.frag
new file mode 100644
index 0000000..0d0ae3c
--- /dev/null
+++ b/Test/textureQueryLOD.frag
@@ -0,0 +1,39 @@
+#version 150
+
+#ifdef GL_ARB_texture_query_lod
+#extension GL_ARB_texture_query_lod : enable
+#endif
+#ifdef GL_ARB_gpu_shader5
+#extension GL_ARB_gpu_shader5 : enable
+#endif
+
+#ifdef GL_ES
+precision highp float;
+#endif
+
+in vec2 vUV; // vert->frag
+out vec4 color; // frag->fb
+#define UV vUV
+
+#define bias 1.5
+#define TEX 128.0
+#define offset ivec2(1,1)
+uniform highp sampler2DShadow sampler;
+uniform int funct;
+
+void main (void)
+{
+ switch (funct)
+ {
+ case 0:
+ ivec2 iv2 = textureSize(sampler, 0);
+#ifdef GL_ARB_texture_query_lod
+ vec2 fv2 = textureQueryLOD(sampler, vec2(0.0, 0.0));
+#endif
+ color = vec4(iv2,fv2);
+ break;
+ default:
+ color = vec4(1.0, 1.0, 1.0, 1.0);
+ break;
+ }
+}
diff --git a/Test/vk.relaxed.stagelink.0.0.frag b/Test/vk.relaxed.stagelink.0.0.frag
new file mode 100755
index 0000000..1f9f102
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.0.0.frag
@@ -0,0 +1,139 @@
+#version 460
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+
+void TDAlphaTest(float alpha);
+vec4 TDDither(vec4 color);
+vec4 TDOutputSwizzle(vec4 v);
+uvec4 TDOutputSwizzle(uvec4 v);
+void TDCheckOrderIndTrans();
+void TDCheckDiscard();
+uniform vec3 uConstant;
+uniform float uShadowStrength;
+uniform vec3 uShadowColor;
+uniform vec4 uDiffuseColor;
+uniform vec4 uAmbientColor;
+
+uniform sampler2DArray sColorMap;
+
+in Vertex
+{
+ vec4 color;
+ vec3 worldSpacePos;
+ vec3 texCoord0;
+ flat int cameraIndex;
+ flat int instance;
+} iVert;
+
+// Output variable for the color
+layout(location = 0) out vec4 oFragColor[TD_NUM_COLOR_BUFFERS];
+void main()
+{
+ // This allows things such as order independent transparency
+ // and Dual-Paraboloid rendering to work properly
+ TDCheckDiscard();
+
+ vec4 outcol = vec4(0.0, 0.0, 0.0, 0.0);
+
+ vec3 texCoord0 = iVert.texCoord0.stp;
+ float actualTexZ = mod(int(texCoord0.z),2048);
+ float instanceLoop = floor(int(texCoord0.z)/2048);
+ texCoord0.z = actualTexZ;
+ vec4 colorMapColor = texture(sColorMap, texCoord0.stp);
+
+ float red = colorMapColor[int(instanceLoop)];
+ colorMapColor = vec4(red);
+ // Constant Light Contribution
+ outcol.rgb += uConstant * iVert.color.rgb;
+
+ outcol *= colorMapColor;
+
+ // Alpha Calculation
+ float alpha = iVert.color.a * colorMapColor.a ;
+
+ // Dithering, does nothing if dithering is disabled
+ outcol = TDDither(outcol);
+
+ outcol.rgb *= alpha;
+
+ // Modern GL removed the implicit alpha test, so we need to apply
+ // it manually here. This function does nothing if alpha test is disabled.
+ TDAlphaTest(alpha);
+
+ outcol.a = alpha;
+ oFragColor[0] = TDOutputSwizzle(outcol);
+
+
+ // TD_NUM_COLOR_BUFFERS will be set to the number of color buffers
+ // active in the render. By default we want to output zero to every
+ // buffer except the first one.
+ for (int i = 1; i < TD_NUM_COLOR_BUFFERS; i++)
+ {
+ oFragColor[i] = vec4(0.0);
+ }
+}
diff --git a/Test/vk.relaxed.stagelink.0.0.vert b/Test/vk.relaxed.stagelink.0.0.vert
new file mode 100755
index 0000000..7f31c37
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.0.0.vert
@@ -0,0 +1,126 @@
+#version 460
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+layout(location = 0) in vec3 P;
+layout(location = 1) in vec3 N;
+layout(location = 2) in vec4 Cd;
+layout(location = 3) in vec3 uv[8];
+vec4 TDWorldToProj(vec4 v);
+vec4 TDWorldToProj(vec3 v);
+vec4 TDWorldToProj(vec4 v, vec3 uv);
+vec4 TDWorldToProj(vec3 v, vec3 uv);
+int TDInstanceID();
+int TDCameraIndex();
+vec3 TDUVUnwrapCoord();
+/*********TOUCHDEFORMPREFIX**********/
+#define TD_NUM_BONES 0
+
+vec3 TDInstanceTexCoord(int instanceID, vec3 t);
+vec4 TDInstanceColor(int instanceID, vec4 curColor);
+
+vec4 TDDeform(vec4 pos);
+vec4 TDDeform(vec3 pos);
+vec3 TDInstanceTexCoord(vec3 t);
+vec4 TDInstanceColor(vec4 curColor);
+#line 1
+
+out Vertex
+{
+ vec4 color;
+ vec3 worldSpacePos;
+ vec3 texCoord0;
+ flat int cameraIndex;
+ flat int instance;
+} oVert;
+
+void main()
+{
+
+ { // Avoid duplicate variable defs
+ vec3 texcoord = TDInstanceTexCoord(uv[0]);
+ oVert.texCoord0.stp = texcoord.stp;
+ }
+ // First deform the vertex and normal
+ // TDDeform always returns values in world space
+ oVert.instance = TDInstanceID();
+ vec4 worldSpacePos = TDDeform(P);
+ vec3 uvUnwrapCoord = TDInstanceTexCoord(TDUVUnwrapCoord());
+ gl_Position = TDWorldToProj(worldSpacePos, uvUnwrapCoord);
+
+
+ // This is here to ensure we only execute lighting etc. code
+ // when we need it. If picking is active we don't need lighting, so
+ // this entire block of code will be ommited from the compile.
+ // The TD_PICKING_ACTIVE define will be set automatically when
+ // picking is active.
+
+ int cameraIndex = TDCameraIndex();
+ oVert.cameraIndex = cameraIndex;
+ oVert.worldSpacePos.xyz = worldSpacePos.xyz;
+ oVert.color = TDInstanceColor(Cd);
+}
diff --git a/Test/vk.relaxed.stagelink.0.1.frag b/Test/vk.relaxed.stagelink.0.1.frag
new file mode 100755
index 0000000..2a82b65
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.0.1.frag
@@ -0,0 +1,504 @@
+#version 460
+uniform sampler2D sTDNoiseMap;
+uniform sampler1D sTDSineLookup;
+uniform sampler2D sTDWhite2D;
+uniform sampler3D sTDWhite3D;
+uniform sampler2DArray sTDWhite2DArray;
+uniform samplerCube sTDWhiteCube;
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDLight
+{
+ vec4 position;
+ vec3 direction;
+ vec3 diffuse;
+ vec4 nearFar;
+ vec4 lightSize;
+ vec4 misc;
+ vec4 coneLookupScaleBias;
+ vec4 attenScaleBiasRoll;
+ mat4 shadowMapMatrix;
+ mat4 shadowMapCamMatrix;
+ vec4 shadowMapRes;
+ mat4 projMapMatrix;
+};
+struct TDEnvLight
+{
+ vec3 color;
+ mat3 rotate;
+};
+layout(std140) uniform TDLightBlock
+{
+ TDLight uTDLights[TD_LIGHTS_ARRAY_SIZE];
+};
+layout(std140) uniform TDEnvLightBlock
+{
+ TDEnvLight uTDEnvLights[TD_ENV_LIGHTS_ARRAY_SIZE];
+};
+layout(std430) readonly restrict buffer TDEnvLightBuffer
+{
+ vec3 shCoeffs[9];
+} uTDEnvLightBuffers[TD_ENV_LIGHTS_ARRAY_SIZE];
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+
+layout(binding = 15) uniform samplerBuffer sTDInstanceT;
+layout(binding = 16) uniform samplerBuffer sTDInstanceTexCoord;
+layout(binding = 17) uniform samplerBuffer sTDInstanceColor;
+vec4 TDDither(vec4 color);
+vec3 TDHSVToRGB(vec3 c);
+vec3 TDRGBToHSV(vec3 c);
+#define PI 3.14159265
+
+vec4 TDColor(vec4 color) { return color; }
+void TDCheckOrderIndTrans() {
+}
+void TDCheckDiscard() {
+ TDCheckOrderIndTrans();
+}
+vec4 TDDither(vec4 color)
+{
+ float d = texture(sTDNoiseMap,
+ gl_FragCoord.xy / 256.0).r;
+ d -= 0.5;
+ d /= 256.0;
+ return vec4(color.rgb + d, color.a);
+}
+bool TDFrontFacing(vec3 pos, vec3 normal)
+{
+ return gl_FrontFacing;
+}
+float TDAttenuateLight(int index, float lightDist)
+{
+ return 1.0;
+}
+void TDAlphaTest(float alpha) {
+}
+float TDHardShadow(int lightIndex, vec3 worldSpacePos)
+{ return 0.0; }
+float TDSoftShadow(int lightIndex, vec3 worldSpacePos, int samples, int steps)
+{ return 0.0; }
+float TDSoftShadow(int lightIndex, vec3 worldSpacePos)
+{ return 0.0; }
+float TDShadow(int lightIndex, vec3 worldSpacePos)
+{ return 0.0; }
+vec3 TDEquirectangularToCubeMap(vec2 mapCoord);
+vec2 TDCubeMapToEquirectangular(vec3 envMapCoord);
+vec2 TDCubeMapToEquirectangular(vec3 envMapCoord, out float mipMapBias);
+vec2 TDTexGenSphere(vec3 envMapCoord);
+float iTDRadicalInverse_VdC(uint bits)
+{
+ bits = (bits << 16u) | (bits >> 16u);
+ bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u);
+ bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u);
+ bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u);
+ bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u);
+ return float(bits) * 2.3283064365386963e-10; // / 0x100000000
+}
+vec2 iTDHammersley(uint i, uint N)
+{
+ return vec2(float(i) / float(N), iTDRadicalInverse_VdC(i));
+}
+vec3 iTDImportanceSampleGGX(vec2 Xi, float roughness2, vec3 N)
+{
+ float a = roughness2;
+ float phi = 2 * 3.14159265 * Xi.x;
+ float cosTheta = sqrt( (1 - Xi.y) / (1 + (a*a - 1) * Xi.y) );
+ float sinTheta = sqrt( 1 - cosTheta * cosTheta );
+
+ vec3 H;
+ H.x = sinTheta * cos(phi);
+ H.y = sinTheta * sin(phi);
+ H.z = cosTheta;
+
+ vec3 upVector = abs(N.z) < 0.999 ? vec3(0, 0, 1) : vec3(1, 0, 0);
+ vec3 tangentX = normalize(cross(upVector, N));
+ vec3 tangentY = cross(N, tangentX);
+
+ // Tangent to world space
+ vec3 worldResult = tangentX * H.x + tangentY * H.y + N * H.z;
+ return worldResult;
+}
+float iTDDistributionGGX(vec3 normal, vec3 half_vector, float roughness2)
+{
+ const float Epsilon = 0.000001;
+
+ float NdotH = clamp(dot(normal, half_vector), Epsilon, 1.0);
+
+ float alpha2 = roughness2 * roughness2;
+
+ float denom = NdotH * NdotH * (alpha2 - 1.0) + 1.0;
+ denom = max(1e-8, denom);
+ return alpha2 / (PI * denom * denom);
+}
+vec3 iTDCalcF(vec3 F0, float VdotH) {
+ return F0 + (vec3(1.0) - F0) * pow(2.0, (-5.55473*VdotH - 6.98316) * VdotH);
+}
+
+float iTDCalcG(float NdotL, float NdotV, float k) {
+ float Gl = 1.0 / (NdotL * (1.0 - k) + k);
+ float Gv = 1.0 / (NdotV * (1.0 - k) + k);
+ return Gl * Gv;
+}
+// 0 - All options
+TDPBRResult TDLightingPBR(int index,vec3 diffuseColor,vec3 specularColor,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float roughness)
+{
+ TDPBRResult res;
+ return res;
+}
+// 0 - All options
+void TDLightingPBR(inout vec3 diffuseContrib,inout vec3 specularContrib,inout float shadowStrengthOut,int index,vec3 diffuseColor,vec3 specularColor,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float roughness)
+{
+ TDPBRResult res = TDLightingPBR(index,diffuseColor,specularColor,worldSpacePos,normal,shadowStrength,shadowColor,camVector,roughness); diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+ shadowStrengthOut = res.shadowStrength;
+}
+// 0 - All options
+void TDLightingPBR(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 diffuseColor,vec3 specularColor,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float roughness)
+{
+ TDPBRResult res = TDLightingPBR(index,diffuseColor,specularColor,worldSpacePos,normal,shadowStrength,shadowColor,camVector,roughness); diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+}
+// 0 - All options
+TDPBRResult TDEnvLightingPBR(int index,vec3 diffuseColor,vec3 specularColor,vec3 normal,vec3 camVector,float roughness,float ambientOcclusion)
+{
+ TDPBRResult res;
+ return res;
+}
+// 0 - All options
+void TDEnvLightingPBR(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 diffuseColor,vec3 specularColor,vec3 normal,vec3 camVector,float roughness,float ambientOcclusion)
+{
+ TDPBRResult res = TDEnvLightingPBR(index, diffuseColor, specularColor, normal, camVector, roughness, ambientOcclusion);
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+}
+// 0 - All options
+TDPhongResult TDLighting(int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess,float shininess2)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ return res;
+}
+// 0 - Legacy
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,inout vec3 specularContrib2,inout float shadowStrengthOut,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess,float shininess2)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+ specularContrib2 = res.specular2;
+ shadowStrengthOut = res.shadowStrength;
+}
+// 0 - Legacy
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,inout vec3 specularContrib2,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess,float shininess2)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+ specularContrib2 = res.specular2;
+}
+// 1 - Without specular2
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+}
+// 2 - Without shadows
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,inout vec3 specularContrib2,int index,vec3 worldSpacePos,vec3 normal,vec3 camVector,float shininess,float shininess2)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+ specularContrib2 = res.specular2;
+}
+// 3 - diffuse and specular only
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 worldSpacePos,vec3 normal,vec3 camVector,float shininess)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+}
+// 4 - Diffuse only
+void TDLighting(inout vec3 diffuseContrib,int index, vec3 worldSpacePos, vec3 normal)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+}
+// 5 - diffuse only with shadows
+void TDLighting(inout vec3 diffuseContrib,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+}
+vec4 TDProjMap(int index, vec3 worldSpacePos, vec4 defaultColor) {
+ switch (index)
+ {
+ default: return defaultColor;
+ }
+}
+vec4 TDFog(vec4 color, vec3 lightingSpacePosition, int cameraIndex) {
+ switch (cameraIndex) {
+ default:
+ case 0:
+ {
+ return color;
+ }
+ }
+}
+vec4 TDFog(vec4 color, vec3 lightingSpacePosition)
+{
+ return TDFog(color, lightingSpacePosition, 0);
+}
+vec3 TDInstanceTexCoord(int index, vec3 t) {
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceTexCoord, coord);
+ v[0] = t.s;
+ v[1] = t.t;
+ v[2] = samp[0];
+ t.stp = v.stp;
+ return t;
+}
+bool TDInstanceActive(int index) {
+ index -= uTDInstanceIDOffset;
+ float v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v = samp[0];
+ return v != 0.0;
+}
+vec3 iTDInstanceTranslate(int index, out bool instanceActive) {
+ int origIndex = index;
+ index -= uTDInstanceIDOffset;
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v[0] = samp[1];
+ v[1] = samp[2];
+ v[2] = samp[3];
+ instanceActive = samp[0] != 0.0;
+ return v;
+}
+vec3 TDInstanceTranslate(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v[0] = samp[1];
+ v[1] = samp[2];
+ v[2] = samp[3];
+ return v;
+}
+mat3 TDInstanceRotateMat(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 0.0);
+ mat3 m = mat3(1.0);
+{
+ mat3 r;
+}
+ return m;
+}
+vec3 TDInstanceScale(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(1.0, 1.0, 1.0);
+ return v;
+}
+vec3 TDInstancePivot(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 0.0);
+ return v;
+}
+vec3 TDInstanceRotTo(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 1.0);
+ return v;
+}
+vec3 TDInstanceRotUp(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 1.0, 0.0);
+ return v;
+}
+mat4 TDInstanceMat(int id) {
+ bool instanceActive = true;
+ vec3 t = iTDInstanceTranslate(id, instanceActive);
+ if (!instanceActive)
+ {
+ return mat4(0.0);
+ }
+ mat4 m = mat4(1.0);
+ {
+ vec3 tt = t;
+ m[3][0] += m[0][0]*tt.x;
+ m[3][1] += m[0][1]*tt.x;
+ m[3][2] += m[0][2]*tt.x;
+ m[3][3] += m[0][3]*tt.x;
+ m[3][0] += m[1][0]*tt.y;
+ m[3][1] += m[1][1]*tt.y;
+ m[3][2] += m[1][2]*tt.y;
+ m[3][3] += m[1][3]*tt.y;
+ m[3][0] += m[2][0]*tt.z;
+ m[3][1] += m[2][1]*tt.z;
+ m[3][2] += m[2][2]*tt.z;
+ m[3][3] += m[2][3]*tt.z;
+ }
+ return m;
+}
+mat3 TDInstanceMat3(int id) {
+ mat3 m = mat3(1.0);
+ return m;
+}
+mat3 TDInstanceMat3ForNorm(int id) {
+ mat3 m = TDInstanceMat3(id);
+ return m;
+}
+vec4 TDInstanceColor(int index, vec4 curColor) {
+ index -= uTDInstanceIDOffset;
+ vec4 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceColor, coord);
+ v[0] = samp[0];
+ v[1] = samp[1];
+ v[2] = samp[2];
+ v[3] = 1.0;
+ curColor[0] = v[0];
+;
+ curColor[1] = v[1];
+;
+ curColor[2] = v[2];
+;
+ return curColor;
+}
diff --git a/Test/vk.relaxed.stagelink.0.1.vert b/Test/vk.relaxed.stagelink.0.1.vert
new file mode 100755
index 0000000..3c5de98
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.0.1.vert
@@ -0,0 +1,242 @@
+#version 460
+layout(location = 0) in vec3 P;
+layout(location = 1) in vec3 N;
+layout(location = 2) in vec4 Cd;
+layout(location = 3) in vec3 uv[8];
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDLight
+{
+ vec4 position;
+ vec3 direction;
+ vec3 diffuse;
+ vec4 nearFar;
+ vec4 lightSize;
+ vec4 misc;
+ vec4 coneLookupScaleBias;
+ vec4 attenScaleBiasRoll;
+ mat4 shadowMapMatrix;
+ mat4 shadowMapCamMatrix;
+ vec4 shadowMapRes;
+ mat4 projMapMatrix;
+};
+struct TDEnvLight
+{
+ vec3 color;
+ mat3 rotate;
+};
+layout(std140) uniform TDLightBlock
+{
+ TDLight uTDLights[TD_LIGHTS_ARRAY_SIZE];
+};
+layout(std140) uniform TDEnvLightBlock
+{
+ TDEnvLight uTDEnvLights[TD_ENV_LIGHTS_ARRAY_SIZE];
+};
+layout(std430) readonly restrict buffer TDEnvLightBuffer
+{
+ vec3 shCoeffs[9];
+} uTDEnvLightBuffers[TD_ENV_LIGHTS_ARRAY_SIZE];
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+layout (rgba8) uniform image2D mTD2DImageOutputs[1];
+layout (rgba8) uniform image2DArray mTD2DArrayImageOutputs[1];
+layout (rgba8) uniform image3D mTD3DImageOutputs[1];
+layout (rgba8) uniform imageCube mTDCubeImageOutputs[1];
+
+mat4 TDInstanceMat(int instanceID);
+mat3 TDInstanceMat3(int instanceID);
+vec3 TDInstanceTranslate(int instanceID);
+bool TDInstanceActive(int instanceID);
+mat3 TDInstanceRotateMat(int instanceID);
+vec3 TDInstanceScale(int instanceID);
+vec3 TDInstanceTexCoord(int instanceID, vec3 t);
+vec4 TDInstanceColor(int instanceID, vec4 curColor);
+vec4 TDInstanceCustomAttrib0(int instanceID);
+vec4 TDInstanceCustomAttrib1(int instanceID);
+vec4 TDInstanceCustomAttrib2(int instanceID);
+vec4 TDInstanceCustomAttrib3(int instanceID);
+vec4 TDInstanceCustomAttrib4(int instanceID);
+vec4 TDInstanceCustomAttrib5(int instanceID);
+vec4 TDInstanceCustomAttrib6(int instanceID);
+vec4 TDInstanceCustomAttrib7(int instanceID);
+vec4 TDInstanceCustomAttrib8(int instanceID);
+vec4 TDInstanceCustomAttrib9(int instanceID);
+vec4 TDInstanceCustomAttrib10(int instanceID);
+vec4 TDInstanceCustomAttrib11(int instanceID);
+uint TDInstanceTextureIndex(int instanceIndex);
+vec4 TDInstanceTexture(uint texIndex, vec3 uv);
+vec4 TDInstanceTexture(uint texIndex, vec2 uv);
+
+vec4 TDDeform(vec4 pos);
+vec4 TDDeform(vec3 pos);
+vec4 TDDeform(int instanceID, vec3 pos);
+vec3 TDDeformVec(vec3 v);
+vec3 TDDeformVec(int instanceID, vec3 v);
+vec3 TDDeformNorm(vec3 v);
+vec3 TDDeformNorm(int instanceID, vec3 v);
+vec4 TDSkinnedDeform(vec4 pos);
+vec3 TDSkinnedDeformVec(vec3 vec);
+vec3 TDSkinnedDeformNorm(vec3 vec);
+vec4 TDInstanceDeform(vec4 pos);
+vec3 TDInstanceDeformVec(vec3 vec);
+vec3 TDInstanceDeformNorm(vec3 vec);
+vec4 TDInstanceDeform(int instanceID, vec4 pos);
+vec3 TDInstanceDeformVec(int instanceID, vec3 vec);
+vec3 TDInstanceDeformNorm(int instanceID, vec3 vec);
+vec3 TDFastDeformTangent(vec3 oldNorm, vec4 oldTangent, vec3 deformedNorm);
+mat4 TDBoneMat(int boneIndex);
+mat4 TDInstanceMat();
+mat3 TDInstanceMat3();
+vec3 TDInstanceTranslate();
+bool TDInstanceActive();
+mat3 TDInstanceRotateMat();
+vec3 TDInstanceScale();
+vec3 TDInstanceTexCoord(vec3 t);
+vec4 TDInstanceColor(vec4 curColor);
+vec4 TDPointColor();
+#ifdef TD_PICKING_ACTIVE
+out TDPickVertex {
+ vec3 sopSpacePosition;
+ vec3 camSpacePosition;
+ vec3 worldSpacePosition;
+ vec3 sopSpaceNormal;
+ vec3 camSpaceNormal;
+ vec3 worldSpaceNormal;
+ vec3 uv[1];
+ flat int pickId;
+ flat int instanceId;
+ vec4 color;
+} oTDPickVert;
+#define vTDPickVert oTDPickVert
+#endif
+vec4 iTDCamToProj(vec4 v, vec3 uv, int cameraIndex, bool applyPickMod)
+{
+ if (!TDInstanceActive())
+ return vec4(2, 2, 2, 0);
+ v = uTDMats[0].proj * v;
+ return v;
+}
+vec4 iTDWorldToProj(vec4 v, vec3 uv, int cameraIndex, bool applyPickMod) {
+ if (!TDInstanceActive())
+ return vec4(2, 2, 2, 0);
+ v = uTDMats[0].camProj * v;
+ return v;
+}
+vec4 TDDeform(vec4 pos);
+vec4 TDDeform(vec3 pos);
+vec4 TDInstanceColor(vec4 curColor);
+vec3 TDInstanceTexCoord(vec3 t);
+int TDInstanceID() {
+ return gl_InstanceID + uTDInstanceIDOffset;
+}
+int TDCameraIndex() {
+ return 0;
+}
+vec3 TDUVUnwrapCoord() {
+ return uv[0];
+}
+#ifdef TD_PICKING_ACTIVE
+uniform int uTDPickId;
+#endif
+int TDPickID() {
+#ifdef TD_PICKING_ACTIVE
+ return uTDPickId;
+#else
+ return 0;
+#endif
+}
+float iTDConvertPickId(int id) {
+ id |= 1073741824;
+ return intBitsToFloat(id);
+}
+
+ void TDWritePickingValues() {
+#ifdef TD_PICKING_ACTIVE
+ vec4 worldPos = TDDeform(P);
+ vec4 camPos = uTDMats[TDCameraIndex()].cam * worldPos;
+ oTDPickVert.pickId = TDPickID();
+#endif
+}
+vec4 TDWorldToProj(vec4 v, vec3 uv)
+{
+ return iTDWorldToProj(v, uv, TDCameraIndex(), true);
+}
+vec4 TDWorldToProj(vec3 v, vec3 uv)
+{
+ return TDWorldToProj(vec4(v, 1.0), uv);
+}
+vec4 TDWorldToProj(vec4 v)
+{
+ return TDWorldToProj(v, vec3(0.0));
+}
+vec4 TDWorldToProj(vec3 v)
+{
+ return TDWorldToProj(vec4(v, 1.0));
+}
+vec4 TDPointColor() {
+ return Cd;
+}
diff --git a/Test/vk.relaxed.stagelink.0.2.frag b/Test/vk.relaxed.stagelink.0.2.frag
new file mode 100755
index 0000000..27bd540
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.0.2.frag
@@ -0,0 +1,9 @@
+#version 460
+vec4 TDOutputSwizzle(vec4 c)
+{
+ return c.rgba;
+}
+uvec4 TDOutputSwizzle(uvec4 c)
+{
+ return c.rgba;
+}
diff --git a/Test/vk.relaxed.stagelink.0.2.vert b/Test/vk.relaxed.stagelink.0.2.vert
new file mode 100755
index 0000000..69c0b21
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.0.2.vert
@@ -0,0 +1,320 @@
+#version 460
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDLight
+{
+ vec4 position;
+ vec3 direction;
+ vec3 diffuse;
+ vec4 nearFar;
+ vec4 lightSize;
+ vec4 misc;
+ vec4 coneLookupScaleBias;
+ vec4 attenScaleBiasRoll;
+ mat4 shadowMapMatrix;
+ mat4 shadowMapCamMatrix;
+ vec4 shadowMapRes;
+ mat4 projMapMatrix;
+};
+struct TDEnvLight
+{
+ vec3 color;
+ mat3 rotate;
+};
+layout(std140) uniform TDLightBlock
+{
+ TDLight uTDLights[TD_LIGHTS_ARRAY_SIZE];
+};
+layout(std140) uniform TDEnvLightBlock
+{
+ TDEnvLight uTDEnvLights[TD_ENV_LIGHTS_ARRAY_SIZE];
+};
+layout(std430) readonly restrict buffer TDEnvLightBuffer
+{
+ vec3 shCoeffs[9];
+} uTDEnvLightBuffers[TD_ENV_LIGHTS_ARRAY_SIZE];
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+
+layout(binding = 15) uniform samplerBuffer sTDInstanceT;
+layout(binding = 16) uniform samplerBuffer sTDInstanceTexCoord;
+layout(binding = 17) uniform samplerBuffer sTDInstanceColor;
+#define TD_NUM_BONES 0
+vec4 TDWorldToProj(vec4 v);
+vec4 TDWorldToProj(vec3 v);
+vec4 TDWorldToProj(vec4 v, vec3 uv);
+vec4 TDWorldToProj(vec3 v, vec3 uv);
+int TDPickID();
+int TDInstanceID();
+int TDCameraIndex();
+vec3 TDUVUnwrapCoord();
+vec3 TDInstanceTexCoord(int index, vec3 t) {
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceTexCoord, coord);
+ v[0] = t.s;
+ v[1] = t.t;
+ v[2] = samp[0];
+ t.stp = v.stp;
+ return t;
+}
+bool TDInstanceActive(int index) {
+ index -= uTDInstanceIDOffset;
+ float v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v = samp[0];
+ return v != 0.0;
+}
+vec3 iTDInstanceTranslate(int index, out bool instanceActive) {
+ int origIndex = index;
+ index -= uTDInstanceIDOffset;
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v[0] = samp[1];
+ v[1] = samp[2];
+ v[2] = samp[3];
+ instanceActive = samp[0] != 0.0;
+ return v;
+}
+vec3 TDInstanceTranslate(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v[0] = samp[1];
+ v[1] = samp[2];
+ v[2] = samp[3];
+ return v;
+}
+mat3 TDInstanceRotateMat(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 0.0);
+ mat3 m = mat3(1.0);
+{
+ mat3 r;
+}
+ return m;
+}
+vec3 TDInstanceScale(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(1.0, 1.0, 1.0);
+ return v;
+}
+vec3 TDInstancePivot(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 0.0);
+ return v;
+}
+vec3 TDInstanceRotTo(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 1.0);
+ return v;
+}
+vec3 TDInstanceRotUp(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 1.0, 0.0);
+ return v;
+}
+mat4 TDInstanceMat(int id) {
+ bool instanceActive = true;
+ vec3 t = iTDInstanceTranslate(id, instanceActive);
+ if (!instanceActive)
+ {
+ return mat4(0.0);
+ }
+ mat4 m = mat4(1.0);
+ {
+ vec3 tt = t;
+ m[3][0] += m[0][0]*tt.x;
+ m[3][1] += m[0][1]*tt.x;
+ m[3][2] += m[0][2]*tt.x;
+ m[3][3] += m[0][3]*tt.x;
+ m[3][0] += m[1][0]*tt.y;
+ m[3][1] += m[1][1]*tt.y;
+ m[3][2] += m[1][2]*tt.y;
+ m[3][3] += m[1][3]*tt.y;
+ m[3][0] += m[2][0]*tt.z;
+ m[3][1] += m[2][1]*tt.z;
+ m[3][2] += m[2][2]*tt.z;
+ m[3][3] += m[2][3]*tt.z;
+ }
+ return m;
+}
+mat3 TDInstanceMat3(int id) {
+ mat3 m = mat3(1.0);
+ return m;
+}
+mat3 TDInstanceMat3ForNorm(int id) {
+ mat3 m = TDInstanceMat3(id);
+ return m;
+}
+vec4 TDInstanceColor(int index, vec4 curColor) {
+ index -= uTDInstanceIDOffset;
+ vec4 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceColor, coord);
+ v[0] = samp[0];
+ v[1] = samp[1];
+ v[2] = samp[2];
+ v[3] = 1.0;
+ curColor[0] = v[0];
+;
+ curColor[1] = v[1];
+;
+ curColor[2] = v[2];
+;
+ return curColor;
+}
+vec4 TDInstanceDeform(int id, vec4 pos) {
+ pos = TDInstanceMat(id) * pos;
+ return uTDMats[TDCameraIndex()].world * pos;
+}
+
+vec3 TDInstanceDeformVec(int id, vec3 vec)
+{
+ mat3 m = TDInstanceMat3(id);
+ return mat3(uTDMats[TDCameraIndex()].world) * (m * vec);
+}
+vec3 TDInstanceDeformNorm(int id, vec3 vec)
+{
+ mat3 m = TDInstanceMat3ForNorm(id);
+ return mat3(uTDMats[TDCameraIndex()].worldForNormals) * (m * vec);
+}
+vec4 TDInstanceDeform(vec4 pos) {
+ return TDInstanceDeform(TDInstanceID(), pos);
+}
+vec3 TDInstanceDeformVec(vec3 vec) {
+ return TDInstanceDeformVec(TDInstanceID(), vec);
+}
+vec3 TDInstanceDeformNorm(vec3 vec) {
+ return TDInstanceDeformNorm(TDInstanceID(), vec);
+}
+bool TDInstanceActive() { return TDInstanceActive(TDInstanceID()); }
+vec3 TDInstanceTranslate() { return TDInstanceTranslate(TDInstanceID()); }
+mat3 TDInstanceRotateMat() { return TDInstanceRotateMat(TDInstanceID()); }
+vec3 TDInstanceScale() { return TDInstanceScale(TDInstanceID()); }
+mat4 TDInstanceMat() { return TDInstanceMat(TDInstanceID());
+ }
+mat3 TDInstanceMat3() { return TDInstanceMat3(TDInstanceID());
+}
+vec3 TDInstanceTexCoord(vec3 t) {
+ return TDInstanceTexCoord(TDInstanceID(), t);
+}
+vec4 TDInstanceColor(vec4 curColor) {
+ return TDInstanceColor(TDInstanceID(), curColor);
+}
+vec4 TDSkinnedDeform(vec4 pos) { return pos; }
+
+vec3 TDSkinnedDeformVec(vec3 vec) { return vec; }
+
+vec3 TDFastDeformTangent(vec3 oldNorm, vec4 oldTangent, vec3 deformedNorm)
+{ return oldTangent.xyz; }
+mat4 TDBoneMat(int index) {
+ return mat4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);
+}
+vec4 TDDeform(vec4 pos) {
+ pos = TDSkinnedDeform(pos);
+ pos = TDInstanceDeform(pos);
+ return pos;
+}
+
+vec4 TDDeform(int instanceID, vec3 p) {
+ vec4 pos = vec4(p, 1.0);
+ pos = TDSkinnedDeform(pos);
+ pos = TDInstanceDeform(instanceID, pos);
+ return pos;
+}
+
+vec4 TDDeform(vec3 pos) {
+ return TDDeform(TDInstanceID(), pos);
+}
+
+vec3 TDDeformVec(int instanceID, vec3 vec) {
+ vec = TDSkinnedDeformVec(vec);
+ vec = TDInstanceDeformVec(instanceID, vec);
+ return vec;
+}
+
+vec3 TDDeformVec(vec3 vec) {
+ return TDDeformVec(TDInstanceID(), vec);
+}
+
+vec3 TDDeformNorm(int instanceID, vec3 vec) {
+ vec = TDSkinnedDeformVec(vec);
+ vec = TDInstanceDeformNorm(instanceID, vec);
+ return vec;
+}
+
+vec3 TDDeformNorm(vec3 vec) {
+ return TDDeformNorm(TDInstanceID(), vec);
+}
+
+vec3 TDSkinnedDeformNorm(vec3 vec) {
+ vec = TDSkinnedDeformVec(vec);
+ return vec;
+}
diff --git a/Test/vulkan.frag b/Test/vulkan.frag
index 25bfefe..6cf7ccf 100644
--- a/Test/vulkan.frag
+++ b/Test/vulkan.frag
@@ -46,6 +46,9 @@
layout(binding=2, push_constant) uniform pcbnd1 { // ERROR, can't have binding
int a;
} pcbnd1inst;
+layout(push_constant) uniform pcbnd2 { // ERROR, can't be array
+ float a;
+} pcbnd2inst[2];
layout(std430, push_constant) uniform pcb1 { int a; } pcb1inst;
layout(push_constant) uniform pcb2 {
int a;
diff --git a/Test/xfbUnsizedArray.error.tese b/Test/xfbUnsizedArray.error.tese
new file mode 100644
index 0000000..a59069b
--- /dev/null
+++ b/Test/xfbUnsizedArray.error.tese
@@ -0,0 +1,8 @@
+#version 430 core
+#extension GL_ARB_enhanced_layouts : require
+layout(isolines, point_mode) in;
+layout (xfb_offset = 0) out vec4 unsized[]; // error: unsized array
+
+void main()
+{
+}
diff --git a/build_info.h.tmpl b/build_info.h.tmpl
index 5b5e9e6..60cb5bb 100644
--- a/build_info.h.tmpl
+++ b/build_info.h.tmpl
@@ -40,23 +40,23 @@
#define GLSLANG_VERSION_FLAVOR "@flavor@"
#define GLSLANG_VERSION_GREATER_THAN(major, minor, patch) \
- (((major) > GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \
- (((minor) > GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \
- ((patch) > GLSLANG_VERSION_PATCH)))))
+ ((GLSLANG_VERSION_MAJOR) > (major) || ((major) == GLSLANG_VERSION_MAJOR && \
+ ((GLSLANG_VERSION_MINOR) > (minor) || ((minor) == GLSLANG_VERSION_MINOR && \
+ (GLSLANG_VERSION_PATCH) > (patch)))))
#define GLSLANG_VERSION_GREATER_OR_EQUAL_TO(major, minor, patch) \
- (((major) > GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \
- (((minor) > GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \
- ((patch) >= GLSLANG_VERSION_PATCH)))))
+ ((GLSLANG_VERSION_MAJOR) > (major) || ((major) == GLSLANG_VERSION_MAJOR && \
+ ((GLSLANG_VERSION_MINOR) > (minor) || ((minor) == GLSLANG_VERSION_MINOR && \
+ (GLSLANG_VERSION_PATCH >= (patch))))))
#define GLSLANG_VERSION_LESS_THAN(major, minor, patch) \
- (((major) < GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \
- (((minor) < GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \
- ((patch) < GLSLANG_VERSION_PATCH)))))
+ ((GLSLANG_VERSION_MAJOR) < (major) || ((major) == GLSLANG_VERSION_MAJOR && \
+ ((GLSLANG_VERSION_MINOR) < (minor) || ((minor) == GLSLANG_VERSION_MINOR && \
+ (GLSLANG_VERSION_PATCH) < (patch)))))
#define GLSLANG_VERSION_LESS_OR_EQUAL_TO(major, minor, patch) \
- (((major) < GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \
- (((minor) < GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \
- ((patch) <= GLSLANG_VERSION_PATCH)))))
+ ((GLSLANG_VERSION_MAJOR) < (major) || ((major) == GLSLANG_VERSION_MAJOR && \
+ ((GLSLANG_VERSION_MINOR) < (minor) || ((minor) == GLSLANG_VERSION_MINOR && \
+ (GLSLANG_VERSION_PATCH <= (patch))))))
#endif // GLSLANG_BUILD_INFO
diff --git a/build_info.py b/build_info.py
index 7c1998f..06d613b 100755
--- a/build_info.py
+++ b/build_info.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# Copyright (c) 2020 Google Inc.
#
diff --git a/gen_extension_headers.py b/gen_extension_headers.py
old mode 100644
new mode 100755
index a787f9a..2838c96
--- a/gen_extension_headers.py
+++ b/gen_extension_headers.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# Copyright (c) 2020 Google Inc.
#
@@ -95,4 +95,4 @@
generate_main(glsl_files, output_file)
if __name__ == '__main__':
- main()
\ No newline at end of file
+ main()
diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp
index 4fdeff7..1bb4000 100644
--- a/glslang/CInterface/glslang_c_interface.cpp
+++ b/glslang/CInterface/glslang_c_interface.cpp
@@ -38,6 +38,7 @@
#include "glslang/Include/ResourceLimits.h"
#include "glslang/MachineIndependent/Versions.h"
+#include "glslang/MachineIndependent/localintermediate.h"
static_assert(int(GLSLANG_STAGE_COUNT) == EShLangCount, "");
static_assert(int(GLSLANG_STAGE_MASK_COUNT) == EShLanguageMaskCount, "");
@@ -191,10 +192,10 @@
return EShLangMiss;
case GLSLANG_STAGE_CALLABLE_NV:
return EShLangCallable;
- case GLSLANG_STAGE_TASK_NV:
- return EShLangTaskNV;
- case GLSLANG_STAGE_MESH_NV:
- return EShLangMeshNV;
+ case GLSLANG_STAGE_TASK:
+ return EShLangTask;
+ case GLSLANG_STAGE_MESH:
+ return EShLangMesh;
default:
break;
}
@@ -244,6 +245,8 @@
return glslang::EShTargetSpv_1_4;
case GLSLANG_TARGET_SPV_1_5:
return glslang::EShTargetSpv_1_5;
+ case GLSLANG_TARGET_SPV_1_6:
+ return glslang::EShTargetSpv_1_6;
default:
break;
}
@@ -271,6 +274,8 @@
return glslang::EShTargetVulkan_1_1;
case GLSLANG_TARGET_VULKAN_1_2:
return glslang::EShTargetVulkan_1_2;
+ case GLSLANG_TARGET_VULKAN_1_3:
+ return glslang::EShTargetVulkan_1_3;
case GLSLANG_TARGET_OPENGL_450:
return glslang::EShTargetOpenGL_450;
default:
@@ -346,6 +351,42 @@
return shader;
}
+GLSLANG_EXPORT void glslang_shader_set_preamble(glslang_shader_t* shader, const char* s) {
+ shader->shader->setPreamble(s);
+}
+
+GLSLANG_EXPORT void glslang_shader_shift_binding(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base)
+{
+ const glslang::TResourceType res_type = glslang::TResourceType(res);
+ shader->shader->setShiftBinding(res_type, base);
+}
+
+GLSLANG_EXPORT void glslang_shader_shift_binding_for_set(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base, unsigned int set)
+{
+ const glslang::TResourceType res_type = glslang::TResourceType(res);
+ shader->shader->setShiftBindingForSet(res_type, base, set);
+}
+
+GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int options)
+{
+ if (options & GLSLANG_SHADER_AUTO_MAP_BINDINGS) {
+ shader->shader->setAutoMapBindings(true);
+ }
+
+ if (options & GLSLANG_SHADER_AUTO_MAP_LOCATIONS) {
+ shader->shader->setAutoMapLocations(true);
+ }
+
+ if (options & GLSLANG_SHADER_VULKAN_RULES_RELAXED) {
+ shader->shader->setEnvInputVulkanRulesRelaxed();
+ }
+}
+
+GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, int version)
+{
+ shader->shader->setOverrideVersion(version);
+}
+
GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader)
{
return shader->preprocessedGLSL.c_str();
@@ -419,6 +460,21 @@
return (int)program->program->link((EShMessages)messages);
}
+GLSLANG_EXPORT void glslang_program_add_source_text(glslang_program_t* program, glslang_stage_t stage, const char* text, size_t len) {
+ glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage));
+ intermediate->addSourceText(text, len);
+}
+
+GLSLANG_EXPORT void glslang_program_set_source_file(glslang_program_t* program, glslang_stage_t stage, const char* file) {
+ glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage));
+ intermediate->setSourceFile(file);
+}
+
+GLSLANG_EXPORT int glslang_program_map_io(glslang_program_t* program)
+{
+ return (int)program->program->mapIO();
+}
+
GLSLANG_EXPORT const char* glslang_program_get_info_log(glslang_program_t* program)
{
return program->program->getInfoLog();
diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt
index d0394c8..72e82b4 100644
--- a/glslang/CMakeLists.txt
+++ b/glslang/CMakeLists.txt
@@ -200,19 +200,29 @@
# install
################################################################################
if(ENABLE_GLSLANG_INSTALL)
- if(BUILD_SHARED_LIBS)
- install(TARGETS glslang
- EXPORT glslangTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
- else()
- install(TARGETS glslang MachineIndependent GenericCodeGen
- EXPORT glslangTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- endif()
+ install(TARGETS glslang EXPORT glslang-targets)
+ if(NOT BUILD_SHARED_LIBS)
+ install(TARGETS MachineIndependent EXPORT glslang-targets)
+ install(TARGETS GenericCodeGen EXPORT glslang-targets)
- install(EXPORT glslangTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+ # Backward compatibility
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangTargets.cmake" "
+ message(WARNING \"Using `glslangTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
+
+ if (NOT TARGET glslang::glslang)
+ include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\")
+ endif()
+
+ if(${BUILD_SHARED_LIBS})
+ add_library(glslang ALIAS glslang::glslang)
+ else()
+ add_library(glslang ALIAS glslang::glslang)
+ add_library(MachineIndependent ALIAS glslang::MachineIndependent)
+ add_library(GenericCodeGen ALIAS glslang::GenericCodeGen)
+ endif()
+ ")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+ endif()
set(ALL_HEADERS
${GLSLANG_HEADERS}
diff --git a/glslang/HLSL/hlslGrammar.cpp b/glslang/HLSL/hlslGrammar.cpp
index bd4af92..a01f240 100644
--- a/glslang/HLSL/hlslGrammar.cpp
+++ b/glslang/HLSL/hlslGrammar.cpp
@@ -3428,7 +3428,7 @@
}
}
if (compoundStatement)
- compoundStatement->setOperator(EOpSequence);
+ compoundStatement->setOperator(intermediate.getDebugInfo() ? EOpScope : EOpSequence);
retStatement = compoundStatement;
diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp
index 39b3eca..62e46a0 100644
--- a/glslang/HLSL/hlslParseHelper.cpp
+++ b/glslang/HLSL/hlslParseHelper.cpp
@@ -1754,6 +1754,18 @@
intermediate.setLocalSize(lid, sequence[lid]->getAsConstantUnion()->getConstArray()[0].getIConst());
break;
}
+ case EatInstance:
+ {
+ int invocations;
+
+ if (!it->getInt(invocations)) {
+ error(loc, "invalid instance", "", "");
+ } else {
+ if (!intermediate.setInvocations(invocations))
+ error(loc, "cannot change previously set instance attribute", "", "");
+ }
+ break;
+ }
case EatMaxVertexCount:
{
int maxVertexCount;
@@ -2167,8 +2179,21 @@
TIntermSymbol* arg = intermediate.addSymbol(*argVars.back());
handleFunctionArgument(&callee, callingArgs, arg);
if (param.type->getQualifier().isParamInput()) {
- intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg,
- intermediate.addSymbol(**inputIt)));
+ TIntermTyped* input = intermediate.addSymbol(**inputIt);
+ if (input->getType().getQualifier().builtIn == EbvFragCoord && intermediate.getDxPositionW()) {
+ // Replace FragCoord W with reciprocal
+ auto pos_xyz = handleDotDereference(loc, input, "xyz");
+ auto pos_w = handleDotDereference(loc, input, "w");
+ auto one = intermediate.addConstantUnion(1.0, EbtFloat, loc);
+ auto recip_w = intermediate.addBinaryMath(EOpDiv, one, pos_w, loc);
+ TIntermAggregate* dst = new TIntermAggregate(EOpConstructVec4);
+ dst->getSequence().push_back(pos_xyz);
+ dst->getSequence().push_back(recip_w);
+ dst->setType(TType(EbtFloat, EvqTemporary, 4));
+ dst->setLoc(loc);
+ input = dst;
+ }
+ intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg, input));
inputIt++;
}
if (param.type->getQualifier().storage == EvqUniform) {
@@ -2417,6 +2442,11 @@
clearUniformInputOutput(function[i].type->getQualifier());
}
+TIntermNode* HlslParseContext::handleDeclare(const TSourceLoc& loc, TIntermTyped* var)
+{
+ return intermediate.addUnaryNode(EOpDeclare, var, loc, TType(EbtVoid));
+}
+
// Handle function returns, including type conversions to the function return type
// if necessary.
TIntermNode* HlslParseContext::handleReturnValue(const TSourceLoc& loc, TIntermTyped* value)
@@ -2452,6 +2482,62 @@
arguments = newArg;
}
+// FragCoord may require special loading: we can optionally reciprocate W.
+TIntermTyped* HlslParseContext::assignFromFragCoord(const TSourceLoc& loc, TOperator op,
+ TIntermTyped* left, TIntermTyped* right)
+{
+ // If we are not asked for reciprocal W, use a plain old assign.
+ if (!intermediate.getDxPositionW())
+ return intermediate.addAssign(op, left, right, loc);
+
+ // If we get here, we should reciprocate W.
+ TIntermAggregate* assignList = nullptr;
+
+ // If this is a complex rvalue, we don't want to dereference it many times. Create a temporary.
+ TVariable* rhsTempVar = nullptr;
+ rhsTempVar = makeInternalVariable("@fragcoord", right->getType());
+ rhsTempVar->getWritableType().getQualifier().makeTemporary();
+
+ {
+ TIntermTyped* rhsTempSym = intermediate.addSymbol(*rhsTempVar, loc);
+ assignList = intermediate.growAggregate(assignList,
+ intermediate.addAssign(EOpAssign, rhsTempSym, right, loc), loc);
+ }
+
+ // tmp.w = 1.0 / tmp.w
+ {
+ const int W = 3;
+
+ TIntermTyped* tempSymL = intermediate.addSymbol(*rhsTempVar, loc);
+ TIntermTyped* tempSymR = intermediate.addSymbol(*rhsTempVar, loc);
+ TIntermTyped* index = intermediate.addConstantUnion(W, loc);
+
+ TIntermTyped* lhsElement = intermediate.addIndex(EOpIndexDirect, tempSymL, index, loc);
+ TIntermTyped* rhsElement = intermediate.addIndex(EOpIndexDirect, tempSymR, index, loc);
+
+ const TType derefType(right->getType(), 0);
+
+ lhsElement->setType(derefType);
+ rhsElement->setType(derefType);
+
+ auto one = intermediate.addConstantUnion(1.0, EbtFloat, loc);
+ auto recip_w = intermediate.addBinaryMath(EOpDiv, one, rhsElement, loc);
+
+ assignList = intermediate.growAggregate(assignList, intermediate.addAssign(EOpAssign, lhsElement, recip_w, loc));
+ }
+
+ // Assign the rhs temp (now with W reciprocal) to the final output
+ {
+ TIntermTyped* rhsTempSym = intermediate.addSymbol(*rhsTempVar, loc);
+ assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, left, rhsTempSym, loc));
+ }
+
+ assert(assignList != nullptr);
+ assignList->setOperator(EOpSequence);
+
+ return assignList;
+}
+
// Position may require special handling: we can optionally invert Y.
// See: https://github.com/KhronosGroup/glslang/issues/1173
// https://github.com/KhronosGroup/glslang/issues/494
@@ -3071,6 +3157,10 @@
subSplitLeft, subSplitRight);
assignList = intermediate.growAggregate(assignList, clipCullAssign, loc);
+ } else if (subSplitRight->getType().getQualifier().builtIn == EbvFragCoord) {
+ // FragCoord can require special handling: see comment above assignFromFragCoord
+ TIntermTyped* fragCoordAssign = assignFromFragCoord(loc, op, subSplitLeft, subSplitRight);
+ assignList = intermediate.growAggregate(assignList, fragCoordAssign, loc);
} else if (assignsClipPos(subSplitLeft)) {
// Position can require special handling: see comment above assignPosition
TIntermTyped* positionAssign = assignPosition(loc, op, subSplitLeft, subSplitRight);
@@ -5357,7 +5447,7 @@
}
case EOpWavePrefixCountBits:
{
- // Mapped to subgroupBallotInclusiveBitCount(subgroupBallot())
+ // Mapped to subgroupBallotExclusiveBitCount(subgroupBallot())
// builtin
// uvec4 type.
@@ -5371,7 +5461,7 @@
TType uintType(EbtUint, EvqTemporary);
node = intermediate.addBuiltInFunctionCall(loc,
- EOpSubgroupBallotInclusiveBitCount, true, res, uintType);
+ EOpSubgroupBallotExclusiveBitCount, true, res, uintType);
break;
}
@@ -6935,6 +7025,9 @@
if (lhs.isStruct() != rhs.isStruct())
return false;
+ if (lhs.getQualifier().builtIn != rhs.getQualifier().builtIn)
+ return false;
+
if (lhs.isStruct() && rhs.isStruct()) {
if (lhs.getStruct()->size() != rhs.getStruct()->size())
return false;
@@ -7947,11 +8040,16 @@
if (flattenVar)
flatten(*symbol->getAsVariable(), symbolTable.atGlobalLevel());
- if (initializer == nullptr)
- return nullptr;
+ TVariable* variable = symbol->getAsVariable();
+
+ if (initializer == nullptr) {
+ if (intermediate.getDebugInfo())
+ return executeDeclaration(loc, variable);
+ else
+ return nullptr;
+ }
// Deal with initializer
- TVariable* variable = symbol->getAsVariable();
if (variable == nullptr) {
error(loc, "initializer requires a variable, not a member", identifier.c_str(), "");
return nullptr;
@@ -8018,6 +8116,24 @@
return nullptr;
}
+// Return a declaration of a temporary variable
+//
+// This is used to force a variable to be declared in the correct scope
+// when debug information is being generated.
+
+TIntermNode* HlslParseContext::executeDeclaration(const TSourceLoc& loc, TVariable* variable)
+{
+ //
+ // Identifier must be of type temporary.
+ //
+ TStorageQualifier qualifier = variable->getType().getQualifier().storage;
+ if (qualifier != EvqTemporary)
+ return nullptr;
+
+ TIntermSymbol* intermSymbol = intermediate.addSymbol(*variable, loc);
+ return handleDeclare(loc, intermSymbol);
+}
+
//
// Handle all types of initializers from the grammar.
//
diff --git a/glslang/HLSL/hlslParseHelper.h b/glslang/HLSL/hlslParseHelper.h
index 2d7165c..96d85f4 100644
--- a/glslang/HLSL/hlslParseHelper.h
+++ b/glslang/HLSL/hlslParseHelper.h
@@ -87,6 +87,7 @@
void handleFunctionBody(const TSourceLoc&, TFunction&, TIntermNode* functionBody, TIntermNode*& node);
void remapEntryPointIO(TFunction& function, TVariable*& returnValue, TVector<TVariable*>& inputs, TVector<TVariable*>& outputs);
void remapNonEntryPointIO(TFunction& function);
+ TIntermNode* handleDeclare(const TSourceLoc&, TIntermTyped*);
TIntermNode* handleReturnValue(const TSourceLoc&, TIntermTyped*);
void handleFunctionArgument(TFunction*, TIntermTyped*& arguments, TIntermTyped* newArg);
TIntermTyped* handleAssign(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right);
@@ -94,6 +95,7 @@
TIntermTyped* handleFunctionCall(const TSourceLoc&, TFunction*, TIntermTyped*);
TIntermAggregate* assignClipCullDistance(const TSourceLoc&, TOperator, int semanticId, TIntermTyped* left, TIntermTyped* right);
TIntermTyped* assignPosition(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right);
+ TIntermTyped* assignFromFragCoord(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right);
void decomposeIntrinsic(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
void decomposeSampleMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
void decomposeStructBufferMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
@@ -242,6 +244,7 @@
TIntermSymbol* makeInternalVariableNode(const TSourceLoc&, const char* name, const TType&) const;
TVariable* declareNonArray(const TSourceLoc&, const TString& identifier, const TType&, bool track);
void declareArray(const TSourceLoc&, const TString& identifier, const TType&, TSymbol*&, bool track);
+ TIntermNode* executeDeclaration(const TSourceLoc&, TVariable* variable);
TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable);
TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer, TIntermTyped* scalarInit);
bool isScalarConstructor(const TIntermNode*);
diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h
index c8203c2..156d98b 100644
--- a/glslang/Include/BaseTypes.h
+++ b/glslang/Include/BaseTypes.h
@@ -105,6 +105,8 @@
EvqCallableData,
EvqCallableDataIn,
+ EvqtaskPayloadSharedEXT,
+
// parameters
EvqIn, // also, for 'in' in the grammar before we know if it's a pipeline input or an 'in' parameter
EvqOut, // also, for 'out' in the grammar before we know if it's a pipeline output or an 'out' parameter
@@ -128,6 +130,7 @@
// built-ins written by fragment shader
EvqFragColor,
EvqFragDepth,
+ EvqFragStencil,
// end of list
EvqLast
@@ -263,6 +266,7 @@
EbvObjectRayDirection,
EbvRayTmin,
EbvRayTmax,
+ EbvCullMask,
EbvHitT,
EbvHitKind,
EbvObjectToWorld,
@@ -274,6 +278,8 @@
// barycentrics
EbvBaryCoordNV,
EbvBaryCoordNoPerspNV,
+ EbvBaryCoordEXT,
+ EbvBaryCoordNoPerspEXT,
// mesh shaders
EbvTaskCountNV,
EbvPrimitiveCountNV,
@@ -283,6 +289,11 @@
EbvLayerPerViewNV,
EbvMeshViewCountNV,
EbvMeshViewIndicesNV,
+ //GL_EXT_mesh_shader
+ EbvPrimitivePointIndicesEXT,
+ EbvPrimitiveLineIndicesEXT,
+ EbvPrimitiveTriangleIndicesEXT,
+ EbvCullPrimitiveEXT,
// sm builtins
EbvWarpsPerSM,
@@ -350,11 +361,13 @@
case EvqPointCoord: return "gl_PointCoord"; break;
case EvqFragColor: return "fragColor"; break;
case EvqFragDepth: return "gl_FragDepth"; break;
+ case EvqFragStencil: return "gl_FragStencilRefARB"; 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;
+ case EvqtaskPayloadSharedEXT: return "taskPayloadSharedEXT"; break;
default: return "unknown qualifier";
}
}
@@ -478,8 +491,10 @@
case EbvWorldToObject: return "WorldToObjectNV";
case EbvCurrentRayTimeNV: return "CurrentRayTimeNV";
- case EbvBaryCoordNV: return "BaryCoordNV";
- case EbvBaryCoordNoPerspNV: return "BaryCoordNoPerspNV";
+ case EbvBaryCoordEXT:
+ case EbvBaryCoordNV: return "BaryCoordKHR";
+ case EbvBaryCoordNoPerspEXT:
+ case EbvBaryCoordNoPerspNV: return "BaryCoordNoPerspKHR";
case EbvTaskCountNV: return "TaskCountNV";
case EbvPrimitiveCountNV: return "PrimitiveCountNV";
@@ -489,6 +504,11 @@
case EbvLayerPerViewNV: return "LayerPerViewNV";
case EbvMeshViewCountNV: return "MeshViewCountNV";
case EbvMeshViewIndicesNV: return "MeshViewIndicesNV";
+ // GL_EXT_mesh_shader
+ case EbvPrimitivePointIndicesEXT: return "PrimitivePointIndicesEXT";
+ case EbvPrimitiveLineIndicesEXT: return "PrimitiveLineIndicesEXT";
+ case EbvPrimitiveTriangleIndicesEXT: return "PrimitiveTriangleIndicesEXT";
+ case EbvCullPrimitiveEXT: return "CullPrimitiveEXT";
case EbvWarpsPerSM: return "WarpsPerSMNV";
case EbvSMCount: return "SMCountNV";
diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h
index e7b5e07..a5b41cb 100644
--- a/glslang/Include/Common.h
+++ b/glslang/Include/Common.h
@@ -39,6 +39,11 @@
#include <algorithm>
#include <cassert>
+#ifdef _MSC_VER
+#include <cfloat>
+#else
+#include <cmath>
+#endif
#include <cstdio>
#include <cstdlib>
#include <list>
@@ -61,7 +66,7 @@
}
#endif
-#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) || MINGW_HAS_SECURE_API
+#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) || (defined(MINGW_HAS_SECURE_API) && MINGW_HAS_SECURE_API)
#include <basetsd.h>
#ifndef snprintf
#define snprintf sprintf_s
@@ -213,7 +218,7 @@
//
// Create a TString object from an integer.
//
-#if defined _MSC_VER || MINGW_HAS_SECURE_API
+#if defined(_MSC_VER) || (defined(MINGW_HAS_SECURE_API) && MINGW_HAS_SECURE_API)
inline const TString String(const int i, const int base = 10)
{
char text[16]; // 32 bit ints are at most 10 digits in base 10
@@ -302,6 +307,34 @@
return result;
}
+inline bool IsInfinity(double x) {
+#ifdef _MSC_VER
+ switch (_fpclass(x)) {
+ case _FPCLASS_NINF:
+ case _FPCLASS_PINF:
+ return true;
+ default:
+ return false;
+ }
+#else
+ return std::isinf(x);
+#endif
+}
+
+inline bool IsNan(double x) {
+#ifdef _MSC_VER
+ switch (_fpclass(x)) {
+ case _FPCLASS_SNAN:
+ case _FPCLASS_QNAN:
+ return true;
+ default:
+ return false;
+ }
+#else
+ return std::isnan(x);
+#endif
+}
+
} // end namespace glslang
#endif // _COMMON_INCLUDED_
diff --git a/glslang/Include/ResourceLimits.h b/glslang/Include/ResourceLimits.h
index b670cf1..b36c8d6 100644
--- a/glslang/Include/ResourceLimits.h
+++ b/glslang/Include/ResourceLimits.h
@@ -142,6 +142,15 @@
int maxTaskWorkGroupSizeY_NV;
int maxTaskWorkGroupSizeZ_NV;
int maxMeshViewCountNV;
+ int maxMeshOutputVerticesEXT;
+ int maxMeshOutputPrimitivesEXT;
+ int maxMeshWorkGroupSizeX_EXT;
+ int maxMeshWorkGroupSizeY_EXT;
+ int maxMeshWorkGroupSizeZ_EXT;
+ int maxTaskWorkGroupSizeX_EXT;
+ int maxTaskWorkGroupSizeY_EXT;
+ int maxTaskWorkGroupSizeZ_EXT;
+ int maxMeshViewCountEXT;
int maxDualSourceDrawBuffersEXT;
TLimits limits;
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index e87f258..a6f47e8 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -443,6 +443,18 @@
EldCount
};
+enum TLayoutStencil {
+ ElsNone,
+ ElsRefUnchangedFrontAMD,
+ ElsRefGreaterFrontAMD,
+ ElsRefLessFrontAMD,
+ ElsRefUnchangedBackAMD,
+ ElsRefGreaterBackAMD,
+ ElsRefLessBackAMD,
+
+ ElsCount
+};
+
enum TBlendEquationShift {
// No 'EBlendNone':
// These are used as bit-shift amounts. A mask of such shifts will have type 'int',
@@ -552,6 +564,7 @@
perViewNV = false;
perTaskNV = false;
#endif
+ pervertexEXT = false;
}
void clearMemory()
@@ -604,7 +617,8 @@
bool isNoContraction() const { return false; }
void setNoContraction() { }
bool isPervertexNV() const { return false; }
- void setNullInit() { }
+ bool isPervertexEXT() const { return pervertexEXT; }
+ void setNullInit() {}
bool isNullInit() const { return false; }
void setSpirvByReference() { }
bool isSpirvByReference() { return false; }
@@ -615,6 +629,7 @@
bool nopersp : 1;
bool explicitInterp : 1;
bool pervertexNV : 1;
+ bool pervertexEXT : 1;
bool perPrimitiveNV : 1;
bool perViewNV : 1;
bool perTaskNV : 1;
@@ -663,12 +678,13 @@
}
bool isAuxiliary() const
{
- return centroid || patch || sample || pervertexNV;
+ return centroid || patch || sample || pervertexNV || pervertexEXT;
}
bool isPatch() const { return patch; }
bool isNoContraction() const { return noContraction; }
void setNoContraction() { noContraction = true; }
bool isPervertexNV() const { return pervertexNV; }
+ bool isPervertexEXT() const { return pervertexEXT; }
void setNullInit() { nullInit = true; }
bool isNullInit() const { return nullInit; }
void setSpirvByReference() { spirvByReference = true; }
@@ -701,6 +717,7 @@
case EvqVaryingOut:
case EvqFragColor:
case EvqFragDepth:
+ case EvqFragStencil:
return true;
default:
return false;
@@ -768,6 +785,7 @@
case EvqVaryingOut:
case EvqFragColor:
case EvqFragDepth:
+ case EvqFragStencil:
return true;
default:
return false;
@@ -815,7 +833,7 @@
}
storage = EvqUniform;
break;
- case EbsStorageBuffer :
+ case EbsStorageBuffer :
storage = EvqBuffer;
break;
#ifndef GLSLANG_WEB
@@ -838,6 +856,7 @@
bool isPerPrimitive() const { return perPrimitiveNV; }
bool isPerView() const { return perViewNV; }
bool isTaskMemory() const { return perTaskNV; }
+ bool isTaskPayload() const { return storage == EvqtaskPayloadSharedEXT; }
bool isAnyPayload() const {
return storage == EvqPayload || storage == EvqPayloadIn;
}
@@ -856,8 +875,8 @@
case EShLangTessEvaluation:
return ! patch && isPipeInput();
case EShLangFragment:
- return pervertexNV && isPipeInput();
- case EShLangMeshNV:
+ return (pervertexNV || pervertexEXT) && isPipeInput();
+ case EShLangMesh:
return ! perTaskNV && isPipeOutput();
default:
@@ -1235,6 +1254,18 @@
default: return "none";
}
}
+ static const char* getLayoutStencilString(TLayoutStencil s)
+ {
+ switch (s) {
+ case ElsRefUnchangedFrontAMD: return "stencil_ref_unchanged_front_amd";
+ case ElsRefGreaterFrontAMD: return "stencil_ref_greater_front_amd";
+ case ElsRefLessFrontAMD: return "stencil_ref_less_front_amd";
+ case ElsRefUnchangedBackAMD: return "stencil_ref_unchanged_back_amd";
+ case ElsRefGreaterBackAMD: return "stencil_ref_greater_back_amd";
+ case ElsRefLessBackAMD: return "stencil_ref_less_back_amd";
+ default: return "none";
+ }
+ }
static const char* getBlendEquationString(TBlendEquationShift e)
{
switch (e) {
@@ -1332,7 +1363,9 @@
#ifndef GLSLANG_WEB
bool earlyFragmentTests; // fragment input
bool postDepthCoverage; // fragment input
+ bool earlyAndLateFragmentTestsAMD; //fragment input
TLayoutDepth layoutDepth;
+ TLayoutStencil layoutStencil;
bool blendEquation; // true if any blend equation was specified
int numViews; // multiview extenstions
TInterlockOrdering interlockOrdering;
@@ -1342,6 +1375,7 @@
int primitives; // mesh shader "max_primitives"DerivativeGroupLinear; // true if layout derivative_group_linearNV set
bool layoutPrimitiveCulling; // true if layout primitive_culling set
TLayoutDepth getDepth() const { return layoutDepth; }
+ TLayoutStencil getStencil() const { return layoutStencil; }
#else
TLayoutDepth getDepth() const { return EldNone; }
#endif
@@ -1367,8 +1401,10 @@
localSizeSpecId[2] = TQualifier::layoutNotSet;
#ifndef GLSLANG_WEB
earlyFragmentTests = false;
+ earlyAndLateFragmentTestsAMD = false;
postDepthCoverage = false;
layoutDepth = EldNone;
+ layoutStencil = ElsNone;
blendEquation = false;
numViews = TQualifier::layoutNotSet;
layoutOverrideCoverage = false;
@@ -1420,10 +1456,14 @@
#ifndef GLSLANG_WEB
if (src.earlyFragmentTests)
earlyFragmentTests = true;
+ if (src.earlyAndLateFragmentTestsAMD)
+ earlyAndLateFragmentTestsAMD = true;
if (src.postDepthCoverage)
postDepthCoverage = true;
if (src.layoutDepth)
layoutDepth = src.layoutDepth;
+ if (src.layoutStencil)
+ layoutStencil = src.layoutStencil;
if (src.blendEquation)
blendEquation = src.blendEquation;
if (src.numViews != TQualifier::layoutNotSet)
@@ -1865,10 +1905,12 @@
bool isAtomic() const { return false; }
bool isCoopMat() const { return false; }
bool isReference() const { return false; }
+ bool isSpirvType() const { return false; }
#else
bool isAtomic() const { return basicType == EbtAtomicUint; }
bool isCoopMat() const { return coopmat; }
bool isReference() const { return getBasicType() == EbtReference; }
+ bool isSpirvType() const { return getBasicType() == EbtSpirvType; }
#endif
// return true if this type contains any subtype which satisfies the given predicate.
@@ -2140,7 +2182,8 @@
const char* getPrecisionQualifierString() const { return ""; }
TString getBasicTypeString() const { return ""; }
#else
- TString getCompleteString() const
+ TString getCompleteString(bool syntactic = false, bool getQualifiers = true, bool getPrecision = true,
+ bool getType = true, TString name = "", TString structName = "") const
{
TString typeString;
@@ -2148,232 +2191,337 @@
const auto appendUint = [&](unsigned int u) { typeString.append(std::to_string(u).c_str()); };
const auto appendInt = [&](int i) { typeString.append(std::to_string(i).c_str()); };
- if (qualifier.hasSprivDecorate())
+ if (getQualifiers) {
+ if (qualifier.hasSprivDecorate())
appendStr(qualifier.getSpirvDecorateQualifierString().c_str());
- if (qualifier.hasLayout()) {
+ if (qualifier.hasLayout()) {
// To reduce noise, skip this if the only layout is an xfb_buffer
// with no triggering xfb_offset.
TQualifier noXfbBuffer = qualifier;
noXfbBuffer.layoutXfbBuffer = TQualifier::layoutXfbBufferEnd;
if (noXfbBuffer.hasLayout()) {
- appendStr("layout(");
- if (qualifier.hasAnyLocation()) {
- appendStr(" location=");
- appendUint(qualifier.layoutLocation);
- if (qualifier.hasComponent()) {
- appendStr(" component=");
- appendUint(qualifier.layoutComponent);
- }
- if (qualifier.hasIndex()) {
- appendStr(" index=");
- appendUint(qualifier.layoutIndex);
- }
+ appendStr("layout(");
+ if (qualifier.hasAnyLocation()) {
+ appendStr(" location=");
+ appendUint(qualifier.layoutLocation);
+ if (qualifier.hasComponent()) {
+ appendStr(" component=");
+ appendUint(qualifier.layoutComponent);
}
- if (qualifier.hasSet()) {
- appendStr(" set=");
- appendUint(qualifier.layoutSet);
+ if (qualifier.hasIndex()) {
+ appendStr(" index=");
+ appendUint(qualifier.layoutIndex);
}
- if (qualifier.hasBinding()) {
- appendStr(" binding=");
- appendUint(qualifier.layoutBinding);
- }
- if (qualifier.hasStream()) {
- appendStr(" stream=");
- appendUint(qualifier.layoutStream);
- }
- if (qualifier.hasMatrix()) {
- appendStr(" ");
- appendStr(TQualifier::getLayoutMatrixString(qualifier.layoutMatrix));
- }
- if (qualifier.hasPacking()) {
- appendStr(" ");
- appendStr(TQualifier::getLayoutPackingString(qualifier.layoutPacking));
- }
- if (qualifier.hasOffset()) {
- appendStr(" offset=");
- appendInt(qualifier.layoutOffset);
- }
- if (qualifier.hasAlign()) {
- appendStr(" align=");
- appendInt(qualifier.layoutAlign);
- }
- if (qualifier.hasFormat()) {
- appendStr(" ");
- appendStr(TQualifier::getLayoutFormatString(qualifier.layoutFormat));
- }
- if (qualifier.hasXfbBuffer() && qualifier.hasXfbOffset()) {
- appendStr(" xfb_buffer=");
- appendUint(qualifier.layoutXfbBuffer);
- }
- if (qualifier.hasXfbOffset()) {
- appendStr(" xfb_offset=");
- appendUint(qualifier.layoutXfbOffset);
- }
- if (qualifier.hasXfbStride()) {
- appendStr(" xfb_stride=");
- appendUint(qualifier.layoutXfbStride);
- }
- if (qualifier.hasAttachment()) {
- appendStr(" input_attachment_index=");
- appendUint(qualifier.layoutAttachment);
- }
- if (qualifier.hasSpecConstantId()) {
- appendStr(" constant_id=");
- appendUint(qualifier.layoutSpecConstantId);
- }
- if (qualifier.layoutPushConstant)
- appendStr(" push_constant");
- if (qualifier.layoutBufferReference)
- appendStr(" buffer_reference");
- if (qualifier.hasBufferReferenceAlign()) {
- appendStr(" buffer_reference_align=");
- appendUint(1u << qualifier.layoutBufferReferenceAlign);
- }
+ }
+ if (qualifier.hasSet()) {
+ appendStr(" set=");
+ appendUint(qualifier.layoutSet);
+ }
+ if (qualifier.hasBinding()) {
+ appendStr(" binding=");
+ appendUint(qualifier.layoutBinding);
+ }
+ if (qualifier.hasStream()) {
+ appendStr(" stream=");
+ appendUint(qualifier.layoutStream);
+ }
+ if (qualifier.hasMatrix()) {
+ appendStr(" ");
+ appendStr(TQualifier::getLayoutMatrixString(qualifier.layoutMatrix));
+ }
+ if (qualifier.hasPacking()) {
+ appendStr(" ");
+ appendStr(TQualifier::getLayoutPackingString(qualifier.layoutPacking));
+ }
+ if (qualifier.hasOffset()) {
+ appendStr(" offset=");
+ appendInt(qualifier.layoutOffset);
+ }
+ if (qualifier.hasAlign()) {
+ appendStr(" align=");
+ appendInt(qualifier.layoutAlign);
+ }
+ if (qualifier.hasFormat()) {
+ appendStr(" ");
+ appendStr(TQualifier::getLayoutFormatString(qualifier.layoutFormat));
+ }
+ if (qualifier.hasXfbBuffer() && qualifier.hasXfbOffset()) {
+ appendStr(" xfb_buffer=");
+ appendUint(qualifier.layoutXfbBuffer);
+ }
+ if (qualifier.hasXfbOffset()) {
+ appendStr(" xfb_offset=");
+ appendUint(qualifier.layoutXfbOffset);
+ }
+ if (qualifier.hasXfbStride()) {
+ appendStr(" xfb_stride=");
+ appendUint(qualifier.layoutXfbStride);
+ }
+ if (qualifier.hasAttachment()) {
+ appendStr(" input_attachment_index=");
+ appendUint(qualifier.layoutAttachment);
+ }
+ if (qualifier.hasSpecConstantId()) {
+ appendStr(" constant_id=");
+ appendUint(qualifier.layoutSpecConstantId);
+ }
+ if (qualifier.layoutPushConstant)
+ appendStr(" push_constant");
+ if (qualifier.layoutBufferReference)
+ appendStr(" buffer_reference");
+ if (qualifier.hasBufferReferenceAlign()) {
+ appendStr(" buffer_reference_align=");
+ appendUint(1u << qualifier.layoutBufferReferenceAlign);
+ }
- if (qualifier.layoutPassthrough)
- appendStr(" passthrough");
- if (qualifier.layoutViewportRelative)
- appendStr(" layoutViewportRelative");
- if (qualifier.layoutSecondaryViewportRelativeOffset != -2048) {
- appendStr(" layoutSecondaryViewportRelativeOffset=");
- appendInt(qualifier.layoutSecondaryViewportRelativeOffset);
- }
- if (qualifier.layoutShaderRecord)
- appendStr(" shaderRecordNV");
+ if (qualifier.layoutPassthrough)
+ appendStr(" passthrough");
+ if (qualifier.layoutViewportRelative)
+ appendStr(" layoutViewportRelative");
+ if (qualifier.layoutSecondaryViewportRelativeOffset != -2048) {
+ appendStr(" layoutSecondaryViewportRelativeOffset=");
+ appendInt(qualifier.layoutSecondaryViewportRelativeOffset);
+ }
+ if (qualifier.layoutShaderRecord)
+ appendStr(" shaderRecordNV");
- appendStr(")");
+ appendStr(")");
}
- }
+ }
- if (qualifier.invariant)
+ if (qualifier.invariant)
appendStr(" invariant");
- if (qualifier.noContraction)
+ if (qualifier.noContraction)
appendStr(" noContraction");
- if (qualifier.centroid)
+ if (qualifier.centroid)
appendStr(" centroid");
- if (qualifier.smooth)
+ if (qualifier.smooth)
appendStr(" smooth");
- if (qualifier.flat)
+ if (qualifier.flat)
appendStr(" flat");
- if (qualifier.nopersp)
+ if (qualifier.nopersp)
appendStr(" noperspective");
- if (qualifier.explicitInterp)
+ if (qualifier.explicitInterp)
appendStr(" __explicitInterpAMD");
- if (qualifier.pervertexNV)
+ if (qualifier.pervertexNV)
appendStr(" pervertexNV");
- if (qualifier.perPrimitiveNV)
+ if (qualifier.pervertexEXT)
+ appendStr(" pervertexEXT");
+ if (qualifier.perPrimitiveNV)
appendStr(" perprimitiveNV");
- if (qualifier.perViewNV)
+ if (qualifier.perViewNV)
appendStr(" perviewNV");
- if (qualifier.perTaskNV)
+ if (qualifier.perTaskNV)
appendStr(" taskNV");
- if (qualifier.patch)
+ if (qualifier.patch)
appendStr(" patch");
- if (qualifier.sample)
+ if (qualifier.sample)
appendStr(" sample");
- if (qualifier.coherent)
+ if (qualifier.coherent)
appendStr(" coherent");
- if (qualifier.devicecoherent)
+ if (qualifier.devicecoherent)
appendStr(" devicecoherent");
- if (qualifier.queuefamilycoherent)
+ if (qualifier.queuefamilycoherent)
appendStr(" queuefamilycoherent");
- if (qualifier.workgroupcoherent)
+ if (qualifier.workgroupcoherent)
appendStr(" workgroupcoherent");
- if (qualifier.subgroupcoherent)
+ if (qualifier.subgroupcoherent)
appendStr(" subgroupcoherent");
- if (qualifier.shadercallcoherent)
+ if (qualifier.shadercallcoherent)
appendStr(" shadercallcoherent");
- if (qualifier.nonprivate)
+ if (qualifier.nonprivate)
appendStr(" nonprivate");
- if (qualifier.volatil)
+ if (qualifier.volatil)
appendStr(" volatile");
- if (qualifier.restrict)
+ if (qualifier.restrict)
appendStr(" restrict");
- if (qualifier.readonly)
+ if (qualifier.readonly)
appendStr(" readonly");
- if (qualifier.writeonly)
+ if (qualifier.writeonly)
appendStr(" writeonly");
- if (qualifier.specConstant)
+ if (qualifier.specConstant)
appendStr(" specialization-constant");
- if (qualifier.nonUniform)
+ if (qualifier.nonUniform)
appendStr(" nonuniform");
- if (qualifier.isNullInit())
+ if (qualifier.isNullInit())
appendStr(" null-init");
- if (qualifier.isSpirvByReference())
+ if (qualifier.isSpirvByReference())
appendStr(" spirv_by_reference");
- if (qualifier.isSpirvLiteral())
+ if (qualifier.isSpirvLiteral())
appendStr(" spirv_literal");
- appendStr(" ");
- appendStr(getStorageQualifierString());
- if (isArray()) {
- for(int i = 0; i < (int)arraySizes->getNumDims(); ++i) {
+ appendStr(" ");
+ appendStr(getStorageQualifierString());
+ }
+ if (getType) {
+ if (syntactic) {
+ if (getPrecision && qualifier.precision != EpqNone) {
+ appendStr(" ");
+ appendStr(getPrecisionQualifierString());
+ }
+ if (isVector() || isMatrix()) {
+ appendStr(" ");
+ switch (basicType) {
+ case EbtDouble:
+ appendStr("d");
+ break;
+ case EbtInt:
+ appendStr("i");
+ break;
+ case EbtUint:
+ appendStr("u");
+ break;
+ case EbtBool:
+ appendStr("b");
+ break;
+ case EbtFloat:
+ default:
+ break;
+ }
+ if (isVector()) {
+ appendStr("vec");
+ appendInt(vectorSize);
+ } else {
+ appendStr("mat");
+ appendInt(matrixCols);
+ appendStr("x");
+ appendInt(matrixRows);
+ }
+ } else if (isStruct() && structure) {
+ appendStr(" ");
+ appendStr(structName.c_str());
+ appendStr("{");
+ bool hasHiddenMember = true;
+ for (size_t i = 0; i < structure->size(); ++i) {
+ if (!(*structure)[i].type->hiddenMember()) {
+ if (!hasHiddenMember)
+ appendStr(", ");
+ typeString.append((*structure)[i].type->getCompleteString(syntactic, getQualifiers, getPrecision, getType, (*structure)[i].type->getFieldName()));
+ hasHiddenMember = false;
+ }
+ }
+ appendStr("}");
+ } else {
+ appendStr(" ");
+ switch (basicType) {
+ case EbtDouble:
+ appendStr("double");
+ break;
+ case EbtInt:
+ appendStr("int");
+ break;
+ case EbtUint:
+ appendStr("uint");
+ break;
+ case EbtBool:
+ appendStr("bool");
+ break;
+ case EbtFloat:
+ appendStr("float");
+ break;
+ default:
+ appendStr("unexpected");
+ break;
+ }
+ }
+ if (name.length() > 0) {
+ appendStr(" ");
+ appendStr(name.c_str());
+ }
+ if (isArray()) {
+ for (int i = 0; i < (int)arraySizes->getNumDims(); ++i) {
int size = arraySizes->getDimSize(i);
if (size == UnsizedArraySize && i == 0 && arraySizes->isVariablyIndexed())
- appendStr(" runtime-sized array of");
+ appendStr("[]");
else {
- if (size == UnsizedArraySize) {
- appendStr(" unsized");
- if (i == 0) {
- appendStr(" ");
- appendInt(arraySizes->getImplicitSize());
- }
- } else {
- appendStr(" ");
- appendInt(arraySizes->getDimSize(i));
- }
- appendStr("-element array of");
+ if (size == UnsizedArraySize) {
+ appendStr("[");
+ if (i == 0)
+ appendInt(arraySizes->getImplicitSize());
+ appendStr("]");
+ }
+ else {
+ appendStr("[");
+ appendInt(arraySizes->getDimSize(i));
+ appendStr("]");
+ }
}
+ }
}
- }
- if (isParameterized()) {
- appendStr("<");
- for(int i = 0; i < (int)typeParameters->getNumDims(); ++i) {
+ }
+ else {
+ if (isArray()) {
+ for (int i = 0; i < (int)arraySizes->getNumDims(); ++i) {
+ int size = arraySizes->getDimSize(i);
+ if (size == UnsizedArraySize && i == 0 && arraySizes->isVariablyIndexed())
+ appendStr(" runtime-sized array of");
+ else {
+ if (size == UnsizedArraySize) {
+ appendStr(" unsized");
+ if (i == 0) {
+ appendStr(" ");
+ appendInt(arraySizes->getImplicitSize());
+ }
+ }
+ else {
+ appendStr(" ");
+ appendInt(arraySizes->getDimSize(i));
+ }
+ appendStr("-element array of");
+ }
+ }
+ }
+ if (isParameterized()) {
+ appendStr("<");
+ for (int i = 0; i < (int)typeParameters->getNumDims(); ++i) {
appendInt(typeParameters->getDimSize(i));
if (i != (int)typeParameters->getNumDims() - 1)
+ appendStr(", ");
+ }
+ appendStr(">");
+ }
+ if (getPrecision && qualifier.precision != EpqNone) {
+ appendStr(" ");
+ appendStr(getPrecisionQualifierString());
+ }
+ if (isMatrix()) {
+ appendStr(" ");
+ appendInt(matrixCols);
+ appendStr("X");
+ appendInt(matrixRows);
+ appendStr(" matrix of");
+ }
+ else if (isVector()) {
+ appendStr(" ");
+ appendInt(vectorSize);
+ appendStr("-component vector of");
+ }
+
+ appendStr(" ");
+ typeString.append(getBasicTypeString());
+
+ if (qualifier.builtIn != EbvNone) {
+ appendStr(" ");
+ appendStr(getBuiltInVariableString());
+ }
+
+ // Add struct/block members
+ if (isStruct() && structure) {
+ appendStr("{");
+ bool hasHiddenMember = true;
+ for (size_t i = 0; i < structure->size(); ++i) {
+ if (!(*structure)[i].type->hiddenMember()) {
+ if (!hasHiddenMember)
appendStr(", ");
- }
- appendStr(">");
- }
- if (qualifier.precision != EpqNone) {
- appendStr(" ");
- appendStr(getPrecisionQualifierString());
- }
- if (isMatrix()) {
- appendStr(" ");
- appendInt(matrixCols);
- appendStr("X");
- appendInt(matrixRows);
- appendStr(" matrix of");
- } else if (isVector()) {
- appendStr(" ");
- appendInt(vectorSize);
- appendStr("-component vector of");
- }
-
- appendStr(" ");
- typeString.append(getBasicTypeString());
-
- if (qualifier.builtIn != EbvNone) {
- appendStr(" ");
- appendStr(getBuiltInVariableString());
- }
-
- // Add struct/block members
- if (isStruct() && structure) {
- appendStr("{");
- bool hasHiddenMember = true;
- for (size_t i = 0; i < structure->size(); ++i) {
- if (! (*structure)[i].type->hiddenMember()) {
- if (!hasHiddenMember)
- appendStr(", ");
- typeString.append((*structure)[i].type->getCompleteString());
- typeString.append(" ");
- typeString.append((*structure)[i].type->getFieldName());
- hasHiddenMember = false;
+ typeString.append((*structure)[i].type->getCompleteString());
+ typeString.append(" ");
+ typeString.append((*structure)[i].type->getFieldName());
+ hasHiddenMember = false;
}
+ }
+ appendStr("}");
}
- appendStr("}");
+ }
}
return typeString;
@@ -2396,7 +2544,7 @@
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;
@@ -2442,13 +2590,27 @@
// type definitions, and member names to be considered the same type.
// This rule applies recursively for nested or embedded types."
//
- bool sameStructType(const TType& right) const
+ // If type mismatch in structure, return member indices through lpidx and rpidx.
+ // If matching members for either block are exhausted, return -1 for exhausted
+ // block and the index of the unmatched member. Otherwise return {-1,-1}.
+ //
+ bool sameStructType(const TType& right, int* lpidx = nullptr, int* rpidx = nullptr) const
{
+ // Initialize error to general type mismatch.
+ if (lpidx != nullptr) {
+ *lpidx = -1;
+ *rpidx = -1;
+ }
+
// Most commonly, they are both nullptr, or the same pointer to the same actual structure
+ // TODO: Why return true when neither types are structures?
if ((!isStruct() && !right.isStruct()) ||
(isStruct() && right.isStruct() && structure == right.structure))
return true;
+ if (!isStruct() || !right.isStruct())
+ return false;
+
// Structure names have to match
if (*typeName != *right.typeName)
return false;
@@ -2458,12 +2620,17 @@
bool isGLPerVertex = *typeName == "gl_PerVertex";
// Both being nullptr was caught above, now they both have to be structures of the same number of elements
- if (!isStruct() || !right.isStruct() ||
- (structure->size() != right.structure->size() && !isGLPerVertex))
+ if (lpidx == nullptr &&
+ (structure->size() != right.structure->size() && !isGLPerVertex)) {
return false;
+ }
// Compare the names and types of all the members, which have to match
for (size_t li = 0, ri = 0; li < structure->size() || ri < right.structure->size(); ++li, ++ri) {
+ if (lpidx != nullptr) {
+ *lpidx = static_cast<int>(li);
+ *rpidx = static_cast<int>(ri);
+ }
if (li < structure->size() && ri < right.structure->size()) {
if ((*structure)[li].type->getFieldName() == (*right.structure)[ri].type->getFieldName()) {
if (*(*structure)[li].type != *(*right.structure)[ri].type)
@@ -2493,11 +2660,19 @@
}
// If we get here, then there should only be inconsistently declared members left
} else if (li < structure->size()) {
- if (!(*structure)[li].type->hiddenMember() && !isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName()))
+ if (!(*structure)[li].type->hiddenMember() && !isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName())) {
+ if (lpidx != nullptr) {
+ *rpidx = -1;
+ }
return false;
+ }
} else {
- if (!(*right.structure)[ri].type->hiddenMember() && !isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName()))
+ if (!(*right.structure)[ri].type->hiddenMember() && !isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName())) {
+ if (lpidx != nullptr) {
+ *lpidx = -1;
+ }
return false;
+ }
}
}
@@ -2521,10 +2696,15 @@
return *referentType == *right.referentType;
}
- // See if two types match, in all aspects except arrayness
- bool sameElementType(const TType& right) const
+ // See if two types match, in all aspects except arrayness
+ // If mismatch in structure members, return member indices in lpidx and rpidx.
+ bool sameElementType(const TType& right, int* lpidx = nullptr, int* rpidx = nullptr) const
{
- return basicType == right.basicType && sameElementShape(right);
+ if (lpidx != nullptr) {
+ *lpidx = -1;
+ *rpidx = -1;
+ }
+ return basicType == right.basicType && sameElementShape(right, lpidx, rpidx);
}
// See if two type's arrayness match
@@ -2558,15 +2738,20 @@
#endif
// See if two type's elements match in all ways except basic type
- bool sameElementShape(const TType& right) const
+ // If mismatch in structure members, return member indices in lpidx and rpidx.
+ bool sameElementShape(const TType& right, int* lpidx = nullptr, int* rpidx = nullptr) const
{
- return sampler == right.sampler &&
+ if (lpidx != nullptr) {
+ *lpidx = -1;
+ *rpidx = -1;
+ }
+ return ((basicType != EbtSampler && right.basicType != EbtSampler) || sampler == right.sampler) &&
vectorSize == right.vectorSize &&
matrixCols == right.matrixCols &&
matrixRows == right.matrixRows &&
vector1 == right.vector1 &&
isCoopMat() == right.isCoopMat() &&
- sameStructType(right) &&
+ sameStructType(right, lpidx, rpidx) &&
sameReferenceType(right);
}
diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h
index 4b32e2b..f540f26 100644
--- a/glslang/Include/glslang_c_interface.h
+++ b/glslang/Include/glslang_c_interface.h
@@ -148,6 +148,15 @@
int max_task_work_group_size_y_nv;
int max_task_work_group_size_z_nv;
int max_mesh_view_count_nv;
+ int max_mesh_output_vertices_ext;
+ int max_mesh_output_primitives_ext;
+ int max_mesh_work_group_size_x_ext;
+ int max_mesh_work_group_size_y_ext;
+ int max_mesh_work_group_size_z_ext;
+ int max_task_work_group_size_x_ext;
+ int max_task_work_group_size_y_ext;
+ int max_task_work_group_size_z_ext;
+ int max_mesh_view_count_ext;
int maxDualSourceDrawBuffersEXT;
glslang_limits_t limits;
@@ -199,6 +208,18 @@
glsl_free_include_result_func free_include_result;
} glsl_include_callbacks_t;
+/* SpvOptions counterpart */
+typedef struct glslang_spv_options_s {
+ bool generate_debug_info;
+ bool strip_debug_info;
+ bool disable_optimizer;
+ bool optimize_size;
+ bool disassemble;
+ bool validate;
+ bool emit_nonsemantic_shader_debug_info;
+ bool emit_nonsemantic_shader_debug_source;
+} glslang_spv_options_t;
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -224,6 +245,11 @@
GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* input);
GLSLANG_EXPORT void glslang_shader_delete(glslang_shader_t* shader);
+GLSLANG_EXPORT void glslang_shader_set_preamble(glslang_shader_t* shader, const char* s);
+GLSLANG_EXPORT void glslang_shader_shift_binding(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base);
+GLSLANG_EXPORT void glslang_shader_shift_binding_for_set(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base, unsigned int set);
+GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int options); // glslang_shader_options_t
+GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, int version);
GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input);
GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input);
GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader);
@@ -234,7 +260,11 @@
GLSLANG_EXPORT void glslang_program_delete(glslang_program_t* program);
GLSLANG_EXPORT void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader);
GLSLANG_EXPORT int glslang_program_link(glslang_program_t* program, int messages); // glslang_messages_t
+GLSLANG_EXPORT void glslang_program_add_source_text(glslang_program_t* program, glslang_stage_t stage, const char* text, size_t len);
+GLSLANG_EXPORT void glslang_program_set_source_file(glslang_program_t* program, glslang_stage_t stage, const char* file);
+GLSLANG_EXPORT int glslang_program_map_io(glslang_program_t* program);
GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage);
+GLSLANG_EXPORT void glslang_program_SPIRV_generate_with_options(glslang_program_t* program, glslang_stage_t stage, glslang_spv_options_t* spv_options);
GLSLANG_EXPORT size_t glslang_program_SPIRV_get_size(glslang_program_t* program);
GLSLANG_EXPORT void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int*);
GLSLANG_EXPORT unsigned int* glslang_program_SPIRV_get_ptr(glslang_program_t* program);
diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h
index f100a9a..9bc2114 100644
--- a/glslang/Include/glslang_c_shader_types.h
+++ b/glslang/Include/glslang_c_shader_types.h
@@ -43,14 +43,22 @@
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,
+ GLSLANG_STAGE_RAYGEN,
+ GLSLANG_STAGE_RAYGEN_NV = GLSLANG_STAGE_RAYGEN,
+ GLSLANG_STAGE_INTERSECT,
+ GLSLANG_STAGE_INTERSECT_NV = GLSLANG_STAGE_INTERSECT,
+ GLSLANG_STAGE_ANYHIT,
+ GLSLANG_STAGE_ANYHIT_NV = GLSLANG_STAGE_ANYHIT,
+ GLSLANG_STAGE_CLOSESTHIT,
+ GLSLANG_STAGE_CLOSESTHIT_NV = GLSLANG_STAGE_CLOSESTHIT,
+ GLSLANG_STAGE_MISS,
+ GLSLANG_STAGE_MISS_NV = GLSLANG_STAGE_MISS,
+ GLSLANG_STAGE_CALLABLE,
+ GLSLANG_STAGE_CALLABLE_NV = GLSLANG_STAGE_CALLABLE,
+ GLSLANG_STAGE_TASK,
+ GLSLANG_STAGE_TASK_NV = GLSLANG_STAGE_TASK,
+ GLSLANG_STAGE_MESH,
+ GLSLANG_STAGE_MESH_NV = GLSLANG_STAGE_MESH,
LAST_ELEMENT_MARKER(GLSLANG_STAGE_COUNT),
} glslang_stage_t; // would be better as stage, but this is ancient now
@@ -62,14 +70,22 @@
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),
+ GLSLANG_STAGE_RAYGEN_MASK = (1 << GLSLANG_STAGE_RAYGEN),
+ GLSLANG_STAGE_RAYGEN_NV_MASK = GLSLANG_STAGE_RAYGEN_MASK,
+ GLSLANG_STAGE_INTERSECT_MASK = (1 << GLSLANG_STAGE_INTERSECT),
+ GLSLANG_STAGE_INTERSECT_NV_MASK = GLSLANG_STAGE_INTERSECT_MASK,
+ GLSLANG_STAGE_ANYHIT_MASK = (1 << GLSLANG_STAGE_ANYHIT),
+ GLSLANG_STAGE_ANYHIT_NV_MASK = GLSLANG_STAGE_ANYHIT_MASK,
+ GLSLANG_STAGE_CLOSESTHIT_MASK = (1 << GLSLANG_STAGE_CLOSESTHIT),
+ GLSLANG_STAGE_CLOSESTHIT_NV_MASK = GLSLANG_STAGE_CLOSESTHIT_MASK,
+ GLSLANG_STAGE_MISS_MASK = (1 << GLSLANG_STAGE_MISS),
+ GLSLANG_STAGE_MISS_NV_MASK = GLSLANG_STAGE_MISS_MASK,
+ GLSLANG_STAGE_CALLABLE_MASK = (1 << GLSLANG_STAGE_CALLABLE),
+ GLSLANG_STAGE_CALLABLE_NV_MASK = GLSLANG_STAGE_CALLABLE_MASK,
+ GLSLANG_STAGE_TASK_MASK = (1 << GLSLANG_STAGE_TASK),
+ GLSLANG_STAGE_TASK_NV_MASK = GLSLANG_STAGE_TASK_MASK,
+ GLSLANG_STAGE_MESH_MASK = (1 << GLSLANG_STAGE_MESH),
+ GLSLANG_STAGE_MESH_NV_MASK = GLSLANG_STAGE_MESH_MASK,
LAST_ELEMENT_MARKER(GLSLANG_STAGE_MASK_COUNT),
} glslang_stage_mask_t;
@@ -101,8 +117,9 @@
GLSLANG_TARGET_VULKAN_1_0 = (1 << 22),
GLSLANG_TARGET_VULKAN_1_1 = (1 << 22) | (1 << 12),
GLSLANG_TARGET_VULKAN_1_2 = (1 << 22) | (2 << 12),
+ GLSLANG_TARGET_VULKAN_1_3 = (1 << 22) | (3 << 12),
GLSLANG_TARGET_OPENGL_450 = 450,
- LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT = 4),
+ LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT = 5),
} glslang_target_client_version_t;
/* SH_TARGET_LanguageVersion counterpart */
@@ -113,13 +130,16 @@
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 = 6),
+ GLSLANG_TARGET_SPV_1_6 = (1 << 16) | (6 << 8),
+ LAST_ELEMENT_MARKER(GLSLANG_TARGET_LANGUAGE_VERSION_COUNT = 7),
} glslang_target_language_version_t;
/* EShExecutable counterpart */
typedef enum { GLSLANG_EX_VERTEX_FRAGMENT, GLSLANG_EX_FRAGMENT } glslang_executable_t;
-/* EShOptimizationLevel counterpart */
+// EShOptimizationLevel counterpart
+// This enum is not used in the current C interface, but could be added at a later date.
+// GLSLANG_OPT_NONE is the current default.
typedef enum {
GLSLANG_OPT_NO_GENERATION,
GLSLANG_OPT_NONE,
@@ -153,6 +173,7 @@
GLSLANG_MSG_HLSL_LEGALIZATION_BIT = (1 << 12),
GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT = (1 << 13),
GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT = (1 << 14),
+ GLSLANG_MSG_ENHANCED = (1 << 15),
LAST_ELEMENT_MARKER(GLSLANG_MSG_COUNT),
} glslang_messages_t;
@@ -181,6 +202,26 @@
LAST_ELEMENT_MARKER(GLSLANG_PROFILE_COUNT),
} glslang_profile_t;
+/* Shader options */
+typedef enum {
+ GLSLANG_SHADER_DEFAULT_BIT = 0,
+ GLSLANG_SHADER_AUTO_MAP_BINDINGS = (1 << 0),
+ GLSLANG_SHADER_AUTO_MAP_LOCATIONS = (1 << 1),
+ GLSLANG_SHADER_VULKAN_RULES_RELAXED = (1 << 2),
+ LAST_ELEMENT_MARKER(GLSLANG_SHADER_COUNT),
+} glslang_shader_options_t;
+
+/* TResourceType counterpart */
+typedef enum {
+ GLSLANG_RESOURCE_TYPE_SAMPLER,
+ GLSLANG_RESOURCE_TYPE_TEXTURE,
+ GLSLANG_RESOURCE_TYPE_IMAGE,
+ GLSLANG_RESOURCE_TYPE_UBO,
+ GLSLANG_RESOURCE_TYPE_SSBO,
+ GLSLANG_RESOURCE_TYPE_UAV,
+ LAST_ELEMENT_MARKER(GLSLANG_RESOURCE_TYPE_COUNT),
+} glslang_resource_type_t;
+
#undef LAST_ELEMENT_MARKER
#endif
diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h
index 595bd62..a024002 100644
--- a/glslang/Include/intermediate.h
+++ b/glslang/Include/intermediate.h
@@ -67,6 +67,7 @@
enum TOperator {
EOpNull, // if in a node, should only mean a node is still being built
EOpSequence, // denotes a list of statements, or parameters, etc.
+ EOpScope, // Used by debugging to denote a scoped list of statements
EOpLinkerObjects, // for aggregate node of objects the linker may need, if not reference by the rest of the AST
EOpFunctionCall,
EOpFunction, // For function definition
@@ -91,6 +92,8 @@
EOpCopyObject,
+ EOpDeclare, // Used by debugging to force declaration of variable in correct scope
+
// (u)int* -> bool
EOpConvInt8ToBool,
EOpConvUint8ToBool,
@@ -934,6 +937,8 @@
EOpExecuteCallableNV,
EOpExecuteCallableKHR,
EOpWritePackedPrimitiveIndices4x8NV,
+ EOpEmitMeshTasksEXT,
+ EOpSetMeshOutputsEXT,
//
// GL_EXT_ray_query operations
@@ -1155,7 +1160,7 @@
virtual bool isIntegerDomain() const { return type.isIntegerDomain(); }
bool isAtomic() const { return type.isAtomic(); }
bool isReference() const { return type.isReference(); }
- TString getCompleteString() const { return type.getCompleteString(); }
+ TString getCompleteString(bool enhanced = false) const { return type.getCompleteString(enhanced); }
protected:
TIntermTyped& operator=(const TIntermTyped&);
diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp
index 7f5d4c4..5fc61db 100644
--- a/glslang/MachineIndependent/Constant.cpp
+++ b/glslang/MachineIndependent/Constant.cpp
@@ -46,35 +46,6 @@
using namespace glslang;
-typedef union {
- double d;
- int i[2];
-} DoubleIntUnion;
-
-// Some helper functions
-
-bool isNan(double x)
-{
- DoubleIntUnion u;
- // tough to find a platform independent library function, do it directly
- u.d = x;
- int bitPatternL = u.i[0];
- int bitPatternH = u.i[1];
- return (bitPatternH & 0x7ff80000) == 0x7ff80000 &&
- ((bitPatternH & 0xFFFFF) != 0 || bitPatternL != 0);
-}
-
-bool isInf(double x)
-{
- DoubleIntUnion u;
- // tough to find a platform independent library function, do it directly
- u.d = x;
- int bitPatternL = u.i[0];
- int bitPatternH = u.i[1];
- return (bitPatternH & 0x7ff00000) == 0x7ff00000 &&
- (bitPatternH & 0xFFFFF) == 0 && bitPatternL == 0;
-}
-
const double pi = 3.1415926535897932384626433832795;
} // end anonymous namespace
@@ -663,12 +634,12 @@
case EOpIsNan:
{
- newConstArray[i].setBConst(isNan(unionArray[i].getDConst()));
+ newConstArray[i].setBConst(IsNan(unionArray[i].getDConst()));
break;
}
case EOpIsInf:
{
- newConstArray[i].setBConst(isInf(unionArray[i].getDConst()));
+ newConstArray[i].setBConst(IsInfinity(unionArray[i].getDConst()));
break;
}
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index b5f48fb..0cbb9e7 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -316,6 +316,7 @@
{ EOpTextureQuerySize, "textureSize", nullptr },
{ EOpTextureQueryLod, "textureQueryLod", nullptr },
+ { EOpTextureQueryLod, "textureQueryLOD", nullptr }, // extension GL_ARB_texture_query_lod
{ EOpTextureQueryLevels, "textureQueryLevels", nullptr },
{ EOpTextureQuerySamples, "textureSamples", nullptr },
{ EOpTexture, "texture", nullptr },
@@ -2267,11 +2268,11 @@
"\n"
);
- stageBuiltins[EShLangMeshNV].append(
+ stageBuiltins[EShLangMesh].append(
"void subgroupMemoryBarrierShared();"
"\n"
);
- stageBuiltins[EShLangTaskNV].append(
+ stageBuiltins[EShLangTask].append(
"void subgroupMemoryBarrierShared();"
"\n"
);
@@ -4269,7 +4270,7 @@
//
//============================================================================
- if (profile != EEsProfile && version >= 400) {
+ if (profile != EEsProfile && (version >= 400 || version == 150)) {
stageBuiltins[EShLangGeometry].append(
"void EmitStreamVertex(int);"
"void EndStreamPrimitive(int);"
@@ -4297,10 +4298,10 @@
"void barrier();"
);
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
- stageBuiltins[EShLangMeshNV].append(
+ stageBuiltins[EShLangMesh].append(
"void barrier();"
);
- stageBuiltins[EShLangTaskNV].append(
+ stageBuiltins[EShLangTask].append(
"void barrier();"
);
}
@@ -4325,11 +4326,11 @@
commonBuiltins.append("void memoryBarrierImage();");
}
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
- stageBuiltins[EShLangMeshNV].append(
+ stageBuiltins[EShLangMesh].append(
"void memoryBarrierShared();"
"void groupMemoryBarrier();"
);
- stageBuiltins[EShLangTaskNV].append(
+ stageBuiltins[EShLangTask].append(
"void memoryBarrierShared();"
"void groupMemoryBarrier();"
);
@@ -4654,10 +4655,21 @@
// Builtins for GL_NV_mesh_shader
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
- stageBuiltins[EShLangMeshNV].append(
+ stageBuiltins[EShLangMesh].append(
"void writePackedPrimitiveIndices4x8NV(uint, uint);"
"\n");
}
+ // Builtins for GL_EXT_mesh_shader
+ if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
+ // Builtins for GL_EXT_mesh_shader
+ stageBuiltins[EShLangTask].append(
+ "void EmitMeshTasksEXT(uint, uint, uint);"
+ "\n");
+
+ stageBuiltins[EShLangMesh].append(
+ "void SetMeshOutputsEXT(uint, uint);"
+ "\n");
+ }
#endif // !GLSLANG_ANGLE
#endif // !GLSLANG_WEB
@@ -4854,7 +4866,7 @@
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
// per-vertex attributes
- stageBuiltins[EShLangMeshNV].append(
+ stageBuiltins[EShLangMesh].append(
"out gl_MeshPerVertexNV {"
"vec4 gl_Position;"
"float gl_PointSize;"
@@ -4867,7 +4879,7 @@
);
// per-primitive attributes
- stageBuiltins[EShLangMeshNV].append(
+ stageBuiltins[EShLangMesh].append(
"perprimitiveNV out gl_MeshPerPrimitiveNV {"
"int gl_PrimitiveID;"
"int gl_Layer;"
@@ -4878,7 +4890,7 @@
"} gl_MeshPrimitivesNV[];"
);
- stageBuiltins[EShLangMeshNV].append(
+ stageBuiltins[EShLangMesh].append(
"out uint gl_PrimitiveCountNV;"
"out uint gl_PrimitiveIndicesNV[];"
@@ -4892,10 +4904,38 @@
"in highp uvec3 gl_GlobalInvocationID;"
"in highp uint gl_LocalInvocationIndex;"
-
"\n");
- stageBuiltins[EShLangTaskNV].append(
+ // GL_EXT_mesh_shader
+ stageBuiltins[EShLangMesh].append(
+ "out uint gl_PrimitivePointIndicesEXT[];"
+ "out uvec2 gl_PrimitiveLineIndicesEXT[];"
+ "out uvec3 gl_PrimitiveTriangleIndicesEXT[];"
+ "in highp uvec3 gl_NumWorkGroups;"
+ "\n");
+
+ // per-vertex attributes
+ stageBuiltins[EShLangMesh].append(
+ "out gl_MeshPerVertexEXT {"
+ "vec4 gl_Position;"
+ "float gl_PointSize;"
+ "float gl_ClipDistance[];"
+ "float gl_CullDistance[];"
+ "} gl_MeshVerticesEXT[];"
+ );
+
+ // per-primitive attributes
+ stageBuiltins[EShLangMesh].append(
+ "perprimitiveEXT out gl_MeshPerPrimitiveEXT {"
+ "int gl_PrimitiveID;"
+ "int gl_Layer;"
+ "int gl_ViewportIndex;"
+ "bool gl_CullPrimitiveEXT;"
+ "int gl_PrimitiveShadingRateEXT;"
+ "} gl_MeshPrimitivesEXT[];"
+ );
+
+ stageBuiltins[EShLangTask].append(
"out uint gl_TaskCountNV;"
"const highp uvec3 gl_WorkGroupSize = uvec3(1,1,1);"
@@ -4908,27 +4948,28 @@
"in uint gl_MeshViewCountNV;"
"in uint gl_MeshViewIndicesNV[4];"
-
+ "in highp uvec3 gl_NumWorkGroups;"
"\n");
}
if (profile != EEsProfile && version >= 450) {
- stageBuiltins[EShLangMeshNV].append(
+ stageBuiltins[EShLangMesh].append(
"in highp int gl_DeviceIndex;" // GL_EXT_device_group
"in int gl_DrawIDARB;" // GL_ARB_shader_draw_parameters
+ "in int gl_ViewIndex;" // GL_EXT_multiview
"\n");
- stageBuiltins[EShLangTaskNV].append(
+ stageBuiltins[EShLangTask].append(
"in highp int gl_DeviceIndex;" // GL_EXT_device_group
"in int gl_DrawIDARB;" // GL_ARB_shader_draw_parameters
"\n");
if (version >= 460) {
- stageBuiltins[EShLangMeshNV].append(
+ stageBuiltins[EShLangMesh].append(
"in int gl_DrawID;"
"\n");
- stageBuiltins[EShLangTaskNV].append(
+ stageBuiltins[EShLangTask].append(
"in int gl_DrawID;"
"\n");
}
@@ -5570,6 +5611,8 @@
"flat in int gl_InvocationsPerPixelNV;"
"in vec3 gl_BaryCoordNV;" // GL_NV_fragment_shader_barycentric
"in vec3 gl_BaryCoordNoPerspNV;"
+ "in vec3 gl_BaryCoordEXT;" // GL_EXT_fragment_shader_barycentric
+ "in vec3 gl_BaryCoordNoPerspEXT;"
);
if (version >= 450)
@@ -5634,7 +5677,9 @@
stageBuiltins[EShLangFragment].append(
"in vec3 gl_BaryCoordNV;"
"in vec3 gl_BaryCoordNoPerspNV;"
- );
+ "in vec3 gl_BaryCoordEXT;"
+ "in vec3 gl_BaryCoordNoPerspEXT;"
+ );
if (version >= 310)
stageBuiltins[EShLangFragment].append(
"flat in highp int gl_ShadingRateEXT;" // GL_EXT_fragment_shading_rate
@@ -5699,8 +5744,8 @@
stageBuiltins[EShLangGeometry] .append(ballotDecls);
stageBuiltins[EShLangCompute] .append(ballotDecls);
stageBuiltins[EShLangFragment] .append(fragmentBallotDecls);
- stageBuiltins[EShLangMeshNV] .append(ballotDecls);
- stageBuiltins[EShLangTaskNV] .append(ballotDecls);
+ stageBuiltins[EShLangMesh] .append(ballotDecls);
+ stageBuiltins[EShLangTask] .append(ballotDecls);
stageBuiltins[EShLangRayGen] .append(rtBallotDecls);
stageBuiltins[EShLangIntersect] .append(rtBallotDecls);
// No volatile qualifier on these builtins in any-hit
@@ -5768,10 +5813,10 @@
stageBuiltins[EShLangCompute] .append(subgroupDecls);
stageBuiltins[EShLangCompute] .append(computeSubgroupDecls);
stageBuiltins[EShLangFragment] .append(fragmentSubgroupDecls);
- stageBuiltins[EShLangMeshNV] .append(subgroupDecls);
- stageBuiltins[EShLangMeshNV] .append(computeSubgroupDecls);
- stageBuiltins[EShLangTaskNV] .append(subgroupDecls);
- stageBuiltins[EShLangTaskNV] .append(computeSubgroupDecls);
+ stageBuiltins[EShLangMesh] .append(subgroupDecls);
+ stageBuiltins[EShLangMesh] .append(computeSubgroupDecls);
+ stageBuiltins[EShLangTask] .append(subgroupDecls);
+ stageBuiltins[EShLangTask] .append(computeSubgroupDecls);
stageBuiltins[EShLangRayGen] .append(rtSubgroupDecls);
stageBuiltins[EShLangIntersect] .append(rtSubgroupDecls);
// No volatile qualifier on these builtins in any-hit
@@ -5805,6 +5850,7 @@
"const uint gl_RayFlagsCullNoOpaqueEXT = 128U;"
"const uint gl_RayFlagsSkipTrianglesEXT = 256U;"
"const uint gl_RayFlagsSkipAABBEXT = 512U;"
+ "const uint gl_RayFlagsForceOpacityMicromap2StateEXT = 1024U;"
"const uint gl_HitKindFrontFacingTriangleEXT = 254U;"
"const uint gl_HitKindBackFacingTriangleEXT = 255U;"
"\n";
@@ -5856,6 +5902,7 @@
"in uint gl_IncomingRayFlagsNV;"
"in uint gl_IncomingRayFlagsEXT;"
"in float gl_CurrentRayTimeNV;"
+ "in uint gl_CullMaskEXT;"
"\n";
const char *hitDecls =
"in uvec3 gl_LaunchIDNV;"
@@ -5892,6 +5939,7 @@
"in uint gl_IncomingRayFlagsNV;"
"in uint gl_IncomingRayFlagsEXT;"
"in float gl_CurrentRayTimeNV;"
+ "in uint gl_CullMaskEXT;"
"\n";
const char *missDecls =
"in uvec3 gl_LaunchIDNV;"
@@ -5911,6 +5959,7 @@
"in uint gl_IncomingRayFlagsNV;"
"in uint gl_IncomingRayFlagsEXT;"
"in float gl_CurrentRayTimeNV;"
+ "in uint gl_CullMaskEXT;"
"\n";
const char *callableDecls =
@@ -6247,38 +6296,44 @@
//
// textureQueryLod(), fragment stage only
// Also enabled with extension GL_ARB_texture_query_lod
+ // Extension GL_ARB_texture_query_lod says that textureQueryLOD() also exist at extension.
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)
- continue;
- stageBuiltins[EShLangFragment].append("vec2 textureQueryLod(");
- stageBuiltins[EShLangFragment].append(typeName);
- if (dimMap[sampler.dim] == 1)
- if (f16TexAddr)
- stageBuiltins[EShLangFragment].append(", float16_t");
- else
- stageBuiltins[EShLangFragment].append(", float");
- else {
- if (f16TexAddr)
- stageBuiltins[EShLangFragment].append(", f16vec");
- else
- stageBuiltins[EShLangFragment].append(", vec");
- stageBuiltins[EShLangFragment].append(postfixes[dimMap[sampler.dim]]);
- }
- stageBuiltins[EShLangFragment].append(");\n");
- }
- stageBuiltins[EShLangCompute].append("vec2 textureQueryLod(");
- stageBuiltins[EShLangCompute].append(typeName);
- if (dimMap[sampler.dim] == 1)
- stageBuiltins[EShLangCompute].append(", float");
- else {
- stageBuiltins[EShLangCompute].append(", vec");
- stageBuiltins[EShLangCompute].append(postfixes[dimMap[sampler.dim]]);
+ const TString funcName[2] = {"vec2 textureQueryLod(", "vec2 textureQueryLOD("};
+
+ for (int i = 0; i < 2; ++i){
+ for (int f16TexAddr = 0; f16TexAddr < 2; ++f16TexAddr) {
+ if (f16TexAddr && sampler.type != EbtFloat16)
+ continue;
+ stageBuiltins[EShLangFragment].append(funcName[i]);
+ stageBuiltins[EShLangFragment].append(typeName);
+ if (dimMap[sampler.dim] == 1)
+ if (f16TexAddr)
+ stageBuiltins[EShLangFragment].append(", float16_t");
+ else
+ stageBuiltins[EShLangFragment].append(", float");
+ else {
+ if (f16TexAddr)
+ stageBuiltins[EShLangFragment].append(", f16vec");
+ else
+ stageBuiltins[EShLangFragment].append(", vec");
+ stageBuiltins[EShLangFragment].append(postfixes[dimMap[sampler.dim]]);
+ }
+ stageBuiltins[EShLangFragment].append(");\n");
+ }
+
+ stageBuiltins[EShLangCompute].append(funcName[i]);
+ stageBuiltins[EShLangCompute].append(typeName);
+ if (dimMap[sampler.dim] == 1)
+ stageBuiltins[EShLangCompute].append(", float");
+ else {
+ stageBuiltins[EShLangCompute].append(", vec");
+ stageBuiltins[EShLangCompute].append(postfixes[dimMap[sampler.dim]]);
+ }
+ stageBuiltins[EShLangCompute].append(");\n");
}
- stageBuiltins[EShLangCompute].append(");\n");
}
//
@@ -7600,6 +7655,23 @@
}
//
+// Modify the symbol's flat decoration.
+//
+// Safe to call even if name is not present.
+//
+// Originally written to transform gl_SubGroupSizeARB from uniform to fragment input in Vulkan.
+//
+static void ModifyFlatDecoration(const char* name, bool flat, TSymbolTable& symbolTable)
+{
+ TSymbol* symbol = symbolTable.find(name);
+ if (symbol == nullptr)
+ return;
+
+ TQualifier& symQualifier = symbol->getWritableType().getQualifier();
+ symQualifier.flat = flat;
+}
+
+//
// To tag built-in variables with their TBuiltInVariable enum. Use this when the
// normal declaration text already gets the qualifier right, and all that's needed
// is setting the builtIn field. This should be the normal way for all new
@@ -7982,9 +8054,12 @@
BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable);
BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable);
- if (spvVersion.vulkan > 0)
+ if (spvVersion.vulkan > 0) {
// Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan
SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable);
+ if (language == EShLangFragment)
+ ModifyFlatDecoration("gl_SubGroupSizeARB", true, symbolTable);
+ }
else
BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable);
}
@@ -8051,6 +8126,7 @@
SpecialQualifier("gl_FragDepth", EvqFragDepth, EbvFragDepth, symbolTable);
#ifndef GLSLANG_WEB
SpecialQualifier("gl_FragDepthEXT", EvqFragDepth, EbvFragDepth, symbolTable);
+ SpecialQualifier("gl_FragStencilRefARB", EvqFragStencil, EbvFragStencilRef, symbolTable);
SpecialQualifier("gl_HelperInvocation", EvqVaryingIn, EbvHelperInvocation, symbolTable);
BuiltInVariable("gl_ClipDistance", EbvClipDistance, symbolTable);
@@ -8063,7 +8139,7 @@
}
if (profile != EEsProfile && version < 400) {
- symbolTable.setFunctionExtensions("textureQueryLod", 1, &E_GL_ARB_texture_query_lod);
+ symbolTable.setFunctionExtensions("textureQueryLOD", 1, &E_GL_ARB_texture_query_lod);
}
if (profile != EEsProfile && version >= 460) {
@@ -8092,6 +8168,7 @@
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);
+ symbolTable.setVariableExtensions("gl_RayFlagsForceOpacityMicromap2StateEXT", 1, &E_GL_EXT_opacity_micromap);
}
if ((profile != EEsProfile && version >= 130) ||
@@ -8311,6 +8388,10 @@
symbolTable.setVariableExtensions("gl_BaryCoordNoPerspNV", 1, &E_GL_NV_fragment_shader_barycentric);
BuiltInVariable("gl_BaryCoordNV", EbvBaryCoordNV, symbolTable);
BuiltInVariable("gl_BaryCoordNoPerspNV", EbvBaryCoordNoPerspNV, symbolTable);
+ symbolTable.setVariableExtensions("gl_BaryCoordEXT", 1, &E_GL_EXT_fragment_shader_barycentric);
+ symbolTable.setVariableExtensions("gl_BaryCoordNoPerspEXT", 1, &E_GL_EXT_fragment_shader_barycentric);
+ BuiltInVariable("gl_BaryCoordEXT", EbvBaryCoordEXT, symbolTable);
+ BuiltInVariable("gl_BaryCoordNoPerspEXT", EbvBaryCoordNoPerspEXT, symbolTable);
}
if ((profile != EEsProfile && version >= 450) ||
@@ -8346,10 +8427,11 @@
}
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);
+ const char* bitsConvertExt[2] = {E_GL_ARB_shader_bit_encoding, E_GL_ARB_gpu_shader5};
+ symbolTable.setFunctionExtensions("floatBitsToInt", 2, bitsConvertExt);
+ symbolTable.setFunctionExtensions("floatBitsToUint", 2, bitsConvertExt);
+ symbolTable.setFunctionExtensions("intBitsToFloat", 2, bitsConvertExt);
+ symbolTable.setFunctionExtensions("uintBitsToFloat", 2, bitsConvertExt);
}
if (profile != EEsProfile && version < 430 ) {
@@ -8410,9 +8492,12 @@
BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable);
BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable);
- if (spvVersion.vulkan > 0)
+ if (spvVersion.vulkan > 0) {
// Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan
SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable);
+ if (language == EShLangFragment)
+ ModifyFlatDecoration("gl_SubGroupSizeARB", true, symbolTable);
+ }
else
BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable);
}
@@ -8627,9 +8712,12 @@
BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable);
BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable);
- if (spvVersion.vulkan > 0)
+ if (spvVersion.vulkan > 0) {
// Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan
SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable);
+ if (language == EShLangFragment)
+ ModifyFlatDecoration("gl_SubGroupSizeARB", true, symbolTable);
+ }
else
BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable);
}
@@ -8735,6 +8823,7 @@
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_CullMaskEXT", 1, &E_GL_EXT_ray_cull_mask);
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);
@@ -8784,6 +8873,7 @@
BuiltInVariable("gl_RayTminEXT", EbvRayTmin, symbolTable);
BuiltInVariable("gl_RayTmaxNV", EbvRayTmax, symbolTable);
BuiltInVariable("gl_RayTmaxEXT", EbvRayTmax, symbolTable);
+ BuiltInVariable("gl_CullMaskEXT", EbvCullMask, symbolTable);
BuiltInVariable("gl_HitTNV", EbvHitT, symbolTable);
BuiltInVariable("gl_HitTEXT", EbvHitT, symbolTable);
BuiltInVariable("gl_HitKindNV", EbvHitKind, symbolTable);
@@ -8815,9 +8905,12 @@
BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable);
BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable);
- if (spvVersion.vulkan > 0)
+ if (spvVersion.vulkan > 0) {
// Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan
SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable);
+ if (language == EShLangFragment)
+ ModifyFlatDecoration("gl_SubGroupSizeARB", true, symbolTable);
+ }
else
BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable);
@@ -8861,7 +8954,7 @@
}
break;
- case EShLangMeshNV:
+ case EShLangMesh:
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
// per-vertex builtins
symbolTable.setVariableExtensions("gl_MeshVerticesNV", "gl_Position", 1, &E_GL_NV_mesh_shader);
@@ -8905,12 +8998,19 @@
symbolTable.setVariableExtensions("gl_PrimitiveIndicesNV", 1, &E_GL_NV_mesh_shader);
symbolTable.setVariableExtensions("gl_MeshViewCountNV", 1, &E_GL_NV_mesh_shader);
symbolTable.setVariableExtensions("gl_MeshViewIndicesNV", 1, &E_GL_NV_mesh_shader);
- symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_NV_mesh_shader);
- symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_NV_mesh_shader);
- symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_NV_mesh_shader);
- symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_NV_mesh_shader);
- symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_NV_mesh_shader);
-
+ if (profile != EEsProfile) {
+ symbolTable.setVariableExtensions("gl_WorkGroupSize", Num_AEP_mesh_shader, AEP_mesh_shader);
+ symbolTable.setVariableExtensions("gl_WorkGroupID", Num_AEP_mesh_shader, AEP_mesh_shader);
+ symbolTable.setVariableExtensions("gl_LocalInvocationID", Num_AEP_mesh_shader, AEP_mesh_shader);
+ symbolTable.setVariableExtensions("gl_GlobalInvocationID", Num_AEP_mesh_shader, AEP_mesh_shader);
+ symbolTable.setVariableExtensions("gl_LocalInvocationIndex", Num_AEP_mesh_shader, AEP_mesh_shader);
+ } else {
+ symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_NV_mesh_shader);
+ symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_NV_mesh_shader);
+ symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_NV_mesh_shader);
+ symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_NV_mesh_shader);
+ symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_NV_mesh_shader);
+ }
BuiltInVariable("gl_PrimitiveCountNV", EbvPrimitiveCountNV, symbolTable);
BuiltInVariable("gl_PrimitiveIndicesNV", EbvPrimitiveIndicesNV, symbolTable);
BuiltInVariable("gl_MeshViewCountNV", EbvMeshViewCountNV, symbolTable);
@@ -8928,12 +9028,54 @@
symbolTable.setVariableExtensions("gl_MaxMeshViewCountNV", 1, &E_GL_NV_mesh_shader);
// builtin functions
- symbolTable.setFunctionExtensions("barrier", 1, &E_GL_NV_mesh_shader);
- symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_NV_mesh_shader);
- symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_NV_mesh_shader);
+ if (profile != EEsProfile) {
+ symbolTable.setFunctionExtensions("barrier", Num_AEP_mesh_shader, AEP_mesh_shader);
+ symbolTable.setFunctionExtensions("memoryBarrierShared", Num_AEP_mesh_shader, AEP_mesh_shader);
+ symbolTable.setFunctionExtensions("groupMemoryBarrier", Num_AEP_mesh_shader, AEP_mesh_shader);
+ } else {
+ symbolTable.setFunctionExtensions("barrier", 1, &E_GL_NV_mesh_shader);
+ symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_NV_mesh_shader);
+ symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_NV_mesh_shader);
+ }
+ symbolTable.setFunctionExtensions("writePackedPrimitiveIndices4x8NV", 1, &E_GL_NV_mesh_shader);
}
if (profile != EEsProfile && version >= 450) {
+ // GL_EXT_Mesh_shader
+ symbolTable.setVariableExtensions("gl_PrimitivePointIndicesEXT", 1, &E_GL_EXT_mesh_shader);
+ symbolTable.setVariableExtensions("gl_PrimitiveLineIndicesEXT", 1, &E_GL_EXT_mesh_shader);
+ symbolTable.setVariableExtensions("gl_PrimitiveTriangleIndicesEXT", 1, &E_GL_EXT_mesh_shader);
+ symbolTable.setVariableExtensions("gl_NumWorkGroups", 1, &E_GL_EXT_mesh_shader);
+
+ BuiltInVariable("gl_PrimitivePointIndicesEXT", EbvPrimitivePointIndicesEXT, symbolTable);
+ BuiltInVariable("gl_PrimitiveLineIndicesEXT", EbvPrimitiveLineIndicesEXT, symbolTable);
+ BuiltInVariable("gl_PrimitiveTriangleIndicesEXT", EbvPrimitiveTriangleIndicesEXT, symbolTable);
+ BuiltInVariable("gl_NumWorkGroups", EbvNumWorkGroups, symbolTable);
+
+ symbolTable.setVariableExtensions("gl_MeshVerticesEXT", "gl_Position", 1, &E_GL_EXT_mesh_shader);
+ symbolTable.setVariableExtensions("gl_MeshVerticesEXT", "gl_PointSize", 1, &E_GL_EXT_mesh_shader);
+ symbolTable.setVariableExtensions("gl_MeshVerticesEXT", "gl_ClipDistance", 1, &E_GL_EXT_mesh_shader);
+ symbolTable.setVariableExtensions("gl_MeshVerticesEXT", "gl_CullDistance", 1, &E_GL_EXT_mesh_shader);
+
+ BuiltInVariable("gl_MeshVerticesEXT", "gl_Position", EbvPosition, symbolTable);
+ BuiltInVariable("gl_MeshVerticesEXT", "gl_PointSize", EbvPointSize, symbolTable);
+ BuiltInVariable("gl_MeshVerticesEXT", "gl_ClipDistance", EbvClipDistance, symbolTable);
+ BuiltInVariable("gl_MeshVerticesEXT", "gl_CullDistance", EbvCullDistance, symbolTable);
+
+ symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_PrimitiveID", 1, &E_GL_EXT_mesh_shader);
+ symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_Layer", 1, &E_GL_EXT_mesh_shader);
+ symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_ViewportIndex", 1, &E_GL_EXT_mesh_shader);
+ symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_CullPrimitiveEXT", 1, &E_GL_EXT_mesh_shader);
+ symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_PrimitiveShadingRateEXT", 1, &E_GL_EXT_mesh_shader);
+
+ BuiltInVariable("gl_MeshPrimitivesEXT", "gl_PrimitiveID", EbvPrimitiveId, symbolTable);
+ BuiltInVariable("gl_MeshPrimitivesEXT", "gl_Layer", EbvLayer, symbolTable);
+ BuiltInVariable("gl_MeshPrimitivesEXT", "gl_ViewportIndex", EbvViewportIndex, symbolTable);
+ BuiltInVariable("gl_MeshPrimitivesEXT", "gl_CullPrimitiveEXT", EbvCullPrimitiveEXT, symbolTable);
+ BuiltInVariable("gl_MeshPrimitivesEXT", "gl_PrimitiveShadingRateEXT", EbvPrimitiveShadingRateKHR, symbolTable);
+
+ symbolTable.setFunctionExtensions("SetMeshOutputsEXT", 1, &E_GL_EXT_mesh_shader);
+
// GL_EXT_device_group
symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group);
BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable);
@@ -8944,6 +9086,9 @@
if (version >= 460) {
BuiltInVariable("gl_DrawID", EbvDrawId, symbolTable);
}
+ // GL_EXT_multiview
+ BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable);
+ symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview);
// GL_ARB_shader_ballot
symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot);
@@ -8961,9 +9106,12 @@
BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable);
BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable);
- if (spvVersion.vulkan > 0)
+ if (spvVersion.vulkan > 0) {
// Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan
SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable);
+ if (language == EShLangFragment)
+ ModifyFlatDecoration("gl_SubGroupSizeARB", true, symbolTable);
+ }
else
BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable);
}
@@ -9013,16 +9161,24 @@
}
break;
- case EShLangTaskNV:
+ case EShLangTask:
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
symbolTable.setVariableExtensions("gl_TaskCountNV", 1, &E_GL_NV_mesh_shader);
- symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_NV_mesh_shader);
- symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_NV_mesh_shader);
- symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_NV_mesh_shader);
- symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_NV_mesh_shader);
- symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_NV_mesh_shader);
symbolTable.setVariableExtensions("gl_MeshViewCountNV", 1, &E_GL_NV_mesh_shader);
symbolTable.setVariableExtensions("gl_MeshViewIndicesNV", 1, &E_GL_NV_mesh_shader);
+ if (profile != EEsProfile) {
+ symbolTable.setVariableExtensions("gl_WorkGroupSize", Num_AEP_mesh_shader, AEP_mesh_shader);
+ symbolTable.setVariableExtensions("gl_WorkGroupID", Num_AEP_mesh_shader, AEP_mesh_shader);
+ symbolTable.setVariableExtensions("gl_LocalInvocationID", Num_AEP_mesh_shader, AEP_mesh_shader);
+ symbolTable.setVariableExtensions("gl_GlobalInvocationID", Num_AEP_mesh_shader, AEP_mesh_shader);
+ symbolTable.setVariableExtensions("gl_LocalInvocationIndex", Num_AEP_mesh_shader, AEP_mesh_shader);
+ } else {
+ symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_NV_mesh_shader);
+ symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_NV_mesh_shader);
+ symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_NV_mesh_shader);
+ symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_NV_mesh_shader);
+ symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_NV_mesh_shader);
+ }
BuiltInVariable("gl_TaskCountNV", EbvTaskCountNV, symbolTable);
BuiltInVariable("gl_WorkGroupSize", EbvWorkGroupSize, symbolTable);
@@ -9036,12 +9192,23 @@
symbolTable.setVariableExtensions("gl_MaxTaskWorkGroupSizeNV", 1, &E_GL_NV_mesh_shader);
symbolTable.setVariableExtensions("gl_MaxMeshViewCountNV", 1, &E_GL_NV_mesh_shader);
- symbolTable.setFunctionExtensions("barrier", 1, &E_GL_NV_mesh_shader);
- symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_NV_mesh_shader);
- symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_NV_mesh_shader);
+ if (profile != EEsProfile) {
+ symbolTable.setFunctionExtensions("barrier", Num_AEP_mesh_shader, AEP_mesh_shader);
+ symbolTable.setFunctionExtensions("memoryBarrierShared", Num_AEP_mesh_shader, AEP_mesh_shader);
+ symbolTable.setFunctionExtensions("groupMemoryBarrier", Num_AEP_mesh_shader, AEP_mesh_shader);
+ } else {
+ symbolTable.setFunctionExtensions("barrier", 1, &E_GL_NV_mesh_shader);
+ symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_NV_mesh_shader);
+ symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_NV_mesh_shader);
+ }
}
if (profile != EEsProfile && version >= 450) {
+ // GL_EXT_mesh_shader
+ symbolTable.setFunctionExtensions("EmitMeshTasksEXT", 1, &E_GL_EXT_mesh_shader);
+ symbolTable.setVariableExtensions("gl_NumWorkGroups", 1, &E_GL_EXT_mesh_shader);
+ BuiltInVariable("gl_NumWorkGroups", EbvNumWorkGroups, symbolTable);
+
// GL_EXT_device_group
symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group);
BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable);
@@ -9069,9 +9236,12 @@
BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable);
BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable);
- if (spvVersion.vulkan > 0)
+ if (spvVersion.vulkan > 0) {
// Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan
SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable);
+ if (language == EShLangFragment)
+ ModifyFlatDecoration("gl_SubGroupSizeARB", true, symbolTable);
+ }
else
BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable);
}
@@ -9665,17 +9835,27 @@
symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR);
}
break;
- case EShLangMeshNV:
+ case EShLangMesh:
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
symbolTable.relateToOperator("writePackedPrimitiveIndices4x8NV", EOpWritePackedPrimitiveIndices4x8NV);
+ symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared);
+ symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier);
+ symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared);
}
- // fall through
- case EShLangTaskNV:
+
+ if (profile != EEsProfile && version >= 450) {
+ symbolTable.relateToOperator("SetMeshOutputsEXT", EOpSetMeshOutputsEXT);
+ }
+ break;
+ case EShLangTask:
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared);
symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier);
symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared);
}
+ if (profile != EEsProfile && version >= 450) {
+ symbolTable.relateToOperator("EmitMeshTasksEXT", EOpEmitMeshTasksEXT);
+ }
break;
default:
diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp
index 1283f44..6a43ef3 100644
--- a/glslang/MachineIndependent/Intermediate.cpp
+++ b/glslang/MachineIndependent/Intermediate.cpp
@@ -2733,10 +2733,10 @@
TIntermAggregate* loopSequence = (initializer == nullptr ||
initializer->getAsAggregate() == nullptr) ? makeAggregate(initializer, loc)
: initializer->getAsAggregate();
- if (loopSequence != nullptr && loopSequence->getOp() == EOpSequence)
+ if (loopSequence != nullptr && (loopSequence->getOp() == EOpSequence || loopSequence->getOp() == EOpScope))
loopSequence->setOp(EOpNull);
loopSequence = growAggregate(loopSequence, node);
- loopSequence->setOperator(EOpSequence);
+ loopSequence->setOperator(getDebugInfo() ? EOpScope : EOpSequence);
return loopSequence;
}
@@ -2766,7 +2766,7 @@
return;
if (exp->getBasicType() == EbtInt || exp->getBasicType() == EbtUint ||
- exp->getBasicType() == EbtFloat || exp->getBasicType() == EbtFloat16) {
+ exp->getBasicType() == EbtFloat) {
if (parentPrecision != EpqNone && exp->getQualifier().precision == EpqNone) {
exp->propagatePrecision(parentPrecision);
}
@@ -3284,7 +3284,7 @@
void TIntermUnary::updatePrecision()
{
if (getBasicType() == EbtInt || getBasicType() == EbtUint ||
- getBasicType() == EbtFloat || getBasicType() == EbtFloat16) {
+ getBasicType() == EbtFloat) {
if (operand->getQualifier().precision > getQualifier().precision)
getQualifier().precision = operand->getQualifier().precision;
}
@@ -3785,7 +3785,7 @@
void TIntermAggregate::updatePrecision()
{
if (getBasicType() == EbtInt || getBasicType() == EbtUint ||
- getBasicType() == EbtFloat || getBasicType() == EbtFloat16) {
+ getBasicType() == EbtFloat) {
TPrecisionQualifier maxPrecision = EpqNone;
TIntermSequence operands = getSequence();
for (unsigned int i = 0; i < operands.size(); ++i) {
@@ -3807,7 +3807,7 @@
void TIntermBinary::updatePrecision()
{
if (getBasicType() == EbtInt || getBasicType() == EbtUint ||
- getBasicType() == EbtFloat || getBasicType() == EbtFloat16) {
+ getBasicType() == EbtFloat) {
if (op == EOpRightShift || op == EOpLeftShift) {
// For shifts get precision from left side only and thus no need to propagate
getQualifier().precision = left->getQualifier().precision;
@@ -3902,7 +3902,7 @@
case EbtFloat16: PROMOTE(setDConst, double, Get); break; \
case EbtFloat: PROMOTE(setDConst, double, Get); break; \
case EbtDouble: PROMOTE(setDConst, double, Get); break; \
- case EbtInt8: PROMOTE(setI8Const, char, Get); break; \
+ case EbtInt8: PROMOTE(setI8Const, signed char, Get); break; \
case EbtInt16: PROMOTE(setI16Const, short, Get); break; \
case EbtInt: PROMOTE(setIConst, int, Get); break; \
case EbtInt64: PROMOTE(setI64Const, long long, Get); break; \
diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp
index 1da50d6..616580f 100644
--- a/glslang/MachineIndependent/ParseContextBase.cpp
+++ b/glslang/MachineIndependent/ParseContextBase.cpp
@@ -74,6 +74,9 @@
{
if (messages & EShMsgOnlyPreprocessor)
return;
+ // If enhanced msg readability, only print one error
+ if (messages & EShMsgEnhanced && numErrors > 0)
+ return;
va_list args;
va_start(args, szExtraInfoFormat);
outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args);
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index 7f2f171..e2ac43c 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -502,6 +502,16 @@
error(loc, "cannot be used (maybe an instance name is needed)", string->c_str(), "");
variable = nullptr;
}
+
+ if (language == EShLangMesh && variable) {
+ TLayoutGeometry primitiveType = intermediate.getOutputPrimitive();
+ if ((variable->getMangledName() == "gl_PrimitiveTriangleIndicesEXT" && primitiveType != ElgTriangles) ||
+ (variable->getMangledName() == "gl_PrimitiveLineIndicesEXT" && primitiveType != ElgLines) ||
+ (variable->getMangledName() == "gl_PrimitivePointIndicesEXT" && primitiveType != ElgPoints)) {
+ error(loc, "cannot be used (ouput primitive type mismatch)", string->c_str(), "");
+ variable = nullptr;
+ }
+ }
} else {
if (symbol)
error(loc, "variable name expected", string->c_str(), "");
@@ -716,8 +726,8 @@
(language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut &&
! type.getQualifier().patch) ||
(language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn &&
- type.getQualifier().pervertexNV) ||
- (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut &&
+ (type.getQualifier().pervertexNV || type.getQualifier().pervertexEXT)) ||
+ (language == EShLangMesh && type.getQualifier().storage == EvqVaryingOut &&
!type.getQualifier().perTaskNV));
}
@@ -794,7 +804,7 @@
// As I/O array sizes don't change, fetch requiredSize only once,
// except for mesh shaders which could have different I/O array sizes based on type qualifiers.
- if (firstIteration || (language == EShLangMeshNV)) {
+ if (firstIteration || (language == EShLangMesh)) {
requiredSize = getIoArrayImplicitSize(type.getQualifier(), &featureString);
if (requiredSize == 0)
break;
@@ -823,10 +833,11 @@
// Number of vertices for Fragment shader is always three.
expectedSize = 3;
str = "vertices";
- } else if (language == EShLangMeshNV) {
+ } else if (language == EShLangMesh) {
unsigned int maxPrimitives =
intermediate.getPrimitives() != TQualifier::layoutNotSet ? intermediate.getPrimitives() : 0;
- if (qualifier.builtIn == EbvPrimitiveIndicesNV) {
+ if (qualifier.builtIn == EbvPrimitiveIndicesNV || qualifier.builtIn == EbvPrimitiveTriangleIndicesEXT ||
+ qualifier.builtIn == EbvPrimitiveLineIndicesEXT || qualifier.builtIn == EbvPrimitivePointIndicesEXT) {
expectedSize = maxPrimitives * TQualifier::mapGeometryToSize(intermediate.getOutputPrimitive());
str = "max_primitives*";
str += TQualifier::getGeometryString(intermediate.getOutputPrimitive());
@@ -856,9 +867,9 @@
error(loc, "inconsistent output number of vertices for array size of", feature, name.c_str());
else if (language == EShLangFragment) {
if (type.getOuterArraySize() > requiredSize)
- error(loc, " cannot be greater than 3 for pervertexNV", feature, name.c_str());
+ error(loc, " cannot be greater than 3 for pervertexEXT", feature, name.c_str());
}
- else if (language == EShLangMeshNV)
+ else if (language == EShLangMesh)
error(loc, "inconsistent output array size of", feature, name.c_str());
else
assert(0);
@@ -902,8 +913,10 @@
result = intermediate.addBinaryMath(op, left, right, loc);
}
- if (result == nullptr)
- binaryOpError(loc, str, left->getCompleteString(), right->getCompleteString());
+ if (result == nullptr) {
+ bool enhanced = intermediate.getEnhancedMsgs();
+ binaryOpError(loc, str, left->getCompleteString(enhanced), right->getCompleteString(enhanced));
+ }
return result;
}
@@ -926,8 +939,10 @@
if (result)
return result;
- else
- unaryOpError(loc, str, childNode->getCompleteString());
+ else {
+ bool enhanced = intermediate.getEnhancedMsgs();
+ unaryOpError(loc, str, childNode->getCompleteString(enhanced));
+ }
return childNode;
}
@@ -953,8 +968,8 @@
requireProfile(loc, ~EEsProfile, feature);
profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, feature);
} else if (!base->getType().isCoopMat()) {
- error(loc, "does not operate on this type:", field.c_str(), base->getType().getCompleteString().c_str());
-
+ bool enhanced = intermediate.getEnhancedMsgs();
+ error(loc, "does not operate on this type:", field.c_str(), base->getType().getCompleteString(enhanced).c_str());
return base;
}
@@ -1005,10 +1020,16 @@
intermediate.addIoAccessed(field);
}
inheritMemoryQualifiers(base->getQualifier(), result->getWritableType().getQualifier());
- } else
- error(loc, "no such field in structure", field.c_str(), "");
+ } else {
+ auto baseSymbol = base;
+ while (baseSymbol->getAsSymbolNode() == nullptr)
+ baseSymbol = baseSymbol->getAsBinaryNode()->getLeft();
+ TString structName;
+ structName.append("\'").append(baseSymbol->getAsSymbolNode()->getName().c_str()).append( "\'");
+ error(loc, "no such field in structure", field.c_str(), structName.c_str());
+ }
} else
- error(loc, "does not apply to this type:", field.c_str(), base->getType().getCompleteString().c_str());
+ error(loc, "does not apply to this type:", field.c_str(), base->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str());
// Propagate noContraction up the dereference chain
if (base->getQualifier().isNoContraction())
@@ -1314,14 +1335,14 @@
//
result = addConstructor(loc, arguments, type);
if (result == nullptr)
- error(loc, "cannot construct with these arguments", type.getCompleteString().c_str(), "");
+ error(loc, "cannot construct with these arguments", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str(), "");
}
} else {
//
// Find it in the symbol table.
//
const TFunction* fnCandidate;
- bool builtIn;
+ bool builtIn {false};
fnCandidate = findFunction(loc, *function, builtIn);
if (fnCandidate) {
// This is a declared function that might map to
@@ -1494,7 +1515,7 @@
else
error(arguments->getLoc(), " wrong operand type", "Internal Error",
"built in unary operator function. Type: %s",
- static_cast<TIntermTyped*>(arguments)->getCompleteString().c_str());
+ static_cast<TIntermTyped*>(arguments)->getCompleteString(intermediate.getEnhancedMsgs()).c_str());
} else if (result->getAsOperator())
builtInOpCheck(loc, function, *result->getAsOperator());
@@ -1990,18 +2011,18 @@
break;
}
- if ((semantics & gl_SemanticsAcquire) &&
+ if ((semantics & gl_SemanticsAcquire) &&
(callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore)) {
error(loc, "gl_SemanticsAcquire must not be used with (image) atomic store",
fnCandidate.getName().c_str(), "");
}
- if ((semantics & gl_SemanticsRelease) &&
+ if ((semantics & gl_SemanticsRelease) &&
(callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpImageAtomicLoad)) {
error(loc, "gl_SemanticsRelease must not be used with (image) atomic load",
fnCandidate.getName().c_str(), "");
}
- if ((semantics & gl_SemanticsAcquireRelease) &&
- (callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore ||
+ if ((semantics & gl_SemanticsAcquireRelease) &&
+ (callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore ||
callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpImageAtomicLoad)) {
error(loc, "gl_SemanticsAcquireRelease must not be used with (image) atomic load/store",
fnCandidate.getName().c_str(), "");
@@ -2317,7 +2338,7 @@
error(loc, "argument must be compile-time constant", "payload number", "a");
else {
unsigned int location = (*argp)[10]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst();
- if (intermediate.checkLocationRT(0, location) < 0)
+ if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(0, location) < 0)
error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location);
}
break;
@@ -2330,7 +2351,7 @@
error(loc, "argument must be compile-time constant", "callable data number", "");
else {
unsigned int location = (*argp)[1]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst();
- if (intermediate.checkLocationRT(1, location) < 0)
+ if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(1, location) < 0)
error(loc, "with layout(location =", "no callableDataEXT/callableDataInEXT declared", "%d)", location);
}
break;
@@ -2452,7 +2473,7 @@
const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true , true);
const TType* refType = (base->getType().isReference()) ? base->getType().getReferentType() : nullptr;
const TQualifier& qualifier = (refType != nullptr) ? refType->getQualifier() : base->getType().getQualifier();
- if (qualifier.storage != EvqShared && qualifier.storage != EvqBuffer)
+ if (qualifier.storage != EvqShared && qualifier.storage != EvqBuffer && qualifier.storage != EvqtaskPayloadSharedEXT)
error(loc,"Atomic memory function can only be used for shader storage block member or shared variable.",
fnCandidate.getName().c_str(), "");
@@ -2495,6 +2516,8 @@
case EOpEmitStreamVertex:
case EOpEndStreamPrimitive:
+ if (version == 150)
+ requireExtensions(loc, 1, &E_GL_ARB_gpu_shader5, "if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5");
intermediate.setMultiStream();
break;
@@ -2548,7 +2571,7 @@
}
if (profile != EEsProfile && version < 450) {
- if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat &&
+ if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat &&
(*argp)[0]->getAsTyped()->getBasicType() != EbtDouble &&
(*argp)[1]->getAsTyped()->getBasicType() != EbtFloat &&
(*argp)[1]->getAsTyped()->getBasicType() != EbtDouble &&
@@ -2597,23 +2620,24 @@
// Check that if extended types are being used that the correct extensions are enabled.
if (arg0 != nullptr) {
const TType& type = arg0->getType();
+ bool enhanced = intermediate.getEnhancedMsgs();
switch (type.getBasicType()) {
default:
break;
case EbtInt8:
case EbtUint8:
- requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int8, type.getCompleteString().c_str());
+ requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int8, type.getCompleteString(enhanced).c_str());
break;
case EbtInt16:
case EbtUint16:
- requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int16, type.getCompleteString().c_str());
+ requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int16, type.getCompleteString(enhanced).c_str());
break;
case EbtInt64:
case EbtUint64:
- requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int64, type.getCompleteString().c_str());
+ requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int64, type.getCompleteString(enhanced).c_str());
break;
case EbtFloat16:
- requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_float16, type.getCompleteString().c_str());
+ requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_float16, type.getCompleteString(enhanced).c_str());
break;
}
}
@@ -2786,7 +2810,10 @@
TOperator op = intermediate.mapTypeToConstructorOp(type);
if (op == EOpNull) {
- error(loc, "cannot construct this type", type.getBasicString(), "");
+ if (intermediate.getEnhancedMsgs() && type.getBasicType() == EbtSampler)
+ error(loc, "function not supported in this version; use texture() instead", "texture*D*", "");
+ else
+ error(loc, "cannot construct this type", type.getBasicString(), "");
op = EOpConstructFloat;
TType errorType(EbtFloat);
type.shallowCopy(errorType);
@@ -2972,7 +2999,17 @@
if (isEsProfile() && intermediate.getEarlyFragmentTests())
message = "can't modify gl_FragDepth if using early_fragment_tests";
break;
+ case EvqFragStencil:
+ intermediate.setStencilReplacing();
+ // "In addition, it is an error to statically write to gl_FragDepth in the fragment shader."
+ if (isEsProfile() && intermediate.getEarlyFragmentTests())
+ message = "can't modify EvqFragStencil if using early_fragment_tests";
+ break;
+ case EvqtaskPayloadSharedEXT:
+ if (language == EShLangMesh)
+ message = "can't modify variable with storage qualifier taskPayloadSharedEXT in mesh shaders";
+ break;
default:
break;
}
@@ -3011,7 +3048,7 @@
if (symNode && symNode->getQualifier().isExplicitInterpolation())
error(loc, "can't read from explicitly-interpolated object: ", op, symNode->getName().c_str());
- // local_size_{xyz} must be assigned or specialized before gl_WorkGroupSize can be assigned.
+ // local_size_{xyz} must be assigned or specialized before gl_WorkGroupSize can be assigned.
if(node->getQualifier().builtIn == EbvWorkGroupSize &&
!(intermediate.isLocalSizeSet() || intermediate.isLocalSizeSpecialized()))
error(loc, "can't read from gl_WorkGroupSize before a fixed workgroup size has been declared", op, "");
@@ -3196,6 +3233,12 @@
break;
}
+ TString constructorString;
+ if (intermediate.getEnhancedMsgs())
+ constructorString.append(type.getCompleteString(true, false, false, true)).append(" constructor");
+ else
+ constructorString.append("constructor");
+
// See if it's a matrix
bool constructingMatrix = false;
switch (op) {
@@ -3253,7 +3296,7 @@
if (function[arg].type->isArray()) {
if (function[arg].type->isUnsizedArray()) {
// Can't construct from an unsized array.
- error(loc, "array argument must be sized", "constructor", "");
+ error(loc, "array argument must be sized", constructorString.c_str(), "");
return true;
}
arrayArg = true;
@@ -3283,13 +3326,13 @@
intArgument = true;
if (type.isStruct()) {
if (function[arg].type->contains16BitFloat()) {
- requireFloat16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type");
+ requireFloat16Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 16-bit type");
}
if (function[arg].type->contains16BitInt()) {
- requireInt16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type");
+ requireInt16Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 16-bit type");
}
if (function[arg].type->contains8BitInt()) {
- requireInt8Arithmetic(loc, "constructor", "can't construct structure containing 8-bit type");
+ requireInt8Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 8-bit type");
}
}
}
@@ -3303,9 +3346,9 @@
case EOpConstructF16Vec3:
case EOpConstructF16Vec4:
if (type.isArray())
- requireFloat16Arithmetic(loc, "constructor", "16-bit arrays not supported");
+ requireFloat16Arithmetic(loc, constructorString.c_str(), "16-bit arrays not supported");
if (type.isVector() && function.getParamCount() != 1)
- requireFloat16Arithmetic(loc, "constructor", "16-bit vectors only take vector types");
+ requireFloat16Arithmetic(loc, constructorString.c_str(), "16-bit vectors only take vector types");
break;
case EOpConstructUint16:
case EOpConstructU16Vec2:
@@ -3316,9 +3359,9 @@
case EOpConstructI16Vec3:
case EOpConstructI16Vec4:
if (type.isArray())
- requireInt16Arithmetic(loc, "constructor", "16-bit arrays not supported");
+ requireInt16Arithmetic(loc, constructorString.c_str(), "16-bit arrays not supported");
if (type.isVector() && function.getParamCount() != 1)
- requireInt16Arithmetic(loc, "constructor", "16-bit vectors only take vector types");
+ requireInt16Arithmetic(loc, constructorString.c_str(), "16-bit vectors only take vector types");
break;
case EOpConstructUint8:
case EOpConstructU8Vec2:
@@ -3329,9 +3372,9 @@
case EOpConstructI8Vec3:
case EOpConstructI8Vec4:
if (type.isArray())
- requireInt8Arithmetic(loc, "constructor", "8-bit arrays not supported");
+ requireInt8Arithmetic(loc, constructorString.c_str(), "8-bit arrays not supported");
if (type.isVector() && function.getParamCount() != 1)
- requireInt8Arithmetic(loc, "constructor", "8-bit vectors only take vector types");
+ requireInt8Arithmetic(loc, constructorString.c_str(), "8-bit vectors only take vector types");
break;
default:
break;
@@ -3413,7 +3456,7 @@
if (type.isArray()) {
if (function.getParamCount() == 0) {
- error(loc, "array constructor must have at least one argument", "constructor", "");
+ error(loc, "array constructor must have at least one argument", constructorString.c_str(), "");
return true;
}
@@ -3421,7 +3464,7 @@
// auto adapt the constructor type to the number of arguments
type.changeOuterArraySize(function.getParamCount());
} else if (type.getOuterArraySize() != function.getParamCount()) {
- error(loc, "array constructor needs one argument per array element", "constructor", "");
+ error(loc, "array constructor needs one argument per array element", constructorString.c_str(), "");
return true;
}
@@ -3434,7 +3477,7 @@
// At least the dimensionalities have to match.
if (! function[0].type->isArray() ||
arraySizes.getNumDims() != function[0].type->getArraySizes()->getNumDims() + 1) {
- error(loc, "array constructor argument not correct type to construct array element", "constructor", "");
+ error(loc, "array constructor argument not correct type to construct array element", constructorString.c_str(), "");
return true;
}
@@ -3451,7 +3494,7 @@
}
if (arrayArg && op != EOpConstructStruct && ! type.isArrayOfArrays()) {
- error(loc, "constructing non-array constituent from array argument", "constructor", "");
+ error(loc, "constructing non-array constituent from array argument", constructorString.c_str(), "");
return true;
}
@@ -3461,51 +3504,51 @@
// "If a matrix argument is given to a matrix constructor,
// it is a compile-time error to have any other arguments."
if (function.getParamCount() != 1)
- error(loc, "matrix constructed from matrix can only have one argument", "constructor", "");
+ error(loc, "matrix constructed from matrix can only have one argument", constructorString.c_str(), "");
return false;
}
if (overFull) {
- error(loc, "too many arguments", "constructor", "");
+ error(loc, "too many arguments", constructorString.c_str(), "");
return true;
}
if (op == EOpConstructStruct && ! type.isArray() && (int)type.getStruct()->size() != function.getParamCount()) {
- error(loc, "Number of constructor parameters does not match the number of structure fields", "constructor", "");
+ error(loc, "Number of constructor parameters does not match the number of structure fields", constructorString.c_str(), "");
return true;
}
if ((op != EOpConstructStruct && size != 1 && size < type.computeNumComponents()) ||
(op == EOpConstructStruct && size < type.computeNumComponents())) {
- error(loc, "not enough data provided for construction", "constructor", "");
+ error(loc, "not enough data provided for construction", constructorString.c_str(), "");
return true;
}
if (type.isCoopMat() && function.getParamCount() != 1) {
- error(loc, "wrong number of arguments", "constructor", "");
+ error(loc, "wrong number of arguments", constructorString.c_str(), "");
return true;
}
if (type.isCoopMat() &&
!(function[0].type->isScalar() || function[0].type->isCoopMat())) {
- error(loc, "Cooperative matrix constructor argument must be scalar or cooperative matrix", "constructor", "");
+ error(loc, "Cooperative matrix constructor argument must be scalar or cooperative matrix", constructorString.c_str(), "");
return true;
}
TIntermTyped* typed = node->getAsTyped();
if (typed == nullptr) {
- error(loc, "constructor argument does not have a type", "constructor", "");
+ error(loc, "constructor argument does not have a type", constructorString.c_str(), "");
return true;
}
if (op != EOpConstructStruct && op != EOpConstructNonuniform && typed->getBasicType() == EbtSampler) {
- error(loc, "cannot convert a sampler", "constructor", "");
+ error(loc, "cannot convert a sampler", constructorString.c_str(), "");
return true;
}
if (op != EOpConstructStruct && typed->isAtomic()) {
- error(loc, "cannot convert an atomic_uint", "constructor", "");
+ error(loc, "cannot convert an atomic_uint", constructorString.c_str(), "");
return true;
}
if (typed->getBasicType() == EbtVoid) {
- error(loc, "cannot convert a void", "constructor", "");
+ error(loc, "cannot convert a void", constructorString.c_str(), "");
return true;
}
@@ -3784,7 +3827,7 @@
if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble)
profileRequires(loc, EEsProfile, 300, nullptr, "shader input/output");
- if (!qualifier.flat && !qualifier.isExplicitInterpolation() && !qualifier.isPervertexNV()) {
+ if (!qualifier.flat && !qualifier.isExplicitInterpolation() && !qualifier.isPervertexNV() && !qualifier.isPervertexEXT()) {
if (isTypeInt(publicType.basicType) ||
publicType.basicType == EbtDouble ||
(publicType.userDef && ( publicType.userDef->containsBasicType(EbtInt)
@@ -3803,6 +3846,9 @@
if (qualifier.isPatch() && qualifier.isInterpolation())
error(loc, "cannot use interpolation qualifiers with patch", "patch", "");
+ if (qualifier.isTaskPayload() && publicType.basicType == EbtBlock)
+ error(loc, "taskPayloadSharedEXT variables should not be declared as interface blocks", "taskPayloadSharedEXT", "");
+
if (qualifier.isTaskMemory() && publicType.basicType != EbtBlock)
error(loc, "taskNV variables can be declared only as blocks", "taskNV", "");
@@ -3960,7 +4006,7 @@
(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",
+ error(loc, "only one coherent/devicecoherent/queuefamilycoherent/workgroupcoherent/subgroupcoherent/shadercallcoherent qualifier allowed",
GetPrecisionQualifierString(src.precision), "");
}
#endif
@@ -4318,10 +4364,10 @@
extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader))
return;
break;
- case EShLangMeshNV:
+ case EShLangMesh:
if (qualifier.storage == EvqVaryingOut)
if ((isEsProfile() && version >= 320) ||
- extensionTurnedOn(E_GL_NV_mesh_shader))
+ extensionsTurnedOn(Num_AEP_mesh_shader, AEP_mesh_shader))
return;
break;
default:
@@ -4589,7 +4635,7 @@
if (ssoPre150 ||
(identifier == "gl_FragDepth" && ((nonEsRedecls && version >= 420) || esRedecls)) ||
- (identifier == "gl_FragCoord" && ((nonEsRedecls && version >= 150) || esRedecls)) ||
+ (identifier == "gl_FragCoord" && ((nonEsRedecls && version >= 140) || esRedecls)) ||
identifier == "gl_ClipDistance" ||
identifier == "gl_CullDistance" ||
identifier == "gl_ShadingRateEXT" ||
@@ -4605,6 +4651,9 @@
identifier == "gl_SampleMask" ||
identifier == "gl_Layer" ||
identifier == "gl_PrimitiveIndicesNV" ||
+ identifier == "gl_PrimitivePointIndicesEXT" ||
+ identifier == "gl_PrimitiveLineIndicesEXT" ||
+ identifier == "gl_PrimitiveTriangleIndicesEXT" ||
identifier == "gl_TexCoord") {
// Find the existing symbol, if any.
@@ -4658,7 +4707,7 @@
symbolQualifier.storage != qualifier.storage)
error(loc, "cannot change qualification of", "redeclaration", symbol->getName().c_str());
} else if (identifier == "gl_FragCoord") {
- if (intermediate.inIoAccessed("gl_FragCoord"))
+ if (!intermediate.getTexCoordRedeclared() && intermediate.inIoAccessed("gl_FragCoord"))
error(loc, "cannot redeclare after use", "gl_FragCoord", "");
if (qualifier.nopersp != symbolQualifier.nopersp || qualifier.flat != symbolQualifier.flat ||
qualifier.isMemory() || qualifier.isAuxiliary())
@@ -4668,6 +4717,9 @@
if (! builtIn && (publicType.pixelCenterInteger != intermediate.getPixelCenterInteger() ||
publicType.originUpperLeft != intermediate.getOriginUpperLeft()))
error(loc, "cannot redeclare with different qualification:", "redeclaration", symbol->getName().c_str());
+
+
+ intermediate.setTexCoordRedeclared();
if (publicType.pixelCenterInteger)
intermediate.setPixelCenterInteger();
if (publicType.originUpperLeft)
@@ -4684,10 +4736,22 @@
if (! intermediate.setDepth(publicType.layoutDepth))
error(loc, "all redeclarations must use the same depth layout on", "redeclaration", symbol->getName().c_str());
}
+ } else if (identifier == "gl_FragStencilRefARB") {
+ if (qualifier.nopersp != symbolQualifier.nopersp || qualifier.flat != symbolQualifier.flat ||
+ qualifier.isMemory() || qualifier.isAuxiliary())
+ error(loc, "can only change layout qualification of", "redeclaration", symbol->getName().c_str());
+ if (qualifier.storage != EvqVaryingOut)
+ error(loc, "cannot change output storage qualification of", "redeclaration", symbol->getName().c_str());
+ if (publicType.layoutStencil != ElsNone) {
+ if (intermediate.inIoAccessed("gl_FragStencilRefARB"))
+ error(loc, "cannot redeclare after use", "gl_FragStencilRefARB", "");
+ if (!intermediate.setStencil(publicType.layoutStencil))
+ error(loc, "all redeclarations must use the same stencil layout on", "redeclaration",
+ symbol->getName().c_str());
+ }
}
else if (
- identifier == "gl_PrimitiveIndicesNV" ||
- identifier == "gl_FragStencilRefARB") {
+ identifier == "gl_PrimitiveIndicesNV") {
if (qualifier.hasLayout())
error(loc, "cannot apply layout qualifier to", "redeclaration", symbol->getName().c_str());
if (qualifier.storage != EvqVaryingOut)
@@ -4728,7 +4792,8 @@
profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_separate_shader_objects, feature);
if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment" &&
- blockName != "gl_MeshPerVertexNV" && blockName != "gl_MeshPerPrimitiveNV") {
+ blockName != "gl_MeshPerVertexNV" && blockName != "gl_MeshPerPrimitiveNV" &&
+ blockName != "gl_MeshPerVertexEXT" && blockName != "gl_MeshPerPrimitiveEXT") {
error(loc, "cannot redeclare block: ", "block declaration", blockName.c_str());
return;
}
@@ -5297,11 +5362,11 @@
if (!isEsProfile() && version < 430)
requireExtensions(getCurrentLoc(), 1, &E_GL_ARB_compute_shader, "compute shaders");
break;
- case EShLangTaskNV:
- requireExtensions(getCurrentLoc(), 1, &E_GL_NV_mesh_shader, "task shaders");
+ case EShLangTask:
+ requireExtensions(getCurrentLoc(), Num_AEP_mesh_shader, AEP_mesh_shader, "task shaders");
break;
- case EShLangMeshNV:
- requireExtensions(getCurrentLoc(), 1, &E_GL_NV_mesh_shader, "mesh shaders");
+ case EShLangMesh:
+ requireExtensions(getCurrentLoc(), Num_AEP_mesh_shader, AEP_mesh_shader, "mesh shaders");
break;
default:
break;
@@ -5411,12 +5476,12 @@
intermediate.setUsePhysicalStorageBuffer();
return;
}
- if (language == EShLangGeometry || language == EShLangTessEvaluation || language == EShLangMeshNV) {
+ if (language == EShLangGeometry || language == EShLangTessEvaluation || language == EShLangMesh) {
if (id == TQualifier::getGeometryString(ElgTriangles)) {
publicType.shaderQualifiers.geometry = ElgTriangles;
return;
}
- if (language == EShLangGeometry || language == EShLangMeshNV) {
+ if (language == EShLangGeometry || language == EShLangMesh) {
if (id == TQualifier::getGeometryString(ElgPoints)) {
publicType.shaderQualifiers.geometry = ElgPoints;
return;
@@ -5499,12 +5564,19 @@
}
if (language == EShLangFragment) {
if (id == "origin_upper_left") {
- requireProfile(loc, ECoreProfile | ECompatibilityProfile, "origin_upper_left");
+ requireProfile(loc, ECoreProfile | ECompatibilityProfile | ENoProfile, "origin_upper_left");
+ if (profile == ENoProfile) {
+ profileRequires(loc,ECoreProfile | ECompatibilityProfile, 140, E_GL_ARB_fragment_coord_conventions, "origin_upper_left");
+ }
+
publicType.shaderQualifiers.originUpperLeft = true;
return;
}
if (id == "pixel_center_integer") {
- requireProfile(loc, ECoreProfile | ECompatibilityProfile, "pixel_center_integer");
+ requireProfile(loc, ECoreProfile | ECompatibilityProfile | ENoProfile, "pixel_center_integer");
+ if (profile == ENoProfile) {
+ profileRequires(loc,ECoreProfile | ECompatibilityProfile, 140, E_GL_ARB_fragment_coord_conventions, "pixel_center_integer");
+ }
publicType.shaderQualifiers.pixelCenterInteger = true;
return;
}
@@ -5514,6 +5586,12 @@
publicType.shaderQualifiers.earlyFragmentTests = true;
return;
}
+ if (id == "early_and_late_fragment_tests_amd") {
+ profileRequires(loc, ENoProfile | ECoreProfile | ECompatibilityProfile, 420, E_GL_AMD_shader_early_and_late_fragment_tests, "early_and_late_fragment_tests_amd");
+ profileRequires(loc, EEsProfile, 310, nullptr, "early_and_late_fragment_tests_amd");
+ publicType.shaderQualifiers.earlyAndLateFragmentTestsAMD = true;
+ return;
+ }
if (id == "post_depth_coverage") {
requireExtensions(loc, Num_post_depth_coverageEXTs, post_depth_coverageEXTs, "post depth coverage");
if (extensionTurnedOn(E_GL_ARB_post_depth_coverage)) {
@@ -5530,6 +5608,14 @@
return;
}
}
+ for (TLayoutStencil stencil = (TLayoutStencil)(ElsNone + 1); stencil < ElsCount; stencil = (TLayoutStencil)(stencil+1)) {
+ if (id == TQualifier::getLayoutStencilString(stencil)) {
+ requireProfile(loc, ECoreProfile | ECompatibilityProfile, "stencil layout qualifier");
+ profileRequires(loc, ECoreProfile | ECompatibilityProfile, 420, nullptr, "stencil layout qualifier");
+ publicType.shaderQualifiers.layoutStencil = stencil;
+ return;
+ }
+ }
for (TInterlockOrdering order = (TInterlockOrdering)(EioNone + 1); order < EioCount; order = (TInterlockOrdering)(order+1)) {
if (id == TQualifier::getInterlockOrderingString(order)) {
requireProfile(loc, ECoreProfile | ECompatibilityProfile, "fragment shader interlock layout qualifier");
@@ -5673,7 +5759,7 @@
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)
@@ -5883,9 +5969,9 @@
}
break;
- case EShLangMeshNV:
+ case EShLangMesh:
if (id == "max_vertices") {
- requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "max_vertices");
+ requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "max_vertices");
publicType.shaderQualifiers.vertices = value;
if (value > resources.maxMeshOutputVerticesNV)
error(loc, "too large, must be less than gl_MaxMeshOutputVerticesNV", "max_vertices", "");
@@ -5894,7 +5980,7 @@
return;
}
if (id == "max_primitives") {
- requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "max_primitives");
+ requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "max_primitives");
publicType.shaderQualifiers.primitives = value;
if (value > resources.maxMeshOutputPrimitivesNV)
error(loc, "too large, must be less than gl_MaxMeshOutputPrimitivesNV", "max_primitives", "");
@@ -5904,14 +5990,14 @@
}
// Fall through
- case EShLangTaskNV:
+ case EShLangTask:
// 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");
+ if (language == EShLangMesh || language == EShLangTask) {
+ requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "gl_WorkGroupSize");
} else {
profileRequires(loc, EEsProfile, 310, 0, "gl_WorkGroupSize");
profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize");
@@ -6037,6 +6123,8 @@
dst.layoutShaderRecord = true;
if (src.pervertexNV)
dst.pervertexNV = true;
+ if (src.pervertexEXT)
+ dst.pervertexEXT = true;
#endif
}
}
@@ -6185,6 +6273,9 @@
if (type.getBasicType() == EbtBlock)
error(loc, "cannot apply to uniform or buffer block", "location", "");
break;
+ case EvqtaskPayloadSharedEXT:
+ error(loc, "cannot apply to taskPayloadSharedEXT", "location", "");
+ break;
#ifndef GLSLANG_WEB
case EvqPayload:
case EvqPayloadIn:
@@ -6210,11 +6301,13 @@
#ifndef GLSLANG_WEB
if (qualifier.hasXfbOffset() && qualifier.hasXfbBuffer()) {
- int repeated = intermediate.addXfbBufferOffset(type);
- if (repeated >= 0)
- error(loc, "overlapping offsets at", "xfb_offset", "offset %d in buffer %d", repeated, qualifier.layoutXfbBuffer);
- if (type.isUnsizedArray())
+ if (type.isUnsizedArray()) {
error(loc, "unsized array", "xfb_offset", "in buffer %d", qualifier.layoutXfbBuffer);
+ } else {
+ int repeated = intermediate.addXfbBufferOffset(type);
+ if (repeated >= 0)
+ error(loc, "overlapping offsets at", "xfb_offset", "offset %d in buffer %d", repeated, qualifier.layoutXfbBuffer);
+ }
// "The offset must be a multiple of the size of the first component of the first
// qualified variable or block member, or a compile-time error results. Further, if applied to an aggregate
@@ -6334,8 +6427,12 @@
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shader_image_load_formatted, explanation);
}
- if (qualifier.isPushConstant() && type.getBasicType() != EbtBlock)
- error(loc, "can only be used with a block", "push_constant", "");
+ if (qualifier.isPushConstant()) {
+ if (type.getBasicType() != EbtBlock)
+ error(loc, "can only be used with a block", "push_constant", "");
+ if (type.isArray())
+ error(loc, "Push constants blocks can't be an array", "push_constant", "");
+ }
if (qualifier.hasBufferReference() && type.getBasicType() != EbtBlock)
error(loc, "can only be used with a block", "buffer_reference", "");
@@ -6540,7 +6637,7 @@
error(loc, message, "local_size id", "");
}
if (shaderQualifiers.vertices != TQualifier::layoutNotSet) {
- if (language == EShLangGeometry || language == EShLangMeshNV)
+ if (language == EShLangGeometry || language == EShLangMesh)
error(loc, message, "max_vertices", "");
else if (language == EShLangTessControl)
error(loc, message, "vertices", "");
@@ -6552,7 +6649,7 @@
if (shaderQualifiers.postDepthCoverage)
error(loc, message, "post_depth_coverage", "");
if (shaderQualifiers.primitives != TQualifier::layoutNotSet) {
- if (language == EShLangMeshNV)
+ if (language == EShLangMesh)
error(loc, message, "max_primitives", "");
else
assert(0);
@@ -6652,8 +6749,10 @@
: findFunctionExact(loc, call, builtIn));
else if (version < 120)
function = findFunctionExact(loc, call, builtIn);
- else if (version < 400)
- function = extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) ? findFunction400(loc, call, builtIn) : findFunction120(loc, call, builtIn);
+ else if (version < 400) {
+ bool needfindFunction400 = extensionTurnedOn(E_GL_ARB_gpu_shader_fp64) || extensionTurnedOn(E_GL_ARB_gpu_shader5);
+ function = needfindFunction400 ? findFunction400(loc, call, builtIn) : findFunction120(loc, call, builtIn);
+ }
else if (explicitTypesEnabled)
function = findFunctionExplicitTypes(loc, call, builtIn);
else
@@ -6961,12 +7060,14 @@
TFunction realFunc(&name, function->getType());
+ // Use copyParam to avoid shared ownership of the 'type' field
+ // of the parameter.
for (int i = 0; i < function->getParamCount(); ++i) {
- realFunc.addParameter((*function)[i]);
+ realFunc.addParameter(TParameter().copyParam((*function)[i]));
}
TParameter tmpP = { 0, &uintType };
- realFunc.addParameter(tmpP);
+ realFunc.addParameter(TParameter().copyParam(tmpP));
arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(1, loc, true));
result = handleFunctionCall(loc, &realFunc, arguments);
@@ -6979,11 +7080,11 @@
TFunction realFunc(&name, function->getType());
for (int i = 0; i < function->getParamCount(); ++i) {
- realFunc.addParameter((*function)[i]);
+ realFunc.addParameter(TParameter().copyParam((*function)[i]));
}
TParameter tmpP = { 0, &uintType };
- realFunc.addParameter(tmpP);
+ realFunc.addParameter(TParameter().copyParam(tmpP));
arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(-1, loc, true));
result = handleFunctionCall(loc, &realFunc, arguments);
@@ -7194,6 +7295,8 @@
requireInt8Arithmetic(loc, "qualifier", "(u)int8 types can only be in uniform block or buffer storage");
}
+ if (type.getQualifier().storage == EvqtaskPayloadSharedEXT)
+ intermediate.addTaskPayloadEXTCount();
if (type.getQualifier().storage == EvqShared && type.containsCoopMat())
error(loc, "qualifier", "Cooperative matrix types must not be used in shared memory", "");
@@ -7217,6 +7320,8 @@
error(loc, "can only apply origin_upper_left and pixel_center_origin to gl_FragCoord", "layout qualifier", "");
if (identifier != "gl_FragDepth" && publicType.shaderQualifiers.getDepth() != EldNone)
error(loc, "can only apply depth layout to gl_FragDepth", "layout qualifier", "");
+ if (identifier != "gl_FragStencilRefARB" && publicType.shaderQualifiers.getStencil() != ElsNone)
+ error(loc, "can only apply depth layout to gl_FragStencilRefARB", "layout qualifier", "");
// Check for redeclaration of built-ins and/or attempting to declare a reserved name
TSymbol* symbol = redeclareBuiltinVariable(loc, identifier, type.getQualifier(), publicType.shaderQualifiers);
@@ -7424,14 +7529,14 @@
// Uniforms require a compile-time constant initializer
if (qualifier == EvqUniform && ! initializer->getType().getQualifier().isFrontEndConstant()) {
error(loc, "uniform initializers must be constant", "=", "'%s'",
- variable->getType().getCompleteString().c_str());
+ variable->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str());
variable->getWritableType().getQualifier().makeTemporary();
return nullptr;
}
// Global consts require a constant initializer (specialization constant is okay)
if (qualifier == EvqConst && symbolTable.atGlobalLevel() && ! initializer->getType().getQualifier().isConstant()) {
error(loc, "global const initializers must be constant", "=", "'%s'",
- variable->getType().getCompleteString().c_str());
+ variable->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str());
variable->getWritableType().getQualifier().makeTemporary();
return nullptr;
}
@@ -7494,7 +7599,7 @@
TIntermSymbol* intermSymbol = intermediate.addSymbol(*variable, loc);
TIntermTyped* initNode = intermediate.addAssign(EOpAssign, intermSymbol, initializer, loc);
if (! initNode)
- assignError(loc, "=", intermSymbol->getCompleteString(), initializer->getCompleteString());
+ assignError(loc, "=", intermSymbol->getCompleteString(intermediate.getEnhancedMsgs()), initializer->getCompleteString(intermediate.getEnhancedMsgs()));
return initNode;
}
@@ -7565,7 +7670,7 @@
}
} else if (type.isMatrix()) {
if (type.getMatrixCols() != (int)initList->getSequence().size()) {
- error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString().c_str());
+ error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str());
return nullptr;
}
TType vectorType(type, 0); // dereferenced type
@@ -7576,20 +7681,20 @@
}
} else if (type.isVector()) {
if (type.getVectorSize() != (int)initList->getSequence().size()) {
- error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString().c_str());
+ error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str());
return nullptr;
}
TBasicType destType = type.getBasicType();
for (int i = 0; i < type.getVectorSize(); ++i) {
TBasicType initType = initList->getSequence()[i]->getAsTyped()->getBasicType();
if (destType != initType && !intermediate.canImplicitlyPromote(initType, destType)) {
- error(loc, "type mismatch in initializer list", "initializer list", type.getCompleteString().c_str());
+ error(loc, "type mismatch in initializer list", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str());
return nullptr;
}
}
} else {
- error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString().c_str());
+ error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str());
return nullptr;
}
@@ -8053,12 +8158,12 @@
case EOpConstructAccStruct:
if ((node->getType().isScalar() && node->getType().getBasicType() == EbtUint64)) {
// construct acceleration structure from uint64
- requireExtensions(loc, 1, &E_GL_EXT_ray_tracing, "uint64_t conversion to acclerationStructureEXT");
+ requireExtensions(loc, Num_ray_tracing_EXTs, ray_tracing_EXTs, "uint64_t conversion to acclerationStructureEXT");
return intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUint64ToAccStruct, true, node,
type);
} else if (node->getType().isVector() && node->getType().getBasicType() == EbtUint && node->getVectorSize() == 2) {
// construct acceleration structure from uint64
- requireExtensions(loc, 1, &E_GL_EXT_ray_tracing, "uvec2 conversion to accelerationStructureEXT");
+ requireExtensions(loc, Num_ray_tracing_EXTs, ray_tracing_EXTs, "uvec2 conversion to accelerationStructureEXT");
return intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUvec2ToAccStruct, true, node,
type);
} else
@@ -8097,8 +8202,9 @@
{
TIntermTyped* converted = intermediate.addConversion(EOpConstructStruct, type, node->getAsTyped());
if (! converted || converted->getType() != type) {
+ bool enhanced = intermediate.getEnhancedMsgs();
error(loc, "", "constructor", "cannot convert parameter %d from '%s' to '%s'", paramCount,
- node->getAsTyped()->getType().getCompleteString().c_str(), type.getCompleteString().c_str());
+ node->getAsTyped()->getType().getCompleteString(enhanced).c_str(), type.getCompleteString(enhanced).c_str());
return nullptr;
}
@@ -8157,6 +8263,8 @@
memberQualifier.perViewNV = currentBlockQualifier.perViewNV;
if (currentBlockQualifier.perTaskNV)
memberQualifier.perTaskNV = currentBlockQualifier.perTaskNV;
+ if (currentBlockQualifier.storage == EvqtaskPayloadSharedEXT)
+ memberQualifier.storage = EvqtaskPayloadSharedEXT;
if (memberQualifier.storage == EvqSpirvStorageClass)
error(memberLoc, "member cannot have a spirv_storage_class qualifier", memberType.getFieldName().c_str(), "");
if (memberQualifier.hasSprivDecorate() && !memberQualifier.getSpirvDecorate().decorateIds.empty())
@@ -8457,23 +8565,23 @@
// It is a compile-time error to have an input block in a vertex shader or an output block in a fragment shader
// "Compute shaders do not permit user-defined input variables..."
requireStage(loc, (EShLanguageMask)(EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask|
- EShLangFragmentMask|EShLangMeshNVMask), "input block");
+ EShLangFragmentMask|EShLangMeshMask), "input block");
if (language == EShLangFragment) {
profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "fragment input block");
- } else if (language == EShLangMeshNV && ! qualifier.isTaskMemory()) {
+ } else if (language == EShLangMesh && ! qualifier.isTaskMemory()) {
error(loc, "input blocks cannot be used in a mesh shader", "out", "");
}
break;
case EvqVaryingOut:
profileRequires(loc, ~EEsProfile, 150, E_GL_ARB_separate_shader_objects, "output block");
requireStage(loc, (EShLanguageMask)(EShLangVertexMask|EShLangTessControlMask|EShLangTessEvaluationMask|
- EShLangGeometryMask|EShLangMeshNVMask|EShLangTaskNVMask), "output block");
+ EShLangGeometryMask|EShLangMeshMask|EShLangTaskMask), "output block");
// ES 310 can have a block before shader_io is turned on, so skip this test for built-ins
if (language == EShLangVertex && ! parsingBuiltins) {
profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "vertex output block");
- } else if (language == EShLangMeshNV && qualifier.isTaskMemory()) {
+ } else if (language == EShLangMesh && qualifier.isTaskMemory()) {
error(loc, "can only use on input blocks in mesh shader", "taskNV", "");
- } else if (language == EShLangTaskNV && ! qualifier.isTaskMemory()) {
+ } else if (language == EShLangTask && ! qualifier.isTaskMemory()) {
error(loc, "output blocks cannot be used in a task shader", "out", "");
}
break;
@@ -8887,7 +8995,7 @@
{
#ifndef GLSLANG_WEB
if (publicType.shaderQualifiers.vertices != TQualifier::layoutNotSet) {
- assert(language == EShLangTessControl || language == EShLangGeometry || language == EShLangMeshNV);
+ assert(language == EShLangTessControl || language == EShLangGeometry || language == EShLangMesh);
const char* id = (language == EShLangTessControl) ? "vertices" : "max_vertices";
if (publicType.qualifier.storage != EvqVaryingOut)
@@ -8899,7 +9007,7 @@
checkIoArraysConsistency(loc);
}
if (publicType.shaderQualifiers.primitives != TQualifier::layoutNotSet) {
- assert(language == EShLangMeshNV);
+ assert(language == EShLangMesh);
const char* id = "max_primitives";
if (publicType.qualifier.storage != EvqVaryingOut)
@@ -8923,7 +9031,7 @@
case ElgTrianglesAdjacency:
case ElgQuads:
case ElgIsolines:
- if (language == EShLangMeshNV) {
+ if (language == EShLangMesh) {
error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), "");
break;
}
@@ -8940,7 +9048,7 @@
switch (publicType.shaderQualifiers.geometry) {
case ElgLines:
case ElgTriangles:
- if (language != EShLangMeshNV) {
+ if (language != EShLangMesh) {
error(loc, "cannot apply to 'out'", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), "");
break;
}
@@ -8996,24 +9104,56 @@
error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", "");
}
#ifndef GLSLANG_WEB
- else if (language == EShLangMeshNV) {
+ else if (language == EShLangMesh) {
switch (i) {
- case 0: max = resources.maxMeshWorkGroupSizeX_NV; break;
- case 1: max = resources.maxMeshWorkGroupSizeY_NV; break;
- case 2: max = resources.maxMeshWorkGroupSizeZ_NV; break;
+ case 0:
+ max = extensionTurnedOn(E_GL_EXT_mesh_shader) ?
+ resources.maxMeshWorkGroupSizeX_EXT :
+ resources.maxMeshWorkGroupSizeX_NV;
+ break;
+ case 1:
+ max = extensionTurnedOn(E_GL_EXT_mesh_shader) ?
+ resources.maxMeshWorkGroupSizeY_EXT :
+ resources.maxMeshWorkGroupSizeY_NV ;
+ break;
+ case 2:
+ max = extensionTurnedOn(E_GL_EXT_mesh_shader) ?
+ resources.maxMeshWorkGroupSizeZ_EXT :
+ resources.maxMeshWorkGroupSizeZ_NV ;
+ break;
default: break;
}
- if (intermediate.getLocalSize(i) > (unsigned int)max)
- error(loc, "too large; see gl_MaxMeshWorkGroupSizeNV", "local_size", "");
- } else if (language == EShLangTaskNV) {
+ if (intermediate.getLocalSize(i) > (unsigned int)max) {
+ TString maxsErrtring = "too large, see ";
+ maxsErrtring.append(extensionTurnedOn(E_GL_EXT_mesh_shader) ?
+ "gl_MaxMeshWorkGroupSizeEXT" : "gl_MaxMeshWorkGroupSizeNV");
+ error(loc, maxsErrtring.c_str(), "local_size", "");
+ }
+ } else if (language == EShLangTask) {
switch (i) {
- case 0: max = resources.maxTaskWorkGroupSizeX_NV; break;
- case 1: max = resources.maxTaskWorkGroupSizeY_NV; break;
- case 2: max = resources.maxTaskWorkGroupSizeZ_NV; break;
+ case 0:
+ max = extensionTurnedOn(E_GL_EXT_mesh_shader) ?
+ resources.maxTaskWorkGroupSizeX_EXT :
+ resources.maxTaskWorkGroupSizeX_NV;
+ break;
+ case 1:
+ max = extensionTurnedOn(E_GL_EXT_mesh_shader) ?
+ resources.maxTaskWorkGroupSizeY_EXT:
+ resources.maxTaskWorkGroupSizeY_NV;
+ break;
+ case 2:
+ max = extensionTurnedOn(E_GL_EXT_mesh_shader) ?
+ resources.maxTaskWorkGroupSizeZ_EXT:
+ resources.maxTaskWorkGroupSizeZ_NV;
+ break;
default: break;
}
- if (intermediate.getLocalSize(i) > (unsigned int)max)
- error(loc, "too large; see gl_MaxTaskWorkGroupSizeNV", "local_size", "");
+ if (intermediate.getLocalSize(i) > (unsigned int)max) {
+ TString maxsErrtring = "too large, see ";
+ maxsErrtring.append(extensionTurnedOn(E_GL_EXT_mesh_shader) ?
+ "gl_MaxTaskWorkGroupSizeEXT" : "gl_MaxTaskWorkGroupSizeNV");
+ error(loc, maxsErrtring.c_str(), "local_size", "");
+ }
}
#endif
else {
@@ -9048,6 +9188,12 @@
else
error(loc, "can only apply to 'in'", "early_fragment_tests", "");
}
+ if (publicType.shaderQualifiers.earlyAndLateFragmentTestsAMD) {
+ if (publicType.qualifier.storage == EvqVaryingIn)
+ intermediate.setEarlyAndLateFragmentTestsAMD();
+ else
+ error(loc, "can only apply to 'in'", "early_and_late_fragment_tests_amd", "");
+ }
if (publicType.shaderQualifiers.postDepthCoverage) {
if (publicType.qualifier.storage == EvqVaryingIn)
intermediate.setPostDepthCoverage();
@@ -9096,7 +9242,7 @@
error(loc, "can only apply to 'in'", "derivative_group_linearNV", "");
}
// Check mesh out array sizes, once all the necessary out qualifiers are defined.
- if ((language == EShLangMeshNV) &&
+ if ((language == EShLangMesh) &&
(intermediate.getVertices() != TQualifier::layoutNotSet) &&
(intermediate.getPrimitives() != TQualifier::layoutNotSet) &&
(intermediate.getOutputPrimitive() != ElgNone))
@@ -9113,7 +9259,7 @@
// Exit early as further checks are not valid
return;
}
-#endif
+#endif
const TQualifier& qualifier = publicType.qualifier;
if (qualifier.isAuxiliary() ||
@@ -9311,4 +9457,3 @@
}
} // end namespace glslang
-
diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp
index c387aed..7f51173 100644
--- a/glslang/MachineIndependent/Scan.cpp
+++ b/glslang/MachineIndependent/Scan.cpp
@@ -739,6 +739,7 @@
(*KeywordMap)["f16subpassInputMS"] = F16SUBPASSINPUTMS;
(*KeywordMap)["__explicitInterpAMD"] = EXPLICITINTERPAMD;
(*KeywordMap)["pervertexNV"] = PERVERTEXNV;
+ (*KeywordMap)["pervertexEXT"] = PERVERTEXEXT;
(*KeywordMap)["precise"] = PRECISE;
(*KeywordMap)["rayPayloadNV"] = PAYLOADNV;
@@ -757,6 +758,8 @@
(*KeywordMap)["perprimitiveNV"] = PERPRIMITIVENV;
(*KeywordMap)["perviewNV"] = PERVIEWNV;
(*KeywordMap)["taskNV"] = PERTASKNV;
+ (*KeywordMap)["perprimitiveEXT"] = PERPRIMITIVEEXT;
+ (*KeywordMap)["taskPayloadSharedEXT"] = TASKPAYLOADWORKGROUPEXT;
(*KeywordMap)["fcoopmatNV"] = FCOOPMATNV;
(*KeywordMap)["icoopmatNV"] = ICOOPMATNV;
@@ -1719,6 +1722,12 @@
return keyword;
return identifierOrType();
+ case PERVERTEXEXT:
+ if ((!parseContext.isEsProfile() && parseContext.version >= 450) ||
+ parseContext.extensionTurnedOn(E_GL_EXT_fragment_shader_barycentric))
+ return keyword;
+ return identifierOrType();
+
case PRECISE:
if ((parseContext.isEsProfile() &&
(parseContext.version >= 320 || parseContext.extensionsTurnedOn(Num_AEP_gpu_shader5, AEP_gpu_shader5))) ||
@@ -1733,12 +1742,18 @@
case PERPRIMITIVENV:
case PERVIEWNV:
case PERTASKNV:
- if ((!parseContext.isEsProfile() && parseContext.version >= 450) ||
- (parseContext.isEsProfile() && parseContext.version >= 320) ||
+ if (parseContext.symbolTable.atBuiltInLevel() ||
parseContext.extensionTurnedOn(E_GL_NV_mesh_shader))
return keyword;
return identifierOrType();
+ case PERPRIMITIVEEXT:
+ case TASKPAYLOADWORKGROUPEXT:
+ if (parseContext.symbolTable.atBuiltInLevel() ||
+ parseContext.extensionTurnedOn(E_GL_EXT_mesh_shader))
+ return keyword;
+ return identifierOrType();
+
case FCOOPMATNV:
afterType = true;
if (parseContext.symbolTable.atBuiltInLevel() ||
diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp
index a2dd71c..57e3423 100644
--- a/glslang/MachineIndependent/ShaderLang.cpp
+++ b/glslang/MachineIndependent/ShaderLang.cpp
@@ -391,13 +391,13 @@
// check for mesh
if ((profile != EEsProfile && version >= 450) ||
(profile == EEsProfile && version >= 320))
- InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMeshNV, source,
+ InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMesh, source,
infoSink, commonTable, symbolTables);
// check for task
if ((profile != EEsProfile && version >= 450) ||
(profile == EEsProfile && version >= 320))
- InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTaskNV, source,
+ InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTask, source,
infoSink, commonTable, symbolTables);
#endif // !GLSLANG_ANGLE
#endif // !GLSLANG_WEB
@@ -650,8 +650,8 @@
version = 460;
}
break;
- case EShLangMeshNV:
- case EShLangTaskNV:
+ case EShLangMesh:
+ case EShLangTask:
if ((profile == EEsProfile && version < 320) ||
(profile != EEsProfile && version < 450)) {
correct = false;
@@ -813,6 +813,7 @@
// set version/profile to defaultVersion/defaultProfile regardless of the #version
// directive in the source code
bool forceDefaultVersionAndProfile,
+ int overrideVersion, // overrides version specified by #verison or default version
bool forwardCompatible, // give errors for use of deprecated features
EShMessages messages, // warnings/errors/AST; things to print out
TIntermediate& intermediate, // returned tree, etc.
@@ -900,6 +901,9 @@
version = defaultVersion;
profile = defaultProfile;
}
+ if (source == EShSourceGlsl && overrideVersion != 0) {
+ version = overrideVersion;
+ }
bool goodVersion = DeduceVersionProfile(compiler->infoSink, stage,
versionNotFirst, defaultVersion, source, version, profile, spvVersion);
@@ -1275,6 +1279,7 @@
int defaultVersion, // use 100 for ES environment, 110 for desktop
EProfile defaultProfile,
bool forceDefaultVersionAndProfile,
+ int overrideVersion, // use 0 if not overriding GLSL version
bool forwardCompatible, // give errors for use of deprecated features
EShMessages messages, // warnings/errors/AST; things to print out
TShader::Includer& includer,
@@ -1285,7 +1290,7 @@
DoPreprocessing parser(outputString);
return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames,
preamble, optLevel, resources, defaultVersion,
- defaultProfile, forceDefaultVersionAndProfile,
+ defaultProfile, forceDefaultVersionAndProfile, overrideVersion,
forwardCompatible, messages, intermediate, parser,
false, includer, "", environment);
}
@@ -1314,6 +1319,7 @@
int defaultVersion, // use 100 for ES environment, 110 for desktop
EProfile defaultProfile,
bool forceDefaultVersionAndProfile,
+ int overrideVersion, // use 0 if not overriding GLSL version
bool forwardCompatible, // give errors for use of deprecated features
EShMessages messages, // warnings/errors/AST; things to print out
TIntermediate& intermediate,// returned tree, etc.
@@ -1324,7 +1330,7 @@
DoFullParse parser;
return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames,
preamble, optLevel, resources, defaultVersion,
- defaultProfile, forceDefaultVersionAndProfile,
+ defaultProfile, forceDefaultVersionAndProfile, overrideVersion,
forwardCompatible, messages, intermediate, parser,
true, includer, sourceEntryPointName, environment);
}
@@ -1498,7 +1504,7 @@
TIntermediate intermediate(compiler->getLanguage());
TShader::ForbidIncluder includer;
bool success = CompileDeferred(compiler, shaderStrings, numStrings, inputLengths, nullptr,
- "", optLevel, resources, defaultVersion, ENoProfile, false,
+ "", optLevel, resources, defaultVersion, ENoProfile, false, 0,
forwardCompatible, messages, intermediate, includer);
//
@@ -1759,7 +1765,7 @@
};
TShader::TShader(EShLanguage s)
- : stage(s), lengths(nullptr), stringNames(nullptr), preamble("")
+ : stage(s), lengths(nullptr), stringNames(nullptr), preamble(""), overrideVersion(0)
{
pool = new TPoolAllocator;
infoSink = new TInfoSink;
@@ -1828,7 +1834,15 @@
intermediate->setUniqueId(id);
}
+void TShader::setOverrideVersion(int version)
+{
+ overrideVersion = version;
+}
+
+void TShader::setDebugInfo(bool debugInfo) { intermediate->setDebugInfo(debugInfo); }
void TShader::setInvertY(bool invert) { intermediate->setInvertY(invert); }
+void TShader::setDxPositionW(bool invert) { intermediate->setDxPositionW(invert); }
+void TShader::setEnhancedMsgs() { intermediate->setEnhancedMsgs(); }
void TShader::setNanMinMaxClamp(bool useNonNan) { intermediate->setNanMinMaxClamp(useNonNan); }
#ifndef GLSLANG_WEB
@@ -1908,7 +1922,7 @@
return CompileDeferred(compiler, strings, numStrings, lengths, stringNames,
preamble, EShOptNone, builtInResources, defaultVersion,
- defaultProfile, forceDefaultVersionAndProfile,
+ defaultProfile, forceDefaultVersionAndProfile, overrideVersion,
forwardCompatible, messages, *intermediate, includer, sourceEntryPointName,
&environment);
}
@@ -1935,7 +1949,7 @@
return PreprocessDeferred(compiler, strings, numStrings, lengths, stringNames, preamble,
EShOptNone, builtInResources, defaultVersion,
- defaultProfile, forceDefaultVersionAndProfile,
+ defaultProfile, forceDefaultVersionAndProfile, overrideVersion,
forwardCompatible, message, includer, *intermediate, output_string,
&environment);
}
@@ -2048,6 +2062,8 @@
firstIntermediate->getVersion(),
firstIntermediate->getProfile());
intermediate[stage]->setLimits(firstIntermediate->getLimits());
+ if (firstIntermediate->getEnhancedMsgs())
+ intermediate[stage]->setEnhancedMsgs();
// The new TIntermediate must use the same origin as the original TIntermediates.
// Otherwise linking will fail due to different coordinate systems.
diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp
index 5b7e27f..2f1b5ac 100644
--- a/glslang/MachineIndependent/SymbolTable.cpp
+++ b/glslang/MachineIndependent/SymbolTable.cpp
@@ -383,7 +383,7 @@
for (unsigned int i = 0; i < copyOf.parameters.size(); ++i) {
TParameter param;
parameters.push_back(param);
- parameters.back().copyParam(copyOf.parameters[i]);
+ (void)parameters.back().copyParam(copyOf.parameters[i]);
}
extensions = nullptr;
@@ -426,12 +426,7 @@
symTableLevel->thisLevel = thisLevel;
symTableLevel->retargetedSymbols.clear();
for (auto &s : retargetedSymbols) {
- // Extra constructions to make sure they use the correct allocator pool
- TString newFrom;
- newFrom = s.first;
- TString newTo;
- newTo = s.second;
- symTableLevel->retargetedSymbols.push_back({std::move(newFrom), std::move(newTo)});
+ symTableLevel->retargetedSymbols.push_back({s.first, s.second});
}
std::vector<bool> containerCopied(anonId, false);
tLevel::const_iterator iter;
@@ -462,11 +457,7 @@
TSymbol* sym = symTableLevel->find(s.second);
if (!sym)
continue;
-
- // Need to declare and assign so newS is using the correct pool allocator
- TString newS;
- newS = s.first;
- symTableLevel->insert(newS, sym);
+ symTableLevel->insert(s.first, sym);
}
return symTableLevel;
diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h
index 720999a..2e570bb 100644
--- a/glslang/MachineIndependent/SymbolTable.h
+++ b/glslang/MachineIndependent/SymbolTable.h
@@ -84,7 +84,7 @@
class TSymbol {
public:
POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
- explicit TSymbol(const TString *n) : name(n), extensions(0), writable(true) { }
+ explicit TSymbol(const TString *n) : name(n), uniqueId(0), extensions(0), writable(true) { }
virtual TSymbol* clone() const = 0;
virtual ~TSymbol() { } // rely on all symbol owned memory coming from the pool
@@ -224,7 +224,7 @@
TString *name;
TType* type;
TIntermTyped* defaultValue;
- void copyParam(const TParameter& param)
+ TParameter& copyParam(const TParameter& param)
{
if (param.name)
name = NewPoolTString(param.name->c_str());
@@ -232,6 +232,7 @@
name = 0;
type = param.type->clone();
defaultValue = param.defaultValue;
+ return *this;
}
TBuiltInVariable getDeclaredBuiltIn() const { return type->getQualifier().declaredBuiltIn; }
};
diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp
index 2fc0d9e..a5fd107 100644
--- a/glslang/MachineIndependent/Versions.cpp
+++ b/glslang/MachineIndependent/Versions.cpp
@@ -166,7 +166,8 @@
} extensionData;
const extensionData exts[] = { {E_GL_EXT_ray_tracing, EShTargetSpv_1_4},
- {E_GL_NV_ray_tracing_motion_blur, EShTargetSpv_1_4}
+ {E_GL_NV_ray_tracing_motion_blur, EShTargetSpv_1_4},
+ {E_GL_EXT_mesh_shader, EShTargetSpv_1_4}
};
for (size_t ii = 0; ii < sizeof(exts) / sizeof(exts[0]); ii++) {
@@ -226,6 +227,8 @@
extensionBehavior[E_GL_ARB_texture_query_lod] = EBhDisable;
extensionBehavior[E_GL_ARB_vertex_attrib_64bit] = EBhDisable;
extensionBehavior[E_GL_ARB_draw_instanced] = EBhDisable;
+ extensionBehavior[E_GL_ARB_fragment_coord_conventions] = EBhDisable;
+
extensionBehavior[E_GL_KHR_shader_subgroup_basic] = EBhDisable;
extensionBehavior[E_GL_KHR_shader_subgroup_vote] = EBhDisable;
@@ -257,6 +260,8 @@
extensionBehavior[E_GL_EXT_shader_8bit_storage] = EBhDisable;
extensionBehavior[E_GL_EXT_subgroup_uniform_control_flow] = EBhDisable;
+ extensionBehavior[E_GL_EXT_fragment_shader_barycentric] = EBhDisable;
+
// #line and #include
extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhDisable;
extensionBehavior[E_GL_GOOGLE_include_directive] = EBhDisable;
@@ -271,6 +276,7 @@
extensionBehavior[E_GL_AMD_shader_image_load_store_lod] = EBhDisable;
extensionBehavior[E_GL_AMD_shader_fragment_mask] = EBhDisable;
extensionBehavior[E_GL_AMD_gpu_shader_half_float_fetch] = EBhDisable;
+ extensionBehavior[E_GL_AMD_shader_early_and_late_fragment_tests] = EBhDisable;
extensionBehavior[E_GL_INTEL_shader_integer_functions2] = EBhDisable;
@@ -332,13 +338,16 @@
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_ray_cull_mask] = EBhDisable;
extensionBehavior[E_GL_EXT_blend_func_extended] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_implicit_conversions] = EBhDisable;
extensionBehavior[E_GL_EXT_fragment_shading_rate] = EBhDisable;
- extensionBehavior[E_GL_EXT_shader_image_int64] = EBhDisable;
+ extensionBehavior[E_GL_EXT_shader_image_int64] = EBhDisable;
extensionBehavior[E_GL_EXT_terminate_invocation] = EBhDisable;
extensionBehavior[E_GL_EXT_shared_memory_block] = EBhDisable;
extensionBehavior[E_GL_EXT_spirv_intrinsics] = EBhDisable;
+ extensionBehavior[E_GL_EXT_mesh_shader] = EBhDisable;
+ extensionBehavior[E_GL_EXT_opacity_micromap] = EBhDisable;
// OVR extensions
extensionBehavior[E_GL_OVR_multiview] = EBhDisable;
@@ -467,6 +476,7 @@
"#define GL_ARB_texture_query_lod 1\n"
"#define GL_ARB_vertex_attrib_64bit 1\n"
"#define GL_ARB_draw_instanced 1\n"
+ "#define GL_ARB_fragment_coord_conventions 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"
@@ -502,7 +512,9 @@
"#define GL_EXT_ray_tracing 1\n"
"#define GL_EXT_ray_query 1\n"
"#define GL_EXT_ray_flags_primitive_culling 1\n"
+ "#define GL_EXT_ray_cull_mask 1\n"
"#define GL_EXT_spirv_intrinsics 1\n"
+ "#define GL_EXT_mesh_shader 1\n"
"#define GL_AMD_shader_ballot 1\n"
"#define GL_AMD_shader_trinary_minmax 1\n"
@@ -549,6 +561,8 @@
"#define GL_EXT_shader_atomic_float 1\n"
"#define GL_EXT_shader_atomic_float2 1\n"
+
+ "#define GL_EXT_fragment_shader_barycentric 1\n"
;
if (version >= 150) {
@@ -631,8 +645,8 @@
case EShLangClosestHit: preamble += "#define GL_CLOSEST_HIT_SHADER_EXT 1 \n"; break;
case EShLangMiss: preamble += "#define GL_MISS_SHADER_EXT 1 \n"; break;
case EShLangCallable: preamble += "#define GL_CALLABLE_SHADER_EXT 1 \n"; break;
- case EShLangTaskNV: preamble += "#define GL_TASK_SHADER_NV 1 \n"; break;
- case EShLangMeshNV: preamble += "#define GL_MESH_SHADER_NV 1 \n"; break;
+ case EShLangTask: preamble += "#define GL_TASK_SHADER_NV 1 \n"; break;
+ case EShLangMesh: preamble += "#define GL_MESH_SHADER_NV 1 \n"; break;
default: break;
}
}
@@ -658,8 +672,8 @@
case EShLangClosestHit: return "closest-hit";
case EShLangMiss: return "miss";
case EShLangCallable: return "callable";
- case EShLangMeshNV: return "mesh";
- case EShLangTaskNV: return "task";
+ case EShLangMesh: return "mesh";
+ case EShLangTask: return "task";
#endif
default: return "unknown stage";
}
@@ -1050,10 +1064,22 @@
{
// GL_NV_mesh_shader extension is only allowed in task/mesh shaders
if (strcmp(extension, "GL_NV_mesh_shader") == 0) {
- requireStage(loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask | EShLangFragmentMask),
+ requireStage(loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask | EShLangFragmentMask),
"#extension GL_NV_mesh_shader");
profileRequires(loc, ECoreProfile, 450, 0, "#extension GL_NV_mesh_shader");
profileRequires(loc, EEsProfile, 320, 0, "#extension GL_NV_mesh_shader");
+ if (extensionTurnedOn(E_GL_EXT_mesh_shader)) {
+ error(loc, "GL_EXT_mesh_shader is already turned on, and not allowed with", "#extension", extension);
+ }
+ }
+ else if (strcmp(extension, "GL_EXT_mesh_shader") == 0) {
+ requireStage(loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask | EShLangFragmentMask),
+ "#extension GL_EXT_mesh_shader");
+ profileRequires(loc, ECoreProfile, 450, 0, "#extension GL_EXT_mesh_shader");
+ profileRequires(loc, EEsProfile, 320, 0, "#extension GL_EXT_mesh_shader");
+ if (extensionTurnedOn(E_GL_NV_mesh_shader)) {
+ error(loc, "GL_NV_mesh_shader is already turned on, and not allowed with", "#extension", extension);
+ }
}
}
diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h
index 2dbac0b..f06abdd 100644
--- a/glslang/MachineIndependent/Versions.h
+++ b/glslang/MachineIndependent/Versions.h
@@ -162,6 +162,7 @@
const char* const E_GL_ARB_texture_query_lod = "GL_ARB_texture_query_lod";
const char* const E_GL_ARB_vertex_attrib_64bit = "GL_ARB_vertex_attrib_64bit";
const char* const E_GL_ARB_draw_instanced = "GL_ARB_draw_instanced";
+const char* const E_GL_ARB_fragment_coord_conventions = "GL_ARB_fragment_coord_conventions";
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";
@@ -200,6 +201,7 @@
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_ray_cull_mask = "GL_EXT_ray_cull_mask";
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";
const char* const E_GL_EXT_fragment_shading_rate = "GL_EXT_fragment_shading_rate";
@@ -208,12 +210,19 @@
const char* const E_GL_EXT_shared_memory_block = "GL_EXT_shared_memory_block";
const char* const E_GL_EXT_subgroup_uniform_control_flow = "GL_EXT_subgroup_uniform_control_flow";
const char* const E_GL_EXT_spirv_intrinsics = "GL_EXT_spirv_intrinsics";
+const char* const E_GL_EXT_fragment_shader_barycentric = "GL_EXT_fragment_shader_barycentric";
+const char* const E_GL_EXT_mesh_shader = "GL_EXT_mesh_shader";
+const char* const E_GL_EXT_opacity_micromap = "GL_EXT_opacity_micromap";
// Arrays of extensions for the above viewportEXTs duplications
const char* const post_depth_coverageEXTs[] = { E_GL_ARB_post_depth_coverage, E_GL_EXT_post_depth_coverage };
const int Num_post_depth_coverageEXTs = sizeof(post_depth_coverageEXTs) / sizeof(post_depth_coverageEXTs[0]);
+// Array of extensions to cover both extensions providing ray tracing capabilities.
+const char* const ray_tracing_EXTs[] = { E_GL_EXT_ray_query, E_GL_EXT_ray_tracing };
+const int Num_ray_tracing_EXTs = sizeof(ray_tracing_EXTs) / sizeof(ray_tracing_EXTs[0]);
+
// OVR extensions
const char* const E_GL_OVR_multiview = "GL_OVR_multiview";
const char* const E_GL_OVR_multiview2 = "GL_OVR_multiview2";
@@ -235,6 +244,7 @@
const char* const E_GL_AMD_shader_image_load_store_lod = "GL_AMD_shader_image_load_store_lod";
const char* const E_GL_AMD_shader_fragment_mask = "GL_AMD_shader_fragment_mask";
const char* const E_GL_AMD_gpu_shader_half_float_fetch = "GL_AMD_gpu_shader_half_float_fetch";
+const char* const E_GL_AMD_shader_early_and_late_fragment_tests = "GL_AMD_shader_early_and_late_fragment_tests";
const char* const E_GL_INTEL_shader_integer_functions2 = "GL_INTEL_shader_integer_functions2";
@@ -280,7 +290,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";
+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";
@@ -341,6 +351,9 @@
const char* const AEP_texture_cube_map_array[] = { E_GL_EXT_texture_cube_map_array, E_GL_OES_texture_cube_map_array };
const int Num_AEP_texture_cube_map_array = sizeof(AEP_texture_cube_map_array)/sizeof(AEP_texture_cube_map_array[0]);
+const char* const AEP_mesh_shader[] = { E_GL_NV_mesh_shader, E_GL_EXT_mesh_shader };
+const int Num_AEP_mesh_shader = sizeof(AEP_mesh_shader)/sizeof(AEP_mesh_shader[0]);
+
} // end namespace glslang
#endif // _VERSIONS_INCLUDED_
diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4
index d4cc5bc..a59da44 100644
--- a/glslang/MachineIndependent/glslang.m4
+++ b/glslang/MachineIndependent/glslang.m4
@@ -315,7 +315,7 @@
%token <lex> PATCH SAMPLE NONUNIFORM
%token <lex> COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT
%token <lex> SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT
-%token <lex> NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV
+%token <lex> NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV PERPRIMITIVEEXT TASKPAYLOADWORKGROUPEXT
%token <lex> PRECISE
GLSLANG_WEB_EXCLUDE_OFF
@@ -798,7 +798,7 @@
parseContext.rValueErrorCheck($5.loc, ":", $6);
$$ = parseContext.intermediate.addSelection($1, $4, $6, $2.loc);
if ($$ == 0) {
- parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(), $6->getCompleteString());
+ parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $6->getCompleteString(parseContext.intermediate.getEnhancedMsgs()));
$$ = $6;
}
}
@@ -815,7 +815,7 @@
parseContext.rValueErrorCheck($2.loc, "assign", $3);
$$ = parseContext.addAssign($2.loc, $2.op, $1, $3);
if ($$ == 0) {
- parseContext.assignError($2.loc, "assign", $1->getCompleteString(), $3->getCompleteString());
+ parseContext.assignError($2.loc, "assign", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs()));
$$ = $1;
}
}
@@ -877,7 +877,7 @@
parseContext.samplerConstructorLocationCheck($2.loc, ",", $3);
$$ = parseContext.intermediate.addComma($1, $3, $2.loc);
if ($$ == 0) {
- parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(), $3->getCompleteString());
+ parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs()));
$$ = $3;
}
}
@@ -1290,27 +1290,45 @@
$$.init($1.loc);
$$.qualifier.pervertexNV = true;
}
+ | PERVERTEXEXT {
+ parseContext.globalCheck($1.loc, "pervertexEXT");
+ parseContext.profileRequires($1.loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric");
+ parseContext.profileRequires($1.loc, ECompatibilityProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric");
+ parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric");
+ $$.init($1.loc);
+ $$.qualifier.pervertexEXT = true;
+ }
| PERPRIMITIVENV {
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck($1.loc, "perprimitiveNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveNV");
// Fragment shader stage doesn't check for extension. So we explicitly add below extension check.
if (parseContext.language == EShLangFragment)
parseContext.requireExtensions($1.loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV");
$$.init($1.loc);
$$.qualifier.perPrimitiveNV = true;
}
+ | PERPRIMITIVEEXT {
+ // No need for profile version or extension check. Shader stage already checks both.
+ parseContext.globalCheck($1.loc, "perprimitiveEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveEXT");
+ // Fragment shader stage doesn't check for extension. So we explicitly add below extension check.
+ if (parseContext.language == EShLangFragment)
+ parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_mesh_shader, "perprimitiveEXT");
+ $$.init($1.loc);
+ $$.qualifier.perPrimitiveNV = true;
+ }
| PERVIEWNV {
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck($1.loc, "perviewNV");
- parseContext.requireStage($1.loc, EShLangMeshNV, "perviewNV");
+ parseContext.requireStage($1.loc, EShLangMesh, "perviewNV");
$$.init($1.loc);
$$.qualifier.perViewNV = true;
}
| PERTASKNV {
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck($1.loc, "taskNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskNV");
$$.init($1.loc);
$$.qualifier.perTaskNV = true;
}
@@ -1461,7 +1479,7 @@
parseContext.globalCheck($1.loc, "shared");
parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
parseContext.profileRequires($1.loc, EEsProfile, 310, 0, "shared");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshMask | EShLangTaskMask), "shared");
$$.init($1.loc);
$$.qualifier.storage = EvqShared;
}
@@ -1648,6 +1666,13 @@
parseContext.unimplemented($1.loc, "subroutine");
$$.init($1.loc);
}
+ | TASKPAYLOADWORKGROUPEXT {
+ // No need for profile version or extension check. Shader stage already checks both.
+ parseContext.globalCheck($1.loc, "taskPayloadSharedEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskPayloadSharedEXT ");
+ $$.init($1.loc);
+ $$.qualifier.storage = EvqtaskPayloadSharedEXT;
+ }
GLSLANG_WEB_EXCLUDE_OFF
;
@@ -3718,7 +3743,7 @@
}
RIGHT_BRACE {
if ($3 && $3->getAsAggregate())
- $3->getAsAggregate()->setOperator(EOpSequence);
+ $3->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence);
$$ = $3;
}
;
diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y
index df53eb5..35242f2 100644
--- a/glslang/MachineIndependent/glslang.y
+++ b/glslang/MachineIndependent/glslang.y
@@ -151,7 +151,7 @@
%parse-param {glslang::TParseContext* pParseContext}
%lex-param {parseContext}
-%pure-parser // enable thread safety
+%define api.pure // enable thread safety
%expect 1 // One shift reduce conflict because of if | else
%token <lex> CONST BOOL INT UINT FLOAT
@@ -315,7 +315,7 @@
%token <lex> PATCH SAMPLE NONUNIFORM
%token <lex> COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT
%token <lex> SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT
-%token <lex> NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV
+%token <lex> NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV PERPRIMITIVEEXT TASKPAYLOADWORKGROUPEXT
%token <lex> PRECISE
@@ -798,7 +798,7 @@
parseContext.rValueErrorCheck($5.loc, ":", $6);
$$ = parseContext.intermediate.addSelection($1, $4, $6, $2.loc);
if ($$ == 0) {
- parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(), $6->getCompleteString());
+ parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $6->getCompleteString(parseContext.intermediate.getEnhancedMsgs()));
$$ = $6;
}
}
@@ -815,7 +815,7 @@
parseContext.rValueErrorCheck($2.loc, "assign", $3);
$$ = parseContext.addAssign($2.loc, $2.op, $1, $3);
if ($$ == 0) {
- parseContext.assignError($2.loc, "assign", $1->getCompleteString(), $3->getCompleteString());
+ parseContext.assignError($2.loc, "assign", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs()));
$$ = $1;
}
}
@@ -877,7 +877,7 @@
parseContext.samplerConstructorLocationCheck($2.loc, ",", $3);
$$ = parseContext.intermediate.addComma($1, $3, $2.loc);
if ($$ == 0) {
- parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(), $3->getCompleteString());
+ parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs()));
$$ = $3;
}
}
@@ -1290,27 +1290,45 @@
$$.init($1.loc);
$$.qualifier.pervertexNV = true;
}
+ | PERVERTEXEXT {
+ parseContext.globalCheck($1.loc, "pervertexEXT");
+ parseContext.profileRequires($1.loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric");
+ parseContext.profileRequires($1.loc, ECompatibilityProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric");
+ parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric");
+ $$.init($1.loc);
+ $$.qualifier.pervertexEXT = true;
+ }
| PERPRIMITIVENV {
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck($1.loc, "perprimitiveNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveNV");
// Fragment shader stage doesn't check for extension. So we explicitly add below extension check.
if (parseContext.language == EShLangFragment)
parseContext.requireExtensions($1.loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV");
$$.init($1.loc);
$$.qualifier.perPrimitiveNV = true;
}
+ | PERPRIMITIVEEXT {
+ // No need for profile version or extension check. Shader stage already checks both.
+ parseContext.globalCheck($1.loc, "perprimitiveEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveEXT");
+ // Fragment shader stage doesn't check for extension. So we explicitly add below extension check.
+ if (parseContext.language == EShLangFragment)
+ parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_mesh_shader, "perprimitiveEXT");
+ $$.init($1.loc);
+ $$.qualifier.perPrimitiveNV = true;
+ }
| PERVIEWNV {
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck($1.loc, "perviewNV");
- parseContext.requireStage($1.loc, EShLangMeshNV, "perviewNV");
+ parseContext.requireStage($1.loc, EShLangMesh, "perviewNV");
$$.init($1.loc);
$$.qualifier.perViewNV = true;
}
| PERTASKNV {
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck($1.loc, "taskNV");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskNV");
$$.init($1.loc);
$$.qualifier.perTaskNV = true;
}
@@ -1461,7 +1479,7 @@
parseContext.globalCheck($1.loc, "shared");
parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
parseContext.profileRequires($1.loc, EEsProfile, 310, 0, "shared");
- parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshMask | EShLangTaskMask), "shared");
$$.init($1.loc);
$$.qualifier.storage = EvqShared;
}
@@ -1648,6 +1666,13 @@
parseContext.unimplemented($1.loc, "subroutine");
$$.init($1.loc);
}
+ | TASKPAYLOADWORKGROUPEXT {
+ // No need for profile version or extension check. Shader stage already checks both.
+ parseContext.globalCheck($1.loc, "taskPayloadSharedEXT");
+ parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskPayloadSharedEXT ");
+ $$.init($1.loc);
+ $$.qualifier.storage = EvqtaskPayloadSharedEXT;
+ }
;
@@ -3718,7 +3743,7 @@
}
RIGHT_BRACE {
if ($3 && $3->getAsAggregate())
- $3->getAsAggregate()->setOperator(EOpSequence);
+ $3->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence);
$$ = $3;
}
;
diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp
index 5ba6a6d..7ca3e71 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp
+++ b/glslang/MachineIndependent/glslang_tab.cpp
@@ -571,142 +571,145 @@
YYSYMBOL_SHADERCALLCOHERENT = 447, /* SHADERCALLCOHERENT */
YYSYMBOL_NOPERSPECTIVE = 448, /* NOPERSPECTIVE */
YYSYMBOL_EXPLICITINTERPAMD = 449, /* EXPLICITINTERPAMD */
- YYSYMBOL_PERVERTEXNV = 450, /* PERVERTEXNV */
- YYSYMBOL_PERPRIMITIVENV = 451, /* PERPRIMITIVENV */
- YYSYMBOL_PERVIEWNV = 452, /* PERVIEWNV */
- YYSYMBOL_PERTASKNV = 453, /* PERTASKNV */
- YYSYMBOL_PRECISE = 454, /* PRECISE */
- YYSYMBOL_YYACCEPT = 455, /* $accept */
- YYSYMBOL_variable_identifier = 456, /* variable_identifier */
- YYSYMBOL_primary_expression = 457, /* primary_expression */
- YYSYMBOL_postfix_expression = 458, /* postfix_expression */
- YYSYMBOL_integer_expression = 459, /* integer_expression */
- YYSYMBOL_function_call = 460, /* function_call */
- YYSYMBOL_function_call_or_method = 461, /* function_call_or_method */
- YYSYMBOL_function_call_generic = 462, /* function_call_generic */
- YYSYMBOL_function_call_header_no_parameters = 463, /* function_call_header_no_parameters */
- YYSYMBOL_function_call_header_with_parameters = 464, /* function_call_header_with_parameters */
- YYSYMBOL_function_call_header = 465, /* function_call_header */
- YYSYMBOL_function_identifier = 466, /* function_identifier */
- YYSYMBOL_unary_expression = 467, /* unary_expression */
- YYSYMBOL_unary_operator = 468, /* unary_operator */
- YYSYMBOL_multiplicative_expression = 469, /* multiplicative_expression */
- YYSYMBOL_additive_expression = 470, /* additive_expression */
- YYSYMBOL_shift_expression = 471, /* shift_expression */
- YYSYMBOL_relational_expression = 472, /* relational_expression */
- YYSYMBOL_equality_expression = 473, /* equality_expression */
- YYSYMBOL_and_expression = 474, /* and_expression */
- YYSYMBOL_exclusive_or_expression = 475, /* exclusive_or_expression */
- YYSYMBOL_inclusive_or_expression = 476, /* inclusive_or_expression */
- YYSYMBOL_logical_and_expression = 477, /* logical_and_expression */
- YYSYMBOL_logical_xor_expression = 478, /* logical_xor_expression */
- YYSYMBOL_logical_or_expression = 479, /* logical_or_expression */
- YYSYMBOL_conditional_expression = 480, /* conditional_expression */
- YYSYMBOL_481_1 = 481, /* $@1 */
- YYSYMBOL_assignment_expression = 482, /* assignment_expression */
- YYSYMBOL_assignment_operator = 483, /* assignment_operator */
- YYSYMBOL_expression = 484, /* expression */
- YYSYMBOL_constant_expression = 485, /* constant_expression */
- YYSYMBOL_declaration = 486, /* declaration */
- YYSYMBOL_block_structure = 487, /* block_structure */
- YYSYMBOL_488_2 = 488, /* $@2 */
- YYSYMBOL_identifier_list = 489, /* identifier_list */
- YYSYMBOL_function_prototype = 490, /* function_prototype */
- YYSYMBOL_function_declarator = 491, /* function_declarator */
- YYSYMBOL_function_header_with_parameters = 492, /* function_header_with_parameters */
- YYSYMBOL_function_header = 493, /* function_header */
- YYSYMBOL_parameter_declarator = 494, /* parameter_declarator */
- YYSYMBOL_parameter_declaration = 495, /* parameter_declaration */
- YYSYMBOL_parameter_type_specifier = 496, /* parameter_type_specifier */
- YYSYMBOL_init_declarator_list = 497, /* init_declarator_list */
- YYSYMBOL_single_declaration = 498, /* single_declaration */
- YYSYMBOL_fully_specified_type = 499, /* fully_specified_type */
- YYSYMBOL_invariant_qualifier = 500, /* invariant_qualifier */
- YYSYMBOL_interpolation_qualifier = 501, /* interpolation_qualifier */
- YYSYMBOL_layout_qualifier = 502, /* layout_qualifier */
- YYSYMBOL_layout_qualifier_id_list = 503, /* layout_qualifier_id_list */
- YYSYMBOL_layout_qualifier_id = 504, /* layout_qualifier_id */
- YYSYMBOL_precise_qualifier = 505, /* precise_qualifier */
- YYSYMBOL_type_qualifier = 506, /* type_qualifier */
- YYSYMBOL_single_type_qualifier = 507, /* single_type_qualifier */
- YYSYMBOL_storage_qualifier = 508, /* storage_qualifier */
- YYSYMBOL_non_uniform_qualifier = 509, /* non_uniform_qualifier */
- YYSYMBOL_type_name_list = 510, /* type_name_list */
- YYSYMBOL_type_specifier = 511, /* type_specifier */
- YYSYMBOL_array_specifier = 512, /* array_specifier */
- YYSYMBOL_type_parameter_specifier_opt = 513, /* type_parameter_specifier_opt */
- YYSYMBOL_type_parameter_specifier = 514, /* type_parameter_specifier */
- YYSYMBOL_type_parameter_specifier_list = 515, /* type_parameter_specifier_list */
- YYSYMBOL_type_specifier_nonarray = 516, /* type_specifier_nonarray */
- YYSYMBOL_precision_qualifier = 517, /* precision_qualifier */
- YYSYMBOL_struct_specifier = 518, /* struct_specifier */
- YYSYMBOL_519_3 = 519, /* $@3 */
- YYSYMBOL_520_4 = 520, /* $@4 */
- YYSYMBOL_struct_declaration_list = 521, /* struct_declaration_list */
- YYSYMBOL_struct_declaration = 522, /* struct_declaration */
- YYSYMBOL_struct_declarator_list = 523, /* struct_declarator_list */
- YYSYMBOL_struct_declarator = 524, /* struct_declarator */
- YYSYMBOL_initializer = 525, /* initializer */
- YYSYMBOL_initializer_list = 526, /* initializer_list */
- YYSYMBOL_declaration_statement = 527, /* declaration_statement */
- YYSYMBOL_statement = 528, /* statement */
- YYSYMBOL_simple_statement = 529, /* simple_statement */
- YYSYMBOL_demote_statement = 530, /* demote_statement */
- YYSYMBOL_compound_statement = 531, /* compound_statement */
- YYSYMBOL_532_5 = 532, /* $@5 */
- YYSYMBOL_533_6 = 533, /* $@6 */
- YYSYMBOL_statement_no_new_scope = 534, /* statement_no_new_scope */
- YYSYMBOL_statement_scoped = 535, /* statement_scoped */
- YYSYMBOL_536_7 = 536, /* $@7 */
- YYSYMBOL_537_8 = 537, /* $@8 */
- YYSYMBOL_compound_statement_no_new_scope = 538, /* compound_statement_no_new_scope */
- YYSYMBOL_statement_list = 539, /* statement_list */
- YYSYMBOL_expression_statement = 540, /* expression_statement */
- YYSYMBOL_selection_statement = 541, /* selection_statement */
- YYSYMBOL_selection_statement_nonattributed = 542, /* selection_statement_nonattributed */
- YYSYMBOL_selection_rest_statement = 543, /* selection_rest_statement */
- YYSYMBOL_condition = 544, /* condition */
- YYSYMBOL_switch_statement = 545, /* switch_statement */
- YYSYMBOL_switch_statement_nonattributed = 546, /* switch_statement_nonattributed */
- YYSYMBOL_547_9 = 547, /* $@9 */
- YYSYMBOL_switch_statement_list = 548, /* switch_statement_list */
- YYSYMBOL_case_label = 549, /* case_label */
- YYSYMBOL_iteration_statement = 550, /* iteration_statement */
- YYSYMBOL_iteration_statement_nonattributed = 551, /* iteration_statement_nonattributed */
- YYSYMBOL_552_10 = 552, /* $@10 */
- YYSYMBOL_553_11 = 553, /* $@11 */
- YYSYMBOL_554_12 = 554, /* $@12 */
- YYSYMBOL_for_init_statement = 555, /* for_init_statement */
- YYSYMBOL_conditionopt = 556, /* conditionopt */
- YYSYMBOL_for_rest_statement = 557, /* for_rest_statement */
- YYSYMBOL_jump_statement = 558, /* jump_statement */
- YYSYMBOL_translation_unit = 559, /* translation_unit */
- YYSYMBOL_external_declaration = 560, /* external_declaration */
- YYSYMBOL_function_definition = 561, /* function_definition */
- YYSYMBOL_562_13 = 562, /* $@13 */
- YYSYMBOL_attribute = 563, /* attribute */
- YYSYMBOL_attribute_list = 564, /* attribute_list */
- YYSYMBOL_single_attribute = 565, /* single_attribute */
- YYSYMBOL_spirv_requirements_list = 566, /* spirv_requirements_list */
- YYSYMBOL_spirv_requirements_parameter = 567, /* spirv_requirements_parameter */
- YYSYMBOL_spirv_extension_list = 568, /* spirv_extension_list */
- YYSYMBOL_spirv_capability_list = 569, /* spirv_capability_list */
- YYSYMBOL_spirv_execution_mode_qualifier = 570, /* spirv_execution_mode_qualifier */
- YYSYMBOL_spirv_execution_mode_parameter_list = 571, /* spirv_execution_mode_parameter_list */
- YYSYMBOL_spirv_execution_mode_parameter = 572, /* spirv_execution_mode_parameter */
- YYSYMBOL_spirv_execution_mode_id_parameter_list = 573, /* spirv_execution_mode_id_parameter_list */
- YYSYMBOL_spirv_storage_class_qualifier = 574, /* spirv_storage_class_qualifier */
- YYSYMBOL_spirv_decorate_qualifier = 575, /* spirv_decorate_qualifier */
- YYSYMBOL_spirv_decorate_parameter_list = 576, /* spirv_decorate_parameter_list */
- YYSYMBOL_spirv_decorate_parameter = 577, /* spirv_decorate_parameter */
- YYSYMBOL_spirv_decorate_id_parameter_list = 578, /* spirv_decorate_id_parameter_list */
- YYSYMBOL_spirv_decorate_string_parameter_list = 579, /* spirv_decorate_string_parameter_list */
- YYSYMBOL_spirv_type_specifier = 580, /* spirv_type_specifier */
- YYSYMBOL_spirv_type_parameter_list = 581, /* spirv_type_parameter_list */
- YYSYMBOL_spirv_type_parameter = 582, /* spirv_type_parameter */
- YYSYMBOL_spirv_instruction_qualifier = 583, /* spirv_instruction_qualifier */
- YYSYMBOL_spirv_instruction_qualifier_list = 584, /* spirv_instruction_qualifier_list */
- YYSYMBOL_spirv_instruction_qualifier_id = 585 /* spirv_instruction_qualifier_id */
+ YYSYMBOL_PERVERTEXEXT = 450, /* PERVERTEXEXT */
+ YYSYMBOL_PERVERTEXNV = 451, /* PERVERTEXNV */
+ YYSYMBOL_PERPRIMITIVENV = 452, /* PERPRIMITIVENV */
+ YYSYMBOL_PERVIEWNV = 453, /* PERVIEWNV */
+ YYSYMBOL_PERTASKNV = 454, /* PERTASKNV */
+ YYSYMBOL_PERPRIMITIVEEXT = 455, /* PERPRIMITIVEEXT */
+ YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 456, /* TASKPAYLOADWORKGROUPEXT */
+ YYSYMBOL_PRECISE = 457, /* PRECISE */
+ YYSYMBOL_YYACCEPT = 458, /* $accept */
+ YYSYMBOL_variable_identifier = 459, /* variable_identifier */
+ YYSYMBOL_primary_expression = 460, /* primary_expression */
+ YYSYMBOL_postfix_expression = 461, /* postfix_expression */
+ YYSYMBOL_integer_expression = 462, /* integer_expression */
+ YYSYMBOL_function_call = 463, /* function_call */
+ YYSYMBOL_function_call_or_method = 464, /* function_call_or_method */
+ YYSYMBOL_function_call_generic = 465, /* function_call_generic */
+ YYSYMBOL_function_call_header_no_parameters = 466, /* function_call_header_no_parameters */
+ YYSYMBOL_function_call_header_with_parameters = 467, /* function_call_header_with_parameters */
+ YYSYMBOL_function_call_header = 468, /* function_call_header */
+ YYSYMBOL_function_identifier = 469, /* function_identifier */
+ YYSYMBOL_unary_expression = 470, /* unary_expression */
+ YYSYMBOL_unary_operator = 471, /* unary_operator */
+ YYSYMBOL_multiplicative_expression = 472, /* multiplicative_expression */
+ YYSYMBOL_additive_expression = 473, /* additive_expression */
+ YYSYMBOL_shift_expression = 474, /* shift_expression */
+ YYSYMBOL_relational_expression = 475, /* relational_expression */
+ YYSYMBOL_equality_expression = 476, /* equality_expression */
+ YYSYMBOL_and_expression = 477, /* and_expression */
+ YYSYMBOL_exclusive_or_expression = 478, /* exclusive_or_expression */
+ YYSYMBOL_inclusive_or_expression = 479, /* inclusive_or_expression */
+ YYSYMBOL_logical_and_expression = 480, /* logical_and_expression */
+ YYSYMBOL_logical_xor_expression = 481, /* logical_xor_expression */
+ YYSYMBOL_logical_or_expression = 482, /* logical_or_expression */
+ YYSYMBOL_conditional_expression = 483, /* conditional_expression */
+ YYSYMBOL_484_1 = 484, /* $@1 */
+ YYSYMBOL_assignment_expression = 485, /* assignment_expression */
+ YYSYMBOL_assignment_operator = 486, /* assignment_operator */
+ YYSYMBOL_expression = 487, /* expression */
+ YYSYMBOL_constant_expression = 488, /* constant_expression */
+ YYSYMBOL_declaration = 489, /* declaration */
+ YYSYMBOL_block_structure = 490, /* block_structure */
+ YYSYMBOL_491_2 = 491, /* $@2 */
+ YYSYMBOL_identifier_list = 492, /* identifier_list */
+ YYSYMBOL_function_prototype = 493, /* function_prototype */
+ YYSYMBOL_function_declarator = 494, /* function_declarator */
+ YYSYMBOL_function_header_with_parameters = 495, /* function_header_with_parameters */
+ YYSYMBOL_function_header = 496, /* function_header */
+ YYSYMBOL_parameter_declarator = 497, /* parameter_declarator */
+ YYSYMBOL_parameter_declaration = 498, /* parameter_declaration */
+ YYSYMBOL_parameter_type_specifier = 499, /* parameter_type_specifier */
+ YYSYMBOL_init_declarator_list = 500, /* init_declarator_list */
+ YYSYMBOL_single_declaration = 501, /* single_declaration */
+ YYSYMBOL_fully_specified_type = 502, /* fully_specified_type */
+ YYSYMBOL_invariant_qualifier = 503, /* invariant_qualifier */
+ YYSYMBOL_interpolation_qualifier = 504, /* interpolation_qualifier */
+ YYSYMBOL_layout_qualifier = 505, /* layout_qualifier */
+ YYSYMBOL_layout_qualifier_id_list = 506, /* layout_qualifier_id_list */
+ YYSYMBOL_layout_qualifier_id = 507, /* layout_qualifier_id */
+ YYSYMBOL_precise_qualifier = 508, /* precise_qualifier */
+ YYSYMBOL_type_qualifier = 509, /* type_qualifier */
+ YYSYMBOL_single_type_qualifier = 510, /* single_type_qualifier */
+ YYSYMBOL_storage_qualifier = 511, /* storage_qualifier */
+ YYSYMBOL_non_uniform_qualifier = 512, /* non_uniform_qualifier */
+ YYSYMBOL_type_name_list = 513, /* type_name_list */
+ YYSYMBOL_type_specifier = 514, /* type_specifier */
+ YYSYMBOL_array_specifier = 515, /* array_specifier */
+ YYSYMBOL_type_parameter_specifier_opt = 516, /* type_parameter_specifier_opt */
+ YYSYMBOL_type_parameter_specifier = 517, /* type_parameter_specifier */
+ YYSYMBOL_type_parameter_specifier_list = 518, /* type_parameter_specifier_list */
+ YYSYMBOL_type_specifier_nonarray = 519, /* type_specifier_nonarray */
+ YYSYMBOL_precision_qualifier = 520, /* precision_qualifier */
+ YYSYMBOL_struct_specifier = 521, /* struct_specifier */
+ YYSYMBOL_522_3 = 522, /* $@3 */
+ YYSYMBOL_523_4 = 523, /* $@4 */
+ YYSYMBOL_struct_declaration_list = 524, /* struct_declaration_list */
+ YYSYMBOL_struct_declaration = 525, /* struct_declaration */
+ YYSYMBOL_struct_declarator_list = 526, /* struct_declarator_list */
+ YYSYMBOL_struct_declarator = 527, /* struct_declarator */
+ YYSYMBOL_initializer = 528, /* initializer */
+ YYSYMBOL_initializer_list = 529, /* initializer_list */
+ YYSYMBOL_declaration_statement = 530, /* declaration_statement */
+ YYSYMBOL_statement = 531, /* statement */
+ YYSYMBOL_simple_statement = 532, /* simple_statement */
+ YYSYMBOL_demote_statement = 533, /* demote_statement */
+ YYSYMBOL_compound_statement = 534, /* compound_statement */
+ YYSYMBOL_535_5 = 535, /* $@5 */
+ YYSYMBOL_536_6 = 536, /* $@6 */
+ YYSYMBOL_statement_no_new_scope = 537, /* statement_no_new_scope */
+ YYSYMBOL_statement_scoped = 538, /* statement_scoped */
+ YYSYMBOL_539_7 = 539, /* $@7 */
+ YYSYMBOL_540_8 = 540, /* $@8 */
+ YYSYMBOL_compound_statement_no_new_scope = 541, /* compound_statement_no_new_scope */
+ YYSYMBOL_statement_list = 542, /* statement_list */
+ YYSYMBOL_expression_statement = 543, /* expression_statement */
+ YYSYMBOL_selection_statement = 544, /* selection_statement */
+ YYSYMBOL_selection_statement_nonattributed = 545, /* selection_statement_nonattributed */
+ YYSYMBOL_selection_rest_statement = 546, /* selection_rest_statement */
+ YYSYMBOL_condition = 547, /* condition */
+ YYSYMBOL_switch_statement = 548, /* switch_statement */
+ YYSYMBOL_switch_statement_nonattributed = 549, /* switch_statement_nonattributed */
+ YYSYMBOL_550_9 = 550, /* $@9 */
+ YYSYMBOL_switch_statement_list = 551, /* switch_statement_list */
+ YYSYMBOL_case_label = 552, /* case_label */
+ YYSYMBOL_iteration_statement = 553, /* iteration_statement */
+ YYSYMBOL_iteration_statement_nonattributed = 554, /* iteration_statement_nonattributed */
+ YYSYMBOL_555_10 = 555, /* $@10 */
+ YYSYMBOL_556_11 = 556, /* $@11 */
+ YYSYMBOL_557_12 = 557, /* $@12 */
+ YYSYMBOL_for_init_statement = 558, /* for_init_statement */
+ YYSYMBOL_conditionopt = 559, /* conditionopt */
+ YYSYMBOL_for_rest_statement = 560, /* for_rest_statement */
+ YYSYMBOL_jump_statement = 561, /* jump_statement */
+ YYSYMBOL_translation_unit = 562, /* translation_unit */
+ YYSYMBOL_external_declaration = 563, /* external_declaration */
+ YYSYMBOL_function_definition = 564, /* function_definition */
+ YYSYMBOL_565_13 = 565, /* $@13 */
+ YYSYMBOL_attribute = 566, /* attribute */
+ YYSYMBOL_attribute_list = 567, /* attribute_list */
+ YYSYMBOL_single_attribute = 568, /* single_attribute */
+ YYSYMBOL_spirv_requirements_list = 569, /* spirv_requirements_list */
+ YYSYMBOL_spirv_requirements_parameter = 570, /* spirv_requirements_parameter */
+ YYSYMBOL_spirv_extension_list = 571, /* spirv_extension_list */
+ YYSYMBOL_spirv_capability_list = 572, /* spirv_capability_list */
+ YYSYMBOL_spirv_execution_mode_qualifier = 573, /* spirv_execution_mode_qualifier */
+ YYSYMBOL_spirv_execution_mode_parameter_list = 574, /* spirv_execution_mode_parameter_list */
+ YYSYMBOL_spirv_execution_mode_parameter = 575, /* spirv_execution_mode_parameter */
+ YYSYMBOL_spirv_execution_mode_id_parameter_list = 576, /* spirv_execution_mode_id_parameter_list */
+ YYSYMBOL_spirv_storage_class_qualifier = 577, /* spirv_storage_class_qualifier */
+ YYSYMBOL_spirv_decorate_qualifier = 578, /* spirv_decorate_qualifier */
+ YYSYMBOL_spirv_decorate_parameter_list = 579, /* spirv_decorate_parameter_list */
+ YYSYMBOL_spirv_decorate_parameter = 580, /* spirv_decorate_parameter */
+ YYSYMBOL_spirv_decorate_id_parameter_list = 581, /* spirv_decorate_id_parameter_list */
+ YYSYMBOL_spirv_decorate_string_parameter_list = 582, /* spirv_decorate_string_parameter_list */
+ YYSYMBOL_spirv_type_specifier = 583, /* spirv_type_specifier */
+ YYSYMBOL_spirv_type_parameter_list = 584, /* spirv_type_parameter_list */
+ YYSYMBOL_spirv_type_parameter = 585, /* spirv_type_parameter */
+ YYSYMBOL_spirv_instruction_qualifier = 586, /* spirv_instruction_qualifier */
+ YYSYMBOL_spirv_instruction_qualifier_list = 587, /* spirv_instruction_qualifier_list */
+ YYSYMBOL_spirv_instruction_qualifier_id = 588 /* spirv_instruction_qualifier_id */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
@@ -728,7 +731,7 @@
extern int yylex(YYSTYPE*, TParseContext&);
-#line 732 "MachineIndependent/glslang_tab.cpp"
+#line 735 "MachineIndependent/glslang_tab.cpp"
#ifdef short
@@ -1032,21 +1035,21 @@
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 442
+#define YYFINAL 445
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 12452
+#define YYLAST 12503
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 455
+#define YYNTOKENS 458
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 131
/* YYNRULES -- Number of rules. */
-#define YYNRULES 683
+#define YYNRULES 686
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 929
+#define YYNSTATES 932
/* YYMAXUTOK -- Last valid token kind. */
-#define YYMAXUTOK 709
+#define YYMAXUTOK 712
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -1130,7 +1133,8 @@
415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457
};
#if YYDEBUG
@@ -1151,61 +1155,61 @@
982, 988, 994, 1004, 1007, 1014, 1022, 1042, 1065, 1080,
1105, 1116, 1126, 1136, 1146, 1155, 1158, 1162, 1166, 1171,
1179, 1186, 1191, 1196, 1201, 1210, 1220, 1247, 1256, 1263,
- 1271, 1278, 1285, 1293, 1303, 1310, 1321, 1327, 1330, 1337,
- 1341, 1345, 1354, 1364, 1367, 1378, 1381, 1384, 1388, 1392,
- 1397, 1401, 1404, 1409, 1413, 1418, 1427, 1431, 1436, 1442,
- 1448, 1455, 1460, 1468, 1474, 1486, 1500, 1506, 1511, 1519,
- 1527, 1535, 1543, 1551, 1559, 1567, 1575, 1582, 1589, 1593,
- 1598, 1603, 1608, 1613, 1618, 1623, 1627, 1631, 1635, 1639,
- 1645, 1656, 1663, 1666, 1675, 1680, 1690, 1695, 1703, 1707,
- 1717, 1720, 1726, 1732, 1739, 1749, 1753, 1757, 1761, 1766,
- 1770, 1775, 1780, 1785, 1790, 1795, 1800, 1805, 1810, 1815,
- 1821, 1827, 1833, 1838, 1843, 1848, 1853, 1858, 1863, 1868,
- 1873, 1878, 1883, 1888, 1894, 1901, 1906, 1911, 1916, 1921,
- 1926, 1931, 1936, 1941, 1946, 1951, 1956, 1964, 1972, 1980,
- 1986, 1992, 1998, 2004, 2010, 2016, 2022, 2028, 2034, 2040,
- 2046, 2052, 2058, 2064, 2070, 2076, 2082, 2088, 2094, 2100,
- 2106, 2112, 2118, 2124, 2130, 2136, 2142, 2148, 2154, 2160,
- 2166, 2172, 2178, 2186, 2194, 2202, 2210, 2218, 2226, 2234,
- 2242, 2250, 2258, 2266, 2274, 2280, 2286, 2292, 2298, 2304,
- 2310, 2316, 2322, 2328, 2334, 2340, 2346, 2352, 2358, 2364,
- 2370, 2376, 2382, 2388, 2394, 2400, 2406, 2412, 2418, 2424,
- 2430, 2436, 2442, 2448, 2454, 2460, 2466, 2472, 2478, 2484,
- 2490, 2494, 2498, 2502, 2507, 2513, 2518, 2523, 2528, 2533,
- 2538, 2543, 2549, 2554, 2559, 2564, 2569, 2574, 2580, 2586,
- 2592, 2598, 2604, 2610, 2616, 2622, 2628, 2634, 2640, 2646,
- 2652, 2658, 2663, 2668, 2673, 2678, 2683, 2688, 2694, 2699,
- 2704, 2709, 2714, 2719, 2724, 2729, 2735, 2740, 2745, 2750,
- 2755, 2760, 2765, 2770, 2775, 2780, 2785, 2790, 2795, 2800,
- 2805, 2811, 2816, 2821, 2827, 2833, 2838, 2843, 2848, 2854,
- 2859, 2864, 2869, 2875, 2880, 2885, 2890, 2896, 2901, 2906,
- 2911, 2917, 2923, 2929, 2935, 2940, 2946, 2952, 2958, 2963,
- 2968, 2973, 2978, 2983, 2989, 2994, 2999, 3004, 3010, 3015,
- 3020, 3025, 3031, 3036, 3041, 3046, 3052, 3057, 3062, 3067,
- 3073, 3078, 3083, 3088, 3094, 3099, 3104, 3109, 3115, 3120,
- 3125, 3130, 3136, 3141, 3146, 3151, 3157, 3162, 3167, 3172,
- 3178, 3183, 3188, 3193, 3199, 3204, 3209, 3214, 3220, 3225,
- 3230, 3235, 3241, 3246, 3251, 3256, 3262, 3267, 3272, 3277,
- 3283, 3288, 3293, 3298, 3303, 3308, 3313, 3318, 3323, 3328,
- 3333, 3338, 3343, 3348, 3353, 3358, 3363, 3368, 3373, 3378,
- 3383, 3388, 3393, 3398, 3403, 3409, 3415, 3421, 3427, 3434,
- 3441, 3447, 3453, 3459, 3465, 3471, 3477, 3483, 3488, 3493,
- 3509, 3514, 3519, 3527, 3527, 3538, 3538, 3548, 3551, 3564,
- 3586, 3613, 3617, 3623, 3628, 3639, 3643, 3649, 3655, 3666,
- 3669, 3676, 3680, 3681, 3687, 3688, 3689, 3690, 3691, 3692,
- 3693, 3695, 3701, 3710, 3711, 3715, 3711, 3727, 3728, 3732,
- 3732, 3739, 3739, 3753, 3756, 3764, 3772, 3783, 3784, 3788,
- 3792, 3800, 3807, 3811, 3819, 3823, 3836, 3840, 3848, 3848,
- 3868, 3871, 3877, 3889, 3901, 3905, 3913, 3913, 3928, 3928,
- 3946, 3946, 3967, 3970, 3976, 3979, 3985, 3989, 3996, 4001,
- 4006, 4013, 4016, 4020, 4025, 4029, 4039, 4043, 4052, 4055,
- 4059, 4068, 4068, 4110, 4115, 4118, 4123, 4126, 4133, 4136,
- 4141, 4144, 4149, 4152, 4157, 4160, 4165, 4169, 4174, 4178,
- 4183, 4187, 4194, 4197, 4202, 4205, 4208, 4211, 4214, 4219,
- 4228, 4239, 4244, 4252, 4256, 4261, 4265, 4270, 4274, 4279,
- 4283, 4290, 4293, 4298, 4301, 4304, 4307, 4312, 4320, 4330,
- 4334, 4339, 4343, 4348, 4352, 4359, 4362, 4367, 4372, 4375,
- 4381, 4384, 4389, 4392
+ 1271, 1278, 1285, 1293, 1301, 1311, 1321, 1328, 1339, 1345,
+ 1348, 1355, 1359, 1363, 1372, 1382, 1385, 1396, 1399, 1402,
+ 1406, 1410, 1415, 1419, 1422, 1427, 1431, 1436, 1445, 1449,
+ 1454, 1460, 1466, 1473, 1478, 1486, 1492, 1504, 1518, 1524,
+ 1529, 1537, 1545, 1553, 1561, 1569, 1577, 1585, 1593, 1600,
+ 1607, 1611, 1616, 1621, 1626, 1631, 1636, 1641, 1645, 1649,
+ 1653, 1657, 1663, 1669, 1681, 1688, 1691, 1700, 1705, 1715,
+ 1720, 1728, 1732, 1742, 1745, 1751, 1757, 1764, 1774, 1778,
+ 1782, 1786, 1791, 1795, 1800, 1805, 1810, 1815, 1820, 1825,
+ 1830, 1835, 1840, 1846, 1852, 1858, 1863, 1868, 1873, 1878,
+ 1883, 1888, 1893, 1898, 1903, 1908, 1913, 1919, 1926, 1931,
+ 1936, 1941, 1946, 1951, 1956, 1961, 1966, 1971, 1976, 1981,
+ 1989, 1997, 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, 2211, 2219, 2227, 2235,
+ 2243, 2251, 2259, 2267, 2275, 2283, 2291, 2299, 2305, 2311,
+ 2317, 2323, 2329, 2335, 2341, 2347, 2353, 2359, 2365, 2371,
+ 2377, 2383, 2389, 2395, 2401, 2407, 2413, 2419, 2425, 2431,
+ 2437, 2443, 2449, 2455, 2461, 2467, 2473, 2479, 2485, 2491,
+ 2497, 2503, 2509, 2515, 2519, 2523, 2527, 2532, 2538, 2543,
+ 2548, 2553, 2558, 2563, 2568, 2574, 2579, 2584, 2589, 2594,
+ 2599, 2605, 2611, 2617, 2623, 2629, 2635, 2641, 2647, 2653,
+ 2659, 2665, 2671, 2677, 2683, 2688, 2693, 2698, 2703, 2708,
+ 2713, 2719, 2724, 2729, 2734, 2739, 2744, 2749, 2754, 2760,
+ 2765, 2770, 2775, 2780, 2785, 2790, 2795, 2800, 2805, 2810,
+ 2815, 2820, 2825, 2830, 2836, 2841, 2846, 2852, 2858, 2863,
+ 2868, 2873, 2879, 2884, 2889, 2894, 2900, 2905, 2910, 2915,
+ 2921, 2926, 2931, 2936, 2942, 2948, 2954, 2960, 2965, 2971,
+ 2977, 2983, 2988, 2993, 2998, 3003, 3008, 3014, 3019, 3024,
+ 3029, 3035, 3040, 3045, 3050, 3056, 3061, 3066, 3071, 3077,
+ 3082, 3087, 3092, 3098, 3103, 3108, 3113, 3119, 3124, 3129,
+ 3134, 3140, 3145, 3150, 3155, 3161, 3166, 3171, 3176, 3182,
+ 3187, 3192, 3197, 3203, 3208, 3213, 3218, 3224, 3229, 3234,
+ 3239, 3245, 3250, 3255, 3260, 3266, 3271, 3276, 3281, 3287,
+ 3292, 3297, 3302, 3308, 3313, 3318, 3323, 3328, 3333, 3338,
+ 3343, 3348, 3353, 3358, 3363, 3368, 3373, 3378, 3383, 3388,
+ 3393, 3398, 3403, 3408, 3413, 3418, 3423, 3428, 3434, 3440,
+ 3446, 3452, 3459, 3466, 3472, 3478, 3484, 3490, 3496, 3502,
+ 3508, 3513, 3518, 3534, 3539, 3544, 3552, 3552, 3563, 3563,
+ 3573, 3576, 3589, 3611, 3638, 3642, 3648, 3653, 3664, 3668,
+ 3674, 3680, 3691, 3694, 3701, 3705, 3706, 3712, 3713, 3714,
+ 3715, 3716, 3717, 3718, 3720, 3726, 3735, 3736, 3740, 3736,
+ 3752, 3753, 3757, 3757, 3764, 3764, 3778, 3781, 3789, 3797,
+ 3808, 3809, 3813, 3817, 3825, 3832, 3836, 3844, 3848, 3861,
+ 3865, 3873, 3873, 3893, 3896, 3902, 3914, 3926, 3930, 3938,
+ 3938, 3953, 3953, 3971, 3971, 3992, 3995, 4001, 4004, 4010,
+ 4014, 4021, 4026, 4031, 4038, 4041, 4045, 4050, 4054, 4064,
+ 4068, 4077, 4080, 4084, 4093, 4093, 4135, 4140, 4143, 4148,
+ 4151, 4158, 4161, 4166, 4169, 4174, 4177, 4182, 4185, 4190,
+ 4194, 4199, 4203, 4208, 4212, 4219, 4222, 4227, 4230, 4233,
+ 4236, 4239, 4244, 4253, 4264, 4269, 4277, 4281, 4286, 4290,
+ 4295, 4299, 4304, 4308, 4315, 4318, 4323, 4326, 4329, 4332,
+ 4337, 4345, 4355, 4359, 4364, 4368, 4373, 4377, 4384, 4387,
+ 4392, 4397, 4400, 4406, 4409, 4414, 4417
};
#endif
@@ -1319,7 +1323,8 @@
"WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT",
"WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE",
"SHADERCALLCOHERENT", "NOPERSPECTIVE", "EXPLICITINTERPAMD",
- "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", "PERTASKNV", "PRECISE",
+ "PERVERTEXEXT", "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV",
+ "PERTASKNV", "PERPRIMITIVEEXT", "TASKPAYLOADWORKGROUPEXT", "PRECISE",
"$accept", "variable_identifier", "primary_expression",
"postfix_expression", "integer_expression", "function_call",
"function_call_or_method", "function_call_generic",
@@ -1429,16 +1434,16 @@
675, 676, 677, 678, 679, 680, 681, 682, 683, 684,
685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709
+ 705, 706, 707, 708, 709, 710, 711, 712
};
#endif
-#define YYPACT_NINF (-859)
+#define YYPACT_NINF (-813)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
-#define YYTABLE_NINF (-570)
+#define YYTABLE_NINF (-573)
#define yytable_value_is_error(Yyn) \
0
@@ -1447,99 +1452,100 @@
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 4548, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -312, -274, -244, -212, -208,
- -201, -181, -169, -859, -859, -194, -859, -859, -859, -859,
- -859, -285, -859, -859, -859, -859, -859, -317, -859, -859,
- -859, -859, -859, -859, -132, -73, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -329, -70,
- -158, -145, 7712, -221, -859, -164, -859, -859, -859, -859,
- 5452, -859, -859, -859, -859, -68, -859, -859, 932, -859,
- -859, 7712, -55, -859, -859, -859, 5904, -80, -154, -150,
- -142, -135, -130, -80, -129, -79, 12060, -859, -45, -354,
- -76, -859, -308, -859, -43, -40, 7712, -859, -859, -859,
- 7712, -72, -71, -859, -265, -859, -257, -859, -859, 10761,
- -39, -859, -859, -859, -35, -69, 7712, -859, -42, -38,
- -37, -859, -302, -859, -235, -32, -33, -28, -27, -217,
- -26, -23, -22, -21, -20, -16, -216, -29, -15, -31,
- -303, -859, -13, 7712, -859, -14, -859, -214, -859, -859,
- -205, 9029, -859, -279, 1384, -859, -859, -859, -859, -859,
- -39, -299, -859, 9462, -275, -859, -34, -859, -137, 10761,
- 10761, -859, 10761, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -248, -859, -859, -859, -3, -203, 11194, -1,
- -859, 10761, -859, -859, -310, 3, -40, 1, -859, -309,
- -80, -859, -30, -859, -319, 5, -128, 10761, -124, -859,
- -157, -122, 10761, -120, 10, -118, -80, -859, 11627, -859,
- -116, 10761, 7, -79, -859, 7712, -25, 6356, -859, 7712,
- 10761, -859, -354, -859, -19, -859, -859, -78, -263, -94,
- -298, -52, -18, -8, -12, 29, 28, -301, 15, 9895,
- -859, 16, -859, -859, 19, 12, 17, -859, 20, 23,
- 18, 10328, 24, 10761, 21, 22, 25, 27, 30, -215,
- -859, -859, -117, -859, -70, 26, 34, -859, -859, -859,
- -859, -859, 1836, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, 5000, 3, 9462, -264, 8163, -859, -859, 9462,
- 7712, -859, -11, -859, -859, -859, -195, -859, -859, 10761,
- -6, -859, -859, 10761, 37, -859, -859, -859, 10761, -859,
- -859, -859, -322, -859, -859, -192, 35, -859, -859, -859,
- -859, -859, -859, -179, -859, -178, -859, -859, -177, 32,
- -859, -859, -859, -859, -175, -859, -174, -859, -167, 36,
- -859, -166, 38, -165, 35, -859, -163, -859, 45, 46,
- -859, -859, -25, -39, -115, -859, -859, -859, 6808, -859,
- -859, -859, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761,
- 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761,
- 10761, -859, -859, -859, 51, -859, 2288, -859, -859, -859,
- 2288, -859, 10761, -859, -859, -88, 10761, -63, -859, -859,
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, 10761, 10761, -859, -859, -859, -859,
- -859, -859, -859, 9462, -859, -859, -108, -859, 7260, -859,
- -859, 52, 53, -859, -859, -859, -859, -859, -138, -136,
- -859, -304, -859, -319, -859, -319, -859, 10761, 10761, -859,
- -157, -859, -157, -859, 10761, 10761, -859, 65, 10, -859,
- 11627, -859, 10761, -859, -859, -86, 3, -25, -859, -859,
- -859, -859, -859, -78, -78, -263, -263, -94, -94, -94,
- -94, -298, -298, -52, -18, -8, -12, 29, 28, 10761,
- -859, 2288, 4096, 31, 3644, -156, -859, -155, -859, -859,
- -859, -859, -859, 8596, -859, -859, -859, 66, -859, 39,
- -859, -153, -859, -151, -859, -148, -859, -146, -859, -144,
- -143, -859, -859, -859, -61, 64, 53, 40, 72, 74,
- -859, -859, 4096, 75, -859, -859, -859, -859, -859, -859,
- -859, -859, -859, -859, -859, 10761, -859, 71, 2740, 10761,
- -859, 73, 81, 41, 80, 3192, -859, 83, -859, 9462,
- -859, -859, -859, -141, 10761, 2740, 75, -859, -859, 2288,
- -859, 78, 53, -859, -859, 2288, 86, -859, -859
+ 4575, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -300, -272, -219, -123, -120,
+ -118, -105, -87, -813, -813, -317, -813, -813, -813, -813,
+ -813, -62, -813, -813, -813, -813, -813, -324, -813, -813,
+ -813, -813, -813, -813, -76, -64, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -319, -260, -133, -174, 7760, -191, -813, -166, -813,
+ -813, -813, -813, 5485, -813, -813, -813, -813, -61, -813,
+ -813, 935, -813, -813, 7760, -39, -813, -813, -813, 5940,
+ -50, -335, -267, -162, -152, -139, -50, -137, -46, 12111,
+ -813, -29, -339, -43, -813, -268, -813, -27, -6, 7760,
+ -813, -813, -813, 7760, -37, -36, -813, -298, -813, -237,
+ -813, -813, 10812, -5, -813, -813, -813, 1, -33, 7760,
+ -813, -4, -2, -3, -813, -236, -813, -227, -1, 3,
+ 4, 5, -225, 6, 10, 12, 13, 14, 17, -223,
+ 8, 18, 16, -304, -813, 21, 7760, -813, 19, -813,
+ -222, -813, -813, -207, 9080, -813, -247, 1390, -813, -813,
+ -813, -813, -813, -5, -270, -813, 9513, -250, -813, -22,
+ -813, -132, 10812, 10812, -813, 10812, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -265, -813, -813, -813, 25,
+ -204, 11245, 27, -813, 10812, -813, -813, -314, 30, -6,
+ 33, -813, -315, -50, -813, 15, -813, -325, 32, -130,
+ 10812, -129, -813, -146, -125, 10812, -124, 39, -119, -50,
+ -813, 11678, -813, -115, 10812, 36, -46, -813, 7760, 20,
+ 6395, -813, 7760, 10812, -813, -339, -813, 29, -813, -813,
+ -47, -83, -59, -288, -18, -17, 22, 26, 54, 59,
+ -309, 46, 9946, -813, 37, -813, -813, 50, 56, 58,
+ -813, 72, 74, 65, 10379, 76, 10812, 69, 68, 73,
+ 75, 77, -168, -813, -813, -82, -813, -260, 79, 82,
+ -813, -813, -813, -813, -813, 1845, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, 5030, 30, 9513, -241, 8214,
+ -813, -813, 9513, 7760, -813, 52, -813, -813, -813, -202,
+ -813, -813, 10812, 55, -813, -813, 10812, 85, -813, -813,
+ -813, 10812, -813, -813, -813, -310, -813, -813, -197, 81,
+ -813, -813, -813, -813, -813, -813, -195, -813, -194, -813,
+ -813, -190, 87, -813, -813, -813, -813, -169, -813, -167,
+ -813, -165, 89, -813, -158, 90, -157, 81, -813, -156,
+ -813, 91, 97, -813, -813, 20, -5, -77, -813, -813,
+ -813, 6850, -813, -813, -813, 10812, 10812, 10812, 10812, 10812,
+ 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812,
+ 10812, 10812, 10812, 10812, -813, -813, -813, 96, -813, 2300,
+ -813, -813, -813, 2300, -813, 10812, -813, -813, -49, 10812,
+ -26, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, 10812, 10812, -813,
+ -813, -813, -813, -813, -813, -813, 9513, -813, -813, -31,
+ -813, 7305, -813, -813, 98, 95, -813, -813, -813, -813,
+ -813, -172, -134, -813, -307, -813, -325, -813, -325, -813,
+ 10812, 10812, -813, -146, -813, -146, -813, 10812, 10812, -813,
+ 104, 39, -813, 11678, -813, 10812, -813, -813, -48, 30,
+ 20, -813, -813, -813, -813, -813, -47, -47, -83, -83,
+ -59, -59, -59, -59, -288, -288, -18, -17, 22, 26,
+ 54, 59, 10812, -813, 2300, 4120, 60, 3665, -155, -813,
+ -154, -813, -813, -813, -813, -813, 8647, -813, -813, -813,
+ 106, -813, -15, -813, -147, -813, -145, -813, -144, -813,
+ -143, -813, -142, -140, -813, -813, -813, -24, 101, 95,
+ 71, 107, 110, -813, -813, 4120, 109, -813, -813, -813,
+ -813, -813, -813, -813, -813, -813, -813, -813, 10812, -813,
+ 102, 2755, 10812, -813, 105, 113, 70, 112, 3210, -813,
+ 115, -813, 9513, -813, -813, -813, -135, 10812, 2755, 109,
+ -813, -813, 2300, -813, 111, 95, -813, -813, 2300, 117,
+ -813, -813
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1547,137 +1553,138 @@
means the default is an error. */
static const yytype_int16 yydefact[] =
{
- 0, 166, 219, 217, 218, 216, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 220, 221, 222, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 345, 346, 347, 348, 349, 350, 351, 371, 372, 373,
- 374, 375, 376, 377, 386, 399, 400, 387, 388, 390,
- 389, 391, 392, 393, 394, 395, 396, 397, 398, 174,
- 175, 245, 246, 244, 247, 254, 255, 252, 253, 250,
- 251, 248, 249, 277, 278, 279, 289, 290, 291, 274,
- 275, 276, 286, 287, 288, 271, 272, 273, 283, 284,
- 285, 268, 269, 270, 280, 281, 282, 256, 257, 258,
- 292, 293, 294, 259, 260, 261, 304, 305, 306, 262,
- 263, 264, 316, 317, 318, 265, 266, 267, 328, 329,
- 330, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 343, 340, 341,
- 342, 524, 525, 526, 355, 356, 379, 382, 344, 353,
- 354, 370, 352, 401, 402, 405, 406, 407, 409, 410,
- 411, 413, 414, 415, 417, 418, 514, 515, 378, 380,
- 381, 357, 358, 359, 403, 360, 364, 365, 368, 408,
- 412, 416, 361, 362, 366, 367, 404, 363, 369, 448,
- 450, 451, 452, 454, 455, 456, 458, 459, 460, 462,
- 463, 464, 466, 467, 468, 470, 471, 472, 474, 475,
- 476, 478, 479, 480, 482, 483, 484, 486, 487, 488,
- 490, 491, 449, 453, 457, 461, 465, 473, 477, 481,
- 469, 485, 489, 492, 493, 494, 495, 496, 497, 498,
- 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
- 509, 510, 511, 512, 513, 383, 384, 385, 419, 428,
- 430, 424, 429, 431, 432, 434, 435, 436, 438, 439,
- 440, 442, 443, 444, 446, 447, 420, 421, 422, 433,
- 423, 425, 426, 427, 437, 441, 445, 516, 517, 520,
- 521, 522, 523, 518, 519, 0, 0, 0, 0, 0,
- 0, 0, 0, 164, 165, 0, 620, 137, 530, 531,
- 532, 0, 529, 170, 168, 169, 167, 0, 215, 171,
- 172, 173, 139, 138, 0, 199, 180, 182, 178, 184,
- 186, 181, 183, 179, 185, 187, 176, 177, 201, 188,
- 195, 196, 197, 198, 189, 190, 191, 192, 193, 194,
- 140, 141, 142, 143, 144, 145, 152, 619, 0, 621,
- 0, 114, 113, 0, 125, 130, 159, 158, 156, 160,
- 0, 153, 155, 161, 135, 211, 157, 528, 0, 616,
- 618, 0, 0, 162, 163, 527, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 535, 0, 0,
- 0, 99, 0, 94, 0, 109, 0, 121, 115, 123,
- 0, 124, 0, 97, 131, 102, 0, 154, 136, 0,
- 204, 210, 1, 617, 0, 0, 0, 96, 0, 0,
- 0, 628, 0, 680, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 626,
- 0, 624, 0, 0, 533, 149, 151, 0, 147, 202,
- 0, 0, 100, 0, 0, 622, 110, 116, 120, 122,
- 118, 126, 117, 0, 132, 105, 0, 103, 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,
- 213, 0, 36, 34, 0, 205, 111, 0, 95, 0,
- 0, 678, 0, 636, 0, 0, 0, 0, 0, 653,
- 0, 0, 0, 0, 0, 0, 0, 673, 0, 651,
- 0, 0, 0, 0, 98, 0, 0, 0, 537, 0,
- 0, 146, 0, 200, 0, 206, 45, 49, 52, 55,
- 60, 63, 65, 67, 69, 71, 73, 75, 0, 0,
- 101, 564, 573, 577, 0, 0, 0, 598, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,
- 78, 91, 0, 551, 0, 161, 135, 554, 575, 553,
- 561, 552, 0, 555, 556, 579, 557, 586, 558, 559,
- 594, 560, 0, 119, 0, 127, 0, 545, 134, 0,
- 0, 107, 0, 104, 38, 39, 0, 22, 23, 0,
- 0, 28, 27, 0, 215, 31, 33, 40, 0, 212,
- 112, 682, 0, 683, 629, 0, 0, 681, 648, 644,
- 645, 646, 647, 0, 642, 0, 93, 649, 0, 0,
- 663, 664, 665, 666, 0, 661, 0, 667, 0, 0,
- 669, 0, 0, 0, 2, 677, 0, 675, 0, 0,
- 623, 625, 0, 543, 0, 541, 536, 538, 0, 150,
- 148, 203, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 168, 222, 220, 221, 219, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 223, 224, 225, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 348, 349, 350, 351, 352, 353, 354, 374, 375, 376,
+ 377, 378, 379, 380, 389, 402, 403, 390, 391, 393,
+ 392, 394, 395, 396, 397, 398, 399, 400, 401, 176,
+ 177, 248, 249, 247, 250, 257, 258, 255, 256, 253,
+ 254, 251, 252, 280, 281, 282, 292, 293, 294, 277,
+ 278, 279, 289, 290, 291, 274, 275, 276, 286, 287,
+ 288, 271, 272, 273, 283, 284, 285, 259, 260, 261,
+ 295, 296, 297, 262, 263, 264, 307, 308, 309, 265,
+ 266, 267, 319, 320, 321, 268, 269, 270, 331, 332,
+ 333, 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, 335,
+ 336, 337, 338, 339, 340, 341, 342, 346, 343, 344,
+ 345, 527, 528, 529, 358, 359, 382, 385, 347, 356,
+ 357, 373, 355, 404, 405, 408, 409, 410, 412, 413,
+ 414, 416, 417, 418, 420, 421, 517, 518, 381, 383,
+ 384, 360, 361, 362, 406, 363, 367, 368, 371, 411,
+ 415, 419, 364, 365, 369, 370, 407, 366, 372, 451,
+ 453, 454, 455, 457, 458, 459, 461, 462, 463, 465,
+ 466, 467, 469, 470, 471, 473, 474, 475, 477, 478,
+ 479, 481, 482, 483, 485, 486, 487, 489, 490, 491,
+ 493, 494, 452, 456, 460, 464, 468, 476, 480, 484,
+ 472, 488, 492, 495, 496, 497, 498, 499, 500, 501,
+ 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
+ 512, 513, 514, 515, 516, 386, 387, 388, 422, 431,
+ 433, 427, 432, 434, 435, 437, 438, 439, 441, 442,
+ 443, 445, 446, 447, 449, 450, 423, 424, 425, 436,
+ 426, 428, 429, 430, 440, 444, 448, 519, 520, 523,
+ 524, 525, 526, 521, 522, 0, 0, 0, 0, 0,
+ 0, 0, 0, 166, 167, 0, 623, 137, 533, 534,
+ 535, 0, 532, 172, 170, 171, 169, 0, 218, 173,
+ 174, 175, 139, 138, 0, 201, 182, 184, 180, 186,
+ 188, 183, 185, 181, 187, 189, 178, 179, 204, 190,
+ 197, 198, 199, 200, 191, 192, 193, 194, 195, 196,
+ 140, 141, 143, 142, 144, 146, 147, 145, 203, 154,
+ 622, 0, 624, 0, 114, 113, 0, 125, 130, 161,
+ 160, 158, 162, 0, 155, 157, 163, 135, 214, 159,
+ 531, 0, 619, 621, 0, 0, 164, 165, 530, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 76, 207, 208, 0, 563, 0, 596, 609, 608,
- 0, 600, 0, 612, 610, 0, 0, 0, 593, 613,
- 614, 615, 562, 81, 82, 84, 83, 86, 87, 88,
- 89, 90, 85, 80, 0, 0, 578, 574, 576, 580,
- 587, 595, 129, 0, 548, 549, 0, 133, 0, 108,
- 4, 0, 24, 21, 32, 214, 632, 634, 0, 0,
- 679, 0, 638, 0, 637, 0, 640, 0, 0, 655,
- 0, 654, 0, 657, 0, 0, 659, 0, 0, 674,
- 0, 671, 0, 652, 627, 0, 544, 0, 539, 534,
- 46, 47, 48, 51, 50, 53, 54, 58, 59, 56,
- 57, 61, 62, 64, 66, 68, 70, 72, 74, 0,
- 209, 565, 0, 0, 0, 0, 611, 0, 592, 79,
- 92, 128, 546, 0, 106, 19, 630, 0, 631, 0,
- 643, 0, 650, 0, 662, 0, 668, 0, 670, 0,
- 0, 676, 540, 542, 0, 0, 584, 0, 0, 0,
- 603, 602, 605, 571, 588, 547, 550, 633, 635, 639,
- 641, 656, 658, 660, 672, 0, 566, 0, 0, 0,
- 604, 0, 0, 583, 0, 0, 581, 0, 77, 0,
- 568, 597, 567, 0, 606, 0, 571, 570, 572, 590,
- 585, 0, 607, 601, 582, 591, 0, 599, 589
+ 538, 0, 0, 0, 99, 0, 94, 0, 109, 0,
+ 121, 115, 123, 0, 124, 0, 97, 131, 102, 0,
+ 156, 136, 0, 207, 213, 1, 620, 0, 0, 0,
+ 96, 0, 0, 0, 631, 0, 683, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 629, 0, 627, 0, 0, 536, 151, 153,
+ 0, 149, 205, 0, 0, 100, 0, 0, 625, 110,
+ 116, 120, 122, 118, 126, 117, 0, 132, 105, 0,
+ 103, 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, 216, 0, 36, 34, 0, 208, 111,
+ 0, 95, 0, 0, 681, 0, 639, 0, 0, 0,
+ 0, 0, 656, 0, 0, 0, 0, 0, 0, 0,
+ 676, 0, 654, 0, 0, 0, 0, 98, 0, 0,
+ 0, 540, 0, 0, 148, 0, 202, 0, 209, 45,
+ 49, 52, 55, 60, 63, 65, 67, 69, 71, 73,
+ 75, 0, 0, 101, 567, 576, 580, 0, 0, 0,
+ 601, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 45, 78, 91, 0, 554, 0, 163, 135,
+ 557, 578, 556, 564, 555, 0, 558, 559, 582, 560,
+ 589, 561, 562, 597, 563, 0, 119, 0, 127, 0,
+ 548, 134, 0, 0, 107, 0, 104, 38, 39, 0,
+ 22, 23, 0, 0, 28, 27, 0, 218, 31, 33,
+ 40, 0, 215, 112, 685, 0, 686, 632, 0, 0,
+ 684, 651, 647, 648, 649, 650, 0, 645, 0, 93,
+ 652, 0, 0, 666, 667, 668, 669, 0, 664, 0,
+ 670, 0, 0, 672, 0, 0, 0, 2, 680, 0,
+ 678, 0, 0, 626, 628, 0, 546, 0, 544, 539,
+ 541, 0, 152, 150, 206, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 76, 210, 211, 0, 566, 0,
+ 599, 612, 611, 0, 603, 0, 615, 613, 0, 0,
+ 0, 596, 616, 617, 618, 565, 81, 82, 84, 83,
+ 86, 87, 88, 89, 90, 85, 80, 0, 0, 581,
+ 577, 579, 583, 590, 598, 129, 0, 551, 552, 0,
+ 133, 0, 108, 4, 0, 24, 21, 32, 217, 635,
+ 637, 0, 0, 682, 0, 641, 0, 640, 0, 643,
+ 0, 0, 658, 0, 657, 0, 660, 0, 0, 662,
+ 0, 0, 677, 0, 674, 0, 655, 630, 0, 547,
+ 0, 542, 537, 46, 47, 48, 51, 50, 53, 54,
+ 58, 59, 56, 57, 61, 62, 64, 66, 68, 70,
+ 72, 74, 0, 212, 568, 0, 0, 0, 0, 614,
+ 0, 595, 79, 92, 128, 549, 0, 106, 19, 633,
+ 0, 634, 0, 646, 0, 653, 0, 665, 0, 671,
+ 0, 673, 0, 0, 679, 543, 545, 0, 0, 587,
+ 0, 0, 0, 606, 605, 608, 574, 591, 550, 553,
+ 636, 638, 642, 644, 659, 661, 663, 675, 0, 569,
+ 0, 0, 0, 607, 0, 0, 586, 0, 0, 584,
+ 0, 77, 0, 571, 600, 570, 0, 609, 0, 574,
+ 573, 575, 593, 588, 0, 610, 604, 585, 594, 0,
+ 602, 592
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -859, -859, -859, -859, -859, -859, -859, -859, -859, -859,
- -859, -859, -209, -859, -418, -417, -602, -421, -291, -284,
- -286, -283, -281, -287, -859, -473, -859, -490, -859, -497,
- -520, 13, -859, -859, -859, 14, -394, -859, -859, 33,
- 42, 44, -859, -859, -395, -859, -859, -859, -859, -121,
- -859, -381, -369, -859, 9, -859, 0, -424, -859, -859,
- -859, -859, 113, -859, -859, -859, -545, -549, -252, -365,
- -617, -859, -391, -618, -858, -859, -450, -859, -859, -459,
- -458, -859, -859, 43, -721, -387, -859, -173, -859, -422,
- -859, -170, -859, -859, -859, -859, -168, -859, -859, -859,
- -859, -859, -859, -859, -859, 67, -859, -859, 2, -859,
- -97, -300, -386, -859, -859, -859, -326, -323, -327, -859,
- -859, -330, -325, -328, -332, -859, -331, -334, -859, -390,
+ -813, -813, -813, -813, -813, -813, -813, -813, -813, -813,
+ -813, -813, -429, -813, -381, -380, -483, -383, -262, -257,
+ -261, -258, -255, -259, -813, -479, -813, -492, -813, -495,
+ -536, 11, -813, -813, -813, 7, -388, -813, -813, 42,
+ 49, 47, -813, -813, -401, -813, -813, -813, -813, -96,
+ -813, -384, -371, -813, 9, -813, 0, -425, -813, -813,
+ -813, -813, 150, -813, -813, -813, -546, -553, -217, -338,
+ -607, -813, -364, -619, -812, -813, -421, -813, -813, -428,
+ -430, -813, -813, 64, -718, -355, -813, -141, -813, -390,
+ -813, -138, -813, -813, -813, -813, -136, -813, -813, -813,
+ -813, -813, -813, -813, -813, 92, -813, -813, 2, -813,
+ -68, -275, -456, -813, -813, -813, -296, -293, -301, -813,
+ -813, -299, -295, -303, -302, -813, -306, -311, -813, -392,
-530
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 520, 521, 522, 781, 523, 524, 525, 526, 527,
- 528, 529, 609, 531, 577, 578, 579, 580, 581, 582,
- 583, 584, 585, 586, 587, 610, 839, 611, 764, 612,
- 695, 613, 378, 640, 498, 614, 380, 381, 382, 427,
- 428, 429, 383, 384, 385, 386, 387, 388, 477, 478,
- 389, 390, 391, 392, 532, 480, 533, 483, 440, 441,
- 534, 395, 396, 397, 569, 473, 567, 568, 704, 705,
- 638, 776, 617, 618, 619, 620, 621, 736, 875, 911,
- 903, 904, 905, 912, 622, 623, 624, 625, 906, 878,
- 626, 627, 907, 926, 628, 629, 630, 842, 740, 844,
- 882, 901, 902, 631, 398, 399, 400, 424, 632, 470,
- 471, 450, 451, 788, 789, 402, 673, 674, 678, 403,
- 404, 684, 685, 688, 691, 405, 696, 697, 406, 452,
- 453
+ -1, 523, 524, 525, 784, 526, 527, 528, 529, 530,
+ 531, 532, 612, 534, 580, 581, 582, 583, 584, 585,
+ 586, 587, 588, 589, 590, 613, 842, 614, 767, 615,
+ 698, 616, 381, 643, 501, 617, 383, 384, 385, 430,
+ 431, 432, 386, 387, 388, 389, 390, 391, 480, 481,
+ 392, 393, 394, 395, 535, 483, 536, 486, 443, 444,
+ 537, 398, 399, 400, 572, 476, 570, 571, 707, 708,
+ 641, 779, 620, 621, 622, 623, 624, 739, 878, 914,
+ 906, 907, 908, 915, 625, 626, 627, 628, 909, 881,
+ 629, 630, 910, 929, 631, 632, 633, 845, 743, 847,
+ 885, 904, 905, 634, 401, 402, 403, 427, 635, 473,
+ 474, 453, 454, 791, 792, 405, 676, 677, 681, 406,
+ 407, 687, 688, 691, 694, 408, 699, 700, 409, 455,
+ 456
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -1685,281 +1692,146 @@
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 394, 430, 401, 637, 768, 646, 445, 444, 588, 393,
- 494, 445, 667, 377, 379, 841, 535, 772, 707, 775,
- 446, 437, 777, 466, 708, 446, 786, 677, 667, 668,
- 421, 475, 687, 719, 720, 730, 417, 407, 655, 661,
- 910, 699, 662, 481, 661, 430, 658, 918, 541, 562,
- 709, 482, 481, 563, 542, 476, 422, 910, 659, 634,
- 787, 437, 669, 670, 671, 672, 633, 635, 418, 721,
- 722, 731, 589, 663, 676, 408, 589, 437, 663, 676,
- 590, 647, 648, 639, 492, 676, 481, 589, 676, 328,
- 329, 330, 565, 493, 773, 778, 495, 676, 715, 496,
- 716, -35, 497, 649, 745, 409, 747, 650, 456, 458,
- 460, 462, 464, 465, 468, 543, 734, 827, 828, 829,
- 830, 544, 843, 753, 754, 755, 756, 757, 758, 759,
- 760, 761, 762, 549, 557, 432, 571, 410, 433, 550,
- 558, 411, 572, 763, 637, 573, 637, 652, 412, 637,
- 665, 574, 782, 653, 664, 780, 851, 415, 790, 707,
- 664, 765, 664, 784, 542, 664, 693, 664, 413, 664,
- 664, 792, 794, 796, 664, 799, 801, 793, 795, 797,
- 414, 800, 802, 803, 806, 809, 565, 811, 565, 804,
- 807, 810, 425, 812, 883, 884, 437, 889, 925, 890,
- 765, 765, 891, 793, 892, 797, 893, 894, 800, 921,
- 804, 426, 807, 812, 856, 765, 858, 419, 857, 642,
- 859, 434, 643, 768, 680, 681, 682, 683, 454, 707,
- 530, 455, 457, 717, 718, 455, 886, 445, 444, 765,
- 459, 817, 766, 455, 818, 845, 852, 461, 853, 847,
- 455, 446, 463, 467, 675, 455, 455, 455, 679, 565,
- 686, 455, 689, 455, 692, 455, 698, 455, 765, 455,
- 817, 846, 576, 872, 849, 850, 420, 862, 677, 816,
- 667, 723, 724, 637, 866, 687, 712, 713, 714, 423,
- 644, 645, 920, 765, 848, 765, 895, 823, 824, 439,
- 825, 826, 831, 832, 447, 449, 469, 768, 474, 479,
- 484, 325, 481, 490, 491, 536, 537, 538, 561, 540,
- 539, 559, 657, 546, 676, 676, 545, 565, 547, 548,
- 551, 676, 676, 552, 553, 554, 555, 676, 576, 676,
- 556, 560, 874, 576, 570, 876, 564, 651, 656, 576,
- 492, 641, 576, 725, 589, 666, 662, 727, 690, 700,
- 703, 576, 726, 637, 728, 729, 711, 732, 737, 741,
- 735, 738, 742, 746, 779, -36, 739, 743, 748, 783,
- 576, 749, 431, -34, 750, 876, 751, -29, 798, 752,
- 438, 393, 805, 791, 808, 813, 814, 565, 394, 393,
- 401, 394, 913, 840, 855, 908, 394, 393, 401, 765,
- 393, 377, 379, 868, 887, 393, 472, 922, 896, 637,
- 448, 888, 898, 899, 879, 897, 431, 486, -569, 909,
- 431, 915, 914, 591, 833, 393, 919, 927, 916, 393,
- 928, 835, 834, 838, 416, 836, 438, 877, 837, 785,
- 815, 710, 873, 880, 917, 393, 923, 881, 924, 769,
- 900, 446, 770, 488, 771, 443, 701, 485, 487, 861,
- 860, 863, 865, 566, 489, 864, 869, 867, 871, 870,
- 0, 0, 393, 0, 616, 0, 0, 877, 0, 0,
- 0, 0, 0, 615, 0, 0, 0, 0, 0, 0,
- 0, 446, 0, 820, 821, 822, 576, 576, 576, 576,
- 576, 576, 576, 576, 576, 576, 576, 576, 576, 576,
- 576, 576, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 660, 0,
+ 397, 433, 404, 448, 640, 591, 771, 382, 448, 396,
+ 649, 380, 497, 533, 680, 670, 447, 710, 538, 690,
+ 449, 844, 440, 671, 469, 449, 711, 733, 702, 420,
+ 775, 670, 778, 664, 418, 780, 665, 712, 789, 658,
+ 424, 664, 661, 722, 723, 433, 478, 457, 565, 410,
+ 458, 495, 566, 484, 662, 579, 672, 673, 674, 675,
+ 496, 421, 440, 734, 650, 651, 425, 666, 636, 638,
+ 479, 679, 790, 647, 648, 666, 679, 411, 440, 724,
+ 725, 484, 679, 484, -35, 679, 652, 667, 637, 913,
+ 653, 485, 568, 667, 679, 667, 921, 781, 667, 426,
+ 667, 592, 667, 667, 592, 660, 913, 667, 642, 748,
+ 592, 750, 593, 737, 544, 460, 498, 776, 458, 499,
+ 545, 579, 500, 546, 846, 552, 579, 560, 574, 547,
+ 412, 553, 579, 561, 575, 579, 459, 461, 463, 465,
+ 467, 468, 471, 576, 579, 640, 655, 640, 783, 577,
+ 640, 668, 656, 793, 768, 795, 797, 785, 710, 545,
+ 799, 796, 798, 579, 787, 435, 800, 696, 436, 854,
+ 756, 757, 758, 759, 760, 761, 762, 763, 764, 765,
+ 859, 802, 429, 804, 860, 806, 568, 803, 568, 805,
+ 766, 807, 809, 812, 814, 886, 887, 440, 810, 813,
+ 815, 768, 768, 892, 928, 893, 894, 895, 896, 796,
+ 897, 800, 803, 807, 810, 924, 815, 428, 861, 437,
+ 462, 768, 862, 458, 645, 771, 413, 646, 710, 414,
+ 464, 415, 788, 458, 448, 683, 684, 685, 686, 830,
+ 831, 832, 833, 466, 416, 470, 458, 447, 458, 889,
+ 848, 449, 678, 682, 850, 458, 458, 689, 692, 568,
+ 458, 458, 417, 695, 865, 680, 458, 701, 720, 721,
+ 458, 869, 690, 422, 768, 852, 853, 769, 718, 820,
+ 719, 819, 821, 670, 640, 423, 823, 824, 825, 579,
+ 579, 579, 579, 579, 579, 579, 579, 579, 579, 579,
+ 579, 579, 579, 579, 579, 923, 442, 768, 820, 771,
+ 849, 875, 328, 329, 330, 726, 727, 715, 716, 717,
+ 450, 679, 679, 855, 477, 856, 487, 568, 679, 679,
+ 768, 851, 768, 898, 679, 452, 679, 826, 827, 472,
+ 828, 829, 482, 834, 835, 325, 484, 877, 493, 494,
+ 879, 539, 540, 543, 728, 541, 542, 548, 562, 549,
+ 550, 551, 554, 644, 640, 564, 555, 891, 556, 557,
+ 558, 579, 579, 559, 563, 654, 659, 573, 579, 579,
+ 567, 592, 495, 665, 579, 434, 579, 693, 703, 731,
+ 879, 738, 729, 441, 396, 730, 732, 568, 735, 740,
+ 669, 397, 396, 404, 397, 706, 911, 916, 382, 397,
+ 396, 404, 380, 396, 714, 741, 451, 742, 396, 475,
+ 640, 744, 925, 745, 746, 749, 751, 752, -36, 434,
+ 489, -34, 753, 434, 754, -29, 755, 782, 396, 794,
+ 786, 816, 396, 801, 880, 808, 811, 817, 843, 441,
+ 858, 768, 871, 882, 890, 899, 900, 901, 396, 902,
+ 912, 449, -572, 918, 917, 594, 836, 919, 922, 838,
+ 930, 931, 837, 839, 841, 491, 569, 840, 490, 713,
+ 492, 419, 876, 883, 880, 396, 920, 619, 818, 927,
+ 926, 488, 884, 446, 772, 903, 618, 773, 704, 774,
+ 866, 449, 864, 863, 874, 870, 868, 873, 867, 872,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 702, 0, 566, 0, 566,
- 0, 0, 0, 0, 393, 0, 393, 0, 393, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 576, 576,
- 0, 0, 0, 0, 0, 576, 576, 0, 0, 0,
- 0, 576, 0, 576, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 616, 0, 0, 0, 0, 0, 0, 0,
- 0, 615, 394, 0, 0, 0, 0, 0, 0, 0,
- 566, 393, 0, 0, 0, 0, 0, 0, 0, 393,
+ 0, 663, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 705, 0,
+ 569, 0, 569, 0, 0, 0, 0, 396, 0, 396,
+ 0, 396, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 619, 0, 0, 0, 0,
+ 0, 0, 0, 0, 618, 397, 0, 0, 0, 0,
+ 0, 0, 0, 569, 396, 0, 0, 0, 0, 0,
+ 0, 0, 396, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 566, 0,
- 0, 0, 0, 0, 0, 0, 0, 393, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 616, 0, 0, 0,
- 616, 0, 0, 0, 0, 615, 0, 0, 0, 615,
+ 0, 569, 0, 0, 0, 0, 0, 0, 0, 0,
+ 396, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 619,
+ 0, 0, 0, 619, 0, 0, 0, 0, 618, 0,
+ 0, 0, 618, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 566, 0,
- 0, 0, 0, 0, 0, 0, 0, 393, 0, 0,
+ 0, 569, 0, 0, 0, 0, 0, 0, 0, 0,
+ 396, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 616, 616, 0, 616, 0, 401, 0, 0, 0,
- 615, 615, 0, 615, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 619, 619, 0, 619, 0, 404,
+ 0, 0, 0, 618, 618, 0, 618, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 616, 0, 0, 0, 0, 0, 0, 0,
- 0, 615, 0, 0, 0, 0, 0, 0, 616, 0,
- 0, 0, 0, 0, 0, 616, 0, 615, 0, 0,
- 0, 0, 0, 0, 615, 616, 0, 0, 0, 616,
- 0, 0, 0, 0, 615, 616, 0, 0, 615, 0,
- 0, 0, 442, 0, 615, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 0,
+ 0, 0, 0, 0, 0, 619, 0, 0, 0, 0,
+ 0, 0, 0, 0, 618, 0, 0, 0, 0, 0,
+ 0, 619, 0, 0, 0, 0, 0, 0, 619, 0,
+ 618, 0, 0, 0, 0, 0, 0, 618, 619, 0,
+ 0, 0, 619, 0, 0, 0, 0, 618, 619, 0,
+ 0, 618, 0, 0, 0, 445, 0, 618, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
+ 323, 324, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 325, 0, 0, 0,
+ 0, 0, 0, 0, 326, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 327, 328,
+ 329, 330, 331, 0, 0, 0, 0, 0, 0, 0,
+ 0, 332, 333, 334, 335, 336, 337, 338, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 325, 0, 0, 0, 0, 0, 0,
- 0, 326, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 327, 328, 329, 330, 331,
- 0, 0, 0, 0, 0, 0, 0, 0, 332, 333,
- 334, 335, 336, 337, 338, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 339, 340, 341, 342, 343, 344, 0, 0, 0, 0,
- 0, 0, 0, 0, 345, 0, 346, 347, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
- 324, 0, 0, 499, 500, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 501, 502, 0, 325, 0, 591, 592, 0,
- 0, 0, 0, 593, 503, 504, 505, 506, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 327, 328, 329,
- 330, 331, 0, 0, 0, 507, 508, 509, 510, 511,
- 332, 333, 334, 335, 336, 337, 338, 594, 595, 596,
- 597, 0, 598, 599, 600, 601, 602, 603, 604, 605,
- 606, 607, 339, 340, 341, 342, 343, 344, 512, 513,
- 514, 515, 516, 517, 518, 519, 345, 608, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
- 322, 323, 324, 0, 0, 499, 500, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 501, 502, 0, 325, 0, 591,
- 767, 0, 0, 0, 0, 593, 503, 504, 505, 506,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 327,
- 328, 329, 330, 331, 0, 0, 0, 507, 508, 509,
- 510, 511, 332, 333, 334, 335, 336, 337, 338, 594,
- 595, 596, 597, 0, 598, 599, 600, 601, 602, 603,
- 604, 605, 606, 607, 339, 340, 341, 342, 343, 344,
- 512, 513, 514, 515, 516, 517, 518, 519, 345, 608,
- 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
- 320, 321, 322, 323, 324, 0, 0, 499, 500, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 501, 502, 0, 325,
- 0, 591, 0, 0, 0, 0, 0, 593, 503, 504,
- 505, 506, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 327, 328, 329, 330, 331, 0, 0, 0, 507,
- 508, 509, 510, 511, 332, 333, 334, 335, 336, 337,
- 338, 594, 595, 596, 597, 0, 598, 599, 600, 601,
- 602, 603, 604, 605, 606, 607, 339, 340, 341, 342,
- 343, 344, 512, 513, 514, 515, 516, 517, 518, 519,
- 345, 608, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 1, 2, 3, 4, 5, 6, 7,
+ 0, 0, 0, 339, 340, 341, 342, 343, 344, 0,
+ 0, 0, 0, 0, 0, 0, 0, 345, 0, 346,
+ 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 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,
@@ -1991,201 +1863,339 @@
288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, 319, 320, 321, 322, 323, 324, 0, 0, 499,
- 500, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 501, 502,
- 0, 325, 0, 484, 0, 0, 0, 0, 0, 593,
- 503, 504, 505, 506, 0, 0, 0, 0, 0, 0,
+ 318, 319, 320, 321, 322, 323, 324, 0, 0, 502,
+ 503, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 504, 505,
+ 0, 325, 0, 594, 595, 0, 0, 0, 0, 596,
+ 506, 507, 508, 509, 0, 0, 0, 0, 0, 0,
0, 0, 0, 327, 328, 329, 330, 331, 0, 0,
- 0, 507, 508, 509, 510, 511, 332, 333, 334, 335,
- 336, 337, 338, 594, 595, 596, 597, 0, 598, 599,
- 600, 601, 602, 603, 604, 605, 606, 607, 339, 340,
- 341, 342, 343, 344, 512, 513, 514, 515, 516, 517,
- 518, 519, 345, 608, 346, 347, 348, 349, 350, 351,
+ 0, 510, 511, 512, 513, 514, 332, 333, 334, 335,
+ 336, 337, 338, 597, 598, 599, 600, 0, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 339, 340,
+ 341, 342, 343, 344, 515, 516, 517, 518, 519, 520,
+ 521, 522, 345, 611, 346, 347, 348, 349, 350, 351,
352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 0,
- 0, 499, 500, 0, 0, 0, 0, 0, 0, 0,
+ 372, 373, 374, 375, 376, 377, 378, 379, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
+ 323, 324, 0, 0, 502, 503, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 501, 502, 0, 325, 0, 0, 0, 0, 0, 0,
- 0, 593, 503, 504, 505, 506, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 327, 328, 329, 330, 331,
- 0, 0, 0, 507, 508, 509, 510, 511, 332, 333,
- 334, 335, 336, 337, 338, 594, 595, 596, 597, 0,
- 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
- 339, 340, 341, 342, 343, 344, 512, 513, 514, 515,
- 516, 517, 518, 519, 345, 608, 346, 347, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
- 324, 0, 0, 499, 500, 0, 0, 0, 0, 0,
+ 0, 0, 0, 504, 505, 0, 325, 0, 594, 770,
+ 0, 0, 0, 0, 596, 506, 507, 508, 509, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 327, 328,
+ 329, 330, 331, 0, 0, 0, 510, 511, 512, 513,
+ 514, 332, 333, 334, 335, 336, 337, 338, 597, 598,
+ 599, 600, 0, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 339, 340, 341, 342, 343, 344, 515,
+ 516, 517, 518, 519, 520, 521, 522, 345, 611, 346,
+ 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 0, 0, 502,
+ 503, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 504, 505,
+ 0, 325, 0, 594, 0, 0, 0, 0, 0, 596,
+ 506, 507, 508, 509, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 327, 328, 329, 330, 331, 0, 0,
+ 0, 510, 511, 512, 513, 514, 332, 333, 334, 335,
+ 336, 337, 338, 597, 598, 599, 600, 0, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 339, 340,
+ 341, 342, 343, 344, 515, 516, 517, 518, 519, 520,
+ 521, 522, 345, 611, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
+ 323, 324, 0, 0, 502, 503, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 501, 502, 0, 325, 0, 0, 0, 0,
- 0, 0, 0, 593, 503, 504, 505, 506, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 327, 328, 329,
- 330, 331, 0, 0, 0, 507, 508, 509, 510, 511,
- 332, 333, 334, 335, 336, 337, 338, 0, 0, 0,
+ 0, 0, 0, 504, 505, 0, 325, 0, 487, 0,
+ 0, 0, 0, 0, 596, 506, 507, 508, 509, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 327, 328,
+ 329, 330, 331, 0, 0, 0, 510, 511, 512, 513,
+ 514, 332, 333, 334, 335, 336, 337, 338, 597, 598,
+ 599, 600, 0, 601, 602, 603, 604, 605, 606, 607,
+ 608, 609, 610, 339, 340, 341, 342, 343, 344, 515,
+ 516, 517, 518, 519, 520, 521, 522, 345, 611, 346,
+ 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 0, 0, 502,
+ 503, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 504, 505,
+ 0, 325, 0, 0, 0, 0, 0, 0, 0, 596,
+ 506, 507, 508, 509, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 327, 328, 329, 330, 331, 0, 0,
+ 0, 510, 511, 512, 513, 514, 332, 333, 334, 335,
+ 336, 337, 338, 597, 598, 599, 600, 0, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610, 339, 340,
+ 341, 342, 343, 344, 515, 516, 517, 518, 519, 520,
+ 521, 522, 345, 611, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
+ 323, 324, 0, 0, 502, 503, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 339, 340, 341, 342, 343, 344, 512, 513,
- 514, 515, 516, 517, 518, 519, 345, 0, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 0, 0, 0, 318, 319, 320, 321,
- 322, 323, 324, 0, 0, 499, 500, 0, 0, 0,
+ 0, 0, 0, 504, 505, 0, 325, 0, 0, 0,
+ 0, 0, 0, 0, 596, 506, 507, 508, 509, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 327, 328,
+ 329, 330, 331, 0, 0, 0, 510, 511, 512, 513,
+ 514, 332, 333, 334, 335, 336, 337, 338, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 501, 502, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 503, 504, 505, 506,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 327,
- 328, 329, 330, 0, 0, 0, 0, 507, 508, 509,
- 510, 511, 332, 333, 334, 335, 336, 337, 338, 0,
+ 0, 0, 0, 339, 340, 341, 342, 343, 344, 515,
+ 516, 517, 518, 519, 520, 521, 522, 345, 0, 346,
+ 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 0, 0, 0,
+ 318, 319, 320, 321, 322, 323, 324, 0, 0, 502,
+ 503, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 504, 505,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 339, 340, 341, 342, 343, 344,
- 512, 513, 514, 515, 516, 517, 518, 519, 345, 0,
- 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
- 320, 321, 322, 323, 324, 0, 0, 0, 0, 0,
+ 506, 507, 508, 509, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 327, 328, 329, 330, 0, 0, 0,
+ 0, 510, 511, 512, 513, 514, 332, 333, 334, 335,
+ 336, 337, 338, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 339, 340,
+ 341, 342, 343, 344, 515, 516, 517, 518, 519, 520,
+ 521, 522, 345, 0, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
+ 323, 324, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 325,
- 0, 0, 0, 0, 0, 0, 0, 326, 0, 0,
+ 0, 0, 0, 0, 0, 0, 325, 0, 0, 0,
+ 0, 0, 0, 0, 326, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 327, 328,
+ 329, 330, 331, 0, 0, 0, 0, 0, 0, 0,
+ 0, 332, 333, 334, 335, 336, 337, 338, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 327, 328, 329, 330, 331, 0, 0, 0, 0,
- 0, 0, 0, 0, 332, 333, 334, 335, 336, 337,
- 338, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 339, 340, 341, 342,
- 343, 344, 0, 0, 0, 0, 0, 0, 0, 0,
- 345, 0, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 1, 2, 3, 4, 5, 6, 7,
+ 0, 0, 0, 339, 340, 341, 342, 343, 344, 0,
+ 0, 0, 0, 0, 0, 0, 0, 345, 0, 346,
+ 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 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,
@@ -2224,194 +2234,59 @@
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 327, 328, 329, 330, 0, 0, 0,
0, 0, 0, 0, 0, 0, 332, 333, 334, 335,
- 336, 337, 338, 594, 0, 0, 597, 0, 598, 599,
- 0, 0, 602, 0, 0, 0, 0, 0, 339, 340,
+ 336, 337, 338, 597, 0, 0, 600, 0, 601, 602,
+ 0, 0, 605, 0, 0, 0, 0, 0, 339, 340,
341, 342, 343, 344, 0, 0, 0, 0, 0, 0,
0, 0, 345, 0, 346, 347, 348, 349, 350, 351,
352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 0,
- 0, 0, 318, 319, 320, 321, 322, 323, 324, 0,
+ 372, 373, 374, 375, 376, 377, 378, 379, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 0, 0, 0, 318, 319, 320, 321, 322,
+ 323, 324, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 438, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 327, 328,
+ 329, 330, 0, 0, 0, 0, 0, 0, 0, 0,
+ 439, 332, 333, 334, 335, 336, 337, 338, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 435, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 327, 328, 329, 330, 0,
- 0, 0, 0, 0, 0, 0, 0, 436, 332, 333,
- 334, 335, 336, 337, 338, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 339, 340, 341, 342, 343, 344, 0, 0, 0, 0,
- 0, 0, 0, 0, 345, 0, 346, 347, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 0, 0, 0, 318, 319, 320, 321, 322, 323,
- 324, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 325, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 327, 328, 329,
- 330, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 332, 333, 334, 335, 336, 337, 338, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 339, 340, 341, 342, 343, 344, 0, 0,
- 0, 0, 0, 0, 0, 0, 345, 0, 346, 347,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 0, 0, 0, 318, 319, 320, 321,
- 322, 323, 324, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 706, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 327,
- 328, 329, 330, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 332, 333, 334, 335, 336, 337, 338, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 339, 340, 341, 342, 343, 344,
- 0, 0, 0, 0, 0, 0, 0, 0, 345, 0,
- 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
- 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
- 376, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 0, 0, 0, 318, 319,
- 320, 321, 322, 323, 324, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 819, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 327, 328, 329, 330, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 332, 333, 334, 335, 336, 337,
- 338, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 339, 340, 341, 342,
- 343, 344, 0, 0, 0, 0, 0, 0, 0, 0,
- 345, 0, 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
- 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
- 374, 375, 376, 1, 2, 3, 4, 5, 6, 7,
+ 0, 0, 0, 339, 340, 341, 342, 343, 344, 0,
+ 0, 0, 0, 0, 0, 0, 0, 345, 0, 346,
+ 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 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,
@@ -2446,7 +2321,7 @@
318, 319, 320, 321, 322, 323, 324, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 854, 0, 0, 0, 0, 0,
+ 0, 325, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 327, 328, 329, 330, 0, 0, 0,
0, 0, 0, 0, 0, 0, 332, 333, 334, 335,
@@ -2456,52 +2331,319 @@
0, 0, 345, 0, 346, 347, 348, 349, 350, 351,
352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
- 372, 373, 374, 375, 376, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 0,
- 0, 0, 318, 319, 320, 321, 322, 323, 324, 0,
+ 372, 373, 374, 375, 376, 377, 378, 379, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 0, 0, 0, 318, 319, 320, 321, 322,
+ 323, 324, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 709,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 327, 328,
+ 329, 330, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 332, 333, 334, 335, 336, 337, 338, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 339, 340, 341, 342, 343, 344, 0,
+ 0, 0, 0, 0, 0, 0, 0, 345, 0, 346,
+ 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 0, 0, 0,
+ 318, 319, 320, 321, 322, 323, 324, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 822, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 327, 328, 329, 330, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 332, 333, 334, 335,
+ 336, 337, 338, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 339, 340,
+ 341, 342, 343, 344, 0, 0, 0, 0, 0, 0,
+ 0, 0, 345, 0, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 0, 0, 0, 318, 319, 320, 321, 322,
+ 323, 324, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 857,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 327, 328,
+ 329, 330, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 332, 333, 334, 335, 336, 337, 338, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 339, 340, 341, 342, 343, 344, 0,
+ 0, 0, 0, 0, 0, 0, 0, 345, 0, 346,
+ 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
+ 377, 378, 379, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 0, 0, 0,
+ 318, 319, 320, 321, 322, 323, 324, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 327, 328, 329, 330, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 332, 333,
- 334, 335, 336, 337, 338, 0, 0, 0, 0, 0,
+ 0, 0, 0, 327, 328, 329, 330, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 332, 333, 334, 335,
+ 336, 337, 338, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 339, 340,
+ 341, 342, 343, 344, 0, 0, 0, 0, 0, 0,
+ 0, 0, 345, 0, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 2, 3,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 0, 0, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 0, 0, 0, 0, 0, 0, 321, 0, 0,
+ 0, 0, 0, 502, 503, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 339, 340, 341, 342, 343, 344, 0, 0, 0, 0,
- 0, 0, 0, 0, 345, 0, 346, 347, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 2, 3, 4,
+ 0, 0, 504, 505, 0, 0, 0, 639, 777, 0,
+ 0, 0, 0, 0, 506, 507, 508, 509, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 510, 511, 512, 513, 514,
+ 332, 0, 0, 0, 0, 337, 338, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 515, 516,
+ 517, 518, 519, 520, 521, 522, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 358, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 0, 0,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 314, 0, 0, 0, 0, 0, 0,
+ 321, 0, 0, 0, 0, 0, 502, 503, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 504, 505, 0, 0, 0,
+ 639, 888, 0, 0, 0, 0, 0, 506, 507, 508,
+ 509, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 510, 511,
+ 512, 513, 514, 332, 0, 0, 0, 0, 337, 338,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 515, 516, 517, 518, 519, 520, 521, 522, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 358, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 0, 0, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 0, 0, 0,
+ 0, 0, 0, 321, 0, 0, 0, 0, 0, 502,
+ 503, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 504, 505,
+ 0, 0, 578, 0, 0, 0, 0, 0, 0, 0,
+ 506, 507, 508, 509, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 510, 511, 512, 513, 514, 332, 0, 0, 0,
+ 0, 337, 338, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 515, 516, 517, 518, 519, 520,
+ 521, 522, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 358, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
@@ -2534,16 +2676,16 @@
295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
0, 0, 0, 0, 0, 0, 321, 0, 0, 0,
- 0, 0, 499, 500, 0, 0, 0, 0, 0, 0,
+ 0, 0, 502, 503, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 501, 502, 0, 0, 0, 636, 774, 0, 0,
- 0, 0, 0, 503, 504, 505, 506, 0, 0, 0,
+ 0, 504, 505, 0, 0, 0, 639, 0, 0, 0,
+ 0, 0, 0, 506, 507, 508, 509, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 507, 508, 509, 510, 511, 332,
+ 0, 0, 0, 0, 510, 511, 512, 513, 514, 332,
0, 0, 0, 0, 337, 338, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 512, 513, 514,
- 515, 516, 517, 518, 519, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 515, 516, 517,
+ 518, 519, 520, 521, 522, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 358,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
@@ -2577,16 +2719,16 @@
292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
312, 313, 314, 0, 0, 0, 0, 0, 0, 321,
- 0, 0, 0, 0, 0, 499, 500, 0, 0, 0,
+ 0, 0, 0, 0, 0, 502, 503, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 501, 502, 0, 0, 0, 636,
- 885, 0, 0, 0, 0, 0, 503, 504, 505, 506,
+ 0, 0, 0, 0, 504, 505, 0, 0, 736, 0,
+ 0, 0, 0, 0, 0, 0, 506, 507, 508, 509,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 507, 508, 509,
- 510, 511, 332, 0, 0, 0, 0, 337, 338, 0,
+ 0, 0, 0, 0, 0, 0, 0, 510, 511, 512,
+ 513, 514, 332, 0, 0, 0, 0, 337, 338, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 512, 513, 514, 515, 516, 517, 518, 519, 0, 0,
+ 515, 516, 517, 518, 519, 520, 521, 522, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 358, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
@@ -2620,17 +2762,17 @@
289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
309, 310, 311, 312, 313, 314, 0, 0, 0, 0,
- 0, 0, 321, 0, 0, 0, 0, 0, 499, 500,
+ 0, 0, 321, 0, 0, 0, 0, 0, 502, 503,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 501, 502, 0,
- 0, 575, 0, 0, 0, 0, 0, 0, 0, 503,
- 504, 505, 506, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 504, 505, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 747, 506,
+ 507, 508, 509, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 507, 508, 509, 510, 511, 332, 0, 0, 0, 0,
+ 510, 511, 512, 513, 514, 332, 0, 0, 0, 0,
337, 338, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 512, 513, 514, 515, 516, 517, 518,
- 519, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 515, 516, 517, 518, 519, 520, 521,
+ 522, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 358, 2, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
@@ -2664,16 +2806,16 @@
296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
306, 307, 308, 309, 310, 311, 312, 313, 314, 0,
0, 0, 0, 0, 0, 321, 0, 0, 0, 0,
- 0, 499, 500, 0, 0, 0, 0, 0, 0, 0,
+ 0, 502, 503, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 501, 502, 0, 0, 0, 636, 0, 0, 0, 0,
- 0, 0, 503, 504, 505, 506, 0, 0, 0, 0,
+ 504, 505, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 506, 507, 508, 509, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 507, 508, 509, 510, 511, 332, 0,
+ 0, 0, 0, 510, 511, 512, 513, 514, 332, 0,
0, 0, 0, 337, 338, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 512, 513, 514, 515,
- 516, 517, 518, 519, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 515, 516, 517, 518,
+ 519, 520, 521, 522, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 358, 2,
3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
@@ -2707,16 +2849,16 @@
293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
313, 314, 0, 0, 0, 0, 0, 0, 321, 0,
- 0, 0, 0, 0, 499, 500, 0, 0, 0, 0,
+ 0, 0, 0, 0, 502, 503, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 501, 502, 0, 0, 733, 0, 0,
- 0, 0, 0, 0, 0, 503, 504, 505, 506, 0,
+ 0, 0, 0, 504, 505, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 506, 507, 508, 509, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 507, 508, 509, 510,
- 511, 332, 0, 0, 0, 0, 337, 338, 0, 0,
+ 0, 0, 0, 0, 0, 0, 510, 511, 512, 513,
+ 514, 332, 0, 0, 0, 0, 337, 657, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 512,
- 513, 514, 515, 516, 517, 518, 519, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 515,
+ 516, 517, 518, 519, 520, 521, 522, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 358, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
@@ -2750,16 +2892,16 @@
290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
310, 311, 312, 313, 314, 0, 0, 0, 0, 0,
- 0, 321, 0, 0, 0, 0, 0, 499, 500, 0,
+ 0, 321, 0, 0, 0, 0, 0, 502, 503, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 501, 502, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 744, 503, 504,
- 505, 506, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 507,
- 508, 509, 510, 511, 332, 0, 0, 0, 0, 337,
+ 0, 0, 0, 0, 0, 0, 504, 505, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 506, 507,
+ 508, 509, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 510,
+ 511, 512, 513, 697, 332, 0, 0, 0, 0, 337,
338, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 512, 513, 514, 515, 516, 517, 518, 519,
+ 0, 0, 515, 516, 517, 518, 519, 520, 521, 522,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 358, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
@@ -2794,422 +2936,248 @@
297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
307, 308, 309, 310, 311, 312, 313, 314, 0, 0,
0, 0, 0, 0, 321, 0, 0, 0, 0, 0,
- 499, 500, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 501,
- 502, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 503, 504, 505, 506, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 507, 508, 509, 510, 511, 332, 0, 0,
- 0, 0, 337, 338, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 512, 513, 514, 515, 516,
- 517, 518, 519, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 358, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 0, 0, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 0, 0, 0, 0, 0, 0, 321, 0, 0,
- 0, 0, 0, 499, 500, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 501, 502, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 503, 504, 505, 506, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 507, 508, 509, 510, 511,
- 332, 0, 0, 0, 0, 337, 654, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 512, 513,
- 514, 515, 516, 517, 518, 519, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 358, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 0, 0,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 0, 0, 0, 0, 0, 0,
- 321, 0, 0, 0, 0, 0, 499, 500, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 501, 502, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 503, 504, 505,
- 506, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 507, 508,
- 509, 510, 694, 332, 0, 0, 0, 0, 337, 338,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 512, 513, 514, 515, 516, 517, 518, 519, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 358, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 0, 0, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 0, 0, 0,
- 0, 0, 0, 321, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 332, 0, 0, 0,
- 0, 337, 338
+ 0, 0, 0, 0, 0, 0, 0, 332, 0, 0,
+ 0, 0, 337, 338
};
static const yytype_int16 yycheck[] =
{
- 0, 382, 0, 493, 622, 502, 401, 401, 481, 0,
- 434, 406, 542, 0, 0, 736, 440, 634, 567, 636,
- 401, 390, 639, 413, 569, 406, 348, 547, 558, 348,
- 359, 385, 552, 331, 332, 336, 353, 349, 528, 348,
- 898, 561, 351, 351, 348, 426, 356, 905, 350, 352,
- 570, 359, 351, 356, 356, 409, 385, 915, 368, 358,
- 382, 430, 381, 382, 383, 384, 490, 491, 385, 367,
- 368, 372, 351, 382, 547, 349, 351, 446, 382, 552,
- 359, 329, 330, 358, 349, 558, 351, 351, 561, 374,
- 375, 376, 473, 358, 358, 640, 353, 570, 361, 356,
- 363, 349, 359, 351, 601, 349, 603, 355, 408, 409,
- 410, 411, 412, 413, 414, 350, 589, 719, 720, 721,
- 722, 356, 740, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 350, 350, 356, 350, 349, 359, 356,
- 356, 349, 356, 358, 634, 350, 636, 350, 349, 639,
- 540, 356, 649, 356, 540, 350, 773, 351, 350, 708,
- 546, 356, 548, 653, 356, 551, 556, 553, 349, 555,
- 556, 350, 350, 350, 560, 350, 350, 356, 356, 356,
- 349, 356, 356, 350, 350, 350, 567, 350, 569, 356,
- 356, 356, 350, 356, 350, 350, 565, 350, 919, 350,
- 356, 356, 350, 356, 350, 356, 350, 350, 356, 350,
- 356, 356, 356, 356, 352, 356, 352, 349, 356, 356,
- 356, 385, 359, 841, 381, 382, 383, 384, 382, 778,
- 439, 385, 382, 327, 328, 385, 853, 632, 632, 356,
- 382, 356, 359, 385, 359, 742, 354, 382, 356, 746,
- 385, 632, 382, 382, 382, 385, 385, 385, 382, 640,
- 382, 385, 382, 385, 382, 385, 382, 385, 356, 385,
- 356, 359, 481, 359, 764, 765, 349, 797, 798, 703,
- 810, 333, 334, 773, 804, 805, 364, 365, 366, 359,
- 499, 500, 909, 356, 357, 356, 357, 715, 716, 367,
- 717, 718, 723, 724, 359, 385, 385, 925, 353, 385,
- 353, 351, 351, 385, 385, 350, 385, 359, 349, 356,
- 358, 350, 531, 356, 797, 798, 358, 708, 356, 356,
- 356, 804, 805, 356, 356, 356, 356, 810, 547, 812,
- 356, 356, 839, 552, 358, 842, 359, 350, 349, 558,
- 349, 385, 561, 371, 351, 385, 351, 369, 348, 352,
- 385, 570, 370, 853, 335, 337, 385, 352, 349, 349,
- 354, 359, 349, 349, 385, 349, 359, 359, 357, 385,
- 589, 359, 382, 349, 359, 882, 359, 350, 356, 359,
- 390, 382, 356, 358, 356, 350, 350, 778, 398, 390,
- 398, 401, 899, 352, 352, 895, 406, 398, 406, 356,
- 401, 398, 398, 348, 348, 406, 416, 914, 354, 909,
- 406, 382, 350, 349, 393, 385, 426, 425, 353, 358,
- 430, 350, 359, 353, 725, 426, 353, 359, 397, 430,
- 354, 727, 726, 730, 331, 728, 446, 842, 729, 658,
- 702, 572, 817, 844, 904, 446, 915, 844, 916, 632,
- 882, 842, 632, 430, 632, 398, 563, 424, 426, 795,
- 793, 798, 802, 473, 430, 800, 808, 805, 812, 810,
- -1, -1, 473, -1, 484, -1, -1, 882, -1, -1,
- -1, -1, -1, 484, -1, -1, -1, -1, -1, -1,
- -1, 882, -1, 712, 713, 714, 715, 716, 717, 718,
+ 0, 385, 0, 404, 496, 484, 625, 0, 409, 0,
+ 505, 0, 437, 442, 550, 545, 404, 570, 443, 555,
+ 404, 739, 393, 348, 416, 409, 572, 336, 564, 353,
+ 637, 561, 639, 348, 351, 642, 351, 573, 348, 531,
+ 359, 348, 356, 331, 332, 429, 385, 382, 352, 349,
+ 385, 349, 356, 351, 368, 484, 381, 382, 383, 384,
+ 358, 385, 433, 372, 329, 330, 385, 382, 493, 494,
+ 409, 550, 382, 502, 503, 382, 555, 349, 449, 367,
+ 368, 351, 561, 351, 349, 564, 351, 543, 358, 901,
+ 355, 359, 476, 549, 573, 551, 908, 643, 554, 359,
+ 556, 351, 558, 559, 351, 534, 918, 563, 358, 604,
+ 351, 606, 359, 592, 350, 382, 353, 358, 385, 356,
+ 356, 550, 359, 350, 743, 350, 555, 350, 350, 356,
+ 349, 356, 561, 356, 356, 564, 411, 412, 413, 414,
+ 415, 416, 417, 350, 573, 637, 350, 639, 350, 356,
+ 642, 543, 356, 350, 356, 350, 350, 652, 711, 356,
+ 350, 356, 356, 592, 656, 356, 356, 559, 359, 776,
+ 338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 352, 350, 356, 350, 356, 350, 570, 356, 572, 356,
+ 358, 356, 350, 350, 350, 350, 350, 568, 356, 356,
+ 356, 356, 356, 350, 922, 350, 350, 350, 350, 356,
+ 350, 356, 356, 356, 356, 350, 356, 350, 352, 385,
+ 382, 356, 356, 385, 356, 844, 349, 359, 781, 349,
+ 382, 349, 661, 385, 635, 381, 382, 383, 384, 722,
+ 723, 724, 725, 382, 349, 382, 385, 635, 385, 856,
+ 745, 635, 382, 382, 749, 385, 385, 382, 382, 643,
+ 385, 385, 349, 382, 800, 801, 385, 382, 327, 328,
+ 385, 807, 808, 349, 356, 767, 768, 359, 361, 356,
+ 363, 706, 359, 813, 776, 349, 715, 716, 717, 718,
719, 720, 721, 722, 723, 724, 725, 726, 727, 728,
- 729, 730, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 536, -1,
+ 729, 730, 731, 732, 733, 912, 367, 356, 356, 928,
+ 359, 359, 374, 375, 376, 333, 334, 364, 365, 366,
+ 359, 800, 801, 354, 353, 356, 353, 711, 807, 808,
+ 356, 357, 356, 357, 813, 385, 815, 718, 719, 385,
+ 720, 721, 385, 726, 727, 351, 351, 842, 385, 385,
+ 845, 350, 385, 356, 371, 359, 358, 358, 350, 356,
+ 356, 356, 356, 385, 856, 349, 356, 382, 356, 356,
+ 356, 800, 801, 356, 356, 350, 349, 358, 807, 808,
+ 359, 351, 349, 351, 813, 385, 815, 348, 352, 335,
+ 885, 354, 370, 393, 385, 369, 337, 781, 352, 349,
+ 385, 401, 393, 401, 404, 385, 898, 902, 401, 409,
+ 401, 409, 401, 404, 385, 359, 409, 359, 409, 419,
+ 912, 349, 917, 349, 359, 349, 357, 359, 349, 429,
+ 428, 349, 359, 433, 359, 350, 359, 385, 429, 358,
+ 385, 350, 433, 356, 845, 356, 356, 350, 352, 449,
+ 352, 356, 348, 393, 348, 354, 385, 350, 449, 349,
+ 358, 845, 353, 350, 359, 353, 728, 397, 353, 730,
+ 359, 354, 729, 731, 733, 433, 476, 732, 429, 575,
+ 433, 331, 820, 847, 885, 476, 907, 487, 705, 919,
+ 918, 427, 847, 401, 635, 885, 487, 635, 566, 635,
+ 801, 885, 798, 796, 815, 808, 805, 813, 803, 811,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 565, -1, 567, -1, 569,
- -1, -1, -1, -1, 565, -1, 567, -1, 569, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 797, 798,
- -1, -1, -1, -1, -1, 804, 805, -1, -1, -1,
- -1, 810, -1, 812, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 622, -1, -1, -1, -1, -1, -1, -1,
- -1, 622, 632, -1, -1, -1, -1, -1, -1, -1,
- 640, 632, -1, -1, -1, -1, -1, -1, -1, 640,
+ -1, 539, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 568, -1,
+ 570, -1, 572, -1, -1, -1, -1, 568, -1, 570,
+ -1, 572, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 625, -1, -1, -1, -1,
+ -1, -1, -1, -1, 625, 635, -1, -1, -1, -1,
+ -1, -1, -1, 643, 635, -1, -1, -1, -1, -1,
+ -1, -1, 643, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 708, -1,
- -1, -1, -1, -1, -1, -1, -1, 708, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 736, -1, -1, -1,
- 740, -1, -1, -1, -1, 736, -1, -1, -1, 740,
+ -1, 711, -1, -1, -1, -1, -1, -1, -1, -1,
+ 711, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 739,
+ -1, -1, -1, 743, -1, -1, -1, -1, 739, -1,
+ -1, -1, 743, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 778, -1,
- -1, -1, -1, -1, -1, -1, -1, 778, -1, -1,
+ -1, 781, -1, -1, -1, -1, -1, -1, -1, -1,
+ 781, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 841, 842, -1, 844, -1, 844, -1, -1, -1,
- 841, 842, -1, 844, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 844, 845, -1, 847, -1, 847,
+ -1, -1, -1, 844, 845, -1, 847, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 882, -1, -1, -1, -1, -1, -1, -1,
- -1, 882, -1, -1, -1, -1, -1, -1, 898, -1,
- -1, -1, -1, -1, -1, 905, -1, 898, -1, -1,
- -1, -1, -1, -1, 905, 915, -1, -1, -1, 919,
- -1, -1, -1, -1, 915, 925, -1, -1, 919, -1,
- -1, -1, 0, -1, 925, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, -1,
+ -1, -1, -1, -1, -1, 885, -1, -1, -1, -1,
+ -1, -1, -1, -1, 885, -1, -1, -1, -1, -1,
+ -1, 901, -1, -1, -1, -1, -1, -1, 908, -1,
+ 901, -1, -1, -1, -1, -1, -1, 908, 918, -1,
+ -1, -1, 922, -1, -1, -1, -1, 918, 928, -1,
+ -1, 922, -1, -1, -1, 0, -1, 928, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 351, -1, -1, -1,
+ -1, -1, -1, -1, 359, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 373, 374,
+ 375, 376, 377, -1, -1, -1, -1, -1, -1, -1,
+ -1, 386, 387, 388, 389, 390, 391, 392, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 351, -1, -1, -1, -1, -1, -1,
- -1, 359, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 373, 374, 375, 376, 377,
- -1, -1, -1, -1, -1, -1, -1, -1, 386, 387,
- 388, 389, 390, 391, 392, -1, -1, -1, -1, -1,
+ -1, -1, -1, 408, 409, 410, 411, 412, 413, -1,
+ -1, -1, -1, -1, -1, -1, -1, 422, -1, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, -1, -1, 329,
+ 330, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 348, 349,
+ -1, 351, -1, 353, 354, -1, -1, -1, -1, 359,
+ 360, 361, 362, 363, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 373, 374, 375, 376, 377, -1, -1,
+ -1, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, -1, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, -1, -1, 329, 330, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 408, 409, 410, 411, 412, 413, -1, -1, -1, -1,
- -1, -1, -1, -1, 422, -1, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, -1, -1, 329, 330, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 348, 349, -1, 351, -1, 353, 354, -1,
- -1, -1, -1, 359, 360, 361, 362, 363, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 373, 374, 375,
- 376, 377, -1, -1, -1, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, -1, 398, 399, 400, 401, 402, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, -1, -1, 329, 330, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 348, 349, -1, 351, -1, 353,
- 354, -1, -1, -1, -1, 359, 360, 361, 362, 363,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 373,
- 374, 375, 376, 377, -1, -1, -1, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
- 394, 395, 396, -1, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, -1, -1, 329, 330, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 348, 349, -1, 351,
- -1, 353, -1, -1, -1, -1, -1, 359, 360, 361,
- 362, 363, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 373, 374, 375, 376, 377, -1, -1, -1, 381,
- 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
- 392, 393, 394, 395, 396, -1, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
- 412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
- 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 3, 4, 5, 6, 7, 8, 9,
+ -1, -1, -1, 348, 349, -1, 351, -1, 353, 354,
+ -1, -1, -1, -1, 359, 360, 361, 362, 363, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 373, 374,
+ 375, 376, 377, -1, -1, -1, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, -1, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
@@ -3254,188 +3222,235 @@
420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, -1,
- -1, 329, 330, -1, -1, -1, -1, -1, -1, -1,
+ 450, 451, 452, 453, 454, 455, 456, 457, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, -1, -1, 329, 330, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 348, 349, -1, 351, -1, -1, -1, -1, -1, -1,
- -1, 359, 360, 361, 362, 363, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 373, 374, 375, 376, 377,
- -1, -1, -1, 381, 382, 383, 384, 385, 386, 387,
- 388, 389, 390, 391, 392, 393, 394, 395, 396, -1,
- 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
- 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, -1, -1, 329, 330, -1, -1, -1, -1, -1,
+ -1, -1, -1, 348, 349, -1, 351, -1, 353, -1,
+ -1, -1, -1, -1, 359, 360, 361, 362, 363, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 373, 374,
+ 375, 376, 377, -1, -1, -1, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, -1, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, -1, -1, 329,
+ 330, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 348, 349,
+ -1, 351, -1, -1, -1, -1, -1, -1, -1, 359,
+ 360, 361, 362, 363, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 373, 374, 375, 376, 377, -1, -1,
+ -1, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, -1, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, -1, -1, 329, 330, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 348, 349, -1, 351, -1, -1, -1, -1,
- -1, -1, -1, 359, 360, 361, 362, 363, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 373, 374, 375,
- 376, 377, -1, -1, -1, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, -1, -1, -1,
+ -1, -1, -1, 348, 349, -1, 351, -1, -1, -1,
+ -1, -1, -1, -1, 359, 360, 361, 362, 363, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 373, 374,
+ 375, 376, 377, -1, -1, -1, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389, 390, 391, 392, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, -1, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, -1, -1, -1, 320, 321, 322, 323,
- 324, 325, 326, -1, -1, 329, 330, -1, -1, -1,
+ -1, -1, -1, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, -1, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, -1, -1, -1,
+ 320, 321, 322, 323, 324, 325, 326, -1, -1, 329,
+ 330, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 348, 349,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 348, 349, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 360, 361, 362, 363,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 373,
- 374, 375, 376, -1, -1, -1, -1, 381, 382, 383,
- 384, 385, 386, 387, 388, 389, 390, 391, 392, -1,
+ 360, 361, 362, 363, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 373, 374, 375, 376, -1, -1, -1,
+ -1, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 392, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
+ 420, 421, 422, -1, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 408, 409, 410, 411, 412, 413,
- 414, 415, 416, 417, 418, 419, 420, 421, 422, -1,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 351, -1, -1, -1,
+ -1, -1, -1, -1, 359, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 373, 374,
+ 375, 376, 377, -1, -1, -1, -1, -1, -1, -1,
+ -1, 386, 387, 388, 389, 390, 391, 392, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 351,
- -1, -1, -1, -1, -1, -1, -1, 359, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 373, 374, 375, 376, 377, -1, -1, -1, -1,
- -1, -1, -1, -1, 386, 387, 388, 389, 390, 391,
- 392, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 408, 409, 410, 411,
- 412, 413, -1, -1, -1, -1, -1, -1, -1, -1,
- 422, -1, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 3, 4, 5, 6, 7, 8, 9,
+ -1, -1, -1, 408, 409, 410, 411, 412, 413, -1,
+ -1, -1, -1, -1, -1, -1, -1, 422, -1, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
@@ -3480,188 +3495,144 @@
-1, -1, 422, -1, 424, 425, 426, 427, 428, 429,
430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, -1,
- -1, -1, 320, 321, 322, 323, 324, 325, 326, -1,
+ 450, 451, 452, 453, 454, 455, 456, 457, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, -1, -1, -1, 320, 321, 322, 323, 324,
+ 325, 326, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 359, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 373, 374,
+ 375, 376, -1, -1, -1, -1, -1, -1, -1, -1,
+ 385, 386, 387, 388, 389, 390, 391, 392, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 359, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 373, 374, 375, 376, -1,
- -1, -1, -1, -1, -1, -1, -1, 385, 386, 387,
- 388, 389, 390, 391, 392, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 408, 409, 410, 411, 412, 413, -1, -1, -1, -1,
- -1, -1, -1, -1, 422, -1, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, -1, -1, -1, 320, 321, 322, 323, 324, 325,
- 326, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 351, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 373, 374, 375,
- 376, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 386, 387, 388, 389, 390, 391, 392, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 408, 409, 410, 411, 412, 413, -1, -1,
- -1, -1, -1, -1, -1, -1, 422, -1, 424, 425,
- 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
- 446, 447, 448, 449, 450, 451, 452, 453, 454, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, -1, -1, -1, 320, 321, 322, 323,
- 324, 325, 326, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 408, 409, 410, 411, 412, 413, -1,
+ -1, -1, -1, -1, -1, -1, -1, 422, -1, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, -1, -1, -1,
+ 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 354, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 373,
- 374, 375, 376, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 386, 387, 388, 389, 390, 391, 392, -1,
+ -1, 351, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 408, 409, 410, 411, 412, 413,
- -1, -1, -1, -1, -1, -1, -1, -1, 422, -1,
- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
- 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, -1, -1, -1, 320, 321,
- 322, 323, 324, 325, 326, -1, -1, -1, -1, -1,
+ -1, -1, -1, 373, 374, 375, 376, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 386, 387, 388, 389,
+ 390, 391, 392, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 408, 409,
+ 410, 411, 412, 413, -1, -1, -1, -1, -1, -1,
+ -1, -1, 422, -1, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, -1, -1, -1, 320, 321, 322, 323, 324,
+ 325, 326, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 354,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 354, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 373, 374,
+ 375, 376, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 386, 387, 388, 389, 390, 391, 392, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 373, 374, 375, 376, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 386, 387, 388, 389, 390, 391,
- 392, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 408, 409, 410, 411,
- 412, 413, -1, -1, -1, -1, -1, -1, -1, -1,
- 422, -1, 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
- 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 3, 4, 5, 6, 7, 8, 9,
+ -1, -1, -1, 408, 409, 410, 411, 412, 413, -1,
+ -1, -1, -1, -1, -1, -1, -1, 422, -1, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
@@ -3706,231 +3677,13 @@
-1, -1, 422, -1, 424, 425, 426, 427, 428, 429,
430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
- 450, 451, 452, 453, 454, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, -1,
- -1, -1, 320, 321, 322, 323, 324, 325, 326, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 373, 374, 375, 376, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 386, 387,
- 388, 389, 390, 391, 392, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 408, 409, 410, 411, 412, 413, -1, -1, -1, -1,
- -1, -1, -1, -1, 422, -1, 424, 425, 426, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
- 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, -1, -1, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- -1, -1, -1, -1, -1, -1, 323, -1, -1, -1,
- -1, -1, 329, 330, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 348, 349, -1, -1, -1, 353, 354, -1, -1,
- -1, -1, -1, 360, 361, 362, 363, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 381, 382, 383, 384, 385, 386,
- -1, -1, -1, -1, 391, 392, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 414, 415, 416,
- 417, 418, 419, 420, 421, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 436,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, -1, -1, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, -1, -1, -1, -1, -1, -1, 323,
- -1, -1, -1, -1, -1, 329, 330, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 348, 349, -1, -1, -1, 353,
- 354, -1, -1, -1, -1, -1, 360, 361, 362, 363,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 381, 382, 383,
- 384, 385, 386, -1, -1, -1, -1, 391, 392, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 414, 415, 416, 417, 418, 419, 420, 421, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 436, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- -1, -1, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, -1, -1, -1, -1,
- -1, -1, 323, -1, -1, -1, -1, -1, 329, 330,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 348, 349, -1,
- -1, 352, -1, -1, -1, -1, -1, -1, -1, 360,
- 361, 362, 363, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 381, 382, 383, 384, 385, 386, -1, -1, -1, -1,
- 391, 392, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 414, 415, 416, 417, 418, 419, 420,
- 421, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 436, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, -1, -1, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, -1,
- -1, -1, -1, -1, -1, 323, -1, -1, -1, -1,
- -1, 329, 330, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 348, 349, -1, -1, -1, 353, -1, -1, -1, -1,
- -1, -1, 360, 361, 362, 363, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 381, 382, 383, 384, 385, 386, -1,
- -1, -1, -1, 391, 392, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 414, 415, 416, 417,
- 418, 419, 420, 421, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 436, 4,
+ 450, 451, 452, 453, 454, 455, 456, 457, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 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,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
@@ -3956,105 +3709,66 @@
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, -1, -1, -1, -1, -1, -1, 323, -1,
- -1, -1, -1, -1, 329, 330, -1, -1, -1, -1,
+ 315, 316, -1, -1, -1, 320, 321, 322, 323, 324,
+ 325, 326, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 348, 349, -1, -1, 352, -1, -1,
- -1, -1, -1, -1, -1, 360, 361, 362, 363, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 354,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 381, 382, 383, 384,
- 385, 386, -1, -1, -1, -1, 391, 392, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 373, 374,
+ 375, 376, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 386, 387, 388, 389, 390, 391, 392, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 414,
- 415, 416, 417, 418, 419, 420, 421, -1, -1, -1,
+ -1, -1, -1, 408, 409, 410, 411, 412, 413, -1,
+ -1, -1, -1, -1, -1, -1, -1, 422, -1, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, -1, -1, -1,
+ 320, 321, 322, 323, 324, 325, 326, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 436, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, -1,
- -1, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, -1, -1, -1, -1, -1,
- -1, 323, -1, -1, -1, -1, -1, 329, 330, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 348, 349, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 359, 360, 361,
- 362, 363, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 381,
- 382, 383, 384, 385, 386, -1, -1, -1, -1, 391,
- 392, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 414, 415, 416, 417, 418, 419, 420, 421,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 436, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, -1, -1, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, -1, -1,
- -1, -1, -1, -1, 323, -1, -1, -1, -1, -1,
- 329, 330, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 348,
- 349, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 360, 361, 362, 363, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 381, 382, 383, 384, 385, 386, -1, -1,
- -1, -1, 391, 392, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 414, 415, 416, 417, 418,
- 419, 420, 421, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 436, 4, 5,
+ -1, -1, -1, 373, 374, 375, 376, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 386, 387, 388, 389,
+ 390, 391, 392, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 408, 409,
+ 410, 411, 412, 413, -1, -1, -1, -1, -1, -1,
+ -1, -1, 422, -1, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
@@ -4089,7 +3803,7 @@
316, -1, -1, -1, -1, -1, -1, 323, -1, -1,
-1, -1, -1, 329, 330, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 348, 349, -1, -1, -1, -1, -1, -1,
+ -1, -1, 348, 349, -1, -1, -1, 353, 354, -1,
-1, -1, -1, -1, 360, 361, 362, 363, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 381, 382, 383, 384, 385,
@@ -4133,7 +3847,7 @@
323, -1, -1, -1, -1, -1, 329, 330, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 348, 349, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 360, 361, 362,
+ 353, 354, -1, -1, -1, -1, -1, 360, 361, 362,
363, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 381, 382,
383, 384, 385, 386, -1, -1, -1, -1, 391, 392,
@@ -4173,14 +3887,317 @@
290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
310, 311, 312, 313, 314, 315, 316, -1, -1, -1,
- -1, -1, -1, 323, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 323, -1, -1, -1, -1, -1, 329,
+ 330, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 348, 349,
+ -1, -1, 352, -1, -1, -1, -1, -1, -1, -1,
+ 360, 361, 362, 363, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 381, 382, 383, 384, 385, 386, -1, -1, -1,
+ -1, 391, 392, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 414, 415, 416, 417, 418, 419,
+ 420, 421, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 436, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, -1, -1, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ -1, -1, -1, -1, -1, -1, 323, -1, -1, -1,
+ -1, -1, 329, 330, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 348, 349, -1, -1, -1, 353, -1, -1, -1,
+ -1, -1, -1, 360, 361, 362, 363, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 381, 382, 383, 384, 385, 386,
+ -1, -1, -1, -1, 391, 392, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 414, 415, 416,
+ 417, 418, 419, 420, 421, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 436,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, -1, -1, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 315, 316, -1, -1, -1, -1, -1, -1, 323,
+ -1, -1, -1, -1, -1, 329, 330, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 348, 349, -1, -1, 352, -1,
+ -1, -1, -1, -1, -1, -1, 360, 361, 362, 363,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 381, 382, 383,
+ 384, 385, 386, -1, -1, -1, -1, 391, 392, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 414, 415, 416, 417, 418, 419, 420, 421, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 436, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ -1, -1, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 314, 315, 316, -1, -1, -1, -1,
+ -1, -1, 323, -1, -1, -1, -1, -1, 329, 330,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 348, 349, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 359, 360,
+ 361, 362, 363, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 381, 382, 383, 384, 385, 386, -1, -1, -1, -1,
+ 391, 392, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 414, 415, 416, 417, 418, 419, 420,
+ 421, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 436, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, -1, -1, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, -1,
+ -1, -1, -1, -1, -1, 323, -1, -1, -1, -1,
+ -1, 329, 330, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 348, 349, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 360, 361, 362, 363, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 381, 382, 383, 384, 385, 386, -1,
+ -1, -1, -1, 391, 392, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 414, 415, 416, 417,
+ 418, 419, 420, 421, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 436, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, -1, -1, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, -1, -1, -1, -1, -1, -1, 323, -1,
+ -1, -1, -1, -1, 329, 330, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 348, 349, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 360, 361, 362, 363, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 381, 382, 383, 384,
+ 385, 386, -1, -1, -1, -1, 391, 392, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 414,
+ 415, 416, 417, 418, 419, 420, 421, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 436, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, -1,
+ -1, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 314, 315, 316, -1, -1, -1, -1, -1,
+ -1, 323, -1, -1, -1, -1, -1, 329, 330, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 348, 349, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 360, 361,
+ 362, 363, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 381,
+ 382, 383, 384, 385, 386, -1, -1, -1, -1, 391,
+ 392, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 414, 415, 416, 417, 418, 419, 420, 421,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 436, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, -1, -1, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 314, 315, 316, -1, -1,
+ -1, -1, -1, -1, 323, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 386, -1, -1, -1,
- -1, 391, 392
+ -1, -1, -1, -1, -1, -1, -1, 386, -1, -1,
+ -1, -1, 391, 392
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -4224,136 +4241,137 @@
409, 410, 411, 412, 413, 422, 424, 425, 426, 427,
428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
- 448, 449, 450, 451, 452, 453, 454, 486, 487, 490,
- 491, 492, 493, 497, 498, 499, 500, 501, 502, 505,
- 506, 507, 508, 509, 511, 516, 517, 518, 559, 560,
- 561, 563, 570, 574, 575, 580, 583, 349, 349, 349,
- 349, 349, 349, 349, 349, 351, 517, 353, 385, 349,
- 349, 359, 385, 359, 562, 350, 356, 494, 495, 496,
- 506, 511, 356, 359, 385, 359, 385, 507, 511, 367,
- 513, 514, 0, 560, 491, 499, 506, 359, 490, 385,
- 566, 567, 584, 585, 382, 385, 566, 382, 566, 382,
- 566, 382, 566, 382, 566, 566, 584, 382, 566, 385,
- 564, 565, 511, 520, 353, 385, 409, 503, 504, 385,
- 510, 351, 359, 512, 353, 538, 563, 495, 494, 496,
- 385, 385, 349, 358, 512, 353, 356, 359, 489, 329,
- 330, 348, 349, 360, 361, 362, 363, 381, 382, 383,
- 384, 385, 414, 415, 416, 417, 418, 419, 420, 421,
- 456, 457, 458, 460, 461, 462, 463, 464, 465, 466,
- 467, 468, 509, 511, 515, 512, 350, 385, 359, 358,
- 356, 350, 356, 350, 356, 358, 356, 356, 356, 350,
- 356, 356, 356, 356, 356, 356, 356, 350, 356, 350,
- 356, 349, 352, 356, 359, 506, 511, 521, 522, 519,
- 358, 350, 356, 350, 356, 352, 467, 469, 470, 471,
- 472, 473, 474, 475, 476, 477, 478, 479, 480, 351,
- 359, 353, 354, 359, 393, 394, 395, 396, 398, 399,
- 400, 401, 402, 403, 404, 405, 406, 407, 423, 467,
- 480, 482, 484, 486, 490, 509, 511, 527, 528, 529,
- 530, 531, 539, 540, 541, 542, 545, 546, 549, 550,
- 551, 558, 563, 512, 358, 512, 353, 482, 525, 358,
- 488, 385, 356, 359, 467, 467, 484, 329, 330, 351,
- 355, 350, 350, 356, 392, 482, 349, 467, 356, 368,
- 563, 348, 351, 382, 567, 584, 385, 585, 348, 381,
- 382, 383, 384, 571, 572, 382, 480, 485, 573, 382,
- 381, 382, 383, 384, 576, 577, 382, 485, 578, 382,
- 348, 579, 382, 584, 385, 485, 581, 582, 382, 485,
- 352, 565, 511, 385, 523, 524, 354, 522, 521, 485,
- 504, 385, 364, 365, 366, 361, 363, 327, 328, 331,
- 332, 367, 368, 333, 334, 371, 370, 369, 335, 337,
- 336, 372, 352, 352, 480, 354, 532, 349, 359, 359,
- 553, 349, 349, 359, 359, 484, 349, 484, 357, 359,
- 359, 359, 359, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 358, 483, 356, 359, 354, 528, 542,
- 546, 551, 525, 358, 354, 525, 526, 525, 521, 385,
- 350, 459, 484, 385, 482, 467, 348, 382, 568, 569,
- 350, 358, 350, 356, 350, 356, 350, 356, 356, 350,
- 356, 350, 356, 350, 356, 356, 350, 356, 356, 350,
- 356, 350, 356, 350, 350, 523, 512, 356, 359, 354,
- 467, 467, 467, 469, 469, 470, 470, 471, 471, 471,
- 471, 472, 472, 473, 474, 475, 476, 477, 478, 481,
- 352, 539, 552, 528, 554, 484, 359, 484, 357, 482,
- 482, 525, 354, 356, 354, 352, 352, 356, 352, 356,
- 572, 571, 485, 573, 577, 576, 485, 578, 348, 579,
- 581, 582, 359, 524, 484, 533, 484, 499, 544, 393,
- 527, 540, 555, 350, 350, 354, 525, 348, 382, 350,
- 350, 350, 350, 350, 350, 357, 354, 385, 350, 349,
- 544, 556, 557, 535, 536, 537, 543, 547, 482, 358,
- 529, 534, 538, 484, 359, 350, 397, 531, 529, 353,
- 525, 350, 484, 534, 535, 539, 548, 359, 354
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 489, 490, 493, 494, 495, 496, 500, 501, 502, 503,
+ 504, 505, 508, 509, 510, 511, 512, 514, 519, 520,
+ 521, 562, 563, 564, 566, 573, 577, 578, 583, 586,
+ 349, 349, 349, 349, 349, 349, 349, 349, 351, 520,
+ 353, 385, 349, 349, 359, 385, 359, 565, 350, 356,
+ 497, 498, 499, 509, 514, 356, 359, 385, 359, 385,
+ 510, 514, 367, 516, 517, 0, 563, 494, 502, 509,
+ 359, 493, 385, 569, 570, 587, 588, 382, 385, 569,
+ 382, 569, 382, 569, 382, 569, 382, 569, 569, 587,
+ 382, 569, 385, 567, 568, 514, 523, 353, 385, 409,
+ 506, 507, 385, 513, 351, 359, 515, 353, 541, 566,
+ 498, 497, 499, 385, 385, 349, 358, 515, 353, 356,
+ 359, 492, 329, 330, 348, 349, 360, 361, 362, 363,
+ 381, 382, 383, 384, 385, 414, 415, 416, 417, 418,
+ 419, 420, 421, 459, 460, 461, 463, 464, 465, 466,
+ 467, 468, 469, 470, 471, 512, 514, 518, 515, 350,
+ 385, 359, 358, 356, 350, 356, 350, 356, 358, 356,
+ 356, 356, 350, 356, 356, 356, 356, 356, 356, 356,
+ 350, 356, 350, 356, 349, 352, 356, 359, 509, 514,
+ 524, 525, 522, 358, 350, 356, 350, 356, 352, 470,
+ 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
+ 482, 483, 351, 359, 353, 354, 359, 393, 394, 395,
+ 396, 398, 399, 400, 401, 402, 403, 404, 405, 406,
+ 407, 423, 470, 483, 485, 487, 489, 493, 512, 514,
+ 530, 531, 532, 533, 534, 542, 543, 544, 545, 548,
+ 549, 552, 553, 554, 561, 566, 515, 358, 515, 353,
+ 485, 528, 358, 491, 385, 356, 359, 470, 470, 487,
+ 329, 330, 351, 355, 350, 350, 356, 392, 485, 349,
+ 470, 356, 368, 566, 348, 351, 382, 570, 587, 385,
+ 588, 348, 381, 382, 383, 384, 574, 575, 382, 483,
+ 488, 576, 382, 381, 382, 383, 384, 579, 580, 382,
+ 488, 581, 382, 348, 582, 382, 587, 385, 488, 584,
+ 585, 382, 488, 352, 568, 514, 385, 526, 527, 354,
+ 525, 524, 488, 507, 385, 364, 365, 366, 361, 363,
+ 327, 328, 331, 332, 367, 368, 333, 334, 371, 370,
+ 369, 335, 337, 336, 372, 352, 352, 483, 354, 535,
+ 349, 359, 359, 556, 349, 349, 359, 359, 487, 349,
+ 487, 357, 359, 359, 359, 359, 338, 339, 340, 341,
+ 342, 343, 344, 345, 346, 347, 358, 486, 356, 359,
+ 354, 531, 545, 549, 554, 528, 358, 354, 528, 529,
+ 528, 524, 385, 350, 462, 487, 385, 485, 470, 348,
+ 382, 571, 572, 350, 358, 350, 356, 350, 356, 350,
+ 356, 356, 350, 356, 350, 356, 350, 356, 356, 350,
+ 356, 356, 350, 356, 350, 356, 350, 350, 526, 515,
+ 356, 359, 354, 470, 470, 470, 472, 472, 473, 473,
+ 474, 474, 474, 474, 475, 475, 476, 477, 478, 479,
+ 480, 481, 484, 352, 542, 555, 531, 557, 487, 359,
+ 487, 357, 485, 485, 528, 354, 356, 354, 352, 352,
+ 356, 352, 356, 575, 574, 488, 576, 580, 579, 488,
+ 581, 348, 582, 584, 585, 359, 527, 487, 536, 487,
+ 502, 547, 393, 530, 543, 558, 350, 350, 354, 528,
+ 348, 382, 350, 350, 350, 350, 350, 350, 357, 354,
+ 385, 350, 349, 547, 559, 560, 538, 539, 540, 546,
+ 550, 485, 358, 532, 537, 541, 487, 359, 350, 397,
+ 534, 532, 353, 528, 350, 487, 537, 538, 542, 551,
+ 359, 354
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_int16 yyr1[] =
{
- 0, 455, 456, 457, 457, 457, 457, 457, 457, 457,
- 457, 457, 457, 457, 457, 457, 457, 457, 458, 458,
- 458, 458, 458, 458, 459, 460, 461, 462, 462, 463,
- 463, 464, 464, 465, 466, 466, 466, 467, 467, 467,
- 467, 468, 468, 468, 468, 469, 469, 469, 469, 470,
- 470, 470, 471, 471, 471, 472, 472, 472, 472, 472,
- 473, 473, 473, 474, 474, 475, 475, 476, 476, 477,
- 477, 478, 478, 479, 479, 480, 481, 480, 482, 482,
- 483, 483, 483, 483, 483, 483, 483, 483, 483, 483,
- 483, 484, 484, 485, 486, 486, 486, 486, 486, 486,
- 486, 486, 486, 486, 486, 488, 487, 489, 489, 490,
- 490, 490, 490, 491, 491, 492, 492, 493, 494, 494,
- 495, 495, 495, 495, 496, 497, 497, 497, 497, 497,
- 498, 498, 498, 498, 498, 499, 499, 500, 501, 501,
- 501, 501, 501, 501, 501, 501, 502, 503, 503, 504,
- 504, 504, 505, 506, 506, 507, 507, 507, 507, 507,
- 507, 507, 507, 507, 507, 507, 508, 508, 508, 508,
- 508, 508, 508, 508, 508, 508, 508, 508, 508, 508,
- 508, 508, 508, 508, 508, 508, 508, 508, 508, 508,
- 508, 508, 508, 508, 508, 508, 508, 508, 508, 508,
- 508, 509, 510, 510, 511, 511, 512, 512, 512, 512,
- 513, 513, 514, 515, 515, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
- 517, 517, 517, 519, 518, 520, 518, 521, 521, 522,
- 522, 523, 523, 524, 524, 525, 525, 525, 525, 526,
- 526, 527, 528, 528, 529, 529, 529, 529, 529, 529,
- 529, 529, 530, 531, 532, 533, 531, 534, 534, 536,
- 535, 537, 535, 538, 538, 539, 539, 540, 540, 541,
- 541, 542, 543, 543, 544, 544, 545, 545, 547, 546,
- 548, 548, 549, 549, 550, 550, 552, 551, 553, 551,
- 554, 551, 555, 555, 556, 556, 557, 557, 558, 558,
- 558, 558, 558, 558, 558, 558, 559, 559, 560, 560,
- 560, 562, 561, 563, 564, 564, 565, 565, 566, 566,
- 567, 567, 568, 568, 569, 569, 570, 570, 570, 570,
- 570, 570, 571, 571, 572, 572, 572, 572, 572, 573,
- 573, 574, 574, 575, 575, 575, 575, 575, 575, 575,
- 575, 576, 576, 577, 577, 577, 577, 578, 578, 579,
- 579, 580, 580, 580, 580, 581, 581, 582, 583, 583,
- 584, 584, 585, 585
+ 0, 458, 459, 460, 460, 460, 460, 460, 460, 460,
+ 460, 460, 460, 460, 460, 460, 460, 460, 461, 461,
+ 461, 461, 461, 461, 462, 463, 464, 465, 465, 466,
+ 466, 467, 467, 468, 469, 469, 469, 470, 470, 470,
+ 470, 471, 471, 471, 471, 472, 472, 472, 472, 473,
+ 473, 473, 474, 474, 474, 475, 475, 475, 475, 475,
+ 476, 476, 476, 477, 477, 478, 478, 479, 479, 480,
+ 480, 481, 481, 482, 482, 483, 484, 483, 485, 485,
+ 486, 486, 486, 486, 486, 486, 486, 486, 486, 486,
+ 486, 487, 487, 488, 489, 489, 489, 489, 489, 489,
+ 489, 489, 489, 489, 489, 491, 490, 492, 492, 493,
+ 493, 493, 493, 494, 494, 495, 495, 496, 497, 497,
+ 498, 498, 498, 498, 499, 500, 500, 500, 500, 500,
+ 501, 501, 501, 501, 501, 502, 502, 503, 504, 504,
+ 504, 504, 504, 504, 504, 504, 504, 504, 505, 506,
+ 506, 507, 507, 507, 508, 509, 509, 510, 510, 510,
+ 510, 510, 510, 510, 510, 510, 510, 510, 511, 511,
+ 511, 511, 511, 511, 511, 511, 511, 511, 511, 511,
+ 511, 511, 511, 511, 511, 511, 511, 511, 511, 511,
+ 511, 511, 511, 511, 511, 511, 511, 511, 511, 511,
+ 511, 511, 511, 511, 512, 513, 513, 514, 514, 515,
+ 515, 515, 515, 516, 516, 517, 518, 518, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 519, 519, 519, 519, 519, 519, 519,
+ 519, 519, 519, 520, 520, 520, 522, 521, 523, 521,
+ 524, 524, 525, 525, 526, 526, 527, 527, 528, 528,
+ 528, 528, 529, 529, 530, 531, 531, 532, 532, 532,
+ 532, 532, 532, 532, 532, 533, 534, 535, 536, 534,
+ 537, 537, 539, 538, 540, 538, 541, 541, 542, 542,
+ 543, 543, 544, 544, 545, 546, 546, 547, 547, 548,
+ 548, 550, 549, 551, 551, 552, 552, 553, 553, 555,
+ 554, 556, 554, 557, 554, 558, 558, 559, 559, 560,
+ 560, 561, 561, 561, 561, 561, 561, 561, 561, 562,
+ 562, 563, 563, 563, 565, 564, 566, 567, 567, 568,
+ 568, 569, 569, 570, 570, 571, 571, 572, 572, 573,
+ 573, 573, 573, 573, 573, 574, 574, 575, 575, 575,
+ 575, 575, 576, 576, 577, 577, 578, 578, 578, 578,
+ 578, 578, 578, 578, 579, 579, 580, 580, 580, 580,
+ 581, 581, 582, 582, 583, 583, 583, 583, 584, 584,
+ 585, 586, 586, 587, 587, 588, 588
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
@@ -4373,14 +4391,14 @@
3, 3, 4, 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, 4, 1,
+ 3, 1, 3, 1, 1, 1, 2, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 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, 4, 1, 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,
@@ -4412,22 +4430,22 @@
1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 2, 2, 0, 0, 5, 1, 1, 0,
- 2, 0, 2, 2, 3, 1, 2, 1, 2, 1,
- 2, 5, 3, 1, 1, 4, 1, 2, 0, 8,
- 0, 1, 3, 2, 1, 2, 0, 6, 0, 8,
- 0, 7, 1, 1, 1, 0, 2, 3, 2, 2,
- 2, 3, 2, 2, 2, 2, 1, 2, 1, 1,
- 1, 0, 3, 5, 1, 3, 1, 4, 1, 3,
- 5, 5, 1, 3, 1, 3, 4, 6, 6, 8,
- 6, 8, 1, 3, 1, 1, 1, 1, 1, 1,
- 3, 4, 6, 4, 6, 6, 8, 6, 8, 6,
- 8, 1, 3, 1, 1, 1, 1, 1, 3, 1,
- 3, 6, 8, 4, 6, 1, 3, 1, 4, 6,
- 1, 3, 3, 3
+ 1, 1, 1, 1, 1, 1, 0, 6, 0, 5,
+ 1, 2, 3, 4, 1, 3, 1, 2, 1, 3,
+ 4, 2, 1, 3, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 2, 2, 0, 0, 5,
+ 1, 1, 0, 2, 0, 2, 2, 3, 1, 2,
+ 1, 2, 1, 2, 5, 3, 1, 1, 4, 1,
+ 2, 0, 8, 0, 1, 3, 2, 1, 2, 0,
+ 6, 0, 8, 0, 7, 1, 1, 1, 0, 2,
+ 3, 2, 2, 2, 3, 2, 2, 2, 2, 1,
+ 2, 1, 1, 1, 0, 3, 5, 1, 3, 1,
+ 4, 1, 3, 5, 5, 1, 3, 1, 3, 4,
+ 6, 6, 8, 6, 8, 1, 3, 1, 1, 1,
+ 1, 1, 1, 3, 4, 6, 4, 6, 6, 8,
+ 6, 8, 6, 8, 1, 3, 1, 1, 1, 1,
+ 1, 3, 1, 3, 6, 8, 4, 6, 1, 3,
+ 1, 4, 6, 1, 3, 3, 3
};
@@ -5177,7 +5195,7 @@
{
(yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string);
}
-#line 5181 "MachineIndependent/glslang_tab.cpp"
+#line 5199 "MachineIndependent/glslang_tab.cpp"
break;
case 3: /* primary_expression: variable_identifier */
@@ -5185,7 +5203,7 @@
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5189 "MachineIndependent/glslang_tab.cpp"
+#line 5207 "MachineIndependent/glslang_tab.cpp"
break;
case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */
@@ -5195,7 +5213,7 @@
if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
(yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
-#line 5199 "MachineIndependent/glslang_tab.cpp"
+#line 5217 "MachineIndependent/glslang_tab.cpp"
break;
case 5: /* primary_expression: FLOATCONSTANT */
@@ -5203,7 +5221,7 @@
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
}
-#line 5207 "MachineIndependent/glslang_tab.cpp"
+#line 5225 "MachineIndependent/glslang_tab.cpp"
break;
case 6: /* primary_expression: INTCONSTANT */
@@ -5211,7 +5229,7 @@
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 5215 "MachineIndependent/glslang_tab.cpp"
+#line 5233 "MachineIndependent/glslang_tab.cpp"
break;
case 7: /* primary_expression: UINTCONSTANT */
@@ -5220,7 +5238,7 @@
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 5224 "MachineIndependent/glslang_tab.cpp"
+#line 5242 "MachineIndependent/glslang_tab.cpp"
break;
case 8: /* primary_expression: BOOLCONSTANT */
@@ -5228,7 +5246,7 @@
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
-#line 5232 "MachineIndependent/glslang_tab.cpp"
+#line 5250 "MachineIndependent/glslang_tab.cpp"
break;
case 9: /* primary_expression: STRING_LITERAL */
@@ -5236,7 +5254,7 @@
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true);
}
-#line 5240 "MachineIndependent/glslang_tab.cpp"
+#line 5258 "MachineIndependent/glslang_tab.cpp"
break;
case 10: /* primary_expression: INT32CONSTANT */
@@ -5245,7 +5263,7 @@
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 5249 "MachineIndependent/glslang_tab.cpp"
+#line 5267 "MachineIndependent/glslang_tab.cpp"
break;
case 11: /* primary_expression: UINT32CONSTANT */
@@ -5254,7 +5272,7 @@
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 5258 "MachineIndependent/glslang_tab.cpp"
+#line 5276 "MachineIndependent/glslang_tab.cpp"
break;
case 12: /* primary_expression: INT64CONSTANT */
@@ -5263,7 +5281,7 @@
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 5267 "MachineIndependent/glslang_tab.cpp"
+#line 5285 "MachineIndependent/glslang_tab.cpp"
break;
case 13: /* primary_expression: UINT64CONSTANT */
@@ -5272,7 +5290,7 @@
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 5276 "MachineIndependent/glslang_tab.cpp"
+#line 5294 "MachineIndependent/glslang_tab.cpp"
break;
case 14: /* primary_expression: INT16CONSTANT */
@@ -5281,7 +5299,7 @@
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 5285 "MachineIndependent/glslang_tab.cpp"
+#line 5303 "MachineIndependent/glslang_tab.cpp"
break;
case 15: /* primary_expression: UINT16CONSTANT */
@@ -5290,7 +5308,7 @@
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 5294 "MachineIndependent/glslang_tab.cpp"
+#line 5312 "MachineIndependent/glslang_tab.cpp"
break;
case 16: /* primary_expression: DOUBLECONSTANT */
@@ -5301,7 +5319,7 @@
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 5305 "MachineIndependent/glslang_tab.cpp"
+#line 5323 "MachineIndependent/glslang_tab.cpp"
break;
case 17: /* primary_expression: FLOAT16CONSTANT */
@@ -5310,7 +5328,7 @@
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 5314 "MachineIndependent/glslang_tab.cpp"
+#line 5332 "MachineIndependent/glslang_tab.cpp"
break;
case 18: /* postfix_expression: primary_expression */
@@ -5318,7 +5336,7 @@
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5322 "MachineIndependent/glslang_tab.cpp"
+#line 5340 "MachineIndependent/glslang_tab.cpp"
break;
case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */
@@ -5326,7 +5344,7 @@
{
(yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
}
-#line 5330 "MachineIndependent/glslang_tab.cpp"
+#line 5348 "MachineIndependent/glslang_tab.cpp"
break;
case 20: /* postfix_expression: function_call */
@@ -5334,7 +5352,7 @@
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5338 "MachineIndependent/glslang_tab.cpp"
+#line 5356 "MachineIndependent/glslang_tab.cpp"
break;
case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */
@@ -5342,7 +5360,7 @@
{
(yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
}
-#line 5346 "MachineIndependent/glslang_tab.cpp"
+#line 5364 "MachineIndependent/glslang_tab.cpp"
break;
case 22: /* postfix_expression: postfix_expression INC_OP */
@@ -5352,7 +5370,7 @@
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 5356 "MachineIndependent/glslang_tab.cpp"
+#line 5374 "MachineIndependent/glslang_tab.cpp"
break;
case 23: /* postfix_expression: postfix_expression DEC_OP */
@@ -5362,7 +5380,7 @@
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 5366 "MachineIndependent/glslang_tab.cpp"
+#line 5384 "MachineIndependent/glslang_tab.cpp"
break;
case 24: /* integer_expression: expression */
@@ -5371,7 +5389,7 @@
parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5375 "MachineIndependent/glslang_tab.cpp"
+#line 5393 "MachineIndependent/glslang_tab.cpp"
break;
case 25: /* function_call: function_call_or_method */
@@ -5380,7 +5398,7 @@
(yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode);
delete (yyvsp[0].interm).function;
}
-#line 5384 "MachineIndependent/glslang_tab.cpp"
+#line 5402 "MachineIndependent/glslang_tab.cpp"
break;
case 26: /* function_call_or_method: function_call_generic */
@@ -5388,7 +5406,7 @@
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 5392 "MachineIndependent/glslang_tab.cpp"
+#line 5410 "MachineIndependent/glslang_tab.cpp"
break;
case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */
@@ -5397,7 +5415,7 @@
(yyval.interm) = (yyvsp[-1].interm);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 5401 "MachineIndependent/glslang_tab.cpp"
+#line 5419 "MachineIndependent/glslang_tab.cpp"
break;
case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */
@@ -5406,7 +5424,7 @@
(yyval.interm) = (yyvsp[-1].interm);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 5410 "MachineIndependent/glslang_tab.cpp"
+#line 5428 "MachineIndependent/glslang_tab.cpp"
break;
case 29: /* function_call_header_no_parameters: function_call_header VOID */
@@ -5414,7 +5432,7 @@
{
(yyval.interm) = (yyvsp[-1].interm);
}
-#line 5418 "MachineIndependent/glslang_tab.cpp"
+#line 5436 "MachineIndependent/glslang_tab.cpp"
break;
case 30: /* function_call_header_no_parameters: function_call_header */
@@ -5422,7 +5440,7 @@
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 5426 "MachineIndependent/glslang_tab.cpp"
+#line 5444 "MachineIndependent/glslang_tab.cpp"
break;
case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */
@@ -5434,7 +5452,7 @@
(yyval.interm).function = (yyvsp[-1].interm).function;
(yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
}
-#line 5438 "MachineIndependent/glslang_tab.cpp"
+#line 5456 "MachineIndependent/glslang_tab.cpp"
break;
case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */
@@ -5446,7 +5464,7 @@
(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 5450 "MachineIndependent/glslang_tab.cpp"
+#line 5468 "MachineIndependent/glslang_tab.cpp"
break;
case 33: /* function_call_header: function_identifier LEFT_PAREN */
@@ -5454,7 +5472,7 @@
{
(yyval.interm) = (yyvsp[-1].interm);
}
-#line 5458 "MachineIndependent/glslang_tab.cpp"
+#line 5476 "MachineIndependent/glslang_tab.cpp"
break;
case 34: /* function_identifier: type_specifier */
@@ -5464,7 +5482,7 @@
(yyval.interm).intermNode = 0;
(yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
}
-#line 5468 "MachineIndependent/glslang_tab.cpp"
+#line 5486 "MachineIndependent/glslang_tab.cpp"
break;
case 35: /* function_identifier: postfix_expression */
@@ -5496,7 +5514,7 @@
(yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull);
}
}
-#line 5500 "MachineIndependent/glslang_tab.cpp"
+#line 5518 "MachineIndependent/glslang_tab.cpp"
break;
case 36: /* function_identifier: non_uniform_qualifier */
@@ -5506,7 +5524,7 @@
(yyval.interm).intermNode = 0;
(yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
}
-#line 5510 "MachineIndependent/glslang_tab.cpp"
+#line 5528 "MachineIndependent/glslang_tab.cpp"
break;
case 37: /* unary_expression: postfix_expression */
@@ -5517,7 +5535,7 @@
if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode())
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
}
-#line 5521 "MachineIndependent/glslang_tab.cpp"
+#line 5539 "MachineIndependent/glslang_tab.cpp"
break;
case 38: /* unary_expression: INC_OP unary_expression */
@@ -5526,7 +5544,7 @@
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 5530 "MachineIndependent/glslang_tab.cpp"
+#line 5548 "MachineIndependent/glslang_tab.cpp"
break;
case 39: /* unary_expression: DEC_OP unary_expression */
@@ -5535,7 +5553,7 @@
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 5539 "MachineIndependent/glslang_tab.cpp"
+#line 5557 "MachineIndependent/glslang_tab.cpp"
break;
case 40: /* unary_expression: unary_operator unary_expression */
@@ -5556,38 +5574,38 @@
(yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
}
-#line 5560 "MachineIndependent/glslang_tab.cpp"
+#line 5578 "MachineIndependent/glslang_tab.cpp"
break;
case 41: /* unary_operator: PLUS */
#line 627 "MachineIndependent/glslang.y"
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
-#line 5566 "MachineIndependent/glslang_tab.cpp"
+#line 5584 "MachineIndependent/glslang_tab.cpp"
break;
case 42: /* unary_operator: DASH */
#line 628 "MachineIndependent/glslang.y"
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
-#line 5572 "MachineIndependent/glslang_tab.cpp"
+#line 5590 "MachineIndependent/glslang_tab.cpp"
break;
case 43: /* unary_operator: BANG */
#line 629 "MachineIndependent/glslang.y"
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
-#line 5578 "MachineIndependent/glslang_tab.cpp"
+#line 5596 "MachineIndependent/glslang_tab.cpp"
break;
case 44: /* unary_operator: TILDE */
#line 630 "MachineIndependent/glslang.y"
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
-#line 5585 "MachineIndependent/glslang_tab.cpp"
+#line 5603 "MachineIndependent/glslang_tab.cpp"
break;
case 45: /* multiplicative_expression: unary_expression */
#line 636 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5591 "MachineIndependent/glslang_tab.cpp"
+#line 5609 "MachineIndependent/glslang_tab.cpp"
break;
case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */
@@ -5597,7 +5615,7 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5601 "MachineIndependent/glslang_tab.cpp"
+#line 5619 "MachineIndependent/glslang_tab.cpp"
break;
case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */
@@ -5607,7 +5625,7 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5611 "MachineIndependent/glslang_tab.cpp"
+#line 5629 "MachineIndependent/glslang_tab.cpp"
break;
case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */
@@ -5618,13 +5636,13 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5622 "MachineIndependent/glslang_tab.cpp"
+#line 5640 "MachineIndependent/glslang_tab.cpp"
break;
case 49: /* additive_expression: multiplicative_expression */
#line 656 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5628 "MachineIndependent/glslang_tab.cpp"
+#line 5646 "MachineIndependent/glslang_tab.cpp"
break;
case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */
@@ -5634,7 +5652,7 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5638 "MachineIndependent/glslang_tab.cpp"
+#line 5656 "MachineIndependent/glslang_tab.cpp"
break;
case 51: /* additive_expression: additive_expression DASH multiplicative_expression */
@@ -5644,13 +5662,13 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5648 "MachineIndependent/glslang_tab.cpp"
+#line 5666 "MachineIndependent/glslang_tab.cpp"
break;
case 52: /* shift_expression: additive_expression */
#line 670 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5654 "MachineIndependent/glslang_tab.cpp"
+#line 5672 "MachineIndependent/glslang_tab.cpp"
break;
case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */
@@ -5661,7 +5679,7 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5665 "MachineIndependent/glslang_tab.cpp"
+#line 5683 "MachineIndependent/glslang_tab.cpp"
break;
case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */
@@ -5672,13 +5690,13 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5676 "MachineIndependent/glslang_tab.cpp"
+#line 5694 "MachineIndependent/glslang_tab.cpp"
break;
case 55: /* relational_expression: shift_expression */
#line 686 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5682 "MachineIndependent/glslang_tab.cpp"
+#line 5700 "MachineIndependent/glslang_tab.cpp"
break;
case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */
@@ -5688,7 +5706,7 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5692 "MachineIndependent/glslang_tab.cpp"
+#line 5710 "MachineIndependent/glslang_tab.cpp"
break;
case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */
@@ -5698,7 +5716,7 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5702 "MachineIndependent/glslang_tab.cpp"
+#line 5720 "MachineIndependent/glslang_tab.cpp"
break;
case 58: /* relational_expression: relational_expression LE_OP shift_expression */
@@ -5708,7 +5726,7 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5712 "MachineIndependent/glslang_tab.cpp"
+#line 5730 "MachineIndependent/glslang_tab.cpp"
break;
case 59: /* relational_expression: relational_expression GE_OP shift_expression */
@@ -5718,13 +5736,13 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5722 "MachineIndependent/glslang_tab.cpp"
+#line 5740 "MachineIndependent/glslang_tab.cpp"
break;
case 60: /* equality_expression: relational_expression */
#line 710 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5728 "MachineIndependent/glslang_tab.cpp"
+#line 5746 "MachineIndependent/glslang_tab.cpp"
break;
case 61: /* equality_expression: equality_expression EQ_OP relational_expression */
@@ -5738,7 +5756,7 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5742 "MachineIndependent/glslang_tab.cpp"
+#line 5760 "MachineIndependent/glslang_tab.cpp"
break;
case 62: /* equality_expression: equality_expression NE_OP relational_expression */
@@ -5752,13 +5770,13 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5756 "MachineIndependent/glslang_tab.cpp"
+#line 5774 "MachineIndependent/glslang_tab.cpp"
break;
case 63: /* and_expression: equality_expression */
#line 732 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5762 "MachineIndependent/glslang_tab.cpp"
+#line 5780 "MachineIndependent/glslang_tab.cpp"
break;
case 64: /* and_expression: and_expression AMPERSAND equality_expression */
@@ -5769,13 +5787,13 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5773 "MachineIndependent/glslang_tab.cpp"
+#line 5791 "MachineIndependent/glslang_tab.cpp"
break;
case 65: /* exclusive_or_expression: and_expression */
#line 742 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5779 "MachineIndependent/glslang_tab.cpp"
+#line 5797 "MachineIndependent/glslang_tab.cpp"
break;
case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */
@@ -5786,13 +5804,13 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5790 "MachineIndependent/glslang_tab.cpp"
+#line 5808 "MachineIndependent/glslang_tab.cpp"
break;
case 67: /* inclusive_or_expression: exclusive_or_expression */
#line 752 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5796 "MachineIndependent/glslang_tab.cpp"
+#line 5814 "MachineIndependent/glslang_tab.cpp"
break;
case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */
@@ -5803,13 +5821,13 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5807 "MachineIndependent/glslang_tab.cpp"
+#line 5825 "MachineIndependent/glslang_tab.cpp"
break;
case 69: /* logical_and_expression: inclusive_or_expression */
#line 762 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5813 "MachineIndependent/glslang_tab.cpp"
+#line 5831 "MachineIndependent/glslang_tab.cpp"
break;
case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */
@@ -5819,13 +5837,13 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5823 "MachineIndependent/glslang_tab.cpp"
+#line 5841 "MachineIndependent/glslang_tab.cpp"
break;
case 71: /* logical_xor_expression: logical_and_expression */
#line 771 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5829 "MachineIndependent/glslang_tab.cpp"
+#line 5847 "MachineIndependent/glslang_tab.cpp"
break;
case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */
@@ -5835,13 +5853,13 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5839 "MachineIndependent/glslang_tab.cpp"
+#line 5857 "MachineIndependent/glslang_tab.cpp"
break;
case 73: /* logical_or_expression: logical_xor_expression */
#line 780 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5845 "MachineIndependent/glslang_tab.cpp"
+#line 5863 "MachineIndependent/glslang_tab.cpp"
break;
case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */
@@ -5851,13 +5869,13 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5855 "MachineIndependent/glslang_tab.cpp"
+#line 5873 "MachineIndependent/glslang_tab.cpp"
break;
case 75: /* conditional_expression: logical_or_expression */
#line 789 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5861 "MachineIndependent/glslang_tab.cpp"
+#line 5879 "MachineIndependent/glslang_tab.cpp"
break;
case 76: /* $@1: %empty */
@@ -5865,7 +5883,7 @@
{
++parseContext.controlFlowNestingLevel;
}
-#line 5869 "MachineIndependent/glslang_tab.cpp"
+#line 5887 "MachineIndependent/glslang_tab.cpp"
break;
case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */
@@ -5878,17 +5896,17 @@
parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[-5].interm.intermTypedNode), (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-4].lex).loc);
if ((yyval.interm.intermTypedNode) == 0) {
- parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString());
+ parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()));
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
}
-#line 5886 "MachineIndependent/glslang_tab.cpp"
+#line 5904 "MachineIndependent/glslang_tab.cpp"
break;
case 78: /* assignment_expression: conditional_expression */
#line 808 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5892 "MachineIndependent/glslang_tab.cpp"
+#line 5910 "MachineIndependent/glslang_tab.cpp"
break;
case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */
@@ -5902,11 +5920,11 @@
parseContext.rValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.addAssign((yyvsp[-1].interm).loc, (yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0) {
- parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString());
+ parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()));
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
}
-#line 5910 "MachineIndependent/glslang_tab.cpp"
+#line 5928 "MachineIndependent/glslang_tab.cpp"
break;
case 80: /* assignment_operator: EQUAL */
@@ -5915,7 +5933,7 @@
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpAssign;
}
-#line 5919 "MachineIndependent/glslang_tab.cpp"
+#line 5937 "MachineIndependent/glslang_tab.cpp"
break;
case 81: /* assignment_operator: MUL_ASSIGN */
@@ -5924,7 +5942,7 @@
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpMulAssign;
}
-#line 5928 "MachineIndependent/glslang_tab.cpp"
+#line 5946 "MachineIndependent/glslang_tab.cpp"
break;
case 82: /* assignment_operator: DIV_ASSIGN */
@@ -5933,7 +5951,7 @@
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpDivAssign;
}
-#line 5937 "MachineIndependent/glslang_tab.cpp"
+#line 5955 "MachineIndependent/glslang_tab.cpp"
break;
case 83: /* assignment_operator: MOD_ASSIGN */
@@ -5943,7 +5961,7 @@
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpModAssign;
}
-#line 5947 "MachineIndependent/glslang_tab.cpp"
+#line 5965 "MachineIndependent/glslang_tab.cpp"
break;
case 84: /* assignment_operator: ADD_ASSIGN */
@@ -5952,7 +5970,7 @@
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpAddAssign;
}
-#line 5956 "MachineIndependent/glslang_tab.cpp"
+#line 5974 "MachineIndependent/glslang_tab.cpp"
break;
case 85: /* assignment_operator: SUB_ASSIGN */
@@ -5961,7 +5979,7 @@
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpSubAssign;
}
-#line 5965 "MachineIndependent/glslang_tab.cpp"
+#line 5983 "MachineIndependent/glslang_tab.cpp"
break;
case 86: /* assignment_operator: LEFT_ASSIGN */
@@ -5970,7 +5988,7 @@
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
}
-#line 5974 "MachineIndependent/glslang_tab.cpp"
+#line 5992 "MachineIndependent/glslang_tab.cpp"
break;
case 87: /* assignment_operator: RIGHT_ASSIGN */
@@ -5979,7 +5997,7 @@
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
}
-#line 5983 "MachineIndependent/glslang_tab.cpp"
+#line 6001 "MachineIndependent/glslang_tab.cpp"
break;
case 88: /* assignment_operator: AND_ASSIGN */
@@ -5988,7 +6006,7 @@
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
}
-#line 5992 "MachineIndependent/glslang_tab.cpp"
+#line 6010 "MachineIndependent/glslang_tab.cpp"
break;
case 89: /* assignment_operator: XOR_ASSIGN */
@@ -5997,7 +6015,7 @@
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
}
-#line 6001 "MachineIndependent/glslang_tab.cpp"
+#line 6019 "MachineIndependent/glslang_tab.cpp"
break;
case 90: /* assignment_operator: OR_ASSIGN */
@@ -6006,7 +6024,7 @@
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
}
-#line 6010 "MachineIndependent/glslang_tab.cpp"
+#line 6028 "MachineIndependent/glslang_tab.cpp"
break;
case 91: /* expression: assignment_expression */
@@ -6014,7 +6032,7 @@
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 6018 "MachineIndependent/glslang_tab.cpp"
+#line 6036 "MachineIndependent/glslang_tab.cpp"
break;
case 92: /* expression: expression COMMA assignment_expression */
@@ -6023,11 +6041,11 @@
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);
if ((yyval.interm.intermTypedNode) == 0) {
- parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString());
+ parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()));
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
}
-#line 6031 "MachineIndependent/glslang_tab.cpp"
+#line 6049 "MachineIndependent/glslang_tab.cpp"
break;
case 93: /* constant_expression: conditional_expression */
@@ -6036,7 +6054,7 @@
parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 6040 "MachineIndependent/glslang_tab.cpp"
+#line 6058 "MachineIndependent/glslang_tab.cpp"
break;
case 94: /* declaration: function_prototype SEMICOLON */
@@ -6046,7 +6064,7 @@
(yyval.interm.intermNode) = 0;
// TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
}
-#line 6050 "MachineIndependent/glslang_tab.cpp"
+#line 6068 "MachineIndependent/glslang_tab.cpp"
break;
case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */
@@ -6058,7 +6076,7 @@
(yyval.interm.intermNode) = 0;
// TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
}
-#line 6062 "MachineIndependent/glslang_tab.cpp"
+#line 6080 "MachineIndependent/glslang_tab.cpp"
break;
case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */
@@ -6068,7 +6086,7 @@
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier");
(yyval.interm.intermNode) = 0;
}
-#line 6072 "MachineIndependent/glslang_tab.cpp"
+#line 6090 "MachineIndependent/glslang_tab.cpp"
break;
case 97: /* declaration: init_declarator_list SEMICOLON */
@@ -6078,7 +6096,7 @@
(yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode;
}
-#line 6082 "MachineIndependent/glslang_tab.cpp"
+#line 6100 "MachineIndependent/glslang_tab.cpp"
break;
case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */
@@ -6090,7 +6108,7 @@
parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
(yyval.interm.intermNode) = 0;
}
-#line 6094 "MachineIndependent/glslang_tab.cpp"
+#line 6112 "MachineIndependent/glslang_tab.cpp"
break;
case 99: /* declaration: block_structure SEMICOLON */
@@ -6099,7 +6117,7 @@
parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
(yyval.interm.intermNode) = 0;
}
-#line 6103 "MachineIndependent/glslang_tab.cpp"
+#line 6121 "MachineIndependent/glslang_tab.cpp"
break;
case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */
@@ -6108,7 +6126,7 @@
parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
(yyval.interm.intermNode) = 0;
}
-#line 6112 "MachineIndependent/glslang_tab.cpp"
+#line 6130 "MachineIndependent/glslang_tab.cpp"
break;
case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */
@@ -6117,7 +6135,7 @@
parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes);
(yyval.interm.intermNode) = 0;
}
-#line 6121 "MachineIndependent/glslang_tab.cpp"
+#line 6139 "MachineIndependent/glslang_tab.cpp"
break;
case 102: /* declaration: type_qualifier SEMICOLON */
@@ -6127,7 +6145,7 @@
parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type));
(yyval.interm.intermNode) = 0;
}
-#line 6131 "MachineIndependent/glslang_tab.cpp"
+#line 6149 "MachineIndependent/glslang_tab.cpp"
break;
case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */
@@ -6137,7 +6155,7 @@
parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string);
(yyval.interm.intermNode) = 0;
}
-#line 6141 "MachineIndependent/glslang_tab.cpp"
+#line 6159 "MachineIndependent/glslang_tab.cpp"
break;
case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */
@@ -6148,13 +6166,13 @@
parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList));
(yyval.interm.intermNode) = 0;
}
-#line 6152 "MachineIndependent/glslang_tab.cpp"
+#line 6170 "MachineIndependent/glslang_tab.cpp"
break;
case 105: /* $@2: %empty */
#line 956 "MachineIndependent/glslang.y"
{ parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
-#line 6158 "MachineIndependent/glslang_tab.cpp"
+#line 6176 "MachineIndependent/glslang_tab.cpp"
break;
case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */
@@ -6168,7 +6186,7 @@
(yyval.interm).loc = (yyvsp[-5].interm.type).loc;
(yyval.interm).typeList = (yyvsp[-1].interm.typeList);
}
-#line 6172 "MachineIndependent/glslang_tab.cpp"
+#line 6190 "MachineIndependent/glslang_tab.cpp"
break;
case 107: /* identifier_list: COMMA IDENTIFIER */
@@ -6177,7 +6195,7 @@
(yyval.interm.identifierList) = new TIdentifierList;
(yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
-#line 6181 "MachineIndependent/glslang_tab.cpp"
+#line 6199 "MachineIndependent/glslang_tab.cpp"
break;
case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */
@@ -6186,7 +6204,7 @@
(yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
(yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
-#line 6190 "MachineIndependent/glslang_tab.cpp"
+#line 6208 "MachineIndependent/glslang_tab.cpp"
break;
case 109: /* function_prototype: function_declarator RIGHT_PAREN */
@@ -6195,7 +6213,7 @@
(yyval.interm).function = (yyvsp[-1].interm.function);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 6199 "MachineIndependent/glslang_tab.cpp"
+#line 6217 "MachineIndependent/glslang_tab.cpp"
break;
case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */
@@ -6206,7 +6224,7 @@
parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes));
}
-#line 6210 "MachineIndependent/glslang_tab.cpp"
+#line 6228 "MachineIndependent/glslang_tab.cpp"
break;
case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */
@@ -6217,7 +6235,7 @@
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes));
}
-#line 6221 "MachineIndependent/glslang_tab.cpp"
+#line 6239 "MachineIndependent/glslang_tab.cpp"
break;
case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */
@@ -6229,7 +6247,7 @@
parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes));
parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes));
}
-#line 6233 "MachineIndependent/glslang_tab.cpp"
+#line 6251 "MachineIndependent/glslang_tab.cpp"
break;
case 113: /* function_declarator: function_header */
@@ -6237,7 +6255,7 @@
{
(yyval.interm.function) = (yyvsp[0].interm.function);
}
-#line 6241 "MachineIndependent/glslang_tab.cpp"
+#line 6259 "MachineIndependent/glslang_tab.cpp"
break;
case 114: /* function_declarator: function_header_with_parameters */
@@ -6245,7 +6263,7 @@
{
(yyval.interm.function) = (yyvsp[0].interm.function);
}
-#line 6249 "MachineIndependent/glslang_tab.cpp"
+#line 6267 "MachineIndependent/glslang_tab.cpp"
break;
case 115: /* function_header_with_parameters: function_header parameter_declaration */
@@ -6258,7 +6276,7 @@
else
delete (yyvsp[0].interm).param.type;
}
-#line 6262 "MachineIndependent/glslang_tab.cpp"
+#line 6280 "MachineIndependent/glslang_tab.cpp"
break;
case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */
@@ -6280,7 +6298,7 @@
(yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param);
}
}
-#line 6284 "MachineIndependent/glslang_tab.cpp"
+#line 6302 "MachineIndependent/glslang_tab.cpp"
break;
case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */
@@ -6304,7 +6322,7 @@
function = new TFunction((yyvsp[-1].lex).string, type);
(yyval.interm.function) = function;
}
-#line 6308 "MachineIndependent/glslang_tab.cpp"
+#line 6326 "MachineIndependent/glslang_tab.cpp"
break;
case 118: /* parameter_declarator: type_specifier IDENTIFIER */
@@ -6324,7 +6342,7 @@
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).param = param;
}
-#line 6328 "MachineIndependent/glslang_tab.cpp"
+#line 6346 "MachineIndependent/glslang_tab.cpp"
break;
case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */
@@ -6348,7 +6366,7 @@
(yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).param = param;
}
-#line 6352 "MachineIndependent/glslang_tab.cpp"
+#line 6370 "MachineIndependent/glslang_tab.cpp"
break;
case 120: /* parameter_declaration: type_qualifier parameter_declarator */
@@ -6364,7 +6382,7 @@
parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
}
-#line 6368 "MachineIndependent/glslang_tab.cpp"
+#line 6386 "MachineIndependent/glslang_tab.cpp"
break;
case 121: /* parameter_declaration: parameter_declarator */
@@ -6376,7 +6394,7 @@
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 6380 "MachineIndependent/glslang_tab.cpp"
+#line 6398 "MachineIndependent/glslang_tab.cpp"
break;
case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */
@@ -6391,7 +6409,7 @@
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 6395 "MachineIndependent/glslang_tab.cpp"
+#line 6413 "MachineIndependent/glslang_tab.cpp"
break;
case 123: /* parameter_declaration: parameter_type_specifier */
@@ -6403,7 +6421,7 @@
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 6407 "MachineIndependent/glslang_tab.cpp"
+#line 6425 "MachineIndependent/glslang_tab.cpp"
break;
case 124: /* parameter_type_specifier: type_specifier */
@@ -6414,7 +6432,7 @@
if ((yyvsp[0].interm.type).arraySizes)
parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes);
}
-#line 6418 "MachineIndependent/glslang_tab.cpp"
+#line 6436 "MachineIndependent/glslang_tab.cpp"
break;
case 125: /* init_declarator_list: single_declaration */
@@ -6422,7 +6440,7 @@
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 6426 "MachineIndependent/glslang_tab.cpp"
+#line 6444 "MachineIndependent/glslang_tab.cpp"
break;
case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */
@@ -6431,7 +6449,7 @@
(yyval.interm) = (yyvsp[-2].interm);
parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
}
-#line 6435 "MachineIndependent/glslang_tab.cpp"
+#line 6453 "MachineIndependent/glslang_tab.cpp"
break;
case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */
@@ -6440,7 +6458,7 @@
(yyval.interm) = (yyvsp[-3].interm);
parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes);
}
-#line 6444 "MachineIndependent/glslang_tab.cpp"
+#line 6462 "MachineIndependent/glslang_tab.cpp"
break;
case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */
@@ -6450,7 +6468,7 @@
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 6454 "MachineIndependent/glslang_tab.cpp"
+#line 6472 "MachineIndependent/glslang_tab.cpp"
break;
case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */
@@ -6460,7 +6478,7 @@
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 6464 "MachineIndependent/glslang_tab.cpp"
+#line 6482 "MachineIndependent/glslang_tab.cpp"
break;
case 130: /* single_declaration: fully_specified_type */
@@ -6472,7 +6490,7 @@
parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type);
}
-#line 6476 "MachineIndependent/glslang_tab.cpp"
+#line 6494 "MachineIndependent/glslang_tab.cpp"
break;
case 131: /* single_declaration: fully_specified_type IDENTIFIER */
@@ -6482,7 +6500,7 @@
(yyval.interm).intermNode = 0;
parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type));
}
-#line 6486 "MachineIndependent/glslang_tab.cpp"
+#line 6504 "MachineIndependent/glslang_tab.cpp"
break;
case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */
@@ -6492,7 +6510,7 @@
(yyval.interm).intermNode = 0;
parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes);
}
-#line 6496 "MachineIndependent/glslang_tab.cpp"
+#line 6514 "MachineIndependent/glslang_tab.cpp"
break;
case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */
@@ -6502,7 +6520,7 @@
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 6506 "MachineIndependent/glslang_tab.cpp"
+#line 6524 "MachineIndependent/glslang_tab.cpp"
break;
case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */
@@ -6512,7 +6530,7 @@
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 6516 "MachineIndependent/glslang_tab.cpp"
+#line 6534 "MachineIndependent/glslang_tab.cpp"
break;
case 135: /* fully_specified_type: type_specifier */
@@ -6527,7 +6545,7 @@
}
parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier);
}
-#line 6531 "MachineIndependent/glslang_tab.cpp"
+#line 6549 "MachineIndependent/glslang_tab.cpp"
break;
case 136: /* fully_specified_type: type_qualifier type_specifier */
@@ -6556,7 +6574,7 @@
(parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
(yyval.interm.type).qualifier.smooth = true;
}
-#line 6560 "MachineIndependent/glslang_tab.cpp"
+#line 6578 "MachineIndependent/glslang_tab.cpp"
break;
case 137: /* invariant_qualifier: INVARIANT */
@@ -6567,7 +6585,7 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.invariant = true;
}
-#line 6571 "MachineIndependent/glslang_tab.cpp"
+#line 6589 "MachineIndependent/glslang_tab.cpp"
break;
case 138: /* interpolation_qualifier: SMOOTH */
@@ -6579,7 +6597,7 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.smooth = true;
}
-#line 6583 "MachineIndependent/glslang_tab.cpp"
+#line 6601 "MachineIndependent/glslang_tab.cpp"
break;
case 139: /* interpolation_qualifier: FLAT */
@@ -6591,7 +6609,7 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.flat = true;
}
-#line 6595 "MachineIndependent/glslang_tab.cpp"
+#line 6613 "MachineIndependent/glslang_tab.cpp"
break;
case 140: /* interpolation_qualifier: NOPERSPECTIVE */
@@ -6603,7 +6621,7 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.nopersp = true;
}
-#line 6607 "MachineIndependent/glslang_tab.cpp"
+#line 6625 "MachineIndependent/glslang_tab.cpp"
break;
case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */
@@ -6615,7 +6633,7 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.explicitInterp = true;
}
-#line 6619 "MachineIndependent/glslang_tab.cpp"
+#line 6637 "MachineIndependent/glslang_tab.cpp"
break;
case 142: /* interpolation_qualifier: PERVERTEXNV */
@@ -6628,123 +6646,151 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.pervertexNV = true;
}
-#line 6632 "MachineIndependent/glslang_tab.cpp"
+#line 6650 "MachineIndependent/glslang_tab.cpp"
break;
- case 143: /* interpolation_qualifier: PERPRIMITIVENV */
+ case 143: /* interpolation_qualifier: PERVERTEXEXT */
#line 1293 "MachineIndependent/glslang.y"
+ {
+ parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric");
+ parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric");
+ parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
+ (yyval.interm.type).qualifier.pervertexEXT = true;
+ }
+#line 6663 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 144: /* interpolation_qualifier: PERPRIMITIVENV */
+#line 1301 "MachineIndependent/glslang.y"
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV");
- parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveNV");
// Fragment shader stage doesn't check for extension. So we explicitly add below extension check.
if (parseContext.language == EShLangFragment)
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perPrimitiveNV = true;
}
-#line 6647 "MachineIndependent/glslang_tab.cpp"
+#line 6678 "MachineIndependent/glslang_tab.cpp"
break;
- case 144: /* interpolation_qualifier: PERVIEWNV */
-#line 1303 "MachineIndependent/glslang.y"
+ case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */
+#line 1311 "MachineIndependent/glslang.y"
+ {
+ // No need for profile version or extension check. Shader stage already checks both.
+ parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveEXT");
+ // Fragment shader stage doesn't check for extension. So we explicitly add below extension check.
+ if (parseContext.language == EShLangFragment)
+ parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_mesh_shader, "perprimitiveEXT");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
+ (yyval.interm.type).qualifier.perPrimitiveNV = true;
+ }
+#line 6693 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 146: /* interpolation_qualifier: PERVIEWNV */
+#line 1321 "MachineIndependent/glslang.y"
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV");
- parseContext.requireStage((yyvsp[0].lex).loc, EShLangMeshNV, "perviewNV");
+ parseContext.requireStage((yyvsp[0].lex).loc, EShLangMesh, "perviewNV");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perViewNV = true;
}
-#line 6659 "MachineIndependent/glslang_tab.cpp"
+#line 6705 "MachineIndependent/glslang_tab.cpp"
break;
- case 145: /* interpolation_qualifier: PERTASKNV */
-#line 1310 "MachineIndependent/glslang.y"
+ case 147: /* interpolation_qualifier: PERTASKNV */
+#line 1328 "MachineIndependent/glslang.y"
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV");
- parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskNV");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perTaskNV = true;
}
-#line 6671 "MachineIndependent/glslang_tab.cpp"
+#line 6717 "MachineIndependent/glslang_tab.cpp"
break;
- case 146: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */
-#line 1321 "MachineIndependent/glslang.y"
+ case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */
+#line 1339 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[-1].interm.type);
}
-#line 6679 "MachineIndependent/glslang_tab.cpp"
+#line 6725 "MachineIndependent/glslang_tab.cpp"
break;
- case 147: /* layout_qualifier_id_list: layout_qualifier_id */
-#line 1327 "MachineIndependent/glslang.y"
+ case 149: /* layout_qualifier_id_list: layout_qualifier_id */
+#line 1345 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6687 "MachineIndependent/glslang_tab.cpp"
+#line 6733 "MachineIndependent/glslang_tab.cpp"
break;
- case 148: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */
-#line 1330 "MachineIndependent/glslang.y"
+ case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */
+#line 1348 "MachineIndependent/glslang.y"
{
(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 6697 "MachineIndependent/glslang_tab.cpp"
+#line 6743 "MachineIndependent/glslang_tab.cpp"
break;
- case 149: /* layout_qualifier_id: IDENTIFIER */
-#line 1337 "MachineIndependent/glslang.y"
+ case 151: /* layout_qualifier_id: IDENTIFIER */
+#line 1355 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string);
}
-#line 6706 "MachineIndependent/glslang_tab.cpp"
+#line 6752 "MachineIndependent/glslang_tab.cpp"
break;
- case 150: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */
-#line 1341 "MachineIndependent/glslang.y"
+ case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */
+#line 1359 "MachineIndependent/glslang.y"
{
(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 6715 "MachineIndependent/glslang_tab.cpp"
+#line 6761 "MachineIndependent/glslang_tab.cpp"
break;
- case 151: /* layout_qualifier_id: SHARED */
-#line 1345 "MachineIndependent/glslang.y"
+ case 153: /* layout_qualifier_id: SHARED */
+#line 1363 "MachineIndependent/glslang.y"
{ // 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 6725 "MachineIndependent/glslang_tab.cpp"
+#line 6771 "MachineIndependent/glslang_tab.cpp"
break;
- case 152: /* precise_qualifier: PRECISE */
-#line 1354 "MachineIndependent/glslang.y"
+ case 154: /* precise_qualifier: PRECISE */
+#line 1372 "MachineIndependent/glslang.y"
{
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 6736 "MachineIndependent/glslang_tab.cpp"
+#line 6782 "MachineIndependent/glslang_tab.cpp"
break;
- case 153: /* type_qualifier: single_type_qualifier */
-#line 1364 "MachineIndependent/glslang.y"
+ case 155: /* type_qualifier: single_type_qualifier */
+#line 1382 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6744 "MachineIndependent/glslang_tab.cpp"
+#line 6790 "MachineIndependent/glslang_tab.cpp"
break;
- case 154: /* type_qualifier: type_qualifier single_type_qualifier */
-#line 1367 "MachineIndependent/glslang.y"
+ case 156: /* type_qualifier: type_qualifier single_type_qualifier */
+#line 1385 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[-1].interm.type);
if ((yyval.interm.type).basicType == EbtVoid)
@@ -6753,151 +6799,151 @@
(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 6757 "MachineIndependent/glslang_tab.cpp"
+#line 6803 "MachineIndependent/glslang_tab.cpp"
break;
- case 155: /* single_type_qualifier: storage_qualifier */
-#line 1378 "MachineIndependent/glslang.y"
+ case 157: /* single_type_qualifier: storage_qualifier */
+#line 1396 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6765 "MachineIndependent/glslang_tab.cpp"
+#line 6811 "MachineIndependent/glslang_tab.cpp"
break;
- case 156: /* single_type_qualifier: layout_qualifier */
-#line 1381 "MachineIndependent/glslang.y"
+ case 158: /* single_type_qualifier: layout_qualifier */
+#line 1399 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6773 "MachineIndependent/glslang_tab.cpp"
+#line 6819 "MachineIndependent/glslang_tab.cpp"
break;
- case 157: /* single_type_qualifier: precision_qualifier */
-#line 1384 "MachineIndependent/glslang.y"
+ case 159: /* single_type_qualifier: precision_qualifier */
+#line 1402 "MachineIndependent/glslang.y"
{
parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6782 "MachineIndependent/glslang_tab.cpp"
+#line 6828 "MachineIndependent/glslang_tab.cpp"
break;
- case 158: /* single_type_qualifier: interpolation_qualifier */
-#line 1388 "MachineIndependent/glslang.y"
+ case 160: /* single_type_qualifier: interpolation_qualifier */
+#line 1406 "MachineIndependent/glslang.y"
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6791 "MachineIndependent/glslang_tab.cpp"
+#line 6837 "MachineIndependent/glslang_tab.cpp"
break;
- case 159: /* single_type_qualifier: invariant_qualifier */
-#line 1392 "MachineIndependent/glslang.y"
+ case 161: /* single_type_qualifier: invariant_qualifier */
+#line 1410 "MachineIndependent/glslang.y"
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6800 "MachineIndependent/glslang_tab.cpp"
+#line 6846 "MachineIndependent/glslang_tab.cpp"
break;
- case 160: /* single_type_qualifier: precise_qualifier */
-#line 1397 "MachineIndependent/glslang.y"
+ case 162: /* single_type_qualifier: precise_qualifier */
+#line 1415 "MachineIndependent/glslang.y"
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6809 "MachineIndependent/glslang_tab.cpp"
+#line 6855 "MachineIndependent/glslang_tab.cpp"
break;
- case 161: /* single_type_qualifier: non_uniform_qualifier */
-#line 1401 "MachineIndependent/glslang.y"
+ case 163: /* single_type_qualifier: non_uniform_qualifier */
+#line 1419 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6817 "MachineIndependent/glslang_tab.cpp"
+#line 6863 "MachineIndependent/glslang_tab.cpp"
break;
- case 162: /* single_type_qualifier: spirv_storage_class_qualifier */
-#line 1404 "MachineIndependent/glslang.y"
+ case 164: /* single_type_qualifier: spirv_storage_class_qualifier */
+#line 1422 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class");
parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier");
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6827 "MachineIndependent/glslang_tab.cpp"
+#line 6873 "MachineIndependent/glslang_tab.cpp"
break;
- case 163: /* single_type_qualifier: spirv_decorate_qualifier */
-#line 1409 "MachineIndependent/glslang.y"
+ case 165: /* single_type_qualifier: spirv_decorate_qualifier */
+#line 1427 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier");
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6836 "MachineIndependent/glslang_tab.cpp"
+#line 6882 "MachineIndependent/glslang_tab.cpp"
break;
- case 164: /* single_type_qualifier: SPIRV_BY_REFERENCE */
-#line 1413 "MachineIndependent/glslang.y"
+ case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */
+#line 1431 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.setSpirvByReference();
}
-#line 6846 "MachineIndependent/glslang_tab.cpp"
+#line 6892 "MachineIndependent/glslang_tab.cpp"
break;
- case 165: /* single_type_qualifier: SPIRV_LITERAL */
-#line 1418 "MachineIndependent/glslang.y"
+ case 167: /* single_type_qualifier: SPIRV_LITERAL */
+#line 1436 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.setSpirvLiteral();
}
-#line 6856 "MachineIndependent/glslang_tab.cpp"
+#line 6902 "MachineIndependent/glslang_tab.cpp"
break;
- case 166: /* storage_qualifier: CONST */
-#line 1427 "MachineIndependent/glslang.y"
+ case 168: /* storage_qualifier: CONST */
+#line 1445 "MachineIndependent/glslang.y"
{
(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 6865 "MachineIndependent/glslang_tab.cpp"
+#line 6911 "MachineIndependent/glslang_tab.cpp"
break;
- case 167: /* storage_qualifier: INOUT */
-#line 1431 "MachineIndependent/glslang.y"
+ case 169: /* storage_qualifier: INOUT */
+#line 1449 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "inout");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqInOut;
}
-#line 6875 "MachineIndependent/glslang_tab.cpp"
+#line 6921 "MachineIndependent/glslang_tab.cpp"
break;
- case 168: /* storage_qualifier: IN */
-#line 1436 "MachineIndependent/glslang.y"
+ case 170: /* storage_qualifier: IN */
+#line 1454 "MachineIndependent/glslang.y"
{
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 6886 "MachineIndependent/glslang_tab.cpp"
+#line 6932 "MachineIndependent/glslang_tab.cpp"
break;
- case 169: /* storage_qualifier: OUT */
-#line 1442 "MachineIndependent/glslang.y"
+ case 171: /* storage_qualifier: OUT */
+#line 1460 "MachineIndependent/glslang.y"
{
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 6897 "MachineIndependent/glslang_tab.cpp"
+#line 6943 "MachineIndependent/glslang_tab.cpp"
break;
- case 170: /* storage_qualifier: CENTROID */
-#line 1448 "MachineIndependent/glslang.y"
+ case 172: /* storage_qualifier: CENTROID */
+#line 1466 "MachineIndependent/glslang.y"
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid");
@@ -6905,44 +6951,44 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.centroid = true;
}
-#line 6909 "MachineIndependent/glslang_tab.cpp"
+#line 6955 "MachineIndependent/glslang_tab.cpp"
break;
- case 171: /* storage_qualifier: UNIFORM */
-#line 1455 "MachineIndependent/glslang.y"
+ case 173: /* storage_qualifier: UNIFORM */
+#line 1473 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "uniform");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqUniform;
}
-#line 6919 "MachineIndependent/glslang_tab.cpp"
+#line 6965 "MachineIndependent/glslang_tab.cpp"
break;
- case 172: /* storage_qualifier: SHARED */
-#line 1460 "MachineIndependent/glslang.y"
+ case 174: /* storage_qualifier: SHARED */
+#line 1478 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "shared");
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared");
- parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshMask | EShLangTaskMask), "shared");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqShared;
}
-#line 6932 "MachineIndependent/glslang_tab.cpp"
+#line 6978 "MachineIndependent/glslang_tab.cpp"
break;
- case 173: /* storage_qualifier: BUFFER */
-#line 1468 "MachineIndependent/glslang.y"
+ case 175: /* storage_qualifier: BUFFER */
+#line 1486 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "buffer");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqBuffer;
}
-#line 6942 "MachineIndependent/glslang_tab.cpp"
+#line 6988 "MachineIndependent/glslang_tab.cpp"
break;
- case 174: /* storage_qualifier: ATTRIBUTE */
-#line 1474 "MachineIndependent/glslang.y"
+ case 176: /* storage_qualifier: ATTRIBUTE */
+#line 1492 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute");
@@ -6955,11 +7001,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 6959 "MachineIndependent/glslang_tab.cpp"
+#line 7005 "MachineIndependent/glslang_tab.cpp"
break;
- case 175: /* storage_qualifier: VARYING */
-#line 1486 "MachineIndependent/glslang.y"
+ case 177: /* storage_qualifier: VARYING */
+#line 1504 "MachineIndependent/glslang.y"
{
parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying");
@@ -6974,32 +7020,32 @@
else
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 6978 "MachineIndependent/glslang_tab.cpp"
+#line 7024 "MachineIndependent/glslang_tab.cpp"
break;
- case 176: /* storage_qualifier: PATCH */
-#line 1500 "MachineIndependent/glslang.y"
+ case 178: /* storage_qualifier: PATCH */
+#line 1518 "MachineIndependent/glslang.y"
{
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 6989 "MachineIndependent/glslang_tab.cpp"
+#line 7035 "MachineIndependent/glslang_tab.cpp"
break;
- case 177: /* storage_qualifier: SAMPLE */
-#line 1506 "MachineIndependent/glslang.y"
+ case 179: /* storage_qualifier: SAMPLE */
+#line 1524 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "sample");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.sample = true;
}
-#line 6999 "MachineIndependent/glslang_tab.cpp"
+#line 7045 "MachineIndependent/glslang_tab.cpp"
break;
- case 178: /* storage_qualifier: HITATTRNV */
-#line 1511 "MachineIndependent/glslang.y"
+ case 180: /* storage_qualifier: HITATTRNV */
+#line 1529 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
@@ -7008,11 +7054,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqHitAttr;
}
-#line 7012 "MachineIndependent/glslang_tab.cpp"
+#line 7058 "MachineIndependent/glslang_tab.cpp"
break;
- case 179: /* storage_qualifier: HITATTREXT */
-#line 1519 "MachineIndependent/glslang.y"
+ case 181: /* storage_qualifier: HITATTREXT */
+#line 1537 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
@@ -7021,11 +7067,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqHitAttr;
}
-#line 7025 "MachineIndependent/glslang_tab.cpp"
+#line 7071 "MachineIndependent/glslang_tab.cpp"
break;
- case 180: /* storage_qualifier: PAYLOADNV */
-#line 1527 "MachineIndependent/glslang.y"
+ case 182: /* storage_qualifier: PAYLOADNV */
+#line 1545 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
@@ -7034,11 +7080,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqPayload;
}
-#line 7038 "MachineIndependent/glslang_tab.cpp"
+#line 7084 "MachineIndependent/glslang_tab.cpp"
break;
- case 181: /* storage_qualifier: PAYLOADEXT */
-#line 1535 "MachineIndependent/glslang.y"
+ case 183: /* storage_qualifier: PAYLOADEXT */
+#line 1553 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
@@ -7047,11 +7093,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqPayload;
}
-#line 7051 "MachineIndependent/glslang_tab.cpp"
+#line 7097 "MachineIndependent/glslang_tab.cpp"
break;
- case 182: /* storage_qualifier: PAYLOADINNV */
-#line 1543 "MachineIndependent/glslang.y"
+ case 184: /* storage_qualifier: PAYLOADINNV */
+#line 1561 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask |
@@ -7060,11 +7106,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqPayloadIn;
}
-#line 7064 "MachineIndependent/glslang_tab.cpp"
+#line 7110 "MachineIndependent/glslang_tab.cpp"
break;
- case 183: /* storage_qualifier: PAYLOADINEXT */
-#line 1551 "MachineIndependent/glslang.y"
+ case 185: /* storage_qualifier: PAYLOADINEXT */
+#line 1569 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask |
@@ -7073,11 +7119,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqPayloadIn;
}
-#line 7077 "MachineIndependent/glslang_tab.cpp"
+#line 7123 "MachineIndependent/glslang_tab.cpp"
break;
- case 184: /* storage_qualifier: CALLDATANV */
-#line 1559 "MachineIndependent/glslang.y"
+ case 186: /* storage_qualifier: CALLDATANV */
+#line 1577 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask |
@@ -7086,11 +7132,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqCallableData;
}
-#line 7090 "MachineIndependent/glslang_tab.cpp"
+#line 7136 "MachineIndependent/glslang_tab.cpp"
break;
- case 185: /* storage_qualifier: CALLDATAEXT */
-#line 1567 "MachineIndependent/glslang.y"
+ case 187: /* storage_qualifier: CALLDATAEXT */
+#line 1585 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask |
@@ -7099,11 +7145,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqCallableData;
}
-#line 7103 "MachineIndependent/glslang_tab.cpp"
+#line 7149 "MachineIndependent/glslang_tab.cpp"
break;
- case 186: /* storage_qualifier: CALLDATAINNV */
-#line 1575 "MachineIndependent/glslang.y"
+ case 188: /* storage_qualifier: CALLDATAINNV */
+#line 1593 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV");
@@ -7111,11 +7157,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqCallableDataIn;
}
-#line 7115 "MachineIndependent/glslang_tab.cpp"
+#line 7161 "MachineIndependent/glslang_tab.cpp"
break;
- case 187: /* storage_qualifier: CALLDATAINEXT */
-#line 1582 "MachineIndependent/glslang.y"
+ case 189: /* storage_qualifier: CALLDATAINEXT */
+#line 1600 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT");
@@ -7123,175 +7169,187 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqCallableDataIn;
}
-#line 7127 "MachineIndependent/glslang_tab.cpp"
+#line 7173 "MachineIndependent/glslang_tab.cpp"
break;
- case 188: /* storage_qualifier: COHERENT */
-#line 1589 "MachineIndependent/glslang.y"
+ case 190: /* storage_qualifier: COHERENT */
+#line 1607 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.coherent = true;
}
-#line 7136 "MachineIndependent/glslang_tab.cpp"
+#line 7182 "MachineIndependent/glslang_tab.cpp"
break;
- case 189: /* storage_qualifier: DEVICECOHERENT */
-#line 1593 "MachineIndependent/glslang.y"
+ case 191: /* storage_qualifier: DEVICECOHERENT */
+#line 1611 "MachineIndependent/glslang.y"
{
(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 7146 "MachineIndependent/glslang_tab.cpp"
+#line 7192 "MachineIndependent/glslang_tab.cpp"
break;
- case 190: /* storage_qualifier: QUEUEFAMILYCOHERENT */
-#line 1598 "MachineIndependent/glslang.y"
+ case 192: /* storage_qualifier: QUEUEFAMILYCOHERENT */
+#line 1616 "MachineIndependent/glslang.y"
{
(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 7156 "MachineIndependent/glslang_tab.cpp"
+#line 7202 "MachineIndependent/glslang_tab.cpp"
break;
- case 191: /* storage_qualifier: WORKGROUPCOHERENT */
-#line 1603 "MachineIndependent/glslang.y"
+ case 193: /* storage_qualifier: WORKGROUPCOHERENT */
+#line 1621 "MachineIndependent/glslang.y"
{
(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 7166 "MachineIndependent/glslang_tab.cpp"
+#line 7212 "MachineIndependent/glslang_tab.cpp"
break;
- case 192: /* storage_qualifier: SUBGROUPCOHERENT */
-#line 1608 "MachineIndependent/glslang.y"
+ case 194: /* storage_qualifier: SUBGROUPCOHERENT */
+#line 1626 "MachineIndependent/glslang.y"
{
(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 7176 "MachineIndependent/glslang_tab.cpp"
+#line 7222 "MachineIndependent/glslang_tab.cpp"
break;
- case 193: /* storage_qualifier: NONPRIVATE */
-#line 1613 "MachineIndependent/glslang.y"
+ case 195: /* storage_qualifier: NONPRIVATE */
+#line 1631 "MachineIndependent/glslang.y"
{
(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 7186 "MachineIndependent/glslang_tab.cpp"
+#line 7232 "MachineIndependent/glslang_tab.cpp"
break;
- case 194: /* storage_qualifier: SHADERCALLCOHERENT */
-#line 1618 "MachineIndependent/glslang.y"
+ case 196: /* storage_qualifier: SHADERCALLCOHERENT */
+#line 1636 "MachineIndependent/glslang.y"
{
(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 7196 "MachineIndependent/glslang_tab.cpp"
+#line 7242 "MachineIndependent/glslang_tab.cpp"
break;
- case 195: /* storage_qualifier: VOLATILE */
-#line 1623 "MachineIndependent/glslang.y"
+ case 197: /* storage_qualifier: VOLATILE */
+#line 1641 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.volatil = true;
}
-#line 7205 "MachineIndependent/glslang_tab.cpp"
+#line 7251 "MachineIndependent/glslang_tab.cpp"
break;
- case 196: /* storage_qualifier: RESTRICT */
-#line 1627 "MachineIndependent/glslang.y"
+ case 198: /* storage_qualifier: RESTRICT */
+#line 1645 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.restrict = true;
}
-#line 7214 "MachineIndependent/glslang_tab.cpp"
+#line 7260 "MachineIndependent/glslang_tab.cpp"
break;
- case 197: /* storage_qualifier: READONLY */
-#line 1631 "MachineIndependent/glslang.y"
+ case 199: /* storage_qualifier: READONLY */
+#line 1649 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.readonly = true;
}
-#line 7223 "MachineIndependent/glslang_tab.cpp"
+#line 7269 "MachineIndependent/glslang_tab.cpp"
break;
- case 198: /* storage_qualifier: WRITEONLY */
-#line 1635 "MachineIndependent/glslang.y"
+ case 200: /* storage_qualifier: WRITEONLY */
+#line 1653 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.writeonly = true;
}
-#line 7232 "MachineIndependent/glslang_tab.cpp"
+#line 7278 "MachineIndependent/glslang_tab.cpp"
break;
- case 199: /* storage_qualifier: SUBROUTINE */
-#line 1639 "MachineIndependent/glslang.y"
+ case 201: /* storage_qualifier: SUBROUTINE */
+#line 1657 "MachineIndependent/glslang.y"
{
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 7243 "MachineIndependent/glslang_tab.cpp"
+#line 7289 "MachineIndependent/glslang_tab.cpp"
break;
- case 200: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */
-#line 1645 "MachineIndependent/glslang.y"
+ case 202: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */
+#line 1663 "MachineIndependent/glslang.y"
{
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 7254 "MachineIndependent/glslang_tab.cpp"
+#line 7300 "MachineIndependent/glslang_tab.cpp"
break;
- case 201: /* non_uniform_qualifier: NONUNIFORM */
-#line 1656 "MachineIndependent/glslang.y"
+ case 203: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */
+#line 1669 "MachineIndependent/glslang.y"
+ {
+ // No need for profile version or extension check. Shader stage already checks both.
+ parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT");
+ parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskPayloadSharedEXT ");
+ (yyval.interm.type).init((yyvsp[0].lex).loc);
+ (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT;
+ }
+#line 7312 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 204: /* non_uniform_qualifier: NONUNIFORM */
+#line 1681 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.nonUniform = true;
}
-#line 7263 "MachineIndependent/glslang_tab.cpp"
+#line 7321 "MachineIndependent/glslang_tab.cpp"
break;
- case 202: /* type_name_list: IDENTIFIER */
-#line 1663 "MachineIndependent/glslang.y"
+ case 205: /* type_name_list: IDENTIFIER */
+#line 1688 "MachineIndependent/glslang.y"
{
// TODO
}
-#line 7271 "MachineIndependent/glslang_tab.cpp"
+#line 7329 "MachineIndependent/glslang_tab.cpp"
break;
- case 203: /* type_name_list: type_name_list COMMA IDENTIFIER */
-#line 1666 "MachineIndependent/glslang.y"
+ case 206: /* type_name_list: type_name_list COMMA IDENTIFIER */
+#line 1691 "MachineIndependent/glslang.y"
{
// 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 7281 "MachineIndependent/glslang_tab.cpp"
+#line 7339 "MachineIndependent/glslang_tab.cpp"
break;
- case 204: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */
-#line 1675 "MachineIndependent/glslang.y"
+ case 207: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */
+#line 1700 "MachineIndependent/glslang.y"
{
(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 7291 "MachineIndependent/glslang_tab.cpp"
+#line 7349 "MachineIndependent/glslang_tab.cpp"
break;
- case 205: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */
-#line 1680 "MachineIndependent/glslang.y"
+ case 208: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */
+#line 1705 "MachineIndependent/glslang.y"
{
parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes);
(yyval.interm.type) = (yyvsp[-2].interm.type);
@@ -7299,21 +7357,21 @@
(yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters);
(yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
}
-#line 7303 "MachineIndependent/glslang_tab.cpp"
+#line 7361 "MachineIndependent/glslang_tab.cpp"
break;
- case 206: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */
-#line 1690 "MachineIndependent/glslang.y"
+ case 209: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */
+#line 1715 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
(yyval.interm).arraySizes->addInnerSize();
}
-#line 7313 "MachineIndependent/glslang_tab.cpp"
+#line 7371 "MachineIndependent/glslang_tab.cpp"
break;
- case 207: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */
-#line 1695 "MachineIndependent/glslang.y"
+ case 210: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */
+#line 1720 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[-2].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
@@ -7322,20 +7380,20 @@
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 7326 "MachineIndependent/glslang_tab.cpp"
+#line 7384 "MachineIndependent/glslang_tab.cpp"
break;
- case 208: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */
-#line 1703 "MachineIndependent/glslang.y"
+ case 211: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */
+#line 1728 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-2].interm);
(yyval.interm).arraySizes->addInnerSize();
}
-#line 7335 "MachineIndependent/glslang_tab.cpp"
+#line 7393 "MachineIndependent/glslang_tab.cpp"
break;
- case 209: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */
-#line 1707 "MachineIndependent/glslang.y"
+ case 212: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */
+#line 1732 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-3].interm);
@@ -7343,35 +7401,35 @@
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 7347 "MachineIndependent/glslang_tab.cpp"
+#line 7405 "MachineIndependent/glslang_tab.cpp"
break;
- case 210: /* type_parameter_specifier_opt: type_parameter_specifier */
-#line 1717 "MachineIndependent/glslang.y"
+ case 213: /* type_parameter_specifier_opt: type_parameter_specifier */
+#line 1742 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters);
}
-#line 7355 "MachineIndependent/glslang_tab.cpp"
+#line 7413 "MachineIndependent/glslang_tab.cpp"
break;
- case 211: /* type_parameter_specifier_opt: %empty */
-#line 1720 "MachineIndependent/glslang.y"
+ case 214: /* type_parameter_specifier_opt: %empty */
+#line 1745 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = 0;
}
-#line 7363 "MachineIndependent/glslang_tab.cpp"
+#line 7421 "MachineIndependent/glslang_tab.cpp"
break;
- case 212: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */
-#line 1726 "MachineIndependent/glslang.y"
+ case 215: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */
+#line 1751 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters);
}
-#line 7371 "MachineIndependent/glslang_tab.cpp"
+#line 7429 "MachineIndependent/glslang_tab.cpp"
break;
- case 213: /* type_parameter_specifier_list: unary_expression */
-#line 1732 "MachineIndependent/glslang.y"
+ case 216: /* type_parameter_specifier_list: unary_expression */
+#line 1757 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = new TArraySizes;
@@ -7379,11 +7437,11 @@
parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
(yyval.interm.typeParameters)->addInnerSize(size);
}
-#line 7383 "MachineIndependent/glslang_tab.cpp"
+#line 7441 "MachineIndependent/glslang_tab.cpp"
break;
- case 214: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */
-#line 1739 "MachineIndependent/glslang.y"
+ case 217: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */
+#line 1764 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters);
@@ -7391,300 +7449,300 @@
parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
(yyval.interm.typeParameters)->addInnerSize(size);
}
-#line 7395 "MachineIndependent/glslang_tab.cpp"
+#line 7453 "MachineIndependent/glslang_tab.cpp"
break;
- case 215: /* type_specifier_nonarray: VOID */
-#line 1749 "MachineIndependent/glslang.y"
+ case 218: /* type_specifier_nonarray: VOID */
+#line 1774 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtVoid;
}
-#line 7404 "MachineIndependent/glslang_tab.cpp"
+#line 7462 "MachineIndependent/glslang_tab.cpp"
break;
- case 216: /* type_specifier_nonarray: FLOAT */
-#line 1753 "MachineIndependent/glslang.y"
+ case 219: /* type_specifier_nonarray: FLOAT */
+#line 1778 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
}
-#line 7413 "MachineIndependent/glslang_tab.cpp"
+#line 7471 "MachineIndependent/glslang_tab.cpp"
break;
- case 217: /* type_specifier_nonarray: INT */
-#line 1757 "MachineIndependent/glslang.y"
+ case 220: /* type_specifier_nonarray: INT */
+#line 1782 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
}
-#line 7422 "MachineIndependent/glslang_tab.cpp"
+#line 7480 "MachineIndependent/glslang_tab.cpp"
break;
- case 218: /* type_specifier_nonarray: UINT */
-#line 1761 "MachineIndependent/glslang.y"
+ case 221: /* type_specifier_nonarray: UINT */
+#line 1786 "MachineIndependent/glslang.y"
{
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 7432 "MachineIndependent/glslang_tab.cpp"
+#line 7490 "MachineIndependent/glslang_tab.cpp"
break;
- case 219: /* type_specifier_nonarray: BOOL */
-#line 1766 "MachineIndependent/glslang.y"
+ case 222: /* type_specifier_nonarray: BOOL */
+#line 1791 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
}
-#line 7441 "MachineIndependent/glslang_tab.cpp"
+#line 7499 "MachineIndependent/glslang_tab.cpp"
break;
- case 220: /* type_specifier_nonarray: VEC2 */
-#line 1770 "MachineIndependent/glslang.y"
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setVector(2);
- }
-#line 7451 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 221: /* type_specifier_nonarray: VEC3 */
-#line 1775 "MachineIndependent/glslang.y"
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setVector(3);
- }
-#line 7461 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 222: /* type_specifier_nonarray: VEC4 */
-#line 1780 "MachineIndependent/glslang.y"
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setVector(4);
- }
-#line 7471 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 223: /* type_specifier_nonarray: BVEC2 */
-#line 1785 "MachineIndependent/glslang.y"
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtBool;
- (yyval.interm.type).setVector(2);
- }
-#line 7481 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 224: /* type_specifier_nonarray: BVEC3 */
-#line 1790 "MachineIndependent/glslang.y"
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtBool;
- (yyval.interm.type).setVector(3);
- }
-#line 7491 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 225: /* type_specifier_nonarray: BVEC4 */
+ case 223: /* type_specifier_nonarray: VEC2 */
#line 1795 "MachineIndependent/glslang.y"
- {
+ {
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtBool;
- (yyval.interm.type).setVector(4);
- }
-#line 7501 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 226: /* type_specifier_nonarray: IVEC2 */
-#line 1800 "MachineIndependent/glslang.y"
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(2);
}
-#line 7511 "MachineIndependent/glslang_tab.cpp"
+#line 7509 "MachineIndependent/glslang_tab.cpp"
break;
- case 227: /* type_specifier_nonarray: IVEC3 */
-#line 1805 "MachineIndependent/glslang.y"
- {
+ case 224: /* type_specifier_nonarray: VEC3 */
+#line 1800 "MachineIndependent/glslang.y"
+ {
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(3);
}
-#line 7521 "MachineIndependent/glslang_tab.cpp"
+#line 7519 "MachineIndependent/glslang_tab.cpp"
break;
- case 228: /* type_specifier_nonarray: IVEC4 */
+ case 225: /* type_specifier_nonarray: VEC4 */
+#line 1805 "MachineIndependent/glslang.y"
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(4);
+ }
+#line 7529 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 226: /* type_specifier_nonarray: BVEC2 */
#line 1810 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtBool;
+ (yyval.interm.type).setVector(2);
+ }
+#line 7539 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 227: /* type_specifier_nonarray: BVEC3 */
+#line 1815 "MachineIndependent/glslang.y"
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtBool;
+ (yyval.interm.type).setVector(3);
+ }
+#line 7549 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 228: /* type_specifier_nonarray: BVEC4 */
+#line 1820 "MachineIndependent/glslang.y"
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtBool;
+ (yyval.interm.type).setVector(4);
+ }
+#line 7559 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 229: /* type_specifier_nonarray: IVEC2 */
+#line 1825 "MachineIndependent/glslang.y"
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(2);
+ }
+#line 7569 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 230: /* type_specifier_nonarray: IVEC3 */
+#line 1830 "MachineIndependent/glslang.y"
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(3);
+ }
+#line 7579 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 231: /* type_specifier_nonarray: IVEC4 */
+#line 1835 "MachineIndependent/glslang.y"
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(4);
}
-#line 7531 "MachineIndependent/glslang_tab.cpp"
+#line 7589 "MachineIndependent/glslang_tab.cpp"
break;
- case 229: /* type_specifier_nonarray: UVEC2 */
-#line 1815 "MachineIndependent/glslang.y"
+ case 232: /* type_specifier_nonarray: UVEC2 */
+#line 1840 "MachineIndependent/glslang.y"
{
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 7542 "MachineIndependent/glslang_tab.cpp"
+#line 7600 "MachineIndependent/glslang_tab.cpp"
break;
- case 230: /* type_specifier_nonarray: UVEC3 */
-#line 1821 "MachineIndependent/glslang.y"
+ case 233: /* type_specifier_nonarray: UVEC3 */
+#line 1846 "MachineIndependent/glslang.y"
{
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 7553 "MachineIndependent/glslang_tab.cpp"
+#line 7611 "MachineIndependent/glslang_tab.cpp"
break;
- case 231: /* type_specifier_nonarray: UVEC4 */
-#line 1827 "MachineIndependent/glslang.y"
+ case 234: /* type_specifier_nonarray: UVEC4 */
+#line 1852 "MachineIndependent/glslang.y"
{
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 7564 "MachineIndependent/glslang_tab.cpp"
+#line 7622 "MachineIndependent/glslang_tab.cpp"
break;
- case 232: /* type_specifier_nonarray: MAT2 */
-#line 1833 "MachineIndependent/glslang.y"
+ case 235: /* type_specifier_nonarray: MAT2 */
+#line 1858 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 7574 "MachineIndependent/glslang_tab.cpp"
+#line 7632 "MachineIndependent/glslang_tab.cpp"
break;
- case 233: /* type_specifier_nonarray: MAT3 */
-#line 1838 "MachineIndependent/glslang.y"
+ case 236: /* type_specifier_nonarray: MAT3 */
+#line 1863 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 7584 "MachineIndependent/glslang_tab.cpp"
+#line 7642 "MachineIndependent/glslang_tab.cpp"
break;
- case 234: /* type_specifier_nonarray: MAT4 */
-#line 1843 "MachineIndependent/glslang.y"
+ case 237: /* type_specifier_nonarray: MAT4 */
+#line 1868 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 7594 "MachineIndependent/glslang_tab.cpp"
+#line 7652 "MachineIndependent/glslang_tab.cpp"
break;
- case 235: /* type_specifier_nonarray: MAT2X2 */
-#line 1848 "MachineIndependent/glslang.y"
+ case 238: /* type_specifier_nonarray: MAT2X2 */
+#line 1873 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 7604 "MachineIndependent/glslang_tab.cpp"
+#line 7662 "MachineIndependent/glslang_tab.cpp"
break;
- case 236: /* type_specifier_nonarray: MAT2X3 */
-#line 1853 "MachineIndependent/glslang.y"
+ case 239: /* type_specifier_nonarray: MAT2X3 */
+#line 1878 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 7614 "MachineIndependent/glslang_tab.cpp"
+#line 7672 "MachineIndependent/glslang_tab.cpp"
break;
- case 237: /* type_specifier_nonarray: MAT2X4 */
-#line 1858 "MachineIndependent/glslang.y"
+ case 240: /* type_specifier_nonarray: MAT2X4 */
+#line 1883 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 7624 "MachineIndependent/glslang_tab.cpp"
+#line 7682 "MachineIndependent/glslang_tab.cpp"
break;
- case 238: /* type_specifier_nonarray: MAT3X2 */
-#line 1863 "MachineIndependent/glslang.y"
+ case 241: /* type_specifier_nonarray: MAT3X2 */
+#line 1888 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 7634 "MachineIndependent/glslang_tab.cpp"
+#line 7692 "MachineIndependent/glslang_tab.cpp"
break;
- case 239: /* type_specifier_nonarray: MAT3X3 */
-#line 1868 "MachineIndependent/glslang.y"
+ case 242: /* type_specifier_nonarray: MAT3X3 */
+#line 1893 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 7644 "MachineIndependent/glslang_tab.cpp"
+#line 7702 "MachineIndependent/glslang_tab.cpp"
break;
- case 240: /* type_specifier_nonarray: MAT3X4 */
-#line 1873 "MachineIndependent/glslang.y"
+ case 243: /* type_specifier_nonarray: MAT3X4 */
+#line 1898 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 7654 "MachineIndependent/glslang_tab.cpp"
+#line 7712 "MachineIndependent/glslang_tab.cpp"
break;
- case 241: /* type_specifier_nonarray: MAT4X2 */
-#line 1878 "MachineIndependent/glslang.y"
+ case 244: /* type_specifier_nonarray: MAT4X2 */
+#line 1903 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 7664 "MachineIndependent/glslang_tab.cpp"
+#line 7722 "MachineIndependent/glslang_tab.cpp"
break;
- case 242: /* type_specifier_nonarray: MAT4X3 */
-#line 1883 "MachineIndependent/glslang.y"
+ case 245: /* type_specifier_nonarray: MAT4X3 */
+#line 1908 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 7674 "MachineIndependent/glslang_tab.cpp"
+#line 7732 "MachineIndependent/glslang_tab.cpp"
break;
- case 243: /* type_specifier_nonarray: MAT4X4 */
-#line 1888 "MachineIndependent/glslang.y"
+ case 246: /* type_specifier_nonarray: MAT4X4 */
+#line 1913 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 7684 "MachineIndependent/glslang_tab.cpp"
+#line 7742 "MachineIndependent/glslang_tab.cpp"
break;
- case 244: /* type_specifier_nonarray: DOUBLE */
-#line 1894 "MachineIndependent/glslang.y"
+ case 247: /* type_specifier_nonarray: DOUBLE */
+#line 1919 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7692,121 +7750,121 @@
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
}
-#line 7696 "MachineIndependent/glslang_tab.cpp"
+#line 7754 "MachineIndependent/glslang_tab.cpp"
break;
- case 245: /* type_specifier_nonarray: FLOAT16_T */
-#line 1901 "MachineIndependent/glslang.y"
+ case 248: /* type_specifier_nonarray: FLOAT16_T */
+#line 1926 "MachineIndependent/glslang.y"
{
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 7706 "MachineIndependent/glslang_tab.cpp"
+#line 7764 "MachineIndependent/glslang_tab.cpp"
break;
- case 246: /* type_specifier_nonarray: FLOAT32_T */
-#line 1906 "MachineIndependent/glslang.y"
+ case 249: /* type_specifier_nonarray: FLOAT32_T */
+#line 1931 "MachineIndependent/glslang.y"
{
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 7716 "MachineIndependent/glslang_tab.cpp"
+#line 7774 "MachineIndependent/glslang_tab.cpp"
break;
- case 247: /* type_specifier_nonarray: FLOAT64_T */
-#line 1911 "MachineIndependent/glslang.y"
+ case 250: /* type_specifier_nonarray: FLOAT64_T */
+#line 1936 "MachineIndependent/glslang.y"
{
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 7726 "MachineIndependent/glslang_tab.cpp"
+#line 7784 "MachineIndependent/glslang_tab.cpp"
break;
- case 248: /* type_specifier_nonarray: INT8_T */
-#line 1916 "MachineIndependent/glslang.y"
+ case 251: /* type_specifier_nonarray: INT8_T */
+#line 1941 "MachineIndependent/glslang.y"
{
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 7736 "MachineIndependent/glslang_tab.cpp"
+#line 7794 "MachineIndependent/glslang_tab.cpp"
break;
- case 249: /* type_specifier_nonarray: UINT8_T */
-#line 1921 "MachineIndependent/glslang.y"
+ case 252: /* type_specifier_nonarray: UINT8_T */
+#line 1946 "MachineIndependent/glslang.y"
{
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 7746 "MachineIndependent/glslang_tab.cpp"
+#line 7804 "MachineIndependent/glslang_tab.cpp"
break;
- case 250: /* type_specifier_nonarray: INT16_T */
-#line 1926 "MachineIndependent/glslang.y"
+ case 253: /* type_specifier_nonarray: INT16_T */
+#line 1951 "MachineIndependent/glslang.y"
{
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 7756 "MachineIndependent/glslang_tab.cpp"
+#line 7814 "MachineIndependent/glslang_tab.cpp"
break;
- case 251: /* type_specifier_nonarray: UINT16_T */
-#line 1931 "MachineIndependent/glslang.y"
+ case 254: /* type_specifier_nonarray: UINT16_T */
+#line 1956 "MachineIndependent/glslang.y"
{
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 7766 "MachineIndependent/glslang_tab.cpp"
+#line 7824 "MachineIndependent/glslang_tab.cpp"
break;
- case 252: /* type_specifier_nonarray: INT32_T */
-#line 1936 "MachineIndependent/glslang.y"
+ case 255: /* type_specifier_nonarray: INT32_T */
+#line 1961 "MachineIndependent/glslang.y"
{
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 7776 "MachineIndependent/glslang_tab.cpp"
+#line 7834 "MachineIndependent/glslang_tab.cpp"
break;
- case 253: /* type_specifier_nonarray: UINT32_T */
-#line 1941 "MachineIndependent/glslang.y"
+ case 256: /* type_specifier_nonarray: UINT32_T */
+#line 1966 "MachineIndependent/glslang.y"
{
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 7786 "MachineIndependent/glslang_tab.cpp"
+#line 7844 "MachineIndependent/glslang_tab.cpp"
break;
- case 254: /* type_specifier_nonarray: INT64_T */
-#line 1946 "MachineIndependent/glslang.y"
+ case 257: /* type_specifier_nonarray: INT64_T */
+#line 1971 "MachineIndependent/glslang.y"
{
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 7796 "MachineIndependent/glslang_tab.cpp"
+#line 7854 "MachineIndependent/glslang_tab.cpp"
break;
- case 255: /* type_specifier_nonarray: UINT64_T */
-#line 1951 "MachineIndependent/glslang.y"
+ case 258: /* type_specifier_nonarray: UINT64_T */
+#line 1976 "MachineIndependent/glslang.y"
{
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 7806 "MachineIndependent/glslang_tab.cpp"
+#line 7864 "MachineIndependent/glslang_tab.cpp"
break;
- case 256: /* type_specifier_nonarray: DVEC2 */
-#line 1956 "MachineIndependent/glslang.y"
+ case 259: /* type_specifier_nonarray: DVEC2 */
+#line 1981 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7815,11 +7873,11 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(2);
}
-#line 7819 "MachineIndependent/glslang_tab.cpp"
+#line 7877 "MachineIndependent/glslang_tab.cpp"
break;
- case 257: /* type_specifier_nonarray: DVEC3 */
-#line 1964 "MachineIndependent/glslang.y"
+ case 260: /* type_specifier_nonarray: DVEC3 */
+#line 1989 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7828,11 +7886,11 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(3);
}
-#line 7832 "MachineIndependent/glslang_tab.cpp"
+#line 7890 "MachineIndependent/glslang_tab.cpp"
break;
- case 258: /* type_specifier_nonarray: DVEC4 */
-#line 1972 "MachineIndependent/glslang.y"
+ case 261: /* type_specifier_nonarray: DVEC4 */
+#line 1997 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7841,374 +7899,374 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(4);
}
-#line 7845 "MachineIndependent/glslang_tab.cpp"
+#line 7903 "MachineIndependent/glslang_tab.cpp"
break;
- case 259: /* type_specifier_nonarray: F16VEC2 */
-#line 1980 "MachineIndependent/glslang.y"
+ case 262: /* type_specifier_nonarray: F16VEC2 */
+#line 2005 "MachineIndependent/glslang.y"
{
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 7856 "MachineIndependent/glslang_tab.cpp"
+#line 7914 "MachineIndependent/glslang_tab.cpp"
break;
- case 260: /* type_specifier_nonarray: F16VEC3 */
-#line 1986 "MachineIndependent/glslang.y"
+ case 263: /* type_specifier_nonarray: F16VEC3 */
+#line 2011 "MachineIndependent/glslang.y"
{
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 7867 "MachineIndependent/glslang_tab.cpp"
+#line 7925 "MachineIndependent/glslang_tab.cpp"
break;
- case 261: /* type_specifier_nonarray: F16VEC4 */
-#line 1992 "MachineIndependent/glslang.y"
+ case 264: /* type_specifier_nonarray: F16VEC4 */
+#line 2017 "MachineIndependent/glslang.y"
{
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 7878 "MachineIndependent/glslang_tab.cpp"
+#line 7936 "MachineIndependent/glslang_tab.cpp"
break;
- case 262: /* type_specifier_nonarray: F32VEC2 */
-#line 1998 "MachineIndependent/glslang.y"
+ case 265: /* type_specifier_nonarray: F32VEC2 */
+#line 2023 "MachineIndependent/glslang.y"
{
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 7889 "MachineIndependent/glslang_tab.cpp"
+#line 7947 "MachineIndependent/glslang_tab.cpp"
break;
- case 263: /* type_specifier_nonarray: F32VEC3 */
-#line 2004 "MachineIndependent/glslang.y"
+ case 266: /* type_specifier_nonarray: F32VEC3 */
+#line 2029 "MachineIndependent/glslang.y"
{
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 7900 "MachineIndependent/glslang_tab.cpp"
+#line 7958 "MachineIndependent/glslang_tab.cpp"
break;
- case 264: /* type_specifier_nonarray: F32VEC4 */
-#line 2010 "MachineIndependent/glslang.y"
+ case 267: /* type_specifier_nonarray: F32VEC4 */
+#line 2035 "MachineIndependent/glslang.y"
{
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 7911 "MachineIndependent/glslang_tab.cpp"
+#line 7969 "MachineIndependent/glslang_tab.cpp"
break;
- case 265: /* type_specifier_nonarray: F64VEC2 */
-#line 2016 "MachineIndependent/glslang.y"
+ case 268: /* type_specifier_nonarray: F64VEC2 */
+#line 2041 "MachineIndependent/glslang.y"
{
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 7922 "MachineIndependent/glslang_tab.cpp"
+#line 7980 "MachineIndependent/glslang_tab.cpp"
break;
- case 266: /* type_specifier_nonarray: F64VEC3 */
-#line 2022 "MachineIndependent/glslang.y"
+ case 269: /* type_specifier_nonarray: F64VEC3 */
+#line 2047 "MachineIndependent/glslang.y"
{
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 7933 "MachineIndependent/glslang_tab.cpp"
+#line 7991 "MachineIndependent/glslang_tab.cpp"
break;
- case 267: /* type_specifier_nonarray: F64VEC4 */
-#line 2028 "MachineIndependent/glslang.y"
+ case 270: /* type_specifier_nonarray: F64VEC4 */
+#line 2053 "MachineIndependent/glslang.y"
{
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 7944 "MachineIndependent/glslang_tab.cpp"
+#line 8002 "MachineIndependent/glslang_tab.cpp"
break;
- case 268: /* type_specifier_nonarray: I8VEC2 */
-#line 2034 "MachineIndependent/glslang.y"
+ case 271: /* type_specifier_nonarray: I8VEC2 */
+#line 2059 "MachineIndependent/glslang.y"
{
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 7955 "MachineIndependent/glslang_tab.cpp"
+#line 8013 "MachineIndependent/glslang_tab.cpp"
break;
- case 269: /* type_specifier_nonarray: I8VEC3 */
-#line 2040 "MachineIndependent/glslang.y"
+ case 272: /* type_specifier_nonarray: I8VEC3 */
+#line 2065 "MachineIndependent/glslang.y"
{
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 7966 "MachineIndependent/glslang_tab.cpp"
+#line 8024 "MachineIndependent/glslang_tab.cpp"
break;
- case 270: /* type_specifier_nonarray: I8VEC4 */
-#line 2046 "MachineIndependent/glslang.y"
+ case 273: /* type_specifier_nonarray: I8VEC4 */
+#line 2071 "MachineIndependent/glslang.y"
{
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 7977 "MachineIndependent/glslang_tab.cpp"
+#line 8035 "MachineIndependent/glslang_tab.cpp"
break;
- case 271: /* type_specifier_nonarray: I16VEC2 */
-#line 2052 "MachineIndependent/glslang.y"
+ case 274: /* type_specifier_nonarray: I16VEC2 */
+#line 2077 "MachineIndependent/glslang.y"
{
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 7988 "MachineIndependent/glslang_tab.cpp"
+#line 8046 "MachineIndependent/glslang_tab.cpp"
break;
- case 272: /* type_specifier_nonarray: I16VEC3 */
-#line 2058 "MachineIndependent/glslang.y"
+ case 275: /* type_specifier_nonarray: I16VEC3 */
+#line 2083 "MachineIndependent/glslang.y"
{
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 7999 "MachineIndependent/glslang_tab.cpp"
+#line 8057 "MachineIndependent/glslang_tab.cpp"
break;
- case 273: /* type_specifier_nonarray: I16VEC4 */
-#line 2064 "MachineIndependent/glslang.y"
+ case 276: /* type_specifier_nonarray: I16VEC4 */
+#line 2089 "MachineIndependent/glslang.y"
{
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 8010 "MachineIndependent/glslang_tab.cpp"
+#line 8068 "MachineIndependent/glslang_tab.cpp"
break;
- case 274: /* type_specifier_nonarray: I32VEC2 */
-#line 2070 "MachineIndependent/glslang.y"
+ case 277: /* type_specifier_nonarray: I32VEC2 */
+#line 2095 "MachineIndependent/glslang.y"
{
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 8021 "MachineIndependent/glslang_tab.cpp"
+#line 8079 "MachineIndependent/glslang_tab.cpp"
break;
- case 275: /* type_specifier_nonarray: I32VEC3 */
-#line 2076 "MachineIndependent/glslang.y"
+ case 278: /* type_specifier_nonarray: I32VEC3 */
+#line 2101 "MachineIndependent/glslang.y"
{
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 8032 "MachineIndependent/glslang_tab.cpp"
+#line 8090 "MachineIndependent/glslang_tab.cpp"
break;
- case 276: /* type_specifier_nonarray: I32VEC4 */
-#line 2082 "MachineIndependent/glslang.y"
+ case 279: /* type_specifier_nonarray: I32VEC4 */
+#line 2107 "MachineIndependent/glslang.y"
{
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 8043 "MachineIndependent/glslang_tab.cpp"
+#line 8101 "MachineIndependent/glslang_tab.cpp"
break;
- case 277: /* type_specifier_nonarray: I64VEC2 */
-#line 2088 "MachineIndependent/glslang.y"
+ case 280: /* type_specifier_nonarray: I64VEC2 */
+#line 2113 "MachineIndependent/glslang.y"
{
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 8054 "MachineIndependent/glslang_tab.cpp"
+#line 8112 "MachineIndependent/glslang_tab.cpp"
break;
- case 278: /* type_specifier_nonarray: I64VEC3 */
-#line 2094 "MachineIndependent/glslang.y"
+ case 281: /* type_specifier_nonarray: I64VEC3 */
+#line 2119 "MachineIndependent/glslang.y"
{
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 8065 "MachineIndependent/glslang_tab.cpp"
+#line 8123 "MachineIndependent/glslang_tab.cpp"
break;
- case 279: /* type_specifier_nonarray: I64VEC4 */
-#line 2100 "MachineIndependent/glslang.y"
+ case 282: /* type_specifier_nonarray: I64VEC4 */
+#line 2125 "MachineIndependent/glslang.y"
{
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 8076 "MachineIndependent/glslang_tab.cpp"
+#line 8134 "MachineIndependent/glslang_tab.cpp"
break;
- case 280: /* type_specifier_nonarray: U8VEC2 */
-#line 2106 "MachineIndependent/glslang.y"
+ case 283: /* type_specifier_nonarray: U8VEC2 */
+#line 2131 "MachineIndependent/glslang.y"
{
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 8087 "MachineIndependent/glslang_tab.cpp"
+#line 8145 "MachineIndependent/glslang_tab.cpp"
break;
- case 281: /* type_specifier_nonarray: U8VEC3 */
-#line 2112 "MachineIndependent/glslang.y"
+ case 284: /* type_specifier_nonarray: U8VEC3 */
+#line 2137 "MachineIndependent/glslang.y"
{
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 8098 "MachineIndependent/glslang_tab.cpp"
+#line 8156 "MachineIndependent/glslang_tab.cpp"
break;
- case 282: /* type_specifier_nonarray: U8VEC4 */
-#line 2118 "MachineIndependent/glslang.y"
+ case 285: /* type_specifier_nonarray: U8VEC4 */
+#line 2143 "MachineIndependent/glslang.y"
{
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 8109 "MachineIndependent/glslang_tab.cpp"
+#line 8167 "MachineIndependent/glslang_tab.cpp"
break;
- case 283: /* type_specifier_nonarray: U16VEC2 */
-#line 2124 "MachineIndependent/glslang.y"
+ case 286: /* type_specifier_nonarray: U16VEC2 */
+#line 2149 "MachineIndependent/glslang.y"
{
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 8120 "MachineIndependent/glslang_tab.cpp"
+#line 8178 "MachineIndependent/glslang_tab.cpp"
break;
- case 284: /* type_specifier_nonarray: U16VEC3 */
-#line 2130 "MachineIndependent/glslang.y"
+ case 287: /* type_specifier_nonarray: U16VEC3 */
+#line 2155 "MachineIndependent/glslang.y"
{
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 8131 "MachineIndependent/glslang_tab.cpp"
+#line 8189 "MachineIndependent/glslang_tab.cpp"
break;
- case 285: /* type_specifier_nonarray: U16VEC4 */
-#line 2136 "MachineIndependent/glslang.y"
+ case 288: /* type_specifier_nonarray: U16VEC4 */
+#line 2161 "MachineIndependent/glslang.y"
{
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 8142 "MachineIndependent/glslang_tab.cpp"
+#line 8200 "MachineIndependent/glslang_tab.cpp"
break;
- case 286: /* type_specifier_nonarray: U32VEC2 */
-#line 2142 "MachineIndependent/glslang.y"
+ case 289: /* type_specifier_nonarray: U32VEC2 */
+#line 2167 "MachineIndependent/glslang.y"
{
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 8153 "MachineIndependent/glslang_tab.cpp"
+#line 8211 "MachineIndependent/glslang_tab.cpp"
break;
- case 287: /* type_specifier_nonarray: U32VEC3 */
-#line 2148 "MachineIndependent/glslang.y"
+ case 290: /* type_specifier_nonarray: U32VEC3 */
+#line 2173 "MachineIndependent/glslang.y"
{
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 8164 "MachineIndependent/glslang_tab.cpp"
+#line 8222 "MachineIndependent/glslang_tab.cpp"
break;
- case 288: /* type_specifier_nonarray: U32VEC4 */
-#line 2154 "MachineIndependent/glslang.y"
+ case 291: /* type_specifier_nonarray: U32VEC4 */
+#line 2179 "MachineIndependent/glslang.y"
{
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 8175 "MachineIndependent/glslang_tab.cpp"
+#line 8233 "MachineIndependent/glslang_tab.cpp"
break;
- case 289: /* type_specifier_nonarray: U64VEC2 */
-#line 2160 "MachineIndependent/glslang.y"
+ case 292: /* type_specifier_nonarray: U64VEC2 */
+#line 2185 "MachineIndependent/glslang.y"
{
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 8186 "MachineIndependent/glslang_tab.cpp"
+#line 8244 "MachineIndependent/glslang_tab.cpp"
break;
- case 290: /* type_specifier_nonarray: U64VEC3 */
-#line 2166 "MachineIndependent/glslang.y"
+ case 293: /* type_specifier_nonarray: U64VEC3 */
+#line 2191 "MachineIndependent/glslang.y"
{
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 8197 "MachineIndependent/glslang_tab.cpp"
+#line 8255 "MachineIndependent/glslang_tab.cpp"
break;
- case 291: /* type_specifier_nonarray: U64VEC4 */
-#line 2172 "MachineIndependent/glslang.y"
+ case 294: /* type_specifier_nonarray: U64VEC4 */
+#line 2197 "MachineIndependent/glslang.y"
{
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 8208 "MachineIndependent/glslang_tab.cpp"
+#line 8266 "MachineIndependent/glslang_tab.cpp"
break;
- case 292: /* type_specifier_nonarray: DMAT2 */
-#line 2178 "MachineIndependent/glslang.y"
+ case 295: /* type_specifier_nonarray: DMAT2 */
+#line 2203 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8217,11 +8275,11 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8221 "MachineIndependent/glslang_tab.cpp"
+#line 8279 "MachineIndependent/glslang_tab.cpp"
break;
- case 293: /* type_specifier_nonarray: DMAT3 */
-#line 2186 "MachineIndependent/glslang.y"
+ case 296: /* type_specifier_nonarray: DMAT3 */
+#line 2211 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8230,11 +8288,11 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8234 "MachineIndependent/glslang_tab.cpp"
+#line 8292 "MachineIndependent/glslang_tab.cpp"
break;
- case 294: /* type_specifier_nonarray: DMAT4 */
-#line 2194 "MachineIndependent/glslang.y"
+ case 297: /* type_specifier_nonarray: DMAT4 */
+#line 2219 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8243,11 +8301,11 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8247 "MachineIndependent/glslang_tab.cpp"
+#line 8305 "MachineIndependent/glslang_tab.cpp"
break;
- case 295: /* type_specifier_nonarray: DMAT2X2 */
-#line 2202 "MachineIndependent/glslang.y"
+ case 298: /* type_specifier_nonarray: DMAT2X2 */
+#line 2227 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8256,11 +8314,11 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8260 "MachineIndependent/glslang_tab.cpp"
+#line 8318 "MachineIndependent/glslang_tab.cpp"
break;
- case 296: /* type_specifier_nonarray: DMAT2X3 */
-#line 2210 "MachineIndependent/glslang.y"
+ case 299: /* type_specifier_nonarray: DMAT2X3 */
+#line 2235 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8269,11 +8327,11 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 8273 "MachineIndependent/glslang_tab.cpp"
+#line 8331 "MachineIndependent/glslang_tab.cpp"
break;
- case 297: /* type_specifier_nonarray: DMAT2X4 */
-#line 2218 "MachineIndependent/glslang.y"
+ case 300: /* type_specifier_nonarray: DMAT2X4 */
+#line 2243 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8282,11 +8340,11 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 8286 "MachineIndependent/glslang_tab.cpp"
+#line 8344 "MachineIndependent/glslang_tab.cpp"
break;
- case 298: /* type_specifier_nonarray: DMAT3X2 */
-#line 2226 "MachineIndependent/glslang.y"
+ case 301: /* type_specifier_nonarray: DMAT3X2 */
+#line 2251 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8295,11 +8353,11 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 8299 "MachineIndependent/glslang_tab.cpp"
+#line 8357 "MachineIndependent/glslang_tab.cpp"
break;
- case 299: /* type_specifier_nonarray: DMAT3X3 */
-#line 2234 "MachineIndependent/glslang.y"
+ case 302: /* type_specifier_nonarray: DMAT3X3 */
+#line 2259 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8308,11 +8366,11 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8312 "MachineIndependent/glslang_tab.cpp"
+#line 8370 "MachineIndependent/glslang_tab.cpp"
break;
- case 300: /* type_specifier_nonarray: DMAT3X4 */
-#line 2242 "MachineIndependent/glslang.y"
+ case 303: /* type_specifier_nonarray: DMAT3X4 */
+#line 2267 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8321,11 +8379,11 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 8325 "MachineIndependent/glslang_tab.cpp"
+#line 8383 "MachineIndependent/glslang_tab.cpp"
break;
- case 301: /* type_specifier_nonarray: DMAT4X2 */
-#line 2250 "MachineIndependent/glslang.y"
+ case 304: /* type_specifier_nonarray: DMAT4X2 */
+#line 2275 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8334,11 +8392,11 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 8338 "MachineIndependent/glslang_tab.cpp"
+#line 8396 "MachineIndependent/glslang_tab.cpp"
break;
- case 302: /* type_specifier_nonarray: DMAT4X3 */
-#line 2258 "MachineIndependent/glslang.y"
+ case 305: /* type_specifier_nonarray: DMAT4X3 */
+#line 2283 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8347,11 +8405,11 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 8351 "MachineIndependent/glslang_tab.cpp"
+#line 8409 "MachineIndependent/glslang_tab.cpp"
break;
- case 303: /* type_specifier_nonarray: DMAT4X4 */
-#line 2266 "MachineIndependent/glslang.y"
+ case 306: /* type_specifier_nonarray: DMAT4X4 */
+#line 2291 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8360,2228 +8418,2228 @@
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8364 "MachineIndependent/glslang_tab.cpp"
+#line 8422 "MachineIndependent/glslang_tab.cpp"
break;
- case 304: /* type_specifier_nonarray: F16MAT2 */
-#line 2274 "MachineIndependent/glslang.y"
+ case 307: /* type_specifier_nonarray: F16MAT2 */
+#line 2299 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8375 "MachineIndependent/glslang_tab.cpp"
+#line 8433 "MachineIndependent/glslang_tab.cpp"
break;
- case 305: /* type_specifier_nonarray: F16MAT3 */
-#line 2280 "MachineIndependent/glslang.y"
+ case 308: /* type_specifier_nonarray: F16MAT3 */
+#line 2305 "MachineIndependent/glslang.y"
{
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 8386 "MachineIndependent/glslang_tab.cpp"
+#line 8444 "MachineIndependent/glslang_tab.cpp"
break;
- case 306: /* type_specifier_nonarray: F16MAT4 */
-#line 2286 "MachineIndependent/glslang.y"
+ case 309: /* type_specifier_nonarray: F16MAT4 */
+#line 2311 "MachineIndependent/glslang.y"
{
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 8397 "MachineIndependent/glslang_tab.cpp"
+#line 8455 "MachineIndependent/glslang_tab.cpp"
break;
- case 307: /* type_specifier_nonarray: F16MAT2X2 */
-#line 2292 "MachineIndependent/glslang.y"
+ case 310: /* type_specifier_nonarray: F16MAT2X2 */
+#line 2317 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8408 "MachineIndependent/glslang_tab.cpp"
+#line 8466 "MachineIndependent/glslang_tab.cpp"
break;
- case 308: /* type_specifier_nonarray: F16MAT2X3 */
-#line 2298 "MachineIndependent/glslang.y"
+ case 311: /* type_specifier_nonarray: F16MAT2X3 */
+#line 2323 "MachineIndependent/glslang.y"
{
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 8419 "MachineIndependent/glslang_tab.cpp"
+#line 8477 "MachineIndependent/glslang_tab.cpp"
break;
- case 309: /* type_specifier_nonarray: F16MAT2X4 */
-#line 2304 "MachineIndependent/glslang.y"
+ case 312: /* type_specifier_nonarray: F16MAT2X4 */
+#line 2329 "MachineIndependent/glslang.y"
{
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 8430 "MachineIndependent/glslang_tab.cpp"
+#line 8488 "MachineIndependent/glslang_tab.cpp"
break;
- case 310: /* type_specifier_nonarray: F16MAT3X2 */
-#line 2310 "MachineIndependent/glslang.y"
+ case 313: /* type_specifier_nonarray: F16MAT3X2 */
+#line 2335 "MachineIndependent/glslang.y"
{
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 8441 "MachineIndependent/glslang_tab.cpp"
+#line 8499 "MachineIndependent/glslang_tab.cpp"
break;
- case 311: /* type_specifier_nonarray: F16MAT3X3 */
-#line 2316 "MachineIndependent/glslang.y"
+ case 314: /* type_specifier_nonarray: F16MAT3X3 */
+#line 2341 "MachineIndependent/glslang.y"
{
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 8452 "MachineIndependent/glslang_tab.cpp"
+#line 8510 "MachineIndependent/glslang_tab.cpp"
break;
- case 312: /* type_specifier_nonarray: F16MAT3X4 */
-#line 2322 "MachineIndependent/glslang.y"
+ case 315: /* type_specifier_nonarray: F16MAT3X4 */
+#line 2347 "MachineIndependent/glslang.y"
{
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 8463 "MachineIndependent/glslang_tab.cpp"
+#line 8521 "MachineIndependent/glslang_tab.cpp"
break;
- case 313: /* type_specifier_nonarray: F16MAT4X2 */
-#line 2328 "MachineIndependent/glslang.y"
+ case 316: /* type_specifier_nonarray: F16MAT4X2 */
+#line 2353 "MachineIndependent/glslang.y"
{
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 8474 "MachineIndependent/glslang_tab.cpp"
+#line 8532 "MachineIndependent/glslang_tab.cpp"
break;
- case 314: /* type_specifier_nonarray: F16MAT4X3 */
-#line 2334 "MachineIndependent/glslang.y"
+ case 317: /* type_specifier_nonarray: F16MAT4X3 */
+#line 2359 "MachineIndependent/glslang.y"
{
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 8485 "MachineIndependent/glslang_tab.cpp"
+#line 8543 "MachineIndependent/glslang_tab.cpp"
break;
- case 315: /* type_specifier_nonarray: F16MAT4X4 */
-#line 2340 "MachineIndependent/glslang.y"
+ case 318: /* type_specifier_nonarray: F16MAT4X4 */
+#line 2365 "MachineIndependent/glslang.y"
{
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 8496 "MachineIndependent/glslang_tab.cpp"
+#line 8554 "MachineIndependent/glslang_tab.cpp"
break;
- case 316: /* type_specifier_nonarray: F32MAT2 */
-#line 2346 "MachineIndependent/glslang.y"
+ case 319: /* type_specifier_nonarray: F32MAT2 */
+#line 2371 "MachineIndependent/glslang.y"
{
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 8507 "MachineIndependent/glslang_tab.cpp"
+#line 8565 "MachineIndependent/glslang_tab.cpp"
break;
- case 317: /* type_specifier_nonarray: F32MAT3 */
-#line 2352 "MachineIndependent/glslang.y"
+ case 320: /* type_specifier_nonarray: F32MAT3 */
+#line 2377 "MachineIndependent/glslang.y"
{
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 8518 "MachineIndependent/glslang_tab.cpp"
+#line 8576 "MachineIndependent/glslang_tab.cpp"
break;
- case 318: /* type_specifier_nonarray: F32MAT4 */
-#line 2358 "MachineIndependent/glslang.y"
+ case 321: /* type_specifier_nonarray: F32MAT4 */
+#line 2383 "MachineIndependent/glslang.y"
{
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 8529 "MachineIndependent/glslang_tab.cpp"
+#line 8587 "MachineIndependent/glslang_tab.cpp"
break;
- case 319: /* type_specifier_nonarray: F32MAT2X2 */
-#line 2364 "MachineIndependent/glslang.y"
+ case 322: /* type_specifier_nonarray: F32MAT2X2 */
+#line 2389 "MachineIndependent/glslang.y"
{
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 8540 "MachineIndependent/glslang_tab.cpp"
+#line 8598 "MachineIndependent/glslang_tab.cpp"
break;
- case 320: /* type_specifier_nonarray: F32MAT2X3 */
-#line 2370 "MachineIndependent/glslang.y"
+ case 323: /* type_specifier_nonarray: F32MAT2X3 */
+#line 2395 "MachineIndependent/glslang.y"
{
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 8551 "MachineIndependent/glslang_tab.cpp"
+#line 8609 "MachineIndependent/glslang_tab.cpp"
break;
- case 321: /* type_specifier_nonarray: F32MAT2X4 */
-#line 2376 "MachineIndependent/glslang.y"
+ case 324: /* type_specifier_nonarray: F32MAT2X4 */
+#line 2401 "MachineIndependent/glslang.y"
{
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 8562 "MachineIndependent/glslang_tab.cpp"
+#line 8620 "MachineIndependent/glslang_tab.cpp"
break;
- case 322: /* type_specifier_nonarray: F32MAT3X2 */
-#line 2382 "MachineIndependent/glslang.y"
+ case 325: /* type_specifier_nonarray: F32MAT3X2 */
+#line 2407 "MachineIndependent/glslang.y"
{
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 8573 "MachineIndependent/glslang_tab.cpp"
+#line 8631 "MachineIndependent/glslang_tab.cpp"
break;
- case 323: /* type_specifier_nonarray: F32MAT3X3 */
-#line 2388 "MachineIndependent/glslang.y"
+ case 326: /* type_specifier_nonarray: F32MAT3X3 */
+#line 2413 "MachineIndependent/glslang.y"
{
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 8584 "MachineIndependent/glslang_tab.cpp"
+#line 8642 "MachineIndependent/glslang_tab.cpp"
break;
- case 324: /* type_specifier_nonarray: F32MAT3X4 */
-#line 2394 "MachineIndependent/glslang.y"
+ case 327: /* type_specifier_nonarray: F32MAT3X4 */
+#line 2419 "MachineIndependent/glslang.y"
{
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 8595 "MachineIndependent/glslang_tab.cpp"
+#line 8653 "MachineIndependent/glslang_tab.cpp"
break;
- case 325: /* type_specifier_nonarray: F32MAT4X2 */
-#line 2400 "MachineIndependent/glslang.y"
+ case 328: /* type_specifier_nonarray: F32MAT4X2 */
+#line 2425 "MachineIndependent/glslang.y"
{
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 8606 "MachineIndependent/glslang_tab.cpp"
+#line 8664 "MachineIndependent/glslang_tab.cpp"
break;
- case 326: /* type_specifier_nonarray: F32MAT4X3 */
-#line 2406 "MachineIndependent/glslang.y"
+ case 329: /* type_specifier_nonarray: F32MAT4X3 */
+#line 2431 "MachineIndependent/glslang.y"
{
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 8617 "MachineIndependent/glslang_tab.cpp"
+#line 8675 "MachineIndependent/glslang_tab.cpp"
break;
- case 327: /* type_specifier_nonarray: F32MAT4X4 */
-#line 2412 "MachineIndependent/glslang.y"
+ case 330: /* type_specifier_nonarray: F32MAT4X4 */
+#line 2437 "MachineIndependent/glslang.y"
{
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 8628 "MachineIndependent/glslang_tab.cpp"
+#line 8686 "MachineIndependent/glslang_tab.cpp"
break;
- case 328: /* type_specifier_nonarray: F64MAT2 */
-#line 2418 "MachineIndependent/glslang.y"
+ case 331: /* type_specifier_nonarray: F64MAT2 */
+#line 2443 "MachineIndependent/glslang.y"
{
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 8639 "MachineIndependent/glslang_tab.cpp"
+#line 8697 "MachineIndependent/glslang_tab.cpp"
break;
- case 329: /* type_specifier_nonarray: F64MAT3 */
-#line 2424 "MachineIndependent/glslang.y"
+ case 332: /* type_specifier_nonarray: F64MAT3 */
+#line 2449 "MachineIndependent/glslang.y"
{
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 8650 "MachineIndependent/glslang_tab.cpp"
+#line 8708 "MachineIndependent/glslang_tab.cpp"
break;
- case 330: /* type_specifier_nonarray: F64MAT4 */
-#line 2430 "MachineIndependent/glslang.y"
+ case 333: /* type_specifier_nonarray: F64MAT4 */
+#line 2455 "MachineIndependent/glslang.y"
{
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 8661 "MachineIndependent/glslang_tab.cpp"
+#line 8719 "MachineIndependent/glslang_tab.cpp"
break;
- case 331: /* type_specifier_nonarray: F64MAT2X2 */
-#line 2436 "MachineIndependent/glslang.y"
+ case 334: /* type_specifier_nonarray: F64MAT2X2 */
+#line 2461 "MachineIndependent/glslang.y"
{
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 8672 "MachineIndependent/glslang_tab.cpp"
+#line 8730 "MachineIndependent/glslang_tab.cpp"
break;
- case 332: /* type_specifier_nonarray: F64MAT2X3 */
-#line 2442 "MachineIndependent/glslang.y"
+ case 335: /* type_specifier_nonarray: F64MAT2X3 */
+#line 2467 "MachineIndependent/glslang.y"
{
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 8683 "MachineIndependent/glslang_tab.cpp"
+#line 8741 "MachineIndependent/glslang_tab.cpp"
break;
- case 333: /* type_specifier_nonarray: F64MAT2X4 */
-#line 2448 "MachineIndependent/glslang.y"
+ case 336: /* type_specifier_nonarray: F64MAT2X4 */
+#line 2473 "MachineIndependent/glslang.y"
{
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 8694 "MachineIndependent/glslang_tab.cpp"
+#line 8752 "MachineIndependent/glslang_tab.cpp"
break;
- case 334: /* type_specifier_nonarray: F64MAT3X2 */
-#line 2454 "MachineIndependent/glslang.y"
+ case 337: /* type_specifier_nonarray: F64MAT3X2 */
+#line 2479 "MachineIndependent/glslang.y"
{
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 8705 "MachineIndependent/glslang_tab.cpp"
+#line 8763 "MachineIndependent/glslang_tab.cpp"
break;
- case 335: /* type_specifier_nonarray: F64MAT3X3 */
-#line 2460 "MachineIndependent/glslang.y"
+ case 338: /* type_specifier_nonarray: F64MAT3X3 */
+#line 2485 "MachineIndependent/glslang.y"
{
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 8716 "MachineIndependent/glslang_tab.cpp"
+#line 8774 "MachineIndependent/glslang_tab.cpp"
break;
- case 336: /* type_specifier_nonarray: F64MAT3X4 */
-#line 2466 "MachineIndependent/glslang.y"
+ case 339: /* type_specifier_nonarray: F64MAT3X4 */
+#line 2491 "MachineIndependent/glslang.y"
{
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 8727 "MachineIndependent/glslang_tab.cpp"
+#line 8785 "MachineIndependent/glslang_tab.cpp"
break;
- case 337: /* type_specifier_nonarray: F64MAT4X2 */
-#line 2472 "MachineIndependent/glslang.y"
+ case 340: /* type_specifier_nonarray: F64MAT4X2 */
+#line 2497 "MachineIndependent/glslang.y"
{
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 8738 "MachineIndependent/glslang_tab.cpp"
+#line 8796 "MachineIndependent/glslang_tab.cpp"
break;
- case 338: /* type_specifier_nonarray: F64MAT4X3 */
-#line 2478 "MachineIndependent/glslang.y"
+ case 341: /* type_specifier_nonarray: F64MAT4X3 */
+#line 2503 "MachineIndependent/glslang.y"
{
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 8749 "MachineIndependent/glslang_tab.cpp"
+#line 8807 "MachineIndependent/glslang_tab.cpp"
break;
- case 339: /* type_specifier_nonarray: F64MAT4X4 */
-#line 2484 "MachineIndependent/glslang.y"
+ case 342: /* type_specifier_nonarray: F64MAT4X4 */
+#line 2509 "MachineIndependent/glslang.y"
{
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 8760 "MachineIndependent/glslang_tab.cpp"
+#line 8818 "MachineIndependent/glslang_tab.cpp"
break;
- case 340: /* type_specifier_nonarray: ACCSTRUCTNV */
-#line 2490 "MachineIndependent/glslang.y"
+ case 343: /* type_specifier_nonarray: ACCSTRUCTNV */
+#line 2515 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtAccStruct;
}
-#line 8769 "MachineIndependent/glslang_tab.cpp"
+#line 8827 "MachineIndependent/glslang_tab.cpp"
break;
- case 341: /* type_specifier_nonarray: ACCSTRUCTEXT */
-#line 2494 "MachineIndependent/glslang.y"
+ case 344: /* type_specifier_nonarray: ACCSTRUCTEXT */
+#line 2519 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtAccStruct;
}
-#line 8778 "MachineIndependent/glslang_tab.cpp"
+#line 8836 "MachineIndependent/glslang_tab.cpp"
break;
- case 342: /* type_specifier_nonarray: RAYQUERYEXT */
-#line 2498 "MachineIndependent/glslang.y"
+ case 345: /* type_specifier_nonarray: RAYQUERYEXT */
+#line 2523 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtRayQuery;
}
-#line 8787 "MachineIndependent/glslang_tab.cpp"
+#line 8845 "MachineIndependent/glslang_tab.cpp"
break;
- case 343: /* type_specifier_nonarray: ATOMIC_UINT */
-#line 2502 "MachineIndependent/glslang.y"
+ case 346: /* type_specifier_nonarray: ATOMIC_UINT */
+#line 2527 "MachineIndependent/glslang.y"
{
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 8797 "MachineIndependent/glslang_tab.cpp"
+#line 8855 "MachineIndependent/glslang_tab.cpp"
break;
- case 344: /* type_specifier_nonarray: SAMPLER1D */
-#line 2507 "MachineIndependent/glslang.y"
+ case 347: /* type_specifier_nonarray: SAMPLER1D */
+#line 2532 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D);
}
-#line 8807 "MachineIndependent/glslang_tab.cpp"
+#line 8865 "MachineIndependent/glslang_tab.cpp"
break;
- case 345: /* type_specifier_nonarray: SAMPLER2D */
-#line 2513 "MachineIndependent/glslang.y"
+ case 348: /* type_specifier_nonarray: SAMPLER2D */
+#line 2538 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
}
-#line 8817 "MachineIndependent/glslang_tab.cpp"
+#line 8875 "MachineIndependent/glslang_tab.cpp"
break;
- case 346: /* type_specifier_nonarray: SAMPLER3D */
-#line 2518 "MachineIndependent/glslang.y"
+ case 349: /* type_specifier_nonarray: SAMPLER3D */
+#line 2543 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd3D);
}
-#line 8827 "MachineIndependent/glslang_tab.cpp"
+#line 8885 "MachineIndependent/glslang_tab.cpp"
break;
- case 347: /* type_specifier_nonarray: SAMPLERCUBE */
-#line 2523 "MachineIndependent/glslang.y"
+ case 350: /* type_specifier_nonarray: SAMPLERCUBE */
+#line 2548 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube);
}
-#line 8837 "MachineIndependent/glslang_tab.cpp"
+#line 8895 "MachineIndependent/glslang_tab.cpp"
break;
- case 348: /* type_specifier_nonarray: SAMPLER2DSHADOW */
-#line 2528 "MachineIndependent/glslang.y"
+ case 351: /* type_specifier_nonarray: SAMPLER2DSHADOW */
+#line 2553 "MachineIndependent/glslang.y"
{
(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 8847 "MachineIndependent/glslang_tab.cpp"
+#line 8905 "MachineIndependent/glslang_tab.cpp"
break;
- case 349: /* type_specifier_nonarray: SAMPLERCUBESHADOW */
-#line 2533 "MachineIndependent/glslang.y"
+ case 352: /* type_specifier_nonarray: SAMPLERCUBESHADOW */
+#line 2558 "MachineIndependent/glslang.y"
{
(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 8857 "MachineIndependent/glslang_tab.cpp"
+#line 8915 "MachineIndependent/glslang_tab.cpp"
break;
- case 350: /* type_specifier_nonarray: SAMPLER2DARRAY */
-#line 2538 "MachineIndependent/glslang.y"
+ case 353: /* type_specifier_nonarray: SAMPLER2DARRAY */
+#line 2563 "MachineIndependent/glslang.y"
{
(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 8867 "MachineIndependent/glslang_tab.cpp"
+#line 8925 "MachineIndependent/glslang_tab.cpp"
break;
- case 351: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */
-#line 2543 "MachineIndependent/glslang.y"
+ case 354: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */
+#line 2568 "MachineIndependent/glslang.y"
{
(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 8877 "MachineIndependent/glslang_tab.cpp"
+#line 8935 "MachineIndependent/glslang_tab.cpp"
break;
- case 352: /* type_specifier_nonarray: SAMPLER1DSHADOW */
-#line 2549 "MachineIndependent/glslang.y"
+ case 355: /* type_specifier_nonarray: SAMPLER1DSHADOW */
+#line 2574 "MachineIndependent/glslang.y"
{
(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 8887 "MachineIndependent/glslang_tab.cpp"
+#line 8945 "MachineIndependent/glslang_tab.cpp"
break;
- case 353: /* type_specifier_nonarray: SAMPLER1DARRAY */
-#line 2554 "MachineIndependent/glslang.y"
+ case 356: /* type_specifier_nonarray: SAMPLER1DARRAY */
+#line 2579 "MachineIndependent/glslang.y"
{
(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 8897 "MachineIndependent/glslang_tab.cpp"
+#line 8955 "MachineIndependent/glslang_tab.cpp"
break;
- case 354: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */
-#line 2559 "MachineIndependent/glslang.y"
+ case 357: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */
+#line 2584 "MachineIndependent/glslang.y"
{
(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 8907 "MachineIndependent/glslang_tab.cpp"
+#line 8965 "MachineIndependent/glslang_tab.cpp"
break;
- case 355: /* type_specifier_nonarray: SAMPLERCUBEARRAY */
-#line 2564 "MachineIndependent/glslang.y"
+ case 358: /* type_specifier_nonarray: SAMPLERCUBEARRAY */
+#line 2589 "MachineIndependent/glslang.y"
{
(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 8917 "MachineIndependent/glslang_tab.cpp"
+#line 8975 "MachineIndependent/glslang_tab.cpp"
break;
- case 356: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */
-#line 2569 "MachineIndependent/glslang.y"
+ case 359: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */
+#line 2594 "MachineIndependent/glslang.y"
{
(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 8927 "MachineIndependent/glslang_tab.cpp"
+#line 8985 "MachineIndependent/glslang_tab.cpp"
break;
- case 357: /* type_specifier_nonarray: F16SAMPLER1D */
-#line 2574 "MachineIndependent/glslang.y"
+ case 360: /* type_specifier_nonarray: F16SAMPLER1D */
+#line 2599 "MachineIndependent/glslang.y"
{
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 8938 "MachineIndependent/glslang_tab.cpp"
+#line 8996 "MachineIndependent/glslang_tab.cpp"
break;
- case 358: /* type_specifier_nonarray: F16SAMPLER2D */
-#line 2580 "MachineIndependent/glslang.y"
+ case 361: /* type_specifier_nonarray: F16SAMPLER2D */
+#line 2605 "MachineIndependent/glslang.y"
{
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 8949 "MachineIndependent/glslang_tab.cpp"
+#line 9007 "MachineIndependent/glslang_tab.cpp"
break;
- case 359: /* type_specifier_nonarray: F16SAMPLER3D */
-#line 2586 "MachineIndependent/glslang.y"
+ case 362: /* type_specifier_nonarray: F16SAMPLER3D */
+#line 2611 "MachineIndependent/glslang.y"
{
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 8960 "MachineIndependent/glslang_tab.cpp"
+#line 9018 "MachineIndependent/glslang_tab.cpp"
break;
- case 360: /* type_specifier_nonarray: F16SAMPLERCUBE */
-#line 2592 "MachineIndependent/glslang.y"
+ case 363: /* type_specifier_nonarray: F16SAMPLERCUBE */
+#line 2617 "MachineIndependent/glslang.y"
{
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 8971 "MachineIndependent/glslang_tab.cpp"
+#line 9029 "MachineIndependent/glslang_tab.cpp"
break;
- case 361: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */
-#line 2598 "MachineIndependent/glslang.y"
+ case 364: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */
+#line 2623 "MachineIndependent/glslang.y"
{
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 8982 "MachineIndependent/glslang_tab.cpp"
+#line 9040 "MachineIndependent/glslang_tab.cpp"
break;
- case 362: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */
-#line 2604 "MachineIndependent/glslang.y"
+ case 365: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */
+#line 2629 "MachineIndependent/glslang.y"
{
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 8993 "MachineIndependent/glslang_tab.cpp"
+#line 9051 "MachineIndependent/glslang_tab.cpp"
break;
- case 363: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */
-#line 2610 "MachineIndependent/glslang.y"
+ case 366: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */
+#line 2635 "MachineIndependent/glslang.y"
{
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 9004 "MachineIndependent/glslang_tab.cpp"
+#line 9062 "MachineIndependent/glslang_tab.cpp"
break;
- case 364: /* type_specifier_nonarray: F16SAMPLER1DARRAY */
-#line 2616 "MachineIndependent/glslang.y"
+ case 367: /* type_specifier_nonarray: F16SAMPLER1DARRAY */
+#line 2641 "MachineIndependent/glslang.y"
{
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 9015 "MachineIndependent/glslang_tab.cpp"
+#line 9073 "MachineIndependent/glslang_tab.cpp"
break;
- case 365: /* type_specifier_nonarray: F16SAMPLER2DARRAY */
-#line 2622 "MachineIndependent/glslang.y"
+ case 368: /* type_specifier_nonarray: F16SAMPLER2DARRAY */
+#line 2647 "MachineIndependent/glslang.y"
{
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 9026 "MachineIndependent/glslang_tab.cpp"
+#line 9084 "MachineIndependent/glslang_tab.cpp"
break;
- case 366: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */
-#line 2628 "MachineIndependent/glslang.y"
+ case 369: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */
+#line 2653 "MachineIndependent/glslang.y"
{
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 9037 "MachineIndependent/glslang_tab.cpp"
+#line 9095 "MachineIndependent/glslang_tab.cpp"
break;
- case 367: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */
-#line 2634 "MachineIndependent/glslang.y"
+ case 370: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */
+#line 2659 "MachineIndependent/glslang.y"
{
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 9048 "MachineIndependent/glslang_tab.cpp"
+#line 9106 "MachineIndependent/glslang_tab.cpp"
break;
- case 368: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */
-#line 2640 "MachineIndependent/glslang.y"
+ case 371: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */
+#line 2665 "MachineIndependent/glslang.y"
{
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 9059 "MachineIndependent/glslang_tab.cpp"
+#line 9117 "MachineIndependent/glslang_tab.cpp"
break;
- case 369: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */
-#line 2646 "MachineIndependent/glslang.y"
+ case 372: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */
+#line 2671 "MachineIndependent/glslang.y"
{
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 9070 "MachineIndependent/glslang_tab.cpp"
+#line 9128 "MachineIndependent/glslang_tab.cpp"
break;
- case 370: /* type_specifier_nonarray: ISAMPLER1D */
-#line 2652 "MachineIndependent/glslang.y"
+ case 373: /* type_specifier_nonarray: ISAMPLER1D */
+#line 2677 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd1D);
}
-#line 9080 "MachineIndependent/glslang_tab.cpp"
+#line 9138 "MachineIndependent/glslang_tab.cpp"
break;
- case 371: /* type_specifier_nonarray: ISAMPLER2D */
-#line 2658 "MachineIndependent/glslang.y"
+ case 374: /* type_specifier_nonarray: ISAMPLER2D */
+#line 2683 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D);
}
-#line 9090 "MachineIndependent/glslang_tab.cpp"
+#line 9148 "MachineIndependent/glslang_tab.cpp"
break;
- case 372: /* type_specifier_nonarray: ISAMPLER3D */
-#line 2663 "MachineIndependent/glslang.y"
+ case 375: /* type_specifier_nonarray: ISAMPLER3D */
+#line 2688 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd3D);
}
-#line 9100 "MachineIndependent/glslang_tab.cpp"
+#line 9158 "MachineIndependent/glslang_tab.cpp"
break;
- case 373: /* type_specifier_nonarray: ISAMPLERCUBE */
-#line 2668 "MachineIndependent/glslang.y"
+ case 376: /* type_specifier_nonarray: ISAMPLERCUBE */
+#line 2693 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdCube);
}
-#line 9110 "MachineIndependent/glslang_tab.cpp"
+#line 9168 "MachineIndependent/glslang_tab.cpp"
break;
- case 374: /* type_specifier_nonarray: ISAMPLER2DARRAY */
-#line 2673 "MachineIndependent/glslang.y"
+ case 377: /* type_specifier_nonarray: ISAMPLER2DARRAY */
+#line 2698 "MachineIndependent/glslang.y"
{
(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 9120 "MachineIndependent/glslang_tab.cpp"
+#line 9178 "MachineIndependent/glslang_tab.cpp"
break;
- case 375: /* type_specifier_nonarray: USAMPLER2D */
-#line 2678 "MachineIndependent/glslang.y"
+ case 378: /* type_specifier_nonarray: USAMPLER2D */
+#line 2703 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D);
}
-#line 9130 "MachineIndependent/glslang_tab.cpp"
+#line 9188 "MachineIndependent/glslang_tab.cpp"
break;
- case 376: /* type_specifier_nonarray: USAMPLER3D */
-#line 2683 "MachineIndependent/glslang.y"
+ case 379: /* type_specifier_nonarray: USAMPLER3D */
+#line 2708 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd3D);
}
-#line 9140 "MachineIndependent/glslang_tab.cpp"
+#line 9198 "MachineIndependent/glslang_tab.cpp"
break;
- case 377: /* type_specifier_nonarray: USAMPLERCUBE */
-#line 2688 "MachineIndependent/glslang.y"
+ case 380: /* type_specifier_nonarray: USAMPLERCUBE */
+#line 2713 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube);
}
-#line 9150 "MachineIndependent/glslang_tab.cpp"
+#line 9208 "MachineIndependent/glslang_tab.cpp"
break;
- case 378: /* type_specifier_nonarray: ISAMPLER1DARRAY */
-#line 2694 "MachineIndependent/glslang.y"
+ case 381: /* type_specifier_nonarray: ISAMPLER1DARRAY */
+#line 2719 "MachineIndependent/glslang.y"
{
(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 9160 "MachineIndependent/glslang_tab.cpp"
+#line 9218 "MachineIndependent/glslang_tab.cpp"
break;
- case 379: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */
-#line 2699 "MachineIndependent/glslang.y"
+ case 382: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */
+#line 2724 "MachineIndependent/glslang.y"
{
(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 9170 "MachineIndependent/glslang_tab.cpp"
+#line 9228 "MachineIndependent/glslang_tab.cpp"
break;
- case 380: /* type_specifier_nonarray: USAMPLER1D */
-#line 2704 "MachineIndependent/glslang.y"
+ case 383: /* type_specifier_nonarray: USAMPLER1D */
+#line 2729 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd1D);
}
-#line 9180 "MachineIndependent/glslang_tab.cpp"
+#line 9238 "MachineIndependent/glslang_tab.cpp"
break;
- case 381: /* type_specifier_nonarray: USAMPLER1DARRAY */
-#line 2709 "MachineIndependent/glslang.y"
+ case 384: /* type_specifier_nonarray: USAMPLER1DARRAY */
+#line 2734 "MachineIndependent/glslang.y"
{
(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 9190 "MachineIndependent/glslang_tab.cpp"
+#line 9248 "MachineIndependent/glslang_tab.cpp"
break;
- case 382: /* type_specifier_nonarray: USAMPLERCUBEARRAY */
-#line 2714 "MachineIndependent/glslang.y"
+ case 385: /* type_specifier_nonarray: USAMPLERCUBEARRAY */
+#line 2739 "MachineIndependent/glslang.y"
{
(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 9200 "MachineIndependent/glslang_tab.cpp"
+#line 9258 "MachineIndependent/glslang_tab.cpp"
break;
- case 383: /* type_specifier_nonarray: TEXTURECUBEARRAY */
-#line 2719 "MachineIndependent/glslang.y"
+ case 386: /* type_specifier_nonarray: TEXTURECUBEARRAY */
+#line 2744 "MachineIndependent/glslang.y"
{
(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 9210 "MachineIndependent/glslang_tab.cpp"
+#line 9268 "MachineIndependent/glslang_tab.cpp"
break;
- case 384: /* type_specifier_nonarray: ITEXTURECUBEARRAY */
-#line 2724 "MachineIndependent/glslang.y"
+ case 387: /* type_specifier_nonarray: ITEXTURECUBEARRAY */
+#line 2749 "MachineIndependent/glslang.y"
{
(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 9220 "MachineIndependent/glslang_tab.cpp"
+#line 9278 "MachineIndependent/glslang_tab.cpp"
break;
- case 385: /* type_specifier_nonarray: UTEXTURECUBEARRAY */
-#line 2729 "MachineIndependent/glslang.y"
+ case 388: /* type_specifier_nonarray: UTEXTURECUBEARRAY */
+#line 2754 "MachineIndependent/glslang.y"
{
(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 9230 "MachineIndependent/glslang_tab.cpp"
+#line 9288 "MachineIndependent/glslang_tab.cpp"
break;
- case 386: /* type_specifier_nonarray: USAMPLER2DARRAY */
-#line 2735 "MachineIndependent/glslang.y"
+ case 389: /* type_specifier_nonarray: USAMPLER2DARRAY */
+#line 2760 "MachineIndependent/glslang.y"
{
(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 9240 "MachineIndependent/glslang_tab.cpp"
+#line 9298 "MachineIndependent/glslang_tab.cpp"
break;
- case 387: /* type_specifier_nonarray: TEXTURE2D */
-#line 2740 "MachineIndependent/glslang.y"
+ case 390: /* type_specifier_nonarray: TEXTURE2D */
+#line 2765 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
}
-#line 9250 "MachineIndependent/glslang_tab.cpp"
+#line 9308 "MachineIndependent/glslang_tab.cpp"
break;
- case 388: /* type_specifier_nonarray: TEXTURE3D */
-#line 2745 "MachineIndependent/glslang.y"
+ case 391: /* type_specifier_nonarray: TEXTURE3D */
+#line 2770 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
}
-#line 9260 "MachineIndependent/glslang_tab.cpp"
+#line 9318 "MachineIndependent/glslang_tab.cpp"
break;
- case 389: /* type_specifier_nonarray: TEXTURE2DARRAY */
-#line 2750 "MachineIndependent/glslang.y"
+ case 392: /* type_specifier_nonarray: TEXTURE2DARRAY */
+#line 2775 "MachineIndependent/glslang.y"
{
(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 9270 "MachineIndependent/glslang_tab.cpp"
+#line 9328 "MachineIndependent/glslang_tab.cpp"
break;
- case 390: /* type_specifier_nonarray: TEXTURECUBE */
-#line 2755 "MachineIndependent/glslang.y"
+ case 393: /* type_specifier_nonarray: TEXTURECUBE */
+#line 2780 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
}
-#line 9280 "MachineIndependent/glslang_tab.cpp"
+#line 9338 "MachineIndependent/glslang_tab.cpp"
break;
- case 391: /* type_specifier_nonarray: ITEXTURE2D */
-#line 2760 "MachineIndependent/glslang.y"
+ case 394: /* type_specifier_nonarray: ITEXTURE2D */
+#line 2785 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
}
-#line 9290 "MachineIndependent/glslang_tab.cpp"
+#line 9348 "MachineIndependent/glslang_tab.cpp"
break;
- case 392: /* type_specifier_nonarray: ITEXTURE3D */
-#line 2765 "MachineIndependent/glslang.y"
+ case 395: /* type_specifier_nonarray: ITEXTURE3D */
+#line 2790 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
}
-#line 9300 "MachineIndependent/glslang_tab.cpp"
+#line 9358 "MachineIndependent/glslang_tab.cpp"
break;
- case 393: /* type_specifier_nonarray: ITEXTURECUBE */
-#line 2770 "MachineIndependent/glslang.y"
+ case 396: /* type_specifier_nonarray: ITEXTURECUBE */
+#line 2795 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
}
-#line 9310 "MachineIndependent/glslang_tab.cpp"
+#line 9368 "MachineIndependent/glslang_tab.cpp"
break;
- case 394: /* type_specifier_nonarray: ITEXTURE2DARRAY */
-#line 2775 "MachineIndependent/glslang.y"
+ case 397: /* type_specifier_nonarray: ITEXTURE2DARRAY */
+#line 2800 "MachineIndependent/glslang.y"
{
(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 9320 "MachineIndependent/glslang_tab.cpp"
+#line 9378 "MachineIndependent/glslang_tab.cpp"
break;
- case 395: /* type_specifier_nonarray: UTEXTURE2D */
-#line 2780 "MachineIndependent/glslang.y"
+ case 398: /* type_specifier_nonarray: UTEXTURE2D */
+#line 2805 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
}
-#line 9330 "MachineIndependent/glslang_tab.cpp"
+#line 9388 "MachineIndependent/glslang_tab.cpp"
break;
- case 396: /* type_specifier_nonarray: UTEXTURE3D */
-#line 2785 "MachineIndependent/glslang.y"
+ case 399: /* type_specifier_nonarray: UTEXTURE3D */
+#line 2810 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
}
-#line 9340 "MachineIndependent/glslang_tab.cpp"
+#line 9398 "MachineIndependent/glslang_tab.cpp"
break;
- case 397: /* type_specifier_nonarray: UTEXTURECUBE */
-#line 2790 "MachineIndependent/glslang.y"
+ case 400: /* type_specifier_nonarray: UTEXTURECUBE */
+#line 2815 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
}
-#line 9350 "MachineIndependent/glslang_tab.cpp"
+#line 9408 "MachineIndependent/glslang_tab.cpp"
break;
- case 398: /* type_specifier_nonarray: UTEXTURE2DARRAY */
-#line 2795 "MachineIndependent/glslang.y"
+ case 401: /* type_specifier_nonarray: UTEXTURE2DARRAY */
+#line 2820 "MachineIndependent/glslang.y"
{
(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 9360 "MachineIndependent/glslang_tab.cpp"
+#line 9418 "MachineIndependent/glslang_tab.cpp"
break;
- case 399: /* type_specifier_nonarray: SAMPLER */
-#line 2800 "MachineIndependent/glslang.y"
+ case 402: /* type_specifier_nonarray: SAMPLER */
+#line 2825 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(false);
}
-#line 9370 "MachineIndependent/glslang_tab.cpp"
+#line 9428 "MachineIndependent/glslang_tab.cpp"
break;
- case 400: /* type_specifier_nonarray: SAMPLERSHADOW */
-#line 2805 "MachineIndependent/glslang.y"
+ case 403: /* type_specifier_nonarray: SAMPLERSHADOW */
+#line 2830 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(true);
}
-#line 9380 "MachineIndependent/glslang_tab.cpp"
+#line 9438 "MachineIndependent/glslang_tab.cpp"
break;
- case 401: /* type_specifier_nonarray: SAMPLER2DRECT */
-#line 2811 "MachineIndependent/glslang.y"
+ case 404: /* type_specifier_nonarray: SAMPLER2DRECT */
+#line 2836 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect);
}
-#line 9390 "MachineIndependent/glslang_tab.cpp"
+#line 9448 "MachineIndependent/glslang_tab.cpp"
break;
- case 402: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */
-#line 2816 "MachineIndependent/glslang.y"
+ case 405: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */
+#line 2841 "MachineIndependent/glslang.y"
{
(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 9400 "MachineIndependent/glslang_tab.cpp"
+#line 9458 "MachineIndependent/glslang_tab.cpp"
break;
- case 403: /* type_specifier_nonarray: F16SAMPLER2DRECT */
-#line 2821 "MachineIndependent/glslang.y"
+ case 406: /* type_specifier_nonarray: F16SAMPLER2DRECT */
+#line 2846 "MachineIndependent/glslang.y"
{
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 9411 "MachineIndependent/glslang_tab.cpp"
+#line 9469 "MachineIndependent/glslang_tab.cpp"
break;
- case 404: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */
-#line 2827 "MachineIndependent/glslang.y"
+ case 407: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */
+#line 2852 "MachineIndependent/glslang.y"
{
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 9422 "MachineIndependent/glslang_tab.cpp"
+#line 9480 "MachineIndependent/glslang_tab.cpp"
break;
- case 405: /* type_specifier_nonarray: ISAMPLER2DRECT */
-#line 2833 "MachineIndependent/glslang.y"
+ case 408: /* type_specifier_nonarray: ISAMPLER2DRECT */
+#line 2858 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdRect);
}
-#line 9432 "MachineIndependent/glslang_tab.cpp"
+#line 9490 "MachineIndependent/glslang_tab.cpp"
break;
- case 406: /* type_specifier_nonarray: USAMPLER2DRECT */
-#line 2838 "MachineIndependent/glslang.y"
+ case 409: /* type_specifier_nonarray: USAMPLER2DRECT */
+#line 2863 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdRect);
}
-#line 9442 "MachineIndependent/glslang_tab.cpp"
+#line 9500 "MachineIndependent/glslang_tab.cpp"
break;
- case 407: /* type_specifier_nonarray: SAMPLERBUFFER */
-#line 2843 "MachineIndependent/glslang.y"
+ case 410: /* type_specifier_nonarray: SAMPLERBUFFER */
+#line 2868 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
}
-#line 9452 "MachineIndependent/glslang_tab.cpp"
+#line 9510 "MachineIndependent/glslang_tab.cpp"
break;
- case 408: /* type_specifier_nonarray: F16SAMPLERBUFFER */
-#line 2848 "MachineIndependent/glslang.y"
+ case 411: /* type_specifier_nonarray: F16SAMPLERBUFFER */
+#line 2873 "MachineIndependent/glslang.y"
{
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 9463 "MachineIndependent/glslang_tab.cpp"
+#line 9521 "MachineIndependent/glslang_tab.cpp"
break;
- case 409: /* type_specifier_nonarray: ISAMPLERBUFFER */
-#line 2854 "MachineIndependent/glslang.y"
+ case 412: /* type_specifier_nonarray: ISAMPLERBUFFER */
+#line 2879 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
}
-#line 9473 "MachineIndependent/glslang_tab.cpp"
+#line 9531 "MachineIndependent/glslang_tab.cpp"
break;
- case 410: /* type_specifier_nonarray: USAMPLERBUFFER */
-#line 2859 "MachineIndependent/glslang.y"
+ case 413: /* type_specifier_nonarray: USAMPLERBUFFER */
+#line 2884 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
}
-#line 9483 "MachineIndependent/glslang_tab.cpp"
+#line 9541 "MachineIndependent/glslang_tab.cpp"
break;
- case 411: /* type_specifier_nonarray: SAMPLER2DMS */
-#line 2864 "MachineIndependent/glslang.y"
+ case 414: /* type_specifier_nonarray: SAMPLER2DMS */
+#line 2889 "MachineIndependent/glslang.y"
{
(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 9493 "MachineIndependent/glslang_tab.cpp"
+#line 9551 "MachineIndependent/glslang_tab.cpp"
break;
- case 412: /* type_specifier_nonarray: F16SAMPLER2DMS */
-#line 2869 "MachineIndependent/glslang.y"
+ case 415: /* type_specifier_nonarray: F16SAMPLER2DMS */
+#line 2894 "MachineIndependent/glslang.y"
{
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 9504 "MachineIndependent/glslang_tab.cpp"
+#line 9562 "MachineIndependent/glslang_tab.cpp"
break;
- case 413: /* type_specifier_nonarray: ISAMPLER2DMS */
-#line 2875 "MachineIndependent/glslang.y"
+ case 416: /* type_specifier_nonarray: ISAMPLER2DMS */
+#line 2900 "MachineIndependent/glslang.y"
{
(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 9514 "MachineIndependent/glslang_tab.cpp"
+#line 9572 "MachineIndependent/glslang_tab.cpp"
break;
- case 414: /* type_specifier_nonarray: USAMPLER2DMS */
-#line 2880 "MachineIndependent/glslang.y"
+ case 417: /* type_specifier_nonarray: USAMPLER2DMS */
+#line 2905 "MachineIndependent/glslang.y"
{
(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 9524 "MachineIndependent/glslang_tab.cpp"
+#line 9582 "MachineIndependent/glslang_tab.cpp"
break;
- case 415: /* type_specifier_nonarray: SAMPLER2DMSARRAY */
-#line 2885 "MachineIndependent/glslang.y"
+ case 418: /* type_specifier_nonarray: SAMPLER2DMSARRAY */
+#line 2910 "MachineIndependent/glslang.y"
{
(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 9534 "MachineIndependent/glslang_tab.cpp"
+#line 9592 "MachineIndependent/glslang_tab.cpp"
break;
- case 416: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */
-#line 2890 "MachineIndependent/glslang.y"
+ case 419: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */
+#line 2915 "MachineIndependent/glslang.y"
{
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 9545 "MachineIndependent/glslang_tab.cpp"
+#line 9603 "MachineIndependent/glslang_tab.cpp"
break;
- case 417: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */
-#line 2896 "MachineIndependent/glslang.y"
+ case 420: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */
+#line 2921 "MachineIndependent/glslang.y"
{
(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 9555 "MachineIndependent/glslang_tab.cpp"
+#line 9613 "MachineIndependent/glslang_tab.cpp"
break;
- case 418: /* type_specifier_nonarray: USAMPLER2DMSARRAY */
-#line 2901 "MachineIndependent/glslang.y"
+ case 421: /* type_specifier_nonarray: USAMPLER2DMSARRAY */
+#line 2926 "MachineIndependent/glslang.y"
{
(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 9565 "MachineIndependent/glslang_tab.cpp"
+#line 9623 "MachineIndependent/glslang_tab.cpp"
break;
- case 419: /* type_specifier_nonarray: TEXTURE1D */
-#line 2906 "MachineIndependent/glslang.y"
+ case 422: /* type_specifier_nonarray: TEXTURE1D */
+#line 2931 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
}
-#line 9575 "MachineIndependent/glslang_tab.cpp"
+#line 9633 "MachineIndependent/glslang_tab.cpp"
break;
- case 420: /* type_specifier_nonarray: F16TEXTURE1D */
-#line 2911 "MachineIndependent/glslang.y"
+ case 423: /* type_specifier_nonarray: F16TEXTURE1D */
+#line 2936 "MachineIndependent/glslang.y"
{
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 9586 "MachineIndependent/glslang_tab.cpp"
+#line 9644 "MachineIndependent/glslang_tab.cpp"
break;
- case 421: /* type_specifier_nonarray: F16TEXTURE2D */
-#line 2917 "MachineIndependent/glslang.y"
+ case 424: /* type_specifier_nonarray: F16TEXTURE2D */
+#line 2942 "MachineIndependent/glslang.y"
{
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 9597 "MachineIndependent/glslang_tab.cpp"
+#line 9655 "MachineIndependent/glslang_tab.cpp"
break;
- case 422: /* type_specifier_nonarray: F16TEXTURE3D */
-#line 2923 "MachineIndependent/glslang.y"
+ case 425: /* type_specifier_nonarray: F16TEXTURE3D */
+#line 2948 "MachineIndependent/glslang.y"
{
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 9608 "MachineIndependent/glslang_tab.cpp"
+#line 9666 "MachineIndependent/glslang_tab.cpp"
break;
- case 423: /* type_specifier_nonarray: F16TEXTURECUBE */
-#line 2929 "MachineIndependent/glslang.y"
+ case 426: /* type_specifier_nonarray: F16TEXTURECUBE */
+#line 2954 "MachineIndependent/glslang.y"
{
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 9619 "MachineIndependent/glslang_tab.cpp"
+#line 9677 "MachineIndependent/glslang_tab.cpp"
break;
- case 424: /* type_specifier_nonarray: TEXTURE1DARRAY */
-#line 2935 "MachineIndependent/glslang.y"
+ case 427: /* type_specifier_nonarray: TEXTURE1DARRAY */
+#line 2960 "MachineIndependent/glslang.y"
{
(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 9629 "MachineIndependent/glslang_tab.cpp"
+#line 9687 "MachineIndependent/glslang_tab.cpp"
break;
- case 425: /* type_specifier_nonarray: F16TEXTURE1DARRAY */
-#line 2940 "MachineIndependent/glslang.y"
+ case 428: /* type_specifier_nonarray: F16TEXTURE1DARRAY */
+#line 2965 "MachineIndependent/glslang.y"
{
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 9640 "MachineIndependent/glslang_tab.cpp"
+#line 9698 "MachineIndependent/glslang_tab.cpp"
break;
- case 426: /* type_specifier_nonarray: F16TEXTURE2DARRAY */
-#line 2946 "MachineIndependent/glslang.y"
+ case 429: /* type_specifier_nonarray: F16TEXTURE2DARRAY */
+#line 2971 "MachineIndependent/glslang.y"
{
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 9651 "MachineIndependent/glslang_tab.cpp"
+#line 9709 "MachineIndependent/glslang_tab.cpp"
break;
- case 427: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */
-#line 2952 "MachineIndependent/glslang.y"
+ case 430: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */
+#line 2977 "MachineIndependent/glslang.y"
{
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 9662 "MachineIndependent/glslang_tab.cpp"
+#line 9720 "MachineIndependent/glslang_tab.cpp"
break;
- case 428: /* type_specifier_nonarray: ITEXTURE1D */
-#line 2958 "MachineIndependent/glslang.y"
+ case 431: /* type_specifier_nonarray: ITEXTURE1D */
+#line 2983 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
}
-#line 9672 "MachineIndependent/glslang_tab.cpp"
+#line 9730 "MachineIndependent/glslang_tab.cpp"
break;
- case 429: /* type_specifier_nonarray: ITEXTURE1DARRAY */
-#line 2963 "MachineIndependent/glslang.y"
+ case 432: /* type_specifier_nonarray: ITEXTURE1DARRAY */
+#line 2988 "MachineIndependent/glslang.y"
{
(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 9682 "MachineIndependent/glslang_tab.cpp"
+#line 9740 "MachineIndependent/glslang_tab.cpp"
break;
- case 430: /* type_specifier_nonarray: UTEXTURE1D */
-#line 2968 "MachineIndependent/glslang.y"
+ case 433: /* type_specifier_nonarray: UTEXTURE1D */
+#line 2993 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
}
-#line 9692 "MachineIndependent/glslang_tab.cpp"
+#line 9750 "MachineIndependent/glslang_tab.cpp"
break;
- case 431: /* type_specifier_nonarray: UTEXTURE1DARRAY */
-#line 2973 "MachineIndependent/glslang.y"
+ case 434: /* type_specifier_nonarray: UTEXTURE1DARRAY */
+#line 2998 "MachineIndependent/glslang.y"
{
(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 9702 "MachineIndependent/glslang_tab.cpp"
+#line 9760 "MachineIndependent/glslang_tab.cpp"
break;
- case 432: /* type_specifier_nonarray: TEXTURE2DRECT */
-#line 2978 "MachineIndependent/glslang.y"
+ case 435: /* type_specifier_nonarray: TEXTURE2DRECT */
+#line 3003 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
}
-#line 9712 "MachineIndependent/glslang_tab.cpp"
+#line 9770 "MachineIndependent/glslang_tab.cpp"
break;
- case 433: /* type_specifier_nonarray: F16TEXTURE2DRECT */
-#line 2983 "MachineIndependent/glslang.y"
+ case 436: /* type_specifier_nonarray: F16TEXTURE2DRECT */
+#line 3008 "MachineIndependent/glslang.y"
{
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 9723 "MachineIndependent/glslang_tab.cpp"
+#line 9781 "MachineIndependent/glslang_tab.cpp"
break;
- case 434: /* type_specifier_nonarray: ITEXTURE2DRECT */
-#line 2989 "MachineIndependent/glslang.y"
+ case 437: /* type_specifier_nonarray: ITEXTURE2DRECT */
+#line 3014 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
}
-#line 9733 "MachineIndependent/glslang_tab.cpp"
+#line 9791 "MachineIndependent/glslang_tab.cpp"
break;
- case 435: /* type_specifier_nonarray: UTEXTURE2DRECT */
-#line 2994 "MachineIndependent/glslang.y"
+ case 438: /* type_specifier_nonarray: UTEXTURE2DRECT */
+#line 3019 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
}
-#line 9743 "MachineIndependent/glslang_tab.cpp"
+#line 9801 "MachineIndependent/glslang_tab.cpp"
break;
- case 436: /* type_specifier_nonarray: TEXTUREBUFFER */
-#line 2999 "MachineIndependent/glslang.y"
+ case 439: /* type_specifier_nonarray: TEXTUREBUFFER */
+#line 3024 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
}
-#line 9753 "MachineIndependent/glslang_tab.cpp"
+#line 9811 "MachineIndependent/glslang_tab.cpp"
break;
- case 437: /* type_specifier_nonarray: F16TEXTUREBUFFER */
-#line 3004 "MachineIndependent/glslang.y"
+ case 440: /* type_specifier_nonarray: F16TEXTUREBUFFER */
+#line 3029 "MachineIndependent/glslang.y"
{
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 9764 "MachineIndependent/glslang_tab.cpp"
+#line 9822 "MachineIndependent/glslang_tab.cpp"
break;
- case 438: /* type_specifier_nonarray: ITEXTUREBUFFER */
-#line 3010 "MachineIndependent/glslang.y"
+ case 441: /* type_specifier_nonarray: ITEXTUREBUFFER */
+#line 3035 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
}
-#line 9774 "MachineIndependent/glslang_tab.cpp"
+#line 9832 "MachineIndependent/glslang_tab.cpp"
break;
- case 439: /* type_specifier_nonarray: UTEXTUREBUFFER */
-#line 3015 "MachineIndependent/glslang.y"
+ case 442: /* type_specifier_nonarray: UTEXTUREBUFFER */
+#line 3040 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
}
-#line 9784 "MachineIndependent/glslang_tab.cpp"
+#line 9842 "MachineIndependent/glslang_tab.cpp"
break;
- case 440: /* type_specifier_nonarray: TEXTURE2DMS */
-#line 3020 "MachineIndependent/glslang.y"
+ case 443: /* type_specifier_nonarray: TEXTURE2DMS */
+#line 3045 "MachineIndependent/glslang.y"
{
(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 9794 "MachineIndependent/glslang_tab.cpp"
+#line 9852 "MachineIndependent/glslang_tab.cpp"
break;
- case 441: /* type_specifier_nonarray: F16TEXTURE2DMS */
-#line 3025 "MachineIndependent/glslang.y"
+ case 444: /* type_specifier_nonarray: F16TEXTURE2DMS */
+#line 3050 "MachineIndependent/glslang.y"
{
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 9805 "MachineIndependent/glslang_tab.cpp"
+#line 9863 "MachineIndependent/glslang_tab.cpp"
break;
- case 442: /* type_specifier_nonarray: ITEXTURE2DMS */
-#line 3031 "MachineIndependent/glslang.y"
+ case 445: /* type_specifier_nonarray: ITEXTURE2DMS */
+#line 3056 "MachineIndependent/glslang.y"
{
(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 9815 "MachineIndependent/glslang_tab.cpp"
+#line 9873 "MachineIndependent/glslang_tab.cpp"
break;
- case 443: /* type_specifier_nonarray: UTEXTURE2DMS */
-#line 3036 "MachineIndependent/glslang.y"
+ case 446: /* type_specifier_nonarray: UTEXTURE2DMS */
+#line 3061 "MachineIndependent/glslang.y"
{
(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 9825 "MachineIndependent/glslang_tab.cpp"
+#line 9883 "MachineIndependent/glslang_tab.cpp"
break;
- case 444: /* type_specifier_nonarray: TEXTURE2DMSARRAY */
-#line 3041 "MachineIndependent/glslang.y"
+ case 447: /* type_specifier_nonarray: TEXTURE2DMSARRAY */
+#line 3066 "MachineIndependent/glslang.y"
{
(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 9835 "MachineIndependent/glslang_tab.cpp"
+#line 9893 "MachineIndependent/glslang_tab.cpp"
break;
- case 445: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */
-#line 3046 "MachineIndependent/glslang.y"
+ case 448: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */
+#line 3071 "MachineIndependent/glslang.y"
{
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 9846 "MachineIndependent/glslang_tab.cpp"
+#line 9904 "MachineIndependent/glslang_tab.cpp"
break;
- case 446: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */
-#line 3052 "MachineIndependent/glslang.y"
+ case 449: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */
+#line 3077 "MachineIndependent/glslang.y"
{
(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 9856 "MachineIndependent/glslang_tab.cpp"
+#line 9914 "MachineIndependent/glslang_tab.cpp"
break;
- case 447: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */
-#line 3057 "MachineIndependent/glslang.y"
+ case 450: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */
+#line 3082 "MachineIndependent/glslang.y"
{
(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 9866 "MachineIndependent/glslang_tab.cpp"
+#line 9924 "MachineIndependent/glslang_tab.cpp"
break;
- case 448: /* type_specifier_nonarray: IMAGE1D */
-#line 3062 "MachineIndependent/glslang.y"
+ case 451: /* type_specifier_nonarray: IMAGE1D */
+#line 3087 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
}
-#line 9876 "MachineIndependent/glslang_tab.cpp"
+#line 9934 "MachineIndependent/glslang_tab.cpp"
break;
- case 449: /* type_specifier_nonarray: F16IMAGE1D */
-#line 3067 "MachineIndependent/glslang.y"
+ case 452: /* type_specifier_nonarray: F16IMAGE1D */
+#line 3092 "MachineIndependent/glslang.y"
{
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 9887 "MachineIndependent/glslang_tab.cpp"
+#line 9945 "MachineIndependent/glslang_tab.cpp"
break;
- case 450: /* type_specifier_nonarray: IIMAGE1D */
-#line 3073 "MachineIndependent/glslang.y"
+ case 453: /* type_specifier_nonarray: IIMAGE1D */
+#line 3098 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
}
-#line 9897 "MachineIndependent/glslang_tab.cpp"
+#line 9955 "MachineIndependent/glslang_tab.cpp"
break;
- case 451: /* type_specifier_nonarray: UIMAGE1D */
-#line 3078 "MachineIndependent/glslang.y"
+ case 454: /* type_specifier_nonarray: UIMAGE1D */
+#line 3103 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
}
-#line 9907 "MachineIndependent/glslang_tab.cpp"
+#line 9965 "MachineIndependent/glslang_tab.cpp"
break;
- case 452: /* type_specifier_nonarray: IMAGE2D */
-#line 3083 "MachineIndependent/glslang.y"
+ case 455: /* type_specifier_nonarray: IMAGE2D */
+#line 3108 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
}
-#line 9917 "MachineIndependent/glslang_tab.cpp"
+#line 9975 "MachineIndependent/glslang_tab.cpp"
break;
- case 453: /* type_specifier_nonarray: F16IMAGE2D */
-#line 3088 "MachineIndependent/glslang.y"
+ case 456: /* type_specifier_nonarray: F16IMAGE2D */
+#line 3113 "MachineIndependent/glslang.y"
{
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 9928 "MachineIndependent/glslang_tab.cpp"
+#line 9986 "MachineIndependent/glslang_tab.cpp"
break;
- case 454: /* type_specifier_nonarray: IIMAGE2D */
-#line 3094 "MachineIndependent/glslang.y"
+ case 457: /* type_specifier_nonarray: IIMAGE2D */
+#line 3119 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
}
-#line 9938 "MachineIndependent/glslang_tab.cpp"
+#line 9996 "MachineIndependent/glslang_tab.cpp"
break;
- case 455: /* type_specifier_nonarray: UIMAGE2D */
-#line 3099 "MachineIndependent/glslang.y"
+ case 458: /* type_specifier_nonarray: UIMAGE2D */
+#line 3124 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
}
-#line 9948 "MachineIndependent/glslang_tab.cpp"
+#line 10006 "MachineIndependent/glslang_tab.cpp"
break;
- case 456: /* type_specifier_nonarray: IMAGE3D */
-#line 3104 "MachineIndependent/glslang.y"
+ case 459: /* type_specifier_nonarray: IMAGE3D */
+#line 3129 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
}
-#line 9958 "MachineIndependent/glslang_tab.cpp"
+#line 10016 "MachineIndependent/glslang_tab.cpp"
break;
- case 457: /* type_specifier_nonarray: F16IMAGE3D */
-#line 3109 "MachineIndependent/glslang.y"
+ case 460: /* type_specifier_nonarray: F16IMAGE3D */
+#line 3134 "MachineIndependent/glslang.y"
{
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 9969 "MachineIndependent/glslang_tab.cpp"
+#line 10027 "MachineIndependent/glslang_tab.cpp"
break;
- case 458: /* type_specifier_nonarray: IIMAGE3D */
-#line 3115 "MachineIndependent/glslang.y"
+ case 461: /* type_specifier_nonarray: IIMAGE3D */
+#line 3140 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
}
-#line 9979 "MachineIndependent/glslang_tab.cpp"
+#line 10037 "MachineIndependent/glslang_tab.cpp"
break;
- case 459: /* type_specifier_nonarray: UIMAGE3D */
-#line 3120 "MachineIndependent/glslang.y"
+ case 462: /* type_specifier_nonarray: UIMAGE3D */
+#line 3145 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
}
-#line 9989 "MachineIndependent/glslang_tab.cpp"
+#line 10047 "MachineIndependent/glslang_tab.cpp"
break;
- case 460: /* type_specifier_nonarray: IMAGE2DRECT */
-#line 3125 "MachineIndependent/glslang.y"
+ case 463: /* type_specifier_nonarray: IMAGE2DRECT */
+#line 3150 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
}
-#line 9999 "MachineIndependent/glslang_tab.cpp"
+#line 10057 "MachineIndependent/glslang_tab.cpp"
break;
- case 461: /* type_specifier_nonarray: F16IMAGE2DRECT */
-#line 3130 "MachineIndependent/glslang.y"
+ case 464: /* type_specifier_nonarray: F16IMAGE2DRECT */
+#line 3155 "MachineIndependent/glslang.y"
{
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 10010 "MachineIndependent/glslang_tab.cpp"
+#line 10068 "MachineIndependent/glslang_tab.cpp"
break;
- case 462: /* type_specifier_nonarray: IIMAGE2DRECT */
-#line 3136 "MachineIndependent/glslang.y"
+ case 465: /* type_specifier_nonarray: IIMAGE2DRECT */
+#line 3161 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
}
-#line 10020 "MachineIndependent/glslang_tab.cpp"
+#line 10078 "MachineIndependent/glslang_tab.cpp"
break;
- case 463: /* type_specifier_nonarray: UIMAGE2DRECT */
-#line 3141 "MachineIndependent/glslang.y"
+ case 466: /* type_specifier_nonarray: UIMAGE2DRECT */
+#line 3166 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
}
-#line 10030 "MachineIndependent/glslang_tab.cpp"
+#line 10088 "MachineIndependent/glslang_tab.cpp"
break;
- case 464: /* type_specifier_nonarray: IMAGECUBE */
-#line 3146 "MachineIndependent/glslang.y"
+ case 467: /* type_specifier_nonarray: IMAGECUBE */
+#line 3171 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
}
-#line 10040 "MachineIndependent/glslang_tab.cpp"
+#line 10098 "MachineIndependent/glslang_tab.cpp"
break;
- case 465: /* type_specifier_nonarray: F16IMAGECUBE */
-#line 3151 "MachineIndependent/glslang.y"
+ case 468: /* type_specifier_nonarray: F16IMAGECUBE */
+#line 3176 "MachineIndependent/glslang.y"
{
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 10051 "MachineIndependent/glslang_tab.cpp"
+#line 10109 "MachineIndependent/glslang_tab.cpp"
break;
- case 466: /* type_specifier_nonarray: IIMAGECUBE */
-#line 3157 "MachineIndependent/glslang.y"
+ case 469: /* type_specifier_nonarray: IIMAGECUBE */
+#line 3182 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
}
-#line 10061 "MachineIndependent/glslang_tab.cpp"
+#line 10119 "MachineIndependent/glslang_tab.cpp"
break;
- case 467: /* type_specifier_nonarray: UIMAGECUBE */
-#line 3162 "MachineIndependent/glslang.y"
+ case 470: /* type_specifier_nonarray: UIMAGECUBE */
+#line 3187 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
}
-#line 10071 "MachineIndependent/glslang_tab.cpp"
+#line 10129 "MachineIndependent/glslang_tab.cpp"
break;
- case 468: /* type_specifier_nonarray: IMAGEBUFFER */
-#line 3167 "MachineIndependent/glslang.y"
+ case 471: /* type_specifier_nonarray: IMAGEBUFFER */
+#line 3192 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
}
-#line 10081 "MachineIndependent/glslang_tab.cpp"
+#line 10139 "MachineIndependent/glslang_tab.cpp"
break;
- case 469: /* type_specifier_nonarray: F16IMAGEBUFFER */
-#line 3172 "MachineIndependent/glslang.y"
+ case 472: /* type_specifier_nonarray: F16IMAGEBUFFER */
+#line 3197 "MachineIndependent/glslang.y"
{
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 10092 "MachineIndependent/glslang_tab.cpp"
+#line 10150 "MachineIndependent/glslang_tab.cpp"
break;
- case 470: /* type_specifier_nonarray: IIMAGEBUFFER */
-#line 3178 "MachineIndependent/glslang.y"
+ case 473: /* type_specifier_nonarray: IIMAGEBUFFER */
+#line 3203 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
}
-#line 10102 "MachineIndependent/glslang_tab.cpp"
+#line 10160 "MachineIndependent/glslang_tab.cpp"
break;
- case 471: /* type_specifier_nonarray: UIMAGEBUFFER */
-#line 3183 "MachineIndependent/glslang.y"
+ case 474: /* type_specifier_nonarray: UIMAGEBUFFER */
+#line 3208 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
}
-#line 10112 "MachineIndependent/glslang_tab.cpp"
+#line 10170 "MachineIndependent/glslang_tab.cpp"
break;
- case 472: /* type_specifier_nonarray: IMAGE1DARRAY */
-#line 3188 "MachineIndependent/glslang.y"
+ case 475: /* type_specifier_nonarray: IMAGE1DARRAY */
+#line 3213 "MachineIndependent/glslang.y"
{
(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 10122 "MachineIndependent/glslang_tab.cpp"
+#line 10180 "MachineIndependent/glslang_tab.cpp"
break;
- case 473: /* type_specifier_nonarray: F16IMAGE1DARRAY */
-#line 3193 "MachineIndependent/glslang.y"
+ case 476: /* type_specifier_nonarray: F16IMAGE1DARRAY */
+#line 3218 "MachineIndependent/glslang.y"
{
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 10133 "MachineIndependent/glslang_tab.cpp"
+#line 10191 "MachineIndependent/glslang_tab.cpp"
break;
- case 474: /* type_specifier_nonarray: IIMAGE1DARRAY */
-#line 3199 "MachineIndependent/glslang.y"
+ case 477: /* type_specifier_nonarray: IIMAGE1DARRAY */
+#line 3224 "MachineIndependent/glslang.y"
{
(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 10143 "MachineIndependent/glslang_tab.cpp"
+#line 10201 "MachineIndependent/glslang_tab.cpp"
break;
- case 475: /* type_specifier_nonarray: UIMAGE1DARRAY */
-#line 3204 "MachineIndependent/glslang.y"
+ case 478: /* type_specifier_nonarray: UIMAGE1DARRAY */
+#line 3229 "MachineIndependent/glslang.y"
{
(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 10153 "MachineIndependent/glslang_tab.cpp"
+#line 10211 "MachineIndependent/glslang_tab.cpp"
break;
- case 476: /* type_specifier_nonarray: IMAGE2DARRAY */
-#line 3209 "MachineIndependent/glslang.y"
+ case 479: /* type_specifier_nonarray: IMAGE2DARRAY */
+#line 3234 "MachineIndependent/glslang.y"
{
(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 10163 "MachineIndependent/glslang_tab.cpp"
+#line 10221 "MachineIndependent/glslang_tab.cpp"
break;
- case 477: /* type_specifier_nonarray: F16IMAGE2DARRAY */
-#line 3214 "MachineIndependent/glslang.y"
+ case 480: /* type_specifier_nonarray: F16IMAGE2DARRAY */
+#line 3239 "MachineIndependent/glslang.y"
{
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 10174 "MachineIndependent/glslang_tab.cpp"
+#line 10232 "MachineIndependent/glslang_tab.cpp"
break;
- case 478: /* type_specifier_nonarray: IIMAGE2DARRAY */
-#line 3220 "MachineIndependent/glslang.y"
+ case 481: /* type_specifier_nonarray: IIMAGE2DARRAY */
+#line 3245 "MachineIndependent/glslang.y"
{
(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 10184 "MachineIndependent/glslang_tab.cpp"
+#line 10242 "MachineIndependent/glslang_tab.cpp"
break;
- case 479: /* type_specifier_nonarray: UIMAGE2DARRAY */
-#line 3225 "MachineIndependent/glslang.y"
+ case 482: /* type_specifier_nonarray: UIMAGE2DARRAY */
+#line 3250 "MachineIndependent/glslang.y"
{
(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 10194 "MachineIndependent/glslang_tab.cpp"
+#line 10252 "MachineIndependent/glslang_tab.cpp"
break;
- case 480: /* type_specifier_nonarray: IMAGECUBEARRAY */
-#line 3230 "MachineIndependent/glslang.y"
+ case 483: /* type_specifier_nonarray: IMAGECUBEARRAY */
+#line 3255 "MachineIndependent/glslang.y"
{
(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 10204 "MachineIndependent/glslang_tab.cpp"
+#line 10262 "MachineIndependent/glslang_tab.cpp"
break;
- case 481: /* type_specifier_nonarray: F16IMAGECUBEARRAY */
-#line 3235 "MachineIndependent/glslang.y"
+ case 484: /* type_specifier_nonarray: F16IMAGECUBEARRAY */
+#line 3260 "MachineIndependent/glslang.y"
{
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 10215 "MachineIndependent/glslang_tab.cpp"
+#line 10273 "MachineIndependent/glslang_tab.cpp"
break;
- case 482: /* type_specifier_nonarray: IIMAGECUBEARRAY */
-#line 3241 "MachineIndependent/glslang.y"
+ case 485: /* type_specifier_nonarray: IIMAGECUBEARRAY */
+#line 3266 "MachineIndependent/glslang.y"
{
(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 10225 "MachineIndependent/glslang_tab.cpp"
+#line 10283 "MachineIndependent/glslang_tab.cpp"
break;
- case 483: /* type_specifier_nonarray: UIMAGECUBEARRAY */
-#line 3246 "MachineIndependent/glslang.y"
+ case 486: /* type_specifier_nonarray: UIMAGECUBEARRAY */
+#line 3271 "MachineIndependent/glslang.y"
{
(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 10235 "MachineIndependent/glslang_tab.cpp"
+#line 10293 "MachineIndependent/glslang_tab.cpp"
break;
- case 484: /* type_specifier_nonarray: IMAGE2DMS */
-#line 3251 "MachineIndependent/glslang.y"
+ case 487: /* type_specifier_nonarray: IMAGE2DMS */
+#line 3276 "MachineIndependent/glslang.y"
{
(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 10245 "MachineIndependent/glslang_tab.cpp"
+#line 10303 "MachineIndependent/glslang_tab.cpp"
break;
- case 485: /* type_specifier_nonarray: F16IMAGE2DMS */
-#line 3256 "MachineIndependent/glslang.y"
+ case 488: /* type_specifier_nonarray: F16IMAGE2DMS */
+#line 3281 "MachineIndependent/glslang.y"
{
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 10256 "MachineIndependent/glslang_tab.cpp"
+#line 10314 "MachineIndependent/glslang_tab.cpp"
break;
- case 486: /* type_specifier_nonarray: IIMAGE2DMS */
-#line 3262 "MachineIndependent/glslang.y"
+ case 489: /* type_specifier_nonarray: IIMAGE2DMS */
+#line 3287 "MachineIndependent/glslang.y"
{
(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 10266 "MachineIndependent/glslang_tab.cpp"
+#line 10324 "MachineIndependent/glslang_tab.cpp"
break;
- case 487: /* type_specifier_nonarray: UIMAGE2DMS */
-#line 3267 "MachineIndependent/glslang.y"
+ case 490: /* type_specifier_nonarray: UIMAGE2DMS */
+#line 3292 "MachineIndependent/glslang.y"
{
(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 10276 "MachineIndependent/glslang_tab.cpp"
+#line 10334 "MachineIndependent/glslang_tab.cpp"
break;
- case 488: /* type_specifier_nonarray: IMAGE2DMSARRAY */
-#line 3272 "MachineIndependent/glslang.y"
+ case 491: /* type_specifier_nonarray: IMAGE2DMSARRAY */
+#line 3297 "MachineIndependent/glslang.y"
{
(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 10286 "MachineIndependent/glslang_tab.cpp"
+#line 10344 "MachineIndependent/glslang_tab.cpp"
break;
- case 489: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */
-#line 3277 "MachineIndependent/glslang.y"
+ case 492: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */
+#line 3302 "MachineIndependent/glslang.y"
{
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 10297 "MachineIndependent/glslang_tab.cpp"
+#line 10355 "MachineIndependent/glslang_tab.cpp"
break;
- case 490: /* type_specifier_nonarray: IIMAGE2DMSARRAY */
-#line 3283 "MachineIndependent/glslang.y"
+ case 493: /* type_specifier_nonarray: IIMAGE2DMSARRAY */
+#line 3308 "MachineIndependent/glslang.y"
{
(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 10307 "MachineIndependent/glslang_tab.cpp"
+#line 10365 "MachineIndependent/glslang_tab.cpp"
break;
- case 491: /* type_specifier_nonarray: UIMAGE2DMSARRAY */
-#line 3288 "MachineIndependent/glslang.y"
+ case 494: /* type_specifier_nonarray: UIMAGE2DMSARRAY */
+#line 3313 "MachineIndependent/glslang.y"
{
(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 10317 "MachineIndependent/glslang_tab.cpp"
+#line 10375 "MachineIndependent/glslang_tab.cpp"
break;
- case 492: /* type_specifier_nonarray: I64IMAGE1D */
-#line 3293 "MachineIndependent/glslang.y"
+ case 495: /* type_specifier_nonarray: I64IMAGE1D */
+#line 3318 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd1D);
}
-#line 10327 "MachineIndependent/glslang_tab.cpp"
+#line 10385 "MachineIndependent/glslang_tab.cpp"
break;
- case 493: /* type_specifier_nonarray: U64IMAGE1D */
-#line 3298 "MachineIndependent/glslang.y"
+ case 496: /* type_specifier_nonarray: U64IMAGE1D */
+#line 3323 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd1D);
}
-#line 10337 "MachineIndependent/glslang_tab.cpp"
+#line 10395 "MachineIndependent/glslang_tab.cpp"
break;
- case 494: /* type_specifier_nonarray: I64IMAGE2D */
-#line 3303 "MachineIndependent/glslang.y"
+ case 497: /* type_specifier_nonarray: I64IMAGE2D */
+#line 3328 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd2D);
}
-#line 10347 "MachineIndependent/glslang_tab.cpp"
+#line 10405 "MachineIndependent/glslang_tab.cpp"
break;
- case 495: /* type_specifier_nonarray: U64IMAGE2D */
-#line 3308 "MachineIndependent/glslang.y"
+ case 498: /* type_specifier_nonarray: U64IMAGE2D */
+#line 3333 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd2D);
}
-#line 10357 "MachineIndependent/glslang_tab.cpp"
+#line 10415 "MachineIndependent/glslang_tab.cpp"
break;
- case 496: /* type_specifier_nonarray: I64IMAGE3D */
-#line 3313 "MachineIndependent/glslang.y"
+ case 499: /* type_specifier_nonarray: I64IMAGE3D */
+#line 3338 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd3D);
}
-#line 10367 "MachineIndependent/glslang_tab.cpp"
+#line 10425 "MachineIndependent/glslang_tab.cpp"
break;
- case 497: /* type_specifier_nonarray: U64IMAGE3D */
-#line 3318 "MachineIndependent/glslang.y"
+ case 500: /* type_specifier_nonarray: U64IMAGE3D */
+#line 3343 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd3D);
}
-#line 10377 "MachineIndependent/glslang_tab.cpp"
+#line 10435 "MachineIndependent/glslang_tab.cpp"
break;
- case 498: /* type_specifier_nonarray: I64IMAGE2DRECT */
-#line 3323 "MachineIndependent/glslang.y"
+ case 501: /* type_specifier_nonarray: I64IMAGE2DRECT */
+#line 3348 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, EsdRect);
}
-#line 10387 "MachineIndependent/glslang_tab.cpp"
+#line 10445 "MachineIndependent/glslang_tab.cpp"
break;
- case 499: /* type_specifier_nonarray: U64IMAGE2DRECT */
-#line 3328 "MachineIndependent/glslang.y"
+ case 502: /* type_specifier_nonarray: U64IMAGE2DRECT */
+#line 3353 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, EsdRect);
}
-#line 10397 "MachineIndependent/glslang_tab.cpp"
+#line 10455 "MachineIndependent/glslang_tab.cpp"
break;
- case 500: /* type_specifier_nonarray: I64IMAGECUBE */
-#line 3333 "MachineIndependent/glslang.y"
+ case 503: /* type_specifier_nonarray: I64IMAGECUBE */
+#line 3358 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, EsdCube);
}
-#line 10407 "MachineIndependent/glslang_tab.cpp"
+#line 10465 "MachineIndependent/glslang_tab.cpp"
break;
- case 501: /* type_specifier_nonarray: U64IMAGECUBE */
-#line 3338 "MachineIndependent/glslang.y"
+ case 504: /* type_specifier_nonarray: U64IMAGECUBE */
+#line 3363 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, EsdCube);
}
-#line 10417 "MachineIndependent/glslang_tab.cpp"
+#line 10475 "MachineIndependent/glslang_tab.cpp"
break;
- case 502: /* type_specifier_nonarray: I64IMAGEBUFFER */
-#line 3343 "MachineIndependent/glslang.y"
+ case 505: /* type_specifier_nonarray: I64IMAGEBUFFER */
+#line 3368 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer);
}
-#line 10427 "MachineIndependent/glslang_tab.cpp"
+#line 10485 "MachineIndependent/glslang_tab.cpp"
break;
- case 503: /* type_specifier_nonarray: U64IMAGEBUFFER */
-#line 3348 "MachineIndependent/glslang.y"
+ case 506: /* type_specifier_nonarray: U64IMAGEBUFFER */
+#line 3373 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer);
}
-#line 10437 "MachineIndependent/glslang_tab.cpp"
+#line 10495 "MachineIndependent/glslang_tab.cpp"
break;
- case 504: /* type_specifier_nonarray: I64IMAGE1DARRAY */
-#line 3353 "MachineIndependent/glslang.y"
+ case 507: /* type_specifier_nonarray: I64IMAGE1DARRAY */
+#line 3378 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true);
}
-#line 10447 "MachineIndependent/glslang_tab.cpp"
+#line 10505 "MachineIndependent/glslang_tab.cpp"
break;
- case 505: /* type_specifier_nonarray: U64IMAGE1DARRAY */
-#line 3358 "MachineIndependent/glslang.y"
+ case 508: /* type_specifier_nonarray: U64IMAGE1DARRAY */
+#line 3383 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true);
}
-#line 10457 "MachineIndependent/glslang_tab.cpp"
+#line 10515 "MachineIndependent/glslang_tab.cpp"
break;
- case 506: /* type_specifier_nonarray: I64IMAGE2DARRAY */
-#line 3363 "MachineIndependent/glslang.y"
+ case 509: /* type_specifier_nonarray: I64IMAGE2DARRAY */
+#line 3388 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true);
}
-#line 10467 "MachineIndependent/glslang_tab.cpp"
+#line 10525 "MachineIndependent/glslang_tab.cpp"
break;
- case 507: /* type_specifier_nonarray: U64IMAGE2DARRAY */
-#line 3368 "MachineIndependent/glslang.y"
+ case 510: /* type_specifier_nonarray: U64IMAGE2DARRAY */
+#line 3393 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true);
}
-#line 10477 "MachineIndependent/glslang_tab.cpp"
+#line 10535 "MachineIndependent/glslang_tab.cpp"
break;
- case 508: /* type_specifier_nonarray: I64IMAGECUBEARRAY */
-#line 3373 "MachineIndependent/glslang.y"
+ case 511: /* type_specifier_nonarray: I64IMAGECUBEARRAY */
+#line 3398 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true);
}
-#line 10487 "MachineIndependent/glslang_tab.cpp"
+#line 10545 "MachineIndependent/glslang_tab.cpp"
break;
- case 509: /* type_specifier_nonarray: U64IMAGECUBEARRAY */
-#line 3378 "MachineIndependent/glslang.y"
+ case 512: /* type_specifier_nonarray: U64IMAGECUBEARRAY */
+#line 3403 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true);
}
-#line 10497 "MachineIndependent/glslang_tab.cpp"
+#line 10555 "MachineIndependent/glslang_tab.cpp"
break;
- case 510: /* type_specifier_nonarray: I64IMAGE2DMS */
-#line 3383 "MachineIndependent/glslang.y"
+ case 513: /* type_specifier_nonarray: I64IMAGE2DMS */
+#line 3408 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true);
}
-#line 10507 "MachineIndependent/glslang_tab.cpp"
+#line 10565 "MachineIndependent/glslang_tab.cpp"
break;
- case 511: /* type_specifier_nonarray: U64IMAGE2DMS */
-#line 3388 "MachineIndependent/glslang.y"
+ case 514: /* type_specifier_nonarray: U64IMAGE2DMS */
+#line 3413 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true);
}
-#line 10517 "MachineIndependent/glslang_tab.cpp"
+#line 10575 "MachineIndependent/glslang_tab.cpp"
break;
- case 512: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */
-#line 3393 "MachineIndependent/glslang.y"
+ case 515: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */
+#line 3418 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true);
}
-#line 10527 "MachineIndependent/glslang_tab.cpp"
+#line 10585 "MachineIndependent/glslang_tab.cpp"
break;
- case 513: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */
-#line 3398 "MachineIndependent/glslang.y"
+ case 516: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */
+#line 3423 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true);
}
-#line 10537 "MachineIndependent/glslang_tab.cpp"
+#line 10595 "MachineIndependent/glslang_tab.cpp"
break;
- case 514: /* type_specifier_nonarray: SAMPLEREXTERNALOES */
-#line 3403 "MachineIndependent/glslang.y"
+ case 517: /* type_specifier_nonarray: SAMPLEREXTERNALOES */
+#line 3428 "MachineIndependent/glslang.y"
{ // 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 10548 "MachineIndependent/glslang_tab.cpp"
+#line 10606 "MachineIndependent/glslang_tab.cpp"
break;
- case 515: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */
-#line 3409 "MachineIndependent/glslang.y"
+ case 518: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */
+#line 3434 "MachineIndependent/glslang.y"
{ // 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 10559 "MachineIndependent/glslang_tab.cpp"
+#line 10617 "MachineIndependent/glslang_tab.cpp"
break;
- case 516: /* type_specifier_nonarray: SUBPASSINPUT */
-#line 3415 "MachineIndependent/glslang.y"
+ case 519: /* type_specifier_nonarray: SUBPASSINPUT */
+#line 3440 "MachineIndependent/glslang.y"
{
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 10570 "MachineIndependent/glslang_tab.cpp"
+#line 10628 "MachineIndependent/glslang_tab.cpp"
break;
- case 517: /* type_specifier_nonarray: SUBPASSINPUTMS */
-#line 3421 "MachineIndependent/glslang.y"
+ case 520: /* type_specifier_nonarray: SUBPASSINPUTMS */
+#line 3446 "MachineIndependent/glslang.y"
{
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 10581 "MachineIndependent/glslang_tab.cpp"
+#line 10639 "MachineIndependent/glslang_tab.cpp"
break;
- case 518: /* type_specifier_nonarray: F16SUBPASSINPUT */
-#line 3427 "MachineIndependent/glslang.y"
+ case 521: /* type_specifier_nonarray: F16SUBPASSINPUT */
+#line 3452 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
@@ -10589,11 +10647,11 @@
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat16);
}
-#line 10593 "MachineIndependent/glslang_tab.cpp"
+#line 10651 "MachineIndependent/glslang_tab.cpp"
break;
- case 519: /* type_specifier_nonarray: F16SUBPASSINPUTMS */
-#line 3434 "MachineIndependent/glslang.y"
+ case 522: /* type_specifier_nonarray: F16SUBPASSINPUTMS */
+#line 3459 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
@@ -10601,107 +10659,107 @@
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat16, true);
}
-#line 10605 "MachineIndependent/glslang_tab.cpp"
+#line 10663 "MachineIndependent/glslang_tab.cpp"
break;
- case 520: /* type_specifier_nonarray: ISUBPASSINPUT */
-#line 3441 "MachineIndependent/glslang.y"
+ case 523: /* type_specifier_nonarray: ISUBPASSINPUT */
+#line 3466 "MachineIndependent/glslang.y"
{
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 10616 "MachineIndependent/glslang_tab.cpp"
+#line 10674 "MachineIndependent/glslang_tab.cpp"
break;
- case 521: /* type_specifier_nonarray: ISUBPASSINPUTMS */
-#line 3447 "MachineIndependent/glslang.y"
+ case 524: /* type_specifier_nonarray: ISUBPASSINPUTMS */
+#line 3472 "MachineIndependent/glslang.y"
{
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 10627 "MachineIndependent/glslang_tab.cpp"
+#line 10685 "MachineIndependent/glslang_tab.cpp"
break;
- case 522: /* type_specifier_nonarray: USUBPASSINPUT */
-#line 3453 "MachineIndependent/glslang.y"
+ case 525: /* type_specifier_nonarray: USUBPASSINPUT */
+#line 3478 "MachineIndependent/glslang.y"
{
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 10638 "MachineIndependent/glslang_tab.cpp"
+#line 10696 "MachineIndependent/glslang_tab.cpp"
break;
- case 523: /* type_specifier_nonarray: USUBPASSINPUTMS */
-#line 3459 "MachineIndependent/glslang.y"
+ case 526: /* type_specifier_nonarray: USUBPASSINPUTMS */
+#line 3484 "MachineIndependent/glslang.y"
{
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 10649 "MachineIndependent/glslang_tab.cpp"
+#line 10707 "MachineIndependent/glslang_tab.cpp"
break;
- case 524: /* type_specifier_nonarray: FCOOPMATNV */
-#line 3465 "MachineIndependent/glslang.y"
+ case 527: /* type_specifier_nonarray: FCOOPMATNV */
+#line 3490 "MachineIndependent/glslang.y"
{
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 10660 "MachineIndependent/glslang_tab.cpp"
+#line 10718 "MachineIndependent/glslang_tab.cpp"
break;
- case 525: /* type_specifier_nonarray: ICOOPMATNV */
-#line 3471 "MachineIndependent/glslang.y"
+ case 528: /* type_specifier_nonarray: ICOOPMATNV */
+#line 3496 "MachineIndependent/glslang.y"
{
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 10671 "MachineIndependent/glslang_tab.cpp"
+#line 10729 "MachineIndependent/glslang_tab.cpp"
break;
- case 526: /* type_specifier_nonarray: UCOOPMATNV */
-#line 3477 "MachineIndependent/glslang.y"
+ case 529: /* type_specifier_nonarray: UCOOPMATNV */
+#line 3502 "MachineIndependent/glslang.y"
{
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 10682 "MachineIndependent/glslang_tab.cpp"
+#line 10740 "MachineIndependent/glslang_tab.cpp"
break;
- case 527: /* type_specifier_nonarray: spirv_type_specifier */
-#line 3483 "MachineIndependent/glslang.y"
+ case 530: /* type_specifier_nonarray: spirv_type_specifier */
+#line 3508 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier");
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 10691 "MachineIndependent/glslang_tab.cpp"
+#line 10749 "MachineIndependent/glslang_tab.cpp"
break;
- case 528: /* type_specifier_nonarray: struct_specifier */
-#line 3488 "MachineIndependent/glslang.y"
+ case 531: /* type_specifier_nonarray: struct_specifier */
+#line 3513 "MachineIndependent/glslang.y"
{
(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 10701 "MachineIndependent/glslang_tab.cpp"
+#line 10759 "MachineIndependent/glslang_tab.cpp"
break;
- case 529: /* type_specifier_nonarray: TYPE_NAME */
-#line 3493 "MachineIndependent/glslang.y"
+ case 532: /* type_specifier_nonarray: TYPE_NAME */
+#line 3518 "MachineIndependent/glslang.y"
{
//
// This is for user defined type names. The lexical phase looked up the
@@ -10715,47 +10773,47 @@
} else
parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
}
-#line 10719 "MachineIndependent/glslang_tab.cpp"
+#line 10777 "MachineIndependent/glslang_tab.cpp"
break;
- case 530: /* precision_qualifier: HIGH_PRECISION */
-#line 3509 "MachineIndependent/glslang.y"
+ case 533: /* precision_qualifier: HIGH_PRECISION */
+#line 3534 "MachineIndependent/glslang.y"
{
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 10729 "MachineIndependent/glslang_tab.cpp"
+#line 10787 "MachineIndependent/glslang_tab.cpp"
break;
- case 531: /* precision_qualifier: MEDIUM_PRECISION */
-#line 3514 "MachineIndependent/glslang.y"
+ case 534: /* precision_qualifier: MEDIUM_PRECISION */
+#line 3539 "MachineIndependent/glslang.y"
{
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 10739 "MachineIndependent/glslang_tab.cpp"
+#line 10797 "MachineIndependent/glslang_tab.cpp"
break;
- case 532: /* precision_qualifier: LOW_PRECISION */
-#line 3519 "MachineIndependent/glslang.y"
+ case 535: /* precision_qualifier: LOW_PRECISION */
+#line 3544 "MachineIndependent/glslang.y"
{
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 10749 "MachineIndependent/glslang_tab.cpp"
+#line 10807 "MachineIndependent/glslang_tab.cpp"
break;
- case 533: /* $@3: %empty */
-#line 3527 "MachineIndependent/glslang.y"
+ case 536: /* $@3: %empty */
+#line 3552 "MachineIndependent/glslang.y"
{ parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 10755 "MachineIndependent/glslang_tab.cpp"
+#line 10813 "MachineIndependent/glslang_tab.cpp"
break;
- case 534: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */
-#line 3527 "MachineIndependent/glslang.y"
+ case 537: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */
+#line 3552 "MachineIndependent/glslang.y"
{
TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure);
@@ -10767,17 +10825,17 @@
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 10771 "MachineIndependent/glslang_tab.cpp"
+#line 10829 "MachineIndependent/glslang_tab.cpp"
break;
- case 535: /* $@4: %empty */
-#line 3538 "MachineIndependent/glslang.y"
+ case 538: /* $@4: %empty */
+#line 3563 "MachineIndependent/glslang.y"
{ parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 10777 "MachineIndependent/glslang_tab.cpp"
+#line 10835 "MachineIndependent/glslang_tab.cpp"
break;
- case 536: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */
-#line 3538 "MachineIndependent/glslang.y"
+ case 539: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */
+#line 3563 "MachineIndependent/glslang.y"
{
TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
(yyval.interm.type).init((yyvsp[-4].lex).loc);
@@ -10785,19 +10843,19 @@
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 10789 "MachineIndependent/glslang_tab.cpp"
+#line 10847 "MachineIndependent/glslang_tab.cpp"
break;
- case 537: /* struct_declaration_list: struct_declaration */
-#line 3548 "MachineIndependent/glslang.y"
+ case 540: /* struct_declaration_list: struct_declaration */
+#line 3573 "MachineIndependent/glslang.y"
{
(yyval.interm.typeList) = (yyvsp[0].interm.typeList);
}
-#line 10797 "MachineIndependent/glslang_tab.cpp"
+#line 10855 "MachineIndependent/glslang_tab.cpp"
break;
- case 538: /* struct_declaration_list: struct_declaration_list struct_declaration */
-#line 3551 "MachineIndependent/glslang.y"
+ case 541: /* struct_declaration_list: struct_declaration_list struct_declaration */
+#line 3576 "MachineIndependent/glslang.y"
{
(yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
@@ -10808,11 +10866,11 @@
(yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
}
}
-#line 10812 "MachineIndependent/glslang_tab.cpp"
+#line 10870 "MachineIndependent/glslang_tab.cpp"
break;
- case 539: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */
-#line 3564 "MachineIndependent/glslang.y"
+ case 542: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */
+#line 3589 "MachineIndependent/glslang.y"
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -10835,11 +10893,11 @@
(*(yyval.interm.typeList))[i].type->shallowCopy(type);
}
}
-#line 10839 "MachineIndependent/glslang_tab.cpp"
+#line 10897 "MachineIndependent/glslang_tab.cpp"
break;
- case 540: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */
-#line 3586 "MachineIndependent/glslang.y"
+ case 543: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */
+#line 3611 "MachineIndependent/glslang.y"
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -10864,38 +10922,38 @@
(*(yyval.interm.typeList))[i].type->shallowCopy(type);
}
}
-#line 10868 "MachineIndependent/glslang_tab.cpp"
+#line 10926 "MachineIndependent/glslang_tab.cpp"
break;
- case 541: /* struct_declarator_list: struct_declarator */
-#line 3613 "MachineIndependent/glslang.y"
+ case 544: /* struct_declarator_list: struct_declarator */
+#line 3638 "MachineIndependent/glslang.y"
{
(yyval.interm.typeList) = new TTypeList;
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 10877 "MachineIndependent/glslang_tab.cpp"
+#line 10935 "MachineIndependent/glslang_tab.cpp"
break;
- case 542: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */
-#line 3617 "MachineIndependent/glslang.y"
+ case 545: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */
+#line 3642 "MachineIndependent/glslang.y"
{
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 10885 "MachineIndependent/glslang_tab.cpp"
+#line 10943 "MachineIndependent/glslang_tab.cpp"
break;
- case 543: /* struct_declarator: IDENTIFIER */
-#line 3623 "MachineIndependent/glslang.y"
+ case 546: /* struct_declarator: IDENTIFIER */
+#line 3648 "MachineIndependent/glslang.y"
{
(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 10895 "MachineIndependent/glslang_tab.cpp"
+#line 10953 "MachineIndependent/glslang_tab.cpp"
break;
- case 544: /* struct_declarator: IDENTIFIER array_specifier */
-#line 3628 "MachineIndependent/glslang.y"
+ case 547: /* struct_declarator: IDENTIFIER array_specifier */
+#line 3653 "MachineIndependent/glslang.y"
{
parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes);
@@ -10904,246 +10962,246 @@
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
(yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes);
}
-#line 10908 "MachineIndependent/glslang_tab.cpp"
+#line 10966 "MachineIndependent/glslang_tab.cpp"
break;
- case 545: /* initializer: assignment_expression */
-#line 3639 "MachineIndependent/glslang.y"
+ case 548: /* initializer: assignment_expression */
+#line 3664 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 10916 "MachineIndependent/glslang_tab.cpp"
+#line 10974 "MachineIndependent/glslang_tab.cpp"
break;
- case 546: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */
-#line 3643 "MachineIndependent/glslang.y"
+ case 549: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */
+#line 3668 "MachineIndependent/glslang.y"
{
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 10927 "MachineIndependent/glslang_tab.cpp"
+#line 10985 "MachineIndependent/glslang_tab.cpp"
break;
- case 547: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */
-#line 3649 "MachineIndependent/glslang.y"
+ case 550: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */
+#line 3674 "MachineIndependent/glslang.y"
{
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 10938 "MachineIndependent/glslang_tab.cpp"
+#line 10996 "MachineIndependent/glslang_tab.cpp"
break;
- case 548: /* initializer: LEFT_BRACE RIGHT_BRACE */
-#line 3655 "MachineIndependent/glslang.y"
+ case 551: /* initializer: LEFT_BRACE RIGHT_BRACE */
+#line 3680 "MachineIndependent/glslang.y"
{
const char* initFeature = "empty { } initializer";
parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature);
parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature);
(yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc);
}
-#line 10949 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 549: /* initializer_list: initializer */
-#line 3666 "MachineIndependent/glslang.y"
- {
- (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
- }
-#line 10957 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 550: /* initializer_list: initializer_list COMMA initializer */
-#line 3669 "MachineIndependent/glslang.y"
- {
- (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
- }
-#line 10965 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 551: /* declaration_statement: declaration */
-#line 3676 "MachineIndependent/glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10971 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 552: /* statement: compound_statement */
-#line 3680 "MachineIndependent/glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10977 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 553: /* statement: simple_statement */
-#line 3681 "MachineIndependent/glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10983 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 554: /* simple_statement: declaration_statement */
-#line 3687 "MachineIndependent/glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10989 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 555: /* simple_statement: expression_statement */
-#line 3688 "MachineIndependent/glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10995 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 556: /* simple_statement: selection_statement */
-#line 3689 "MachineIndependent/glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11001 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 557: /* simple_statement: switch_statement */
-#line 3690 "MachineIndependent/glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
#line 11007 "MachineIndependent/glslang_tab.cpp"
break;
- case 558: /* simple_statement: case_label */
+ case 552: /* initializer_list: initializer */
#line 3691 "MachineIndependent/glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11013 "MachineIndependent/glslang_tab.cpp"
+ {
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
+ }
+#line 11015 "MachineIndependent/glslang_tab.cpp"
break;
- case 559: /* simple_statement: iteration_statement */
-#line 3692 "MachineIndependent/glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11019 "MachineIndependent/glslang_tab.cpp"
+ case 553: /* initializer_list: initializer_list COMMA initializer */
+#line 3694 "MachineIndependent/glslang.y"
+ {
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+ }
+#line 11023 "MachineIndependent/glslang_tab.cpp"
break;
- case 560: /* simple_statement: jump_statement */
-#line 3693 "MachineIndependent/glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11025 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 561: /* simple_statement: demote_statement */
-#line 3695 "MachineIndependent/glslang.y"
- { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11031 "MachineIndependent/glslang_tab.cpp"
- break;
-
- case 562: /* demote_statement: DEMOTE SEMICOLON */
+ case 554: /* declaration_statement: declaration */
#line 3701 "MachineIndependent/glslang.y"
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 11029 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 555: /* statement: compound_statement */
+#line 3705 "MachineIndependent/glslang.y"
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 11035 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 556: /* statement: simple_statement */
+#line 3706 "MachineIndependent/glslang.y"
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 11041 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 557: /* simple_statement: declaration_statement */
+#line 3712 "MachineIndependent/glslang.y"
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 11047 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 558: /* simple_statement: expression_statement */
+#line 3713 "MachineIndependent/glslang.y"
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 11053 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 559: /* simple_statement: selection_statement */
+#line 3714 "MachineIndependent/glslang.y"
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 11059 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 560: /* simple_statement: switch_statement */
+#line 3715 "MachineIndependent/glslang.y"
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 11065 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 561: /* simple_statement: case_label */
+#line 3716 "MachineIndependent/glslang.y"
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 11071 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 562: /* simple_statement: iteration_statement */
+#line 3717 "MachineIndependent/glslang.y"
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 11077 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 563: /* simple_statement: jump_statement */
+#line 3718 "MachineIndependent/glslang.y"
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 11083 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 564: /* simple_statement: demote_statement */
+#line 3720 "MachineIndependent/glslang.y"
+ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
+#line 11089 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 565: /* demote_statement: DEMOTE SEMICOLON */
+#line 3726 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote");
parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc);
}
-#line 11041 "MachineIndependent/glslang_tab.cpp"
+#line 11099 "MachineIndependent/glslang_tab.cpp"
break;
- case 563: /* compound_statement: LEFT_BRACE RIGHT_BRACE */
-#line 3710 "MachineIndependent/glslang.y"
+ case 566: /* compound_statement: LEFT_BRACE RIGHT_BRACE */
+#line 3735 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = 0; }
-#line 11047 "MachineIndependent/glslang_tab.cpp"
+#line 11105 "MachineIndependent/glslang_tab.cpp"
break;
- case 564: /* $@5: %empty */
-#line 3711 "MachineIndependent/glslang.y"
+ case 567: /* $@5: %empty */
+#line 3736 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
}
-#line 11056 "MachineIndependent/glslang_tab.cpp"
+#line 11114 "MachineIndependent/glslang_tab.cpp"
break;
- case 565: /* $@6: %empty */
-#line 3715 "MachineIndependent/glslang.y"
+ case 568: /* $@6: %empty */
+#line 3740 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
}
-#line 11065 "MachineIndependent/glslang_tab.cpp"
+#line 11123 "MachineIndependent/glslang_tab.cpp"
break;
- case 566: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */
-#line 3719 "MachineIndependent/glslang.y"
+ case 569: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */
+#line 3744 "MachineIndependent/glslang.y"
{
if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
- (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
+ (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
}
-#line 11075 "MachineIndependent/glslang_tab.cpp"
+#line 11133 "MachineIndependent/glslang_tab.cpp"
break;
- case 567: /* statement_no_new_scope: compound_statement_no_new_scope */
-#line 3727 "MachineIndependent/glslang.y"
+ case 570: /* statement_no_new_scope: compound_statement_no_new_scope */
+#line 3752 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11081 "MachineIndependent/glslang_tab.cpp"
+#line 11139 "MachineIndependent/glslang_tab.cpp"
break;
- case 568: /* statement_no_new_scope: simple_statement */
-#line 3728 "MachineIndependent/glslang.y"
+ case 571: /* statement_no_new_scope: simple_statement */
+#line 3753 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11087 "MachineIndependent/glslang_tab.cpp"
+#line 11145 "MachineIndependent/glslang_tab.cpp"
break;
- case 569: /* $@7: %empty */
-#line 3732 "MachineIndependent/glslang.y"
+ case 572: /* $@7: %empty */
+#line 3757 "MachineIndependent/glslang.y"
{
++parseContext.controlFlowNestingLevel;
}
-#line 11095 "MachineIndependent/glslang_tab.cpp"
+#line 11153 "MachineIndependent/glslang_tab.cpp"
break;
- case 570: /* statement_scoped: $@7 compound_statement */
-#line 3735 "MachineIndependent/glslang.y"
+ case 573: /* statement_scoped: $@7 compound_statement */
+#line 3760 "MachineIndependent/glslang.y"
{
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11104 "MachineIndependent/glslang_tab.cpp"
+#line 11162 "MachineIndependent/glslang_tab.cpp"
break;
- case 571: /* $@8: %empty */
-#line 3739 "MachineIndependent/glslang.y"
+ case 574: /* $@8: %empty */
+#line 3764 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 11114 "MachineIndependent/glslang_tab.cpp"
+#line 11172 "MachineIndependent/glslang_tab.cpp"
break;
- case 572: /* statement_scoped: $@8 simple_statement */
-#line 3744 "MachineIndependent/glslang.y"
+ case 575: /* statement_scoped: $@8 simple_statement */
+#line 3769 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11125 "MachineIndependent/glslang_tab.cpp"
+#line 11183 "MachineIndependent/glslang_tab.cpp"
break;
- case 573: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */
-#line 3753 "MachineIndependent/glslang.y"
+ case 576: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */
+#line 3778 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = 0;
}
-#line 11133 "MachineIndependent/glslang_tab.cpp"
+#line 11191 "MachineIndependent/glslang_tab.cpp"
break;
- case 574: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */
-#line 3756 "MachineIndependent/glslang.y"
+ case 577: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */
+#line 3781 "MachineIndependent/glslang.y"
{
if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
(yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
}
-#line 11143 "MachineIndependent/glslang_tab.cpp"
+#line 11201 "MachineIndependent/glslang_tab.cpp"
break;
- case 575: /* statement_list: statement */
-#line 3764 "MachineIndependent/glslang.y"
+ case 578: /* statement_list: statement */
+#line 3789 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
@@ -11152,11 +11210,11 @@
(yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case
}
}
-#line 11156 "MachineIndependent/glslang_tab.cpp"
+#line 11214 "MachineIndependent/glslang_tab.cpp"
break;
- case 576: /* statement_list: statement_list statement */
-#line 3772 "MachineIndependent/glslang.y"
+ case 579: /* statement_list: statement_list statement */
+#line 3797 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
(yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
@@ -11165,77 +11223,77 @@
} else
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 11169 "MachineIndependent/glslang_tab.cpp"
+#line 11227 "MachineIndependent/glslang_tab.cpp"
break;
- case 577: /* expression_statement: SEMICOLON */
-#line 3783 "MachineIndependent/glslang.y"
+ case 580: /* expression_statement: SEMICOLON */
+#line 3808 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = 0; }
-#line 11175 "MachineIndependent/glslang_tab.cpp"
+#line 11233 "MachineIndependent/glslang_tab.cpp"
break;
- case 578: /* expression_statement: expression SEMICOLON */
-#line 3784 "MachineIndependent/glslang.y"
+ case 581: /* expression_statement: expression SEMICOLON */
+#line 3809 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 11181 "MachineIndependent/glslang_tab.cpp"
+#line 11239 "MachineIndependent/glslang_tab.cpp"
break;
- case 579: /* selection_statement: selection_statement_nonattributed */
-#line 3788 "MachineIndependent/glslang.y"
+ case 582: /* selection_statement: selection_statement_nonattributed */
+#line 3813 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11189 "MachineIndependent/glslang_tab.cpp"
+#line 11247 "MachineIndependent/glslang_tab.cpp"
break;
- case 580: /* selection_statement: attribute selection_statement_nonattributed */
-#line 3792 "MachineIndependent/glslang.y"
+ case 583: /* selection_statement: attribute selection_statement_nonattributed */
+#line 3817 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11199 "MachineIndependent/glslang_tab.cpp"
+#line 11257 "MachineIndependent/glslang_tab.cpp"
break;
- case 581: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */
-#line 3800 "MachineIndependent/glslang.y"
+ case 584: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */
+#line 3825 "MachineIndependent/glslang.y"
{
parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode));
(yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc);
}
-#line 11208 "MachineIndependent/glslang_tab.cpp"
+#line 11266 "MachineIndependent/glslang_tab.cpp"
break;
- case 582: /* selection_rest_statement: statement_scoped ELSE statement_scoped */
-#line 3807 "MachineIndependent/glslang.y"
+ case 585: /* selection_rest_statement: statement_scoped ELSE statement_scoped */
+#line 3832 "MachineIndependent/glslang.y"
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
}
-#line 11217 "MachineIndependent/glslang_tab.cpp"
+#line 11275 "MachineIndependent/glslang_tab.cpp"
break;
- case 583: /* selection_rest_statement: statement_scoped */
-#line 3811 "MachineIndependent/glslang.y"
+ case 586: /* selection_rest_statement: statement_scoped */
+#line 3836 "MachineIndependent/glslang.y"
{
(yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 11226 "MachineIndependent/glslang_tab.cpp"
+#line 11284 "MachineIndependent/glslang_tab.cpp"
break;
- case 584: /* condition: expression */
-#line 3819 "MachineIndependent/glslang.y"
+ case 587: /* condition: expression */
+#line 3844 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
}
-#line 11235 "MachineIndependent/glslang_tab.cpp"
+#line 11293 "MachineIndependent/glslang_tab.cpp"
break;
- case 585: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */
-#line 3823 "MachineIndependent/glslang.y"
+ case 588: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */
+#line 3848 "MachineIndependent/glslang.y"
{
parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
@@ -11246,29 +11304,29 @@
else
(yyval.interm.intermTypedNode) = 0;
}
-#line 11250 "MachineIndependent/glslang_tab.cpp"
+#line 11308 "MachineIndependent/glslang_tab.cpp"
break;
- case 586: /* switch_statement: switch_statement_nonattributed */
-#line 3836 "MachineIndependent/glslang.y"
+ case 589: /* switch_statement: switch_statement_nonattributed */
+#line 3861 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11258 "MachineIndependent/glslang_tab.cpp"
+#line 11316 "MachineIndependent/glslang_tab.cpp"
break;
- case 587: /* switch_statement: attribute switch_statement_nonattributed */
-#line 3840 "MachineIndependent/glslang.y"
+ case 590: /* switch_statement: attribute switch_statement_nonattributed */
+#line 3865 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11268 "MachineIndependent/glslang_tab.cpp"
+#line 11326 "MachineIndependent/glslang_tab.cpp"
break;
- case 588: /* $@9: %empty */
-#line 3848 "MachineIndependent/glslang.y"
+ case 591: /* $@9: %empty */
+#line 3873 "MachineIndependent/glslang.y"
{
// start new switch sequence on the switch stack
++parseContext.controlFlowNestingLevel;
@@ -11277,11 +11335,11 @@
parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
parseContext.symbolTable.push();
}
-#line 11281 "MachineIndependent/glslang_tab.cpp"
+#line 11339 "MachineIndependent/glslang_tab.cpp"
break;
- case 589: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */
-#line 3856 "MachineIndependent/glslang.y"
+ case 592: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */
+#line 3881 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
delete parseContext.switchSequenceStack.back();
@@ -11291,27 +11349,27 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 11295 "MachineIndependent/glslang_tab.cpp"
+#line 11353 "MachineIndependent/glslang_tab.cpp"
break;
- case 590: /* switch_statement_list: %empty */
-#line 3868 "MachineIndependent/glslang.y"
+ case 593: /* switch_statement_list: %empty */
+#line 3893 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = 0;
}
-#line 11303 "MachineIndependent/glslang_tab.cpp"
+#line 11361 "MachineIndependent/glslang_tab.cpp"
break;
- case 591: /* switch_statement_list: statement_list */
-#line 3871 "MachineIndependent/glslang.y"
+ case 594: /* switch_statement_list: statement_list */
+#line 3896 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11311 "MachineIndependent/glslang_tab.cpp"
+#line 11369 "MachineIndependent/glslang_tab.cpp"
break;
- case 592: /* case_label: CASE expression COLON */
-#line 3877 "MachineIndependent/glslang.y"
+ case 595: /* case_label: CASE expression COLON */
+#line 3902 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -11324,11 +11382,11 @@
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
}
}
-#line 11328 "MachineIndependent/glslang_tab.cpp"
+#line 11386 "MachineIndependent/glslang_tab.cpp"
break;
- case 593: /* case_label: DEFAULT COLON */
-#line 3889 "MachineIndependent/glslang.y"
+ case 596: /* case_label: DEFAULT COLON */
+#line 3914 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -11338,29 +11396,29 @@
else
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
}
-#line 11342 "MachineIndependent/glslang_tab.cpp"
+#line 11400 "MachineIndependent/glslang_tab.cpp"
break;
- case 594: /* iteration_statement: iteration_statement_nonattributed */
-#line 3901 "MachineIndependent/glslang.y"
+ case 597: /* iteration_statement: iteration_statement_nonattributed */
+#line 3926 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11350 "MachineIndependent/glslang_tab.cpp"
+#line 11408 "MachineIndependent/glslang_tab.cpp"
break;
- case 595: /* iteration_statement: attribute iteration_statement_nonattributed */
-#line 3905 "MachineIndependent/glslang.y"
+ case 598: /* iteration_statement: attribute iteration_statement_nonattributed */
+#line 3930 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11360 "MachineIndependent/glslang_tab.cpp"
+#line 11418 "MachineIndependent/glslang_tab.cpp"
break;
- case 596: /* $@10: %empty */
-#line 3913 "MachineIndependent/glslang.y"
+ case 599: /* $@10: %empty */
+#line 3938 "MachineIndependent/glslang.y"
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
@@ -11369,11 +11427,11 @@
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 11373 "MachineIndependent/glslang_tab.cpp"
+#line 11431 "MachineIndependent/glslang_tab.cpp"
break;
- case 597: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */
-#line 3921 "MachineIndependent/glslang.y"
+ case 600: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */
+#line 3946 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
@@ -11381,22 +11439,22 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 11385 "MachineIndependent/glslang_tab.cpp"
+#line 11443 "MachineIndependent/glslang_tab.cpp"
break;
- case 598: /* $@11: %empty */
-#line 3928 "MachineIndependent/glslang.y"
+ case 601: /* $@11: %empty */
+#line 3953 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.push();
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 11396 "MachineIndependent/glslang_tab.cpp"
+#line 11454 "MachineIndependent/glslang_tab.cpp"
break;
- case 599: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */
-#line 3934 "MachineIndependent/glslang.y"
+ case 602: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */
+#line 3959 "MachineIndependent/glslang.y"
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
@@ -11409,22 +11467,22 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 11413 "MachineIndependent/glslang_tab.cpp"
+#line 11471 "MachineIndependent/glslang_tab.cpp"
break;
- case 600: /* $@12: %empty */
-#line 3946 "MachineIndependent/glslang.y"
+ case 603: /* $@12: %empty */
+#line 3971 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.push();
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 11424 "MachineIndependent/glslang_tab.cpp"
+#line 11482 "MachineIndependent/glslang_tab.cpp"
break;
- case 601: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */
-#line 3952 "MachineIndependent/glslang.y"
+ case 604: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */
+#line 3977 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
@@ -11437,81 +11495,81 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 11441 "MachineIndependent/glslang_tab.cpp"
+#line 11499 "MachineIndependent/glslang_tab.cpp"
break;
- case 602: /* for_init_statement: expression_statement */
-#line 3967 "MachineIndependent/glslang.y"
+ case 605: /* for_init_statement: expression_statement */
+#line 3992 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11449 "MachineIndependent/glslang_tab.cpp"
+#line 11507 "MachineIndependent/glslang_tab.cpp"
break;
- case 603: /* for_init_statement: declaration_statement */
-#line 3970 "MachineIndependent/glslang.y"
+ case 606: /* for_init_statement: declaration_statement */
+#line 3995 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11457 "MachineIndependent/glslang_tab.cpp"
+#line 11515 "MachineIndependent/glslang_tab.cpp"
break;
- case 604: /* conditionopt: condition */
-#line 3976 "MachineIndependent/glslang.y"
+ case 607: /* conditionopt: condition */
+#line 4001 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 11465 "MachineIndependent/glslang_tab.cpp"
+#line 11523 "MachineIndependent/glslang_tab.cpp"
break;
- case 605: /* conditionopt: %empty */
-#line 3979 "MachineIndependent/glslang.y"
+ case 608: /* conditionopt: %empty */
+#line 4004 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = 0;
}
-#line 11473 "MachineIndependent/glslang_tab.cpp"
+#line 11531 "MachineIndependent/glslang_tab.cpp"
break;
- case 606: /* for_rest_statement: conditionopt SEMICOLON */
-#line 3985 "MachineIndependent/glslang.y"
+ case 609: /* for_rest_statement: conditionopt SEMICOLON */
+#line 4010 "MachineIndependent/glslang.y"
{
(yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 11482 "MachineIndependent/glslang_tab.cpp"
+#line 11540 "MachineIndependent/glslang_tab.cpp"
break;
- case 607: /* for_rest_statement: conditionopt SEMICOLON expression */
-#line 3989 "MachineIndependent/glslang.y"
+ case 610: /* for_rest_statement: conditionopt SEMICOLON expression */
+#line 4014 "MachineIndependent/glslang.y"
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
}
-#line 11491 "MachineIndependent/glslang_tab.cpp"
+#line 11549 "MachineIndependent/glslang_tab.cpp"
break;
- case 608: /* jump_statement: CONTINUE SEMICOLON */
-#line 3996 "MachineIndependent/glslang.y"
+ case 611: /* jump_statement: CONTINUE SEMICOLON */
+#line 4021 "MachineIndependent/glslang.y"
{
if (parseContext.loopNestingLevel <= 0)
parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
}
-#line 11501 "MachineIndependent/glslang_tab.cpp"
+#line 11559 "MachineIndependent/glslang_tab.cpp"
break;
- case 609: /* jump_statement: BREAK SEMICOLON */
-#line 4001 "MachineIndependent/glslang.y"
+ case 612: /* jump_statement: BREAK SEMICOLON */
+#line 4026 "MachineIndependent/glslang.y"
{
if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
}
-#line 11511 "MachineIndependent/glslang_tab.cpp"
+#line 11569 "MachineIndependent/glslang_tab.cpp"
break;
- case 610: /* jump_statement: RETURN SEMICOLON */
-#line 4006 "MachineIndependent/glslang.y"
+ case 613: /* jump_statement: RETURN SEMICOLON */
+#line 4031 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
@@ -11519,101 +11577,101 @@
if (parseContext.inMain)
parseContext.postEntryPointReturn = true;
}
-#line 11523 "MachineIndependent/glslang_tab.cpp"
+#line 11581 "MachineIndependent/glslang_tab.cpp"
break;
- case 611: /* jump_statement: RETURN expression SEMICOLON */
-#line 4013 "MachineIndependent/glslang.y"
+ case 614: /* jump_statement: RETURN expression SEMICOLON */
+#line 4038 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
}
-#line 11531 "MachineIndependent/glslang_tab.cpp"
+#line 11589 "MachineIndependent/glslang_tab.cpp"
break;
- case 612: /* jump_statement: DISCARD SEMICOLON */
-#line 4016 "MachineIndependent/glslang.y"
+ case 615: /* jump_statement: DISCARD SEMICOLON */
+#line 4041 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
}
-#line 11540 "MachineIndependent/glslang_tab.cpp"
+#line 11598 "MachineIndependent/glslang_tab.cpp"
break;
- case 613: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */
-#line 4020 "MachineIndependent/glslang.y"
+ case 616: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */
+#line 4045 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc);
}
-#line 11549 "MachineIndependent/glslang_tab.cpp"
+#line 11607 "MachineIndependent/glslang_tab.cpp"
break;
- case 614: /* jump_statement: TERMINATE_RAY SEMICOLON */
-#line 4025 "MachineIndependent/glslang.y"
+ case 617: /* jump_statement: TERMINATE_RAY SEMICOLON */
+#line 4050 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc);
}
-#line 11558 "MachineIndependent/glslang_tab.cpp"
+#line 11616 "MachineIndependent/glslang_tab.cpp"
break;
- case 615: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */
-#line 4029 "MachineIndependent/glslang.y"
+ case 618: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */
+#line 4054 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc);
}
-#line 11567 "MachineIndependent/glslang_tab.cpp"
+#line 11625 "MachineIndependent/glslang_tab.cpp"
break;
- case 616: /* translation_unit: external_declaration */
-#line 4039 "MachineIndependent/glslang.y"
+ case 619: /* translation_unit: external_declaration */
+#line 4064 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
-#line 11576 "MachineIndependent/glslang_tab.cpp"
+#line 11634 "MachineIndependent/glslang_tab.cpp"
break;
- case 617: /* translation_unit: translation_unit external_declaration */
-#line 4043 "MachineIndependent/glslang.y"
+ case 620: /* translation_unit: translation_unit external_declaration */
+#line 4068 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermNode) != nullptr) {
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
}
-#line 11587 "MachineIndependent/glslang_tab.cpp"
+#line 11645 "MachineIndependent/glslang_tab.cpp"
break;
- case 618: /* external_declaration: function_definition */
-#line 4052 "MachineIndependent/glslang.y"
+ case 621: /* external_declaration: function_definition */
+#line 4077 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11595 "MachineIndependent/glslang_tab.cpp"
+#line 11653 "MachineIndependent/glslang_tab.cpp"
break;
- case 619: /* external_declaration: declaration */
-#line 4055 "MachineIndependent/glslang.y"
+ case 622: /* external_declaration: declaration */
+#line 4080 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11603 "MachineIndependent/glslang_tab.cpp"
+#line 11661 "MachineIndependent/glslang_tab.cpp"
break;
- case 620: /* external_declaration: SEMICOLON */
-#line 4059 "MachineIndependent/glslang.y"
+ case 623: /* external_declaration: SEMICOLON */
+#line 4084 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon");
parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon");
(yyval.interm.intermNode) = nullptr;
}
-#line 11613 "MachineIndependent/glslang_tab.cpp"
+#line 11671 "MachineIndependent/glslang_tab.cpp"
break;
- case 621: /* $@13: %empty */
-#line 4068 "MachineIndependent/glslang.y"
+ case 624: /* $@13: %empty */
+#line 4093 "MachineIndependent/glslang.y"
{
(yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
(yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
@@ -11626,11 +11684,11 @@
++parseContext.statementNestingLevel;
}
}
-#line 11630 "MachineIndependent/glslang_tab.cpp"
+#line 11688 "MachineIndependent/glslang_tab.cpp"
break;
- case 622: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */
-#line 4080 "MachineIndependent/glslang.y"
+ case 625: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */
+#line 4105 "MachineIndependent/glslang.y"
{
// May be best done as post process phase on intermediate code
if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
@@ -11657,228 +11715,228 @@
--parseContext.statementNestingLevel;
}
}
-#line 11661 "MachineIndependent/glslang_tab.cpp"
+#line 11719 "MachineIndependent/glslang_tab.cpp"
break;
- case 623: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */
-#line 4110 "MachineIndependent/glslang.y"
+ case 626: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */
+#line 4135 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = (yyvsp[-2].interm.attributes);
}
-#line 11669 "MachineIndependent/glslang_tab.cpp"
+#line 11727 "MachineIndependent/glslang_tab.cpp"
break;
- case 624: /* attribute_list: single_attribute */
-#line 4115 "MachineIndependent/glslang.y"
+ case 627: /* attribute_list: single_attribute */
+#line 4140 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = (yyvsp[0].interm.attributes);
}
-#line 11677 "MachineIndependent/glslang_tab.cpp"
+#line 11735 "MachineIndependent/glslang_tab.cpp"
break;
- case 625: /* attribute_list: attribute_list COMMA single_attribute */
-#line 4118 "MachineIndependent/glslang.y"
+ case 628: /* attribute_list: attribute_list COMMA single_attribute */
+#line 4143 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes));
}
-#line 11685 "MachineIndependent/glslang_tab.cpp"
+#line 11743 "MachineIndependent/glslang_tab.cpp"
break;
- case 626: /* single_attribute: IDENTIFIER */
-#line 4123 "MachineIndependent/glslang.y"
+ case 629: /* single_attribute: IDENTIFIER */
+#line 4148 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string);
}
-#line 11693 "MachineIndependent/glslang_tab.cpp"
+#line 11751 "MachineIndependent/glslang_tab.cpp"
break;
- case 627: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */
-#line 4126 "MachineIndependent/glslang.y"
+ case 630: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */
+#line 4151 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode));
}
-#line 11701 "MachineIndependent/glslang_tab.cpp"
+#line 11759 "MachineIndependent/glslang_tab.cpp"
break;
- case 628: /* spirv_requirements_list: spirv_requirements_parameter */
-#line 4133 "MachineIndependent/glslang.y"
+ case 631: /* spirv_requirements_list: spirv_requirements_parameter */
+#line 4158 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq);
}
-#line 11709 "MachineIndependent/glslang_tab.cpp"
+#line 11767 "MachineIndependent/glslang_tab.cpp"
break;
- case 629: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */
-#line 4136 "MachineIndependent/glslang.y"
+ case 632: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */
+#line 4161 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq));
}
-#line 11717 "MachineIndependent/glslang_tab.cpp"
+#line 11775 "MachineIndependent/glslang_tab.cpp"
break;
- case 630: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */
-#line 4141 "MachineIndependent/glslang.y"
+ case 633: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */
+#line 4166 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr);
}
-#line 11725 "MachineIndependent/glslang_tab.cpp"
+#line 11783 "MachineIndependent/glslang_tab.cpp"
break;
- case 631: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */
-#line 4144 "MachineIndependent/glslang.y"
+ case 634: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */
+#line 4169 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 11733 "MachineIndependent/glslang_tab.cpp"
+#line 11791 "MachineIndependent/glslang_tab.cpp"
break;
- case 632: /* spirv_extension_list: STRING_LITERAL */
-#line 4149 "MachineIndependent/glslang.y"
+ case 635: /* spirv_extension_list: STRING_LITERAL */
+#line 4174 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
}
-#line 11741 "MachineIndependent/glslang_tab.cpp"
+#line 11799 "MachineIndependent/glslang_tab.cpp"
break;
- case 633: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */
-#line 4152 "MachineIndependent/glslang.y"
+ case 636: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */
+#line 4177 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
}
-#line 11749 "MachineIndependent/glslang_tab.cpp"
+#line 11807 "MachineIndependent/glslang_tab.cpp"
break;
- case 634: /* spirv_capability_list: INTCONSTANT */
-#line 4157 "MachineIndependent/glslang.y"
+ case 637: /* spirv_capability_list: INTCONSTANT */
+#line 4182 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true));
}
-#line 11757 "MachineIndependent/glslang_tab.cpp"
+#line 11815 "MachineIndependent/glslang_tab.cpp"
break;
- case 635: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */
-#line 4160 "MachineIndependent/glslang.y"
+ case 638: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */
+#line 4185 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true));
}
-#line 11765 "MachineIndependent/glslang_tab.cpp"
+#line 11823 "MachineIndependent/glslang_tab.cpp"
break;
- case 636: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */
-#line 4165 "MachineIndependent/glslang.y"
+ case 639: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */
+#line 4190 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i);
(yyval.interm.intermNode) = 0;
}
-#line 11774 "MachineIndependent/glslang_tab.cpp"
+#line 11832 "MachineIndependent/glslang_tab.cpp"
break;
- case 637: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
-#line 4169 "MachineIndependent/glslang.y"
+ case 640: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
+#line 4194 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i);
(yyval.interm.intermNode) = 0;
}
-#line 11784 "MachineIndependent/glslang_tab.cpp"
+#line 11842 "MachineIndependent/glslang_tab.cpp"
break;
- case 638: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */
-#line 4174 "MachineIndependent/glslang.y"
+ case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */
+#line 4199 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
(yyval.interm.intermNode) = 0;
}
-#line 11793 "MachineIndependent/glslang_tab.cpp"
+#line 11851 "MachineIndependent/glslang_tab.cpp"
break;
- case 639: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */
-#line 4178 "MachineIndependent/glslang.y"
+ case 642: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */
+#line 4203 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
(yyval.interm.intermNode) = 0;
}
-#line 11803 "MachineIndependent/glslang_tab.cpp"
+#line 11861 "MachineIndependent/glslang_tab.cpp"
break;
- case 640: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */
-#line 4183 "MachineIndependent/glslang.y"
+ case 643: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */
+#line 4208 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
(yyval.interm.intermNode) = 0;
}
-#line 11812 "MachineIndependent/glslang_tab.cpp"
+#line 11870 "MachineIndependent/glslang_tab.cpp"
break;
- case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */
-#line 4187 "MachineIndependent/glslang.y"
+ case 644: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */
+#line 4212 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
(yyval.interm.intermNode) = 0;
}
-#line 11822 "MachineIndependent/glslang_tab.cpp"
+#line 11880 "MachineIndependent/glslang_tab.cpp"
break;
- case 642: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */
-#line 4194 "MachineIndependent/glslang.y"
+ case 645: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */
+#line 4219 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
}
-#line 11830 "MachineIndependent/glslang_tab.cpp"
+#line 11888 "MachineIndependent/glslang_tab.cpp"
break;
- case 643: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */
-#line 4197 "MachineIndependent/glslang.y"
+ case 646: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */
+#line 4222 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 11838 "MachineIndependent/glslang_tab.cpp"
+#line 11896 "MachineIndependent/glslang_tab.cpp"
break;
- case 644: /* spirv_execution_mode_parameter: FLOATCONSTANT */
-#line 4202 "MachineIndependent/glslang.y"
+ case 647: /* spirv_execution_mode_parameter: FLOATCONSTANT */
+#line 4227 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
}
-#line 11846 "MachineIndependent/glslang_tab.cpp"
+#line 11904 "MachineIndependent/glslang_tab.cpp"
break;
- case 645: /* spirv_execution_mode_parameter: INTCONSTANT */
-#line 4205 "MachineIndependent/glslang.y"
+ case 648: /* spirv_execution_mode_parameter: INTCONSTANT */
+#line 4230 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 11854 "MachineIndependent/glslang_tab.cpp"
+#line 11912 "MachineIndependent/glslang_tab.cpp"
break;
- case 646: /* spirv_execution_mode_parameter: UINTCONSTANT */
-#line 4208 "MachineIndependent/glslang.y"
+ case 649: /* spirv_execution_mode_parameter: UINTCONSTANT */
+#line 4233 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 11862 "MachineIndependent/glslang_tab.cpp"
+#line 11920 "MachineIndependent/glslang_tab.cpp"
break;
- case 647: /* spirv_execution_mode_parameter: BOOLCONSTANT */
-#line 4211 "MachineIndependent/glslang.y"
+ case 650: /* spirv_execution_mode_parameter: BOOLCONSTANT */
+#line 4236 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
-#line 11870 "MachineIndependent/glslang_tab.cpp"
+#line 11928 "MachineIndependent/glslang_tab.cpp"
break;
- case 648: /* spirv_execution_mode_parameter: STRING_LITERAL */
-#line 4214 "MachineIndependent/glslang.y"
+ case 651: /* spirv_execution_mode_parameter: STRING_LITERAL */
+#line 4239 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true);
}
-#line 11878 "MachineIndependent/glslang_tab.cpp"
+#line 11936 "MachineIndependent/glslang_tab.cpp"
break;
- case 649: /* spirv_execution_mode_id_parameter_list: constant_expression */
-#line 4219 "MachineIndependent/glslang.y"
+ case 652: /* spirv_execution_mode_id_parameter_list: constant_expression */
+#line 4244 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat &&
(yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt &&
@@ -11888,11 +11946,11 @@
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), "");
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode));
}
-#line 11892 "MachineIndependent/glslang_tab.cpp"
+#line 11950 "MachineIndependent/glslang_tab.cpp"
break;
- case 650: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */
-#line 4228 "MachineIndependent/glslang.y"
+ case 653: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */
+#line 4253 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat &&
(yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt &&
@@ -11902,156 +11960,156 @@
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), "");
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode));
}
-#line 11906 "MachineIndependent/glslang_tab.cpp"
+#line 11964 "MachineIndependent/glslang_tab.cpp"
break;
- case 651: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */
-#line 4239 "MachineIndependent/glslang.y"
+ case 654: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */
+#line 4264 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-3].lex).loc);
(yyval.interm.type).qualifier.storage = EvqSpirvStorageClass;
(yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i;
}
-#line 11916 "MachineIndependent/glslang_tab.cpp"
+#line 11974 "MachineIndependent/glslang_tab.cpp"
break;
- case 652: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
-#line 4244 "MachineIndependent/glslang.y"
+ case 655: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
+#line 4269 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
(yyval.interm.type).qualifier.storage = EvqSpirvStorageClass;
(yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i;
}
-#line 11927 "MachineIndependent/glslang_tab.cpp"
+#line 11985 "MachineIndependent/glslang_tab.cpp"
break;
- case 653: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */
-#line 4252 "MachineIndependent/glslang.y"
+ case 656: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */
+#line 4277 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-3].lex).loc);
(yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i);
}
-#line 11936 "MachineIndependent/glslang_tab.cpp"
+#line 11994 "MachineIndependent/glslang_tab.cpp"
break;
- case 654: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
-#line 4256 "MachineIndependent/glslang.y"
+ case 657: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
+#line 4281 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
(yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i);
}
-#line 11946 "MachineIndependent/glslang_tab.cpp"
+#line 12004 "MachineIndependent/glslang_tab.cpp"
break;
- case 655: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */
-#line 4261 "MachineIndependent/glslang.y"
+ case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */
+#line 4286 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
(yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 11955 "MachineIndependent/glslang_tab.cpp"
+#line 12013 "MachineIndependent/glslang_tab.cpp"
break;
- case 656: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */
-#line 4265 "MachineIndependent/glslang.y"
+ case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */
+#line 4290 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-7].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
(yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 11965 "MachineIndependent/glslang_tab.cpp"
+#line 12023 "MachineIndependent/glslang_tab.cpp"
break;
- case 657: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */
-#line 4270 "MachineIndependent/glslang.y"
+ case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */
+#line 4295 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
(yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 11974 "MachineIndependent/glslang_tab.cpp"
+#line 12032 "MachineIndependent/glslang_tab.cpp"
break;
- case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */
-#line 4274 "MachineIndependent/glslang.y"
+ case 661: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */
+#line 4299 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-7].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
(yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 11984 "MachineIndependent/glslang_tab.cpp"
+#line 12042 "MachineIndependent/glslang_tab.cpp"
break;
- case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */
-#line 4279 "MachineIndependent/glslang.y"
+ case 662: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */
+#line 4304 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
(yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 11993 "MachineIndependent/glslang_tab.cpp"
+#line 12051 "MachineIndependent/glslang_tab.cpp"
break;
- case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */
-#line 4283 "MachineIndependent/glslang.y"
+ case 663: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */
+#line 4308 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-7].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
(yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 12003 "MachineIndependent/glslang_tab.cpp"
+#line 12061 "MachineIndependent/glslang_tab.cpp"
break;
- case 661: /* spirv_decorate_parameter_list: spirv_decorate_parameter */
-#line 4290 "MachineIndependent/glslang.y"
+ case 664: /* spirv_decorate_parameter_list: spirv_decorate_parameter */
+#line 4315 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
}
-#line 12011 "MachineIndependent/glslang_tab.cpp"
+#line 12069 "MachineIndependent/glslang_tab.cpp"
break;
- case 662: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */
-#line 4293 "MachineIndependent/glslang.y"
+ case 665: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */
+#line 4318 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 12019 "MachineIndependent/glslang_tab.cpp"
+#line 12077 "MachineIndependent/glslang_tab.cpp"
break;
- case 663: /* spirv_decorate_parameter: FLOATCONSTANT */
-#line 4298 "MachineIndependent/glslang.y"
+ case 666: /* spirv_decorate_parameter: FLOATCONSTANT */
+#line 4323 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
}
-#line 12027 "MachineIndependent/glslang_tab.cpp"
+#line 12085 "MachineIndependent/glslang_tab.cpp"
break;
- case 664: /* spirv_decorate_parameter: INTCONSTANT */
-#line 4301 "MachineIndependent/glslang.y"
+ case 667: /* spirv_decorate_parameter: INTCONSTANT */
+#line 4326 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 12035 "MachineIndependent/glslang_tab.cpp"
+#line 12093 "MachineIndependent/glslang_tab.cpp"
break;
- case 665: /* spirv_decorate_parameter: UINTCONSTANT */
-#line 4304 "MachineIndependent/glslang.y"
+ case 668: /* spirv_decorate_parameter: UINTCONSTANT */
+#line 4329 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 12043 "MachineIndependent/glslang_tab.cpp"
+#line 12101 "MachineIndependent/glslang_tab.cpp"
break;
- case 666: /* spirv_decorate_parameter: BOOLCONSTANT */
-#line 4307 "MachineIndependent/glslang.y"
+ case 669: /* spirv_decorate_parameter: BOOLCONSTANT */
+#line 4332 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
-#line 12051 "MachineIndependent/glslang_tab.cpp"
+#line 12109 "MachineIndependent/glslang_tab.cpp"
break;
- case 667: /* spirv_decorate_id_parameter_list: constant_expression */
-#line 4312 "MachineIndependent/glslang.y"
+ case 670: /* spirv_decorate_id_parameter_list: constant_expression */
+#line 4337 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat &&
(yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt &&
@@ -12060,11 +12118,11 @@
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), "");
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode));
}
-#line 12064 "MachineIndependent/glslang_tab.cpp"
+#line 12122 "MachineIndependent/glslang_tab.cpp"
break;
- case 668: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression */
-#line 4320 "MachineIndependent/glslang.y"
+ case 671: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression */
+#line 4345 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat &&
(yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt &&
@@ -12073,139 +12131,139 @@
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), "");
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode));
}
-#line 12077 "MachineIndependent/glslang_tab.cpp"
+#line 12135 "MachineIndependent/glslang_tab.cpp"
break;
- case 669: /* spirv_decorate_string_parameter_list: STRING_LITERAL */
-#line 4330 "MachineIndependent/glslang.y"
+ case 672: /* spirv_decorate_string_parameter_list: STRING_LITERAL */
+#line 4355 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(
parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
}
-#line 12086 "MachineIndependent/glslang_tab.cpp"
+#line 12144 "MachineIndependent/glslang_tab.cpp"
break;
- case 670: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */
-#line 4334 "MachineIndependent/glslang.y"
+ case 673: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */
+#line 4359 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
}
-#line 12094 "MachineIndependent/glslang_tab.cpp"
+#line 12152 "MachineIndependent/glslang_tab.cpp"
break;
- case 671: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */
-#line 4339 "MachineIndependent/glslang.y"
+ case 674: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */
+#line 4364 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams));
}
-#line 12103 "MachineIndependent/glslang_tab.cpp"
+#line 12161 "MachineIndependent/glslang_tab.cpp"
break;
- case 672: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */
-#line 4343 "MachineIndependent/glslang.y"
+ case 675: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */
+#line 4368 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
(yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams));
}
-#line 12113 "MachineIndependent/glslang_tab.cpp"
+#line 12171 "MachineIndependent/glslang_tab.cpp"
break;
- case 673: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */
-#line 4348 "MachineIndependent/glslang.y"
+ case 676: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */
+#line 4373 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst));
}
-#line 12122 "MachineIndependent/glslang_tab.cpp"
+#line 12180 "MachineIndependent/glslang_tab.cpp"
break;
- case 674: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */
-#line 4352 "MachineIndependent/glslang.y"
+ case 677: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */
+#line 4377 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
(yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst));
}
-#line 12132 "MachineIndependent/glslang_tab.cpp"
+#line 12190 "MachineIndependent/glslang_tab.cpp"
break;
- case 675: /* spirv_type_parameter_list: spirv_type_parameter */
-#line 4359 "MachineIndependent/glslang.y"
+ case 678: /* spirv_type_parameter_list: spirv_type_parameter */
+#line 4384 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams);
}
-#line 12140 "MachineIndependent/glslang_tab.cpp"
+#line 12198 "MachineIndependent/glslang_tab.cpp"
break;
- case 676: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */
-#line 4362 "MachineIndependent/glslang.y"
+ case 679: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */
+#line 4387 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams));
}
-#line 12148 "MachineIndependent/glslang_tab.cpp"
+#line 12206 "MachineIndependent/glslang_tab.cpp"
break;
- case 677: /* spirv_type_parameter: constant_expression */
-#line 4367 "MachineIndependent/glslang.y"
+ case 680: /* spirv_type_parameter: constant_expression */
+#line 4392 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion());
}
-#line 12156 "MachineIndependent/glslang_tab.cpp"
+#line 12214 "MachineIndependent/glslang_tab.cpp"
break;
- case 678: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */
-#line 4372 "MachineIndependent/glslang.y"
+ case 681: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */
+#line 4397 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst);
}
-#line 12164 "MachineIndependent/glslang_tab.cpp"
+#line 12222 "MachineIndependent/glslang_tab.cpp"
break;
- case 679: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */
-#line 4375 "MachineIndependent/glslang.y"
+ case 682: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */
+#line 4400 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
(yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst);
}
-#line 12173 "MachineIndependent/glslang_tab.cpp"
+#line 12231 "MachineIndependent/glslang_tab.cpp"
break;
- case 680: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */
-#line 4381 "MachineIndependent/glslang.y"
+ case 683: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */
+#line 4406 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst);
}
-#line 12181 "MachineIndependent/glslang_tab.cpp"
+#line 12239 "MachineIndependent/glslang_tab.cpp"
break;
- case 681: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */
-#line 4384 "MachineIndependent/glslang.y"
+ case 684: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */
+#line 4409 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst));
}
-#line 12189 "MachineIndependent/glslang_tab.cpp"
+#line 12247 "MachineIndependent/glslang_tab.cpp"
break;
- case 682: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */
-#line 4389 "MachineIndependent/glslang.y"
+ case 685: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */
+#line 4414 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string);
}
-#line 12197 "MachineIndependent/glslang_tab.cpp"
+#line 12255 "MachineIndependent/glslang_tab.cpp"
break;
- case 683: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */
-#line 4392 "MachineIndependent/glslang.y"
+ case 686: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */
+#line 4417 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i);
}
-#line 12205 "MachineIndependent/glslang_tab.cpp"
+#line 12263 "MachineIndependent/glslang_tab.cpp"
break;
-#line 12209 "MachineIndependent/glslang_tab.cpp"
+#line 12267 "MachineIndependent/glslang_tab.cpp"
default: break;
}
@@ -12430,5 +12488,5 @@
return yyresult;
}
-#line 4397 "MachineIndependent/glslang.y"
+#line 4422 "MachineIndependent/glslang.y"
diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h
index 596a10e..18cef46 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp.h
+++ b/glslang/MachineIndependent/glslang_tab.cpp.h
@@ -501,11 +501,14 @@
SHADERCALLCOHERENT = 702, /* SHADERCALLCOHERENT */
NOPERSPECTIVE = 703, /* NOPERSPECTIVE */
EXPLICITINTERPAMD = 704, /* EXPLICITINTERPAMD */
- PERVERTEXNV = 705, /* PERVERTEXNV */
- PERPRIMITIVENV = 706, /* PERPRIMITIVENV */
- PERVIEWNV = 707, /* PERVIEWNV */
- PERTASKNV = 708, /* PERTASKNV */
- PRECISE = 709 /* PRECISE */
+ PERVERTEXEXT = 705, /* PERVERTEXEXT */
+ PERVERTEXNV = 706, /* PERVERTEXNV */
+ PERPRIMITIVENV = 707, /* PERPRIMITIVENV */
+ PERVIEWNV = 708, /* PERVIEWNV */
+ PERTASKNV = 709, /* PERTASKNV */
+ PERPRIMITIVEEXT = 710, /* PERPRIMITIVEEXT */
+ TASKPAYLOADWORKGROUPEXT = 711, /* TASKPAYLOADWORKGROUPEXT */
+ PRECISE = 712 /* PRECISE */
};
typedef enum yytokentype yytoken_kind_t;
#endif
@@ -553,7 +556,7 @@
glslang::TArraySizes* typeParameters;
} interm;
-#line 557 "MachineIndependent/glslang_tab.cpp.h"
+#line 560 "MachineIndependent/glslang_tab.cpp.h"
};
typedef union YYSTYPE YYSTYPE;
diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp
index a0fade1..9875561 100644
--- a/glslang/MachineIndependent/intermOut.cpp
+++ b/glslang/MachineIndependent/intermOut.cpp
@@ -48,37 +48,6 @@
#endif
#include <cstdint>
-namespace {
-
-bool IsInfinity(double x) {
-#ifdef _MSC_VER
- switch (_fpclass(x)) {
- case _FPCLASS_NINF:
- case _FPCLASS_PINF:
- return true;
- default:
- return false;
- }
-#else
- return std::isinf(x);
-#endif
-}
-
-bool IsNan(double x) {
-#ifdef _MSC_VER
- switch (_fpclass(x)) {
- case _FPCLASS_SNAN:
- case _FPCLASS_QNAN:
- return true;
- default:
- return false;
- }
-#else
- return std::isnan(x);
-#endif
-}
-
-}
namespace glslang {
@@ -696,6 +665,8 @@
case EOpConstructReference: out.debug << "Construct reference type"; break;
+ case EOpDeclare: out.debug << "Declare"; break;
+
#ifndef GLSLANG_WEB
case EOpSpirvInst: out.debug << "spirv_instruction"; break;
#endif
@@ -723,6 +694,7 @@
switch (node->getOp()) {
case EOpSequence: out.debug << "Sequence\n"; return true;
+ case EOpScope: out.debug << "Scope\n"; return true;
case EOpLinkerObjects: out.debug << "Linker Objects\n"; return true;
case EOpComma: out.debug << "Comma"; break;
case EOpFunction: out.debug << "Function Definition: " << node->getName(); break;
@@ -1099,6 +1071,8 @@
case EOpExecuteCallableNV: out.debug << "executeCallableNV"; break;
case EOpExecuteCallableKHR: out.debug << "executeCallableKHR"; break;
case EOpWritePackedPrimitiveIndices4x8NV: out.debug << "writePackedPrimitiveIndices4x8NV"; break;
+ case EOpEmitMeshTasksEXT: out.debug << "EmitMeshTasksEXT"; break;
+ case EOpSetMeshOutputsEXT: out.debug << "SetMeshOutputsEXT"; break;
case EOpRayQueryInitialize: out.debug << "rayQueryInitializeEXT"; break;
case EOpRayQueryTerminate: out.debug << "rayQueryTerminateEXT"; break;
@@ -1138,7 +1112,7 @@
default: out.debug.message(EPrefixError, "Bad aggregation op");
}
- if (node->getOp() != EOpSequence && node->getOp() != EOpParameters)
+ if (node->getOp() != EOpSequence && node->getOp() != EOpScope && node->getOp() != EOpParameters)
out.debug << " (" << node->getCompleteString() << ")";
out.debug << "\n";
@@ -1553,12 +1527,12 @@
infoSink.debug << "interlock ordering = " << TQualifier::getInterlockOrderingString(interlockOrdering) << "\n";
break;
- case EShLangMeshNV:
+ case EShLangMesh:
infoSink.debug << "max_vertices = " << vertices << "\n";
infoSink.debug << "max_primitives = " << primitives << "\n";
infoSink.debug << "output primitive = " << TQualifier::getGeometryString(outputPrimitive) << "\n";
// Fall through
- case EShLangTaskNV:
+ case EShLangTask:
// Fall through
case EShLangCompute:
infoSink.debug << "local_size = (" << localSize[0] << ", " << localSize[1] << ", " << localSize[2] << ")\n";
diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp
index 19eabdf..4250e92 100644
--- a/glslang/MachineIndependent/iomapper.cpp
+++ b/glslang/MachineIndependent/iomapper.cpp
@@ -203,11 +203,7 @@
inline void operator()(std::pair<const TString, TVarEntryInfo>& entKey) {
TVarEntryInfo& ent = entKey.second;
- ent.newLocation = -1;
- ent.newComponent = -1;
- ent.newBinding = -1;
- ent.newSet = -1;
- ent.newIndex = -1;
+ ent.clearNewAssignments();
const bool isValid = resolver.validateBinding(stage, ent);
if (isValid) {
resolver.resolveSet(ent.stage, ent);
@@ -281,11 +277,7 @@
inline void operator()(std::pair<const TString, TVarEntryInfo>& entKey)
{
TVarEntryInfo& ent = entKey.second;
- ent.newLocation = -1;
- ent.newComponent = -1;
- ent.newBinding = -1;
- ent.newSet = -1;
- ent.newIndex = -1;
+ ent.clearNewAssignments();
const bool isValid = resolver.validateInOut(ent.stage, ent);
if (isValid) {
resolver.resolveInOutLocation(stage, ent);
@@ -514,6 +506,24 @@
return;
}
else {
+ // Deal with input/output pairs where one is a block member but the other is loose,
+ // e.g. with ARB_separate_shader_objects
+ if (type1.getBasicType() == EbtBlock &&
+ type1.isStruct() && !type2.isStruct()) {
+ // Iterate through block members tracking layout
+ glslang::TString name;
+ type1.getStruct()->begin()->type->appendMangledName(name);
+ if (name == mangleName2
+ && type1.getQualifier().layoutLocation == type2.getQualifier().layoutLocation) return;
+ }
+ if (type2.getBasicType() == EbtBlock &&
+ type2.isStruct() && !type1.isStruct()) {
+ // Iterate through block members tracking layout
+ glslang::TString name;
+ type2.getStruct()->begin()->type->appendMangledName(name);
+ if (name == mangleName1
+ && type1.getQualifier().layoutLocation == type2.getQualifier().layoutLocation) return;
+ }
TString err = "Invalid In/Out variable type : " + entKey.first;
infoSink.info.message(EPrefixInternalError, err.c_str());
hadError = true;
@@ -827,7 +837,7 @@
}
// no locations added if already present, a built-in variable, a block, or an opaque
if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getBasicType() == EbtBlock ||
- type.isAtomic() || (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) {
+ type.isAtomic() || type.isSpirvType() || (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) {
return ent.newLocation = -1;
}
// no locations on blocks of built-in variables
@@ -855,8 +865,8 @@
return ent.newLocation = -1;
}
- // no locations added if already present, or a built-in variable
- if (type.getQualifier().hasLocation() || type.isBuiltIn()) {
+ // no locations added if already present, a built-in variable, or a variable with SPIR-V decorate
+ if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getQualifier().hasSprivDecorate()) {
return ent.newLocation = -1;
}
@@ -942,8 +952,8 @@
if (type.getQualifier().hasLocation()) {
return ent.newLocation = type.getQualifier().layoutLocation;
}
- // no locations added if already present, or a built-in variable
- if (type.isBuiltIn()) {
+ // no locations added if already present, a built-in variable, or a variable with SPIR-V decorate
+ if (type.isBuiltIn() || type.getQualifier().hasSprivDecorate()) {
return ent.newLocation = -1;
}
// no locations on blocks of built-in variables
@@ -1024,7 +1034,8 @@
} else {
// no locations added if already present, a built-in variable, a block, or an opaque
if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getBasicType() == EbtBlock ||
- type.isAtomic() || (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) {
+ type.isAtomic() || type.isSpirvType() ||
+ (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) {
return ent.newLocation = -1;
}
// no locations on blocks of built-in variables
@@ -1651,6 +1662,10 @@
if (size <= int(autoPushConstantMaxSize)) {
qualifier.setBlockStorage(EbsPushConstant);
qualifier.layoutPacking = autoPushConstantBlockPacking;
+ // Push constants don't have set/binding etc. decorations, remove those.
+ qualifier.layoutSet = TQualifier::layoutSetEnd;
+ at->second.clearNewAssignments();
+
upgraded = true;
}
}
@@ -1658,10 +1673,14 @@
// If it's been upgraded to push_constant, then remove it from the uniformVector
// so it doesn't get a set/binding assigned to it.
if (upgraded) {
- auto at = std::find_if(uniformVector.begin(), uniformVector.end(),
- [this](const TVarLivePair& p) { return p.first == autoPushConstantBlockName; });
- if (at != uniformVector.end())
- uniformVector.erase(at);
+ while (1) {
+ auto at = std::find_if(uniformVector.begin(), uniformVector.end(),
+ [this](const TVarLivePair& p) { return p.first == autoPushConstantBlockName; });
+ if (at != uniformVector.end())
+ uniformVector.erase(at);
+ else
+ break;
+ }
}
}
for (size_t stage = 0; stage < EShLangCount; stage++) {
diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h
index c43864e..ba7bc3b 100644
--- a/glslang/MachineIndependent/iomapper.h
+++ b/glslang/MachineIndependent/iomapper.h
@@ -61,6 +61,15 @@
int newComponent;
int newIndex;
EShLanguage stage;
+
+ void clearNewAssignments() {
+ newBinding = -1;
+ newSet = -1;
+ newLocation = -1;
+ newComponent = -1;
+ newIndex = -1;
+ }
+
struct TOrderById {
inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) { return l.id < r.id; }
};
diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp
index b1adfc9..acc512f 100644
--- a/glslang/MachineIndependent/linkValidate.cpp
+++ b/glslang/MachineIndependent/linkValidate.cpp
@@ -55,22 +55,28 @@
//
// Link-time error emitter.
//
-void TIntermediate::error(TInfoSink& infoSink, const char* message)
+void TIntermediate::error(TInfoSink& infoSink, const char* message, EShLanguage unitStage)
{
#ifndef GLSLANG_WEB
infoSink.info.prefix(EPrefixError);
- infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n";
+ if (unitStage < EShLangCount)
+ infoSink.info << "Linking " << StageName(getStage()) << " and " << StageName(unitStage) << " stages: " << message << "\n";
+ else
+ infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n";
#endif
++numErrors;
}
// Link-time warning.
-void TIntermediate::warn(TInfoSink& infoSink, const char* message)
+void TIntermediate::warn(TInfoSink& infoSink, const char* message, EShLanguage unitStage)
{
#ifndef GLSLANG_WEB
infoSink.info.prefix(EPrefixWarning);
- infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n";
+ if (unitStage < EShLangCount)
+ infoSink.info << "Linking " << StageName(language) << " and " << StageName(unitStage) << " stages: " << message << "\n";
+ else
+ infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n";
#endif
}
@@ -114,7 +120,7 @@
}
//
-// do error checking on the shader boundary in / out vars
+// do error checking on the shader boundary in / out vars
//
void TIntermediate::checkStageIO(TInfoSink& infoSink, TIntermediate& unit) {
if (unit.treeRoot == nullptr || treeRoot == nullptr)
@@ -206,7 +212,7 @@
if (vertices == TQualifier::layoutNotSet)
vertices = unit.vertices;
else if (unit.vertices != TQualifier::layoutNotSet && vertices != unit.vertices) {
- if (language == EShLangGeometry || language == EShLangMeshNV)
+ if (language == EShLangGeometry || language == EShLangMesh)
error(infoSink, "Contradictory layout max_vertices values");
else if (language == EShLangTessControl)
error(infoSink, "Contradictory layout vertices values");
@@ -216,7 +222,7 @@
if (primitives == TQualifier::layoutNotSet)
primitives = unit.primitives;
else if (primitives != unit.primitives) {
- if (language == EShLangMeshNV)
+ if (language == EShLangMesh)
error(infoSink, "Contradictory layout max_primitives values");
else
assert(0);
@@ -312,6 +318,8 @@
MERGE_TRUE(autoMapBindings);
MERGE_TRUE(autoMapLocations);
MERGE_TRUE(invertY);
+ MERGE_TRUE(dxPositionW);
+ MERGE_TRUE(debugInfo);
MERGE_TRUE(flattenUniformArrays);
MERGE_TRUE(useUnknownFormat);
MERGE_TRUE(hlslOffsets);
@@ -579,9 +587,6 @@
}
void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* block, TIntermSymbol* unitBlock, TIntermediate* unit) {
- if (block->getType() == unitBlock->getType()) {
- return;
- }
if (block->getType().getTypeName() != unitBlock->getType().getTypeName() ||
block->getType().getBasicType() != unitBlock->getType().getBasicType() ||
@@ -628,44 +633,42 @@
}
}
- TType unitType;
- unitType.shallowCopy(unitBlock->getType());
-
// update symbol node in unit tree,
// and other nodes that may reference it
class TMergeBlockTraverser : public TIntermTraverser {
public:
- TMergeBlockTraverser(const glslang::TType &type, const glslang::TType& unitType,
- glslang::TIntermediate& unit,
- const std::map<unsigned int, unsigned int>& memberIdxUpdates) :
- newType(type), unitType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates)
- { }
- virtual ~TMergeBlockTraverser() { }
+ TMergeBlockTraverser(const TIntermSymbol* newSym)
+ : newSymbol(newSym), newType(nullptr), unit(nullptr), memberIndexUpdates(nullptr)
+ {
+ }
+ TMergeBlockTraverser(const TIntermSymbol* newSym, const glslang::TType* unitType, glslang::TIntermediate* unit,
+ const std::map<unsigned int, unsigned int>* memberIdxUpdates)
+ : TIntermTraverser(false, true), newSymbol(newSym), newType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates)
+ {
+ }
+ virtual ~TMergeBlockTraverser() {}
- const glslang::TType& newType; // type with modifications
- const glslang::TType& unitType; // copy of original type
- glslang::TIntermediate& unit; // intermediate that is being updated
- const std::map<unsigned int, unsigned int>& memberIndexUpdates;
+ const TIntermSymbol* newSymbol;
+ const glslang::TType* newType; // shallow copy of the new type
+ glslang::TIntermediate* unit; // intermediate that is being updated
+ const std::map<unsigned int, unsigned int>* memberIndexUpdates;
virtual void visitSymbol(TIntermSymbol* symbol)
{
- glslang::TType& symType = symbol->getWritableType();
-
- if (symType == unitType) {
- // each symbol node has a local copy of the unitType
- // if merging involves changing properties that aren't shared objects
- // they should be updated in all instances
-
- // e.g. the struct list is a ptr to an object, so it can be updated
- // once, outside the traverser
- //*symType.getWritableStruct() = *newType.getStruct();
+ if (newSymbol->getAccessName() == symbol->getAccessName() &&
+ newSymbol->getQualifier().getBlockStorage() == symbol->getQualifier().getBlockStorage()) {
+ // Each symbol node may have a local copy of the block structure.
+ // Update those structures to match the new one post-merge
+ *(symbol->getWritableType().getWritableStruct()) = *(newSymbol->getType().getStruct());
}
-
}
virtual bool visitBinary(TVisit, glslang::TIntermBinary* node)
{
- if (node->getOp() == EOpIndexDirectStruct && node->getLeft()->getType() == unitType) {
+ if (!unit || !newType || !memberIndexUpdates || memberIndexUpdates->empty())
+ return true;
+
+ if (node->getOp() == EOpIndexDirectStruct && node->getLeft()->getType() == *newType) {
// this is a dereference to a member of the block since the
// member list changed, need to update this to point to the
// right index
@@ -673,8 +676,8 @@
glslang::TIntermConstantUnion* constNode = node->getRight()->getAsConstantUnion();
unsigned int memberIdx = constNode->getConstArray()[0].getUConst();
- unsigned int newIdx = memberIndexUpdates.at(memberIdx);
- TIntermTyped* newConstNode = unit.addConstantUnion(newIdx, node->getRight()->getLoc());
+ unsigned int newIdx = memberIndexUpdates->at(memberIdx);
+ TIntermTyped* newConstNode = unit->addConstantUnion(newIdx, node->getRight()->getLoc());
node->setRight(newConstNode);
delete constNode;
@@ -683,10 +686,20 @@
}
return true;
}
- } finalLinkTraverser(block->getType(), unitType, *unit, memberIndexUpdates);
+ };
- // update the tree to use the new type
- unit->getTreeRoot()->traverse(&finalLinkTraverser);
+ // 'this' may have symbols that are using the old block structure, so traverse the tree to update those
+ // in 'visitSymbol'
+ TMergeBlockTraverser finalLinkTraverser(block);
+ getTreeRoot()->traverse(&finalLinkTraverser);
+
+ // The 'unit' intermediate needs the block structures update, but also structure entry indices
+ // may have changed from the old block to the new one that it was merged into, so update those
+ // in 'visitBinary'
+ TType newType;
+ newType.shallowCopy(block->getType());
+ TMergeBlockTraverser unitFinalLinkTraverser(block, &newType, unit, &memberIndexUpdates);
+ unit->getTreeRoot()->traverse(&unitFinalLinkTraverser);
// update the member list
(*unitMemberList) = (*memberList);
@@ -759,7 +772,10 @@
auto checkName = [this, unitSymbol, &infoSink](const TString& name) {
for (unsigned int i = 0; i < unitSymbol->getType().getStruct()->size(); ++i) {
- if (name == (*unitSymbol->getType().getStruct())[i].type->getFieldName()) {
+ if (name == (*unitSymbol->getType().getStruct())[i].type->getFieldName()
+ && !((*unitSymbol->getType().getStruct())[i].type->getQualifier().hasLocation()
+ || unitSymbol->getType().getQualifier().hasLocation())
+ ) {
error(infoSink, "Anonymous member name used for global variable or other anonymous member: ");
infoSink.info << (*unitSymbol->getType().getStruct())[i].type->getCompleteString() << "\n";
}
@@ -815,6 +831,10 @@
#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
bool crossStage = getStage() != unitStage;
bool writeTypeComparison = false;
+ bool errorReported = false;
+ bool printQualifiers = false;
+ bool printPrecision = false;
+ bool printType = false;
// Types have to match
{
@@ -846,11 +866,48 @@
(symbol.getType().isUnsizedArray() || unitSymbol.getType().isUnsizedArray()));
}
- if (!symbol.getType().sameElementType(unitSymbol.getType()) ||
- !symbol.getType().sameTypeParameters(unitSymbol.getType()) ||
- !arraysMatch ) {
+ int lpidx = -1;
+ int rpidx = -1;
+ if (!symbol.getType().sameElementType(unitSymbol.getType(), &lpidx, &rpidx)) {
+ if (lpidx >= 0 && rpidx >= 0) {
+ error(infoSink, "Member names and types must match:", unitStage);
+ infoSink.info << " Block: " << symbol.getType().getTypeName() << "\n";
+ infoSink.info << " " << StageName(getStage()) << " stage: \""
+ << (*symbol.getType().getStruct())[lpidx].type->getCompleteString(true, false, false, true,
+ (*symbol.getType().getStruct())[lpidx].type->getFieldName()) << "\"\n";
+ infoSink.info << " " << StageName(unitStage) << " stage: \""
+ << (*unitSymbol.getType().getStruct())[rpidx].type->getCompleteString(true, false, false, true,
+ (*unitSymbol.getType().getStruct())[rpidx].type->getFieldName()) << "\"\n";
+ errorReported = true;
+ } else if (lpidx >= 0 && rpidx == -1) {
+ TString errmsg = StageName(getStage());
+ errmsg.append(" block member has no corresponding member in ").append(StageName(unitStage)).append(" block:");
+ error(infoSink, errmsg.c_str(), unitStage);
+ infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << ", Member: "
+ << (*symbol.getType().getStruct())[lpidx].type->getFieldName() << "\n";
+ infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << ", Member: n/a \n";
+ errorReported = true;
+ } else if (lpidx == -1 && rpidx >= 0) {
+ TString errmsg = StageName(unitStage);
+ errmsg.append(" block member has no corresponding member in ").append(StageName(getStage())).append(" block:");
+ error(infoSink, errmsg.c_str(), unitStage);
+ infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << ", Member: "
+ << (*unitSymbol.getType().getStruct())[rpidx].type->getFieldName() << "\n";
+ infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << ", Member: n/a \n";
+ errorReported = true;
+ } else {
+ error(infoSink, "Types must match:", unitStage);
+ writeTypeComparison = true;
+ printType = true;
+ }
+ } else if (!arraysMatch) {
+ error(infoSink, "Array sizes must be compatible:", unitStage);
writeTypeComparison = true;
- error(infoSink, "Types must match:");
+ printType = true;
+ } else if (!symbol.getType().sameTypeParameters(unitSymbol.getType())) {
+ error(infoSink, "Type parameters must match:", unitStage);
+ writeTypeComparison = true;
+ printType = true;
}
}
@@ -871,13 +928,35 @@
}
const TQualifier& qualifier = (*symbol.getType().getStruct())[li].type->getQualifier();
const TQualifier & unitQualifier = (*unitSymbol.getType().getStruct())[ri].type->getQualifier();
- if (qualifier.layoutMatrix != unitQualifier.layoutMatrix ||
- qualifier.layoutOffset != unitQualifier.layoutOffset ||
- qualifier.layoutAlign != unitQualifier.layoutAlign ||
- qualifier.layoutLocation != unitQualifier.layoutLocation ||
- qualifier.layoutComponent != unitQualifier.layoutComponent) {
- error(infoSink, "Interface block member layout qualifiers must match:");
- writeTypeComparison = true;
+ bool layoutQualifierError = false;
+ if (qualifier.layoutMatrix != unitQualifier.layoutMatrix) {
+ error(infoSink, "Interface block member layout matrix qualifier must match:", unitStage);
+ layoutQualifierError = true;
+ }
+ if (qualifier.layoutOffset != unitQualifier.layoutOffset) {
+ error(infoSink, "Interface block member layout offset qualifier must match:", unitStage);
+ layoutQualifierError = true;
+ }
+ if (qualifier.layoutAlign != unitQualifier.layoutAlign) {
+ error(infoSink, "Interface block member layout align qualifier must match:", unitStage);
+ layoutQualifierError = true;
+ }
+ if (qualifier.layoutLocation != unitQualifier.layoutLocation) {
+ error(infoSink, "Interface block member layout location qualifier must match:", unitStage);
+ layoutQualifierError = true;
+ }
+ if (qualifier.layoutComponent != unitQualifier.layoutComponent) {
+ error(infoSink, "Interface block member layout component qualifier must match:", unitStage);
+ layoutQualifierError = true;
+ }
+ if (layoutQualifierError) {
+ infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << ", Member: "
+ << (*symbol.getType().getStruct())[li].type->getFieldName() << " \""
+ << (*symbol.getType().getStruct())[li].type->getCompleteString(true, true, false, false) << "\"\n";
+ infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << ", Member: "
+ << (*unitSymbol.getType().getStruct())[ri].type->getFieldName() << " \""
+ << (*unitSymbol.getType().getStruct())[ri].type->getCompleteString(true, true, false, false) << "\"\n";
+ errorReported = true;
}
++li;
++ri;
@@ -891,8 +970,9 @@
// Qualifiers have to (almost) match
// Storage...
if (!isInOut && symbol.getQualifier().storage != unitSymbol.getQualifier().storage) {
- error(infoSink, "Storage qualifiers must match:");
+ error(infoSink, "Storage qualifiers must match:", unitStage);
writeTypeComparison = true;
+ printQualifiers = true;
}
// Uniform and buffer blocks must either both have an instance name, or
@@ -900,37 +980,40 @@
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:");
+ " or all be named:", unitStage);
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.");
+ warn(infoSink, "Matched shader interfaces are using different instance names.", unitStage);
writeTypeComparison = true;
}
// Precision...
if (!isInOut && symbol.getQualifier().precision != unitSymbol.getQualifier().precision) {
- error(infoSink, "Precision qualifiers must match:");
+ error(infoSink, "Precision qualifiers must match:", unitStage);
writeTypeComparison = true;
+ printPrecision = true;
}
// Invariance...
if (! crossStage && symbol.getQualifier().invariant != unitSymbol.getQualifier().invariant) {
- error(infoSink, "Presence of invariant qualifier must match:");
+ error(infoSink, "Presence of invariant qualifier must match:", unitStage);
writeTypeComparison = true;
+ printQualifiers = true;
}
// Precise...
if (! crossStage && symbol.getQualifier().isNoContraction() != unitSymbol.getQualifier().isNoContraction()) {
- error(infoSink, "Presence of precise qualifier must match:");
+ error(infoSink, "Presence of precise qualifier must match:", unitStage);
writeTypeComparison = true;
+ printPrecision = true;
}
// Auxiliary and interpolation...
- // "interpolation qualification (e.g., flat) and auxiliary qualification (e.g. centroid) may differ.
+ // "interpolation qualification (e.g., flat) and auxiliary qualification (e.g. centroid) may differ.
// These mismatches are allowed between any pair of stages ...
// those provided in the fragment shader supersede those provided in previous stages."
if (!crossStage &&
@@ -940,57 +1023,137 @@
symbol.getQualifier().isSample()!= unitSymbol.getQualifier().isSample() ||
symbol.getQualifier().isPatch() != unitSymbol.getQualifier().isPatch() ||
symbol.getQualifier().isNonPerspective() != unitSymbol.getQualifier().isNonPerspective())) {
- error(infoSink, "Interpolation and auxiliary storage qualifiers must match:");
+ error(infoSink, "Interpolation and auxiliary storage qualifiers must match:", unitStage);
writeTypeComparison = true;
+ printQualifiers = true;
}
// 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 ||
- symbol.getQualifier().readonly != unitSymbol.getQualifier().readonly ||
- symbol.getQualifier().writeonly != unitSymbol.getQualifier().writeonly) {
- error(infoSink, "Memory qualifiers must match:");
- writeTypeComparison = true;
+ bool memoryQualifierError = false;
+ if (symbol.getQualifier().coherent != unitSymbol.getQualifier().coherent) {
+ error(infoSink, "Memory coherent qualifier must match:", unitStage);
+ memoryQualifierError = true;
+ }
+ if (symbol.getQualifier().devicecoherent != unitSymbol.getQualifier().devicecoherent) {
+ error(infoSink, "Memory devicecoherent qualifier must match:", unitStage);
+ memoryQualifierError = true;
+ }
+ if (symbol.getQualifier().queuefamilycoherent != unitSymbol.getQualifier().queuefamilycoherent) {
+ error(infoSink, "Memory queuefamilycoherent qualifier must match:", unitStage);
+ memoryQualifierError = true;
+ }
+ if (symbol.getQualifier().workgroupcoherent != unitSymbol.getQualifier().workgroupcoherent) {
+ error(infoSink, "Memory workgroupcoherent qualifier must match:", unitStage);
+ memoryQualifierError = true;
+ }
+ if (symbol.getQualifier().subgroupcoherent != unitSymbol.getQualifier().subgroupcoherent) {
+ error(infoSink, "Memory subgroupcoherent qualifier must match:", unitStage);
+ memoryQualifierError = true;
+ }
+ if (symbol.getQualifier().shadercallcoherent != unitSymbol.getQualifier().shadercallcoherent) {
+ error(infoSink, "Memory shadercallcoherent qualifier must match:", unitStage);
+ memoryQualifierError = true;
+ }
+ if (symbol.getQualifier().nonprivate != unitSymbol.getQualifier().nonprivate) {
+ error(infoSink, "Memory nonprivate qualifier must match:", unitStage);
+ memoryQualifierError = true;
+ }
+ if (symbol.getQualifier().volatil != unitSymbol.getQualifier().volatil) {
+ error(infoSink, "Memory volatil qualifier must match:", unitStage);
+ memoryQualifierError = true;
+ }
+ if (symbol.getQualifier().restrict != unitSymbol.getQualifier().restrict) {
+ error(infoSink, "Memory restrict qualifier must match:", unitStage);
+ memoryQualifierError = true;
+ }
+ if (symbol.getQualifier().readonly != unitSymbol.getQualifier().readonly) {
+ error(infoSink, "Memory readonly qualifier must match:", unitStage);
+ memoryQualifierError = true;
+ }
+ if (symbol.getQualifier().writeonly != unitSymbol.getQualifier().writeonly) {
+ error(infoSink, "Memory writeonly qualifier must match:", unitStage);
+ memoryQualifierError = true;
+ }
+ if (memoryQualifierError) {
+ writeTypeComparison = true;
+ printQualifiers = true;
}
// Layouts...
// TODO: 4.4 enhanced layouts: Generalize to include offset/align: current spec
// requires separate user-supplied offset from actual computed offset, but
// current implementation only has one offset.
- if (symbol.getQualifier().layoutMatrix != unitSymbol.getQualifier().layoutMatrix ||
- symbol.getQualifier().layoutPacking != unitSymbol.getQualifier().layoutPacking ||
- (symbol.getQualifier().hasLocation() && unitSymbol.getQualifier().hasLocation() && symbol.getQualifier().layoutLocation != unitSymbol.getQualifier().layoutLocation) ||
- symbol.getQualifier().layoutComponent != unitSymbol.getQualifier().layoutComponent ||
- symbol.getQualifier().layoutIndex != unitSymbol.getQualifier().layoutIndex ||
- (symbol.getQualifier().hasBinding() && unitSymbol.getQualifier().hasBinding() && symbol.getQualifier().layoutBinding != unitSymbol.getQualifier().layoutBinding) ||
- (symbol.getQualifier().hasBinding() && (symbol.getQualifier().layoutOffset != unitSymbol.getQualifier().layoutOffset))) {
- error(infoSink, "Layout qualification must match:");
+ bool layoutQualifierError = false;
+ if (symbol.getQualifier().layoutMatrix != unitSymbol.getQualifier().layoutMatrix) {
+ error(infoSink, "Layout matrix qualifier must match:", unitStage);
+ layoutQualifierError = true;
+ }
+ if (symbol.getQualifier().layoutPacking != unitSymbol.getQualifier().layoutPacking) {
+ error(infoSink, "Layout packing qualifier must match:", unitStage);
+ layoutQualifierError = true;
+ }
+ if (symbol.getQualifier().hasLocation() && unitSymbol.getQualifier().hasLocation() && symbol.getQualifier().layoutLocation != unitSymbol.getQualifier().layoutLocation) {
+ error(infoSink, "Layout location qualifier must match:", unitStage);
+ layoutQualifierError = true;
+ }
+ if (symbol.getQualifier().layoutComponent != unitSymbol.getQualifier().layoutComponent) {
+ error(infoSink, "Layout component qualifier must match:", unitStage);
+ layoutQualifierError = true;
+ }
+ if (symbol.getQualifier().layoutIndex != unitSymbol.getQualifier().layoutIndex) {
+ error(infoSink, "Layout index qualifier must match:", unitStage);
+ layoutQualifierError = true;
+ }
+ if (symbol.getQualifier().hasBinding() && unitSymbol.getQualifier().hasBinding() && symbol.getQualifier().layoutBinding != unitSymbol.getQualifier().layoutBinding) {
+ error(infoSink, "Layout binding qualifier must match:", unitStage);
+ layoutQualifierError = true;
+ }
+ if (symbol.getQualifier().hasBinding() && (symbol.getQualifier().layoutOffset != unitSymbol.getQualifier().layoutOffset)) {
+ error(infoSink, "Layout offset qualifier must match:", unitStage);
+ layoutQualifierError = true;
+ }
+ if (layoutQualifierError) {
writeTypeComparison = true;
+ printQualifiers = true;
}
// Initializers have to match, if both are present, and if we don't already know the types don't match
- if (! writeTypeComparison) {
+ if (! writeTypeComparison && ! errorReported) {
if (! symbol.getConstArray().empty() && ! unitSymbol.getConstArray().empty()) {
if (symbol.getConstArray() != unitSymbol.getConstArray()) {
- error(infoSink, "Initializers must match:");
+ error(infoSink, "Initializers must match:", unitStage);
infoSink.info << " " << symbol.getName() << "\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";
+ if (symbol.getType().getBasicType() == EbtBlock && unitSymbol.getType().getBasicType() == EbtBlock &&
+ symbol.getType().getStruct() && unitSymbol.getType().getStruct()) {
+ if (printType) {
+ infoSink.info << " " << StageName(getStage()) << " stage: \"" << symbol.getType().getCompleteString(true, printQualifiers, printPrecision,
+ printType, symbol.getName(), symbol.getType().getTypeName()) << "\"\n";
+ infoSink.info << " " << StageName(unitStage) << " stage: \"" << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision,
+ printType, unitSymbol.getName(), unitSymbol.getType().getTypeName()) << "\"\n";
+ } else {
+ infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << " Instance: " << symbol.getName()
+ << ": \"" << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n";
+ infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << " Instance: " << unitSymbol.getName()
+ << ": \"" << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n";
+ }
+ } else {
+ if (printType) {
+ infoSink.info << " " << StageName(getStage()) << " stage: \""
+ << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType, symbol.getName()) << "\"\n";
+ infoSink.info << " " << StageName(unitStage) << " stage: \""
+ << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType, unitSymbol.getName()) << "\"\n";
+ } else {
+ infoSink.info << " " << StageName(getStage()) << " stage: " << symbol.getName() << " \""
+ << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n";
+ infoSink.info << " " << StageName(unitStage) << " stage: " << unitSymbol.getName() << " \""
+ << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n";
+ }
+ }
}
#endif
}
@@ -1132,8 +1295,8 @@
error(infoSink, "At least one shader must specify a layout(max_vertices = value)");
break;
case EShLangFragment:
- // for GL_ARB_post_depth_coverage, EarlyFragmentTest is set automatically in
- // ParseHelper.cpp. So if we reach here, this must be GL_EXT_post_depth_coverage
+ // for GL_ARB_post_depth_coverage, EarlyFragmentTest is set automatically in
+ // ParseHelper.cpp. So if we reach here, this must be GL_EXT_post_depth_coverage
// requiring explicit early_fragment_tests
if (getPostDepthCoverage() && !getEarlyFragmentTests())
error(infoSink, "post_depth_coverage requires early_fragment_tests");
@@ -1150,7 +1313,7 @@
if (numShaderRecordBlocks > 1)
error(infoSink, "Only one shaderRecordNV buffer block is allowed per stage");
break;
- case EShLangMeshNV:
+ case EShLangMesh:
// NV_mesh_shader doesn't allow use of both single-view and per-view builtins.
if (inIoAccessed("gl_Position") && inIoAccessed("gl_PositionPerViewNV"))
error(infoSink, "Can only use one of gl_Position or gl_PositionPerViewNV");
@@ -1169,9 +1332,11 @@
if (primitives == TQualifier::layoutNotSet)
error(infoSink, "At least one shader must specify a layout(max_primitives = value)");
// fall through
- case EShLangTaskNV:
+ case EShLangTask:
if (numTaskNVBlocks > 1)
error(infoSink, "Only one taskNV interface block is allowed per shader");
+ if (numTaskEXTPayloads > 1)
+ error(infoSink, "Only single variable of type taskPayloadSharedEXT is allowed per shader");
sharedBlockCheck(infoSink);
break;
default:
@@ -1798,7 +1963,7 @@
return size;
}
- int numComponents;
+ int numComponents {0};
if (type.isScalar())
numComponents = 1;
else if (type.isVector())
@@ -2064,7 +2229,7 @@
if (type.isVector()) {
int scalarAlign = getBaseAlignmentScalar(type, size);
-
+
size *= type.getVectorSize();
return scalarAlign;
}
@@ -2085,7 +2250,7 @@
assert(0); // all cases should be covered above
size = 1;
- return 1;
+ return 1;
}
int TIntermediate::getMemberAlignment(const TType& type, int& size, int& stride, TLayoutPacking layoutPacking, bool rowMajor)
@@ -2175,8 +2340,8 @@
! type.getQualifier().patch) ||
(language == EShLangTessEvaluation && type.getQualifier().storage == EvqVaryingIn) ||
(language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn &&
- type.getQualifier().pervertexNV) ||
- (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut &&
+ (type.getQualifier().pervertexNV || type.getQualifier().pervertexEXT)) ||
+ (language == EShLangMesh && type.getQualifier().storage == EvqVaryingOut &&
!type.getQualifier().perTaskNV));
}
#endif // not GLSLANG_WEB
diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h
index 6aa9399..e7a171c 100644
--- a/glslang/MachineIndependent/localintermediate.h
+++ b/glslang/MachineIndependent/localintermediate.h
@@ -290,10 +290,14 @@
resources(TBuiltInResource{}),
numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false),
invertY(false),
+ dxPositionW(false),
+ enhancedMsgs(false),
+ debugInfo(false),
useStorageBuffer(false),
invariantAll(false),
nanMinMaxClamp(false),
depthReplacing(false),
+ stencilReplacing(false),
uniqueId(0),
globalUniformBlockName(""),
atomicCounterBlockName(""),
@@ -307,9 +311,9 @@
useVulkanMemoryModel(false),
invocations(TQualifier::layoutNotSet), vertices(TQualifier::layoutNotSet),
inputPrimitive(ElgNone), outputPrimitive(ElgNone),
- pixelCenterInteger(false), originUpperLeft(false),
+ pixelCenterInteger(false), originUpperLeft(false),texCoordBuiltinRedeclared(false),
vertexSpacing(EvsNone), vertexOrder(EvoNone), interlockOrdering(EioNone), pointMode(false), earlyFragmentTests(false),
- postDepthCoverage(false), depthLayout(EldNone),
+ postDepthCoverage(false), earlyAndLateFragmentTestsAMD(false), depthLayout(EldNone), stencilLayout(ElsNone),
hlslFunctionality1(false),
blendEquations(0), xfbMode(false), multiStream(false),
layoutOverrideCoverage(false),
@@ -319,6 +323,7 @@
primitives(TQualifier::layoutNotSet),
numTaskNVBlocks(0),
layoutPrimitiveCulling(false),
+ numTaskEXTPayloads(0),
autoMapBindings(false),
autoMapLocations(false),
flattenUniformArrays(false),
@@ -397,6 +402,9 @@
case EShTargetSpv_1_5:
processes.addProcess("target-env spirv1.5");
break;
+ case EShTargetSpv_1_6:
+ processes.addProcess("target-env spirv1.6");
+ break;
default:
processes.addProcess("target-env spirvUnknown");
break;
@@ -415,6 +423,9 @@
case EShTargetVulkan_1_2:
processes.addProcess("target-env vulkan1.2");
break;
+ case EShTargetVulkan_1_3:
+ processes.addProcess("target-env vulkan1.3");
+ break;
default:
processes.addProcess("target-env vulkanUnknown");
break;
@@ -452,6 +463,12 @@
const std::string& getEntryPointName() const { return entryPointName; }
const std::string& getEntryPointMangledName() const { return entryPointMangledName; }
+ void setDebugInfo(bool debuginfo)
+ {
+ debugInfo = debuginfo;
+ }
+ bool getDebugInfo() const { return debugInfo; }
+
void setInvertY(bool invert)
{
invertY = invert;
@@ -460,6 +477,20 @@
}
bool getInvertY() const { return invertY; }
+ void setDxPositionW(bool dxPosW)
+ {
+ dxPositionW = dxPosW;
+ if (dxPositionW)
+ processes.addProcess("dx-position-w");
+ }
+ bool getDxPositionW() const { return dxPositionW; }
+
+ void setEnhancedMsgs()
+ {
+ enhancedMsgs = true;
+ }
+ bool getEnhancedMsgs() const { return enhancedMsgs && getSource() == EShSourceGlsl; }
+
#ifdef ENABLE_HLSL
void setSource(EShSource s) { source = s; }
EShSource getSource() const { return source; }
@@ -565,6 +596,8 @@
bool isInvariantAll() const { return invariantAll; }
void setDepthReplacing() { depthReplacing = true; }
bool isDepthReplacing() const { return depthReplacing; }
+ void setStencilReplacing() { stencilReplacing = true; }
+ bool isStencilReplacing() const { return stencilReplacing; }
bool setLocalSize(int dim, int size)
{
if (localSizeNotDefault[dim])
@@ -614,6 +647,7 @@
int getNumPushConstants() const { return 0; }
void addShaderRecordCount() { }
void addTaskNVCount() { }
+ void addTaskPayloadEXTCount() { }
void setUseVulkanMemoryModel() { }
bool usingVulkanMemoryModel() const { return false; }
bool usingPhysicalStorageBuffer() const { return false; }
@@ -731,6 +765,7 @@
int getNumPushConstants() const { return numPushConstants; }
void addShaderRecordCount() { ++numShaderRecordBlocks; }
void addTaskNVCount() { ++numTaskNVBlocks; }
+ void addTaskPayloadEXTCount() { ++numTaskEXTPayloads; }
bool setInvocations(int i)
{
@@ -799,7 +834,9 @@
void setPostDepthCoverage() { postDepthCoverage = true; }
bool getPostDepthCoverage() const { return postDepthCoverage; }
void setEarlyFragmentTests() { earlyFragmentTests = true; }
+ void setEarlyAndLateFragmentTestsAMD() { earlyAndLateFragmentTestsAMD = true; }
bool getEarlyFragmentTests() const { return earlyFragmentTests; }
+ bool getEarlyAndLateFragmentTestsAMD() const { return earlyAndLateFragmentTestsAMD; }
bool setDepth(TLayoutDepth d)
{
if (depthLayout != EldNone)
@@ -807,11 +844,21 @@
depthLayout = d;
return true;
}
+ bool setStencil(TLayoutStencil s)
+ {
+ if (stencilLayout != ElsNone)
+ return stencilLayout == s;
+ stencilLayout = s;
+ return true;
+ }
TLayoutDepth getDepth() const { return depthLayout; }
+ TLayoutStencil getStencil() const { return stencilLayout; }
void setOriginUpperLeft() { originUpperLeft = true; }
bool getOriginUpperLeft() const { return originUpperLeft; }
void setPixelCenterInteger() { pixelCenterInteger = true; }
bool getPixelCenterInteger() const { return pixelCenterInteger; }
+ void setTexCoordRedeclared() { texCoordBuiltinRedeclared = true; }
+ bool getTexCoordRedeclared() const { return texCoordBuiltinRedeclared; }
void addBlendEquation(TBlendEquationShift b) { blendEquations |= (1 << b); }
unsigned int getBlendEquations() const { return blendEquations; }
bool setXfbBufferStride(int buffer, unsigned stride)
@@ -1016,8 +1063,8 @@
protected:
TIntermSymbol* addSymbol(long long Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&);
- void error(TInfoSink& infoSink, const char*);
- void warn(TInfoSink& infoSink, const char*);
+ void error(TInfoSink& infoSink, const char*, EShLanguage unitStage = EShLangCount);
+ void warn(TInfoSink& infoSink, const char*, EShLanguage unitStage = EShLangCount);
void mergeCallGraphs(TInfoSink&, TIntermediate&);
void mergeModes(TInfoSink&, TIntermediate&);
void mergeTrees(TInfoSink&, TIntermediate&);
@@ -1070,10 +1117,14 @@
int numPushConstants;
bool recursive;
bool invertY;
+ bool dxPositionW;
+ bool enhancedMsgs;
+ bool debugInfo;
bool useStorageBuffer;
bool invariantAll;
bool nanMinMaxClamp; // true if desiring min/max/clamp to favor non-NaN over NaN
bool depthReplacing;
+ bool stencilReplacing;
int localSize[3];
bool localSizeNotDefault[3];
int localSizeSpecId[3];
@@ -1098,13 +1149,16 @@
TLayoutGeometry outputPrimitive;
bool pixelCenterInteger;
bool originUpperLeft;
+ bool texCoordBuiltinRedeclared;
TVertexSpacing vertexSpacing;
TVertexOrder vertexOrder;
TInterlockOrdering interlockOrdering;
bool pointMode;
bool earlyFragmentTests;
bool postDepthCoverage;
+ bool earlyAndLateFragmentTestsAMD;
TLayoutDepth depthLayout;
+ TLayoutStencil stencilLayout;
bool hlslFunctionality1;
int blendEquations; // an 'or'ing of masks of shifts of TBlendEquationShift
bool xfbMode;
@@ -1117,6 +1171,7 @@
int primitives;
int numTaskNVBlocks;
bool layoutPrimitiveCulling;
+ int numTaskEXTPayloads;
// Base shift values
std::array<unsigned int, EResCount> shiftBinding;
@@ -1158,6 +1213,7 @@
// for callableData/callableDataIn
// set of names of statically read/written I/O that might need extra checking
std::set<TString> ioAccessed;
+
// source code of shader, useful as part of debug information
std::string sourceFile;
std::string sourceText;
diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt
index d521da1..16eb939 100644
--- a/glslang/OSDependent/Unix/CMakeLists.txt
+++ b/glslang/OSDependent/Unix/CMakeLists.txt
@@ -52,8 +52,18 @@
target_link_libraries(OSDependent Threads::Threads)
endif()
-if(ENABLE_GLSLANG_INSTALL)
- install(TARGETS OSDependent EXPORT OSDependentTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS)
+ install(TARGETS OSDependent EXPORT glslang-targets)
+
+ # Backward compatibility
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/OSDependentTargets.cmake" "
+ message(WARNING \"Using `OSDependentTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
+
+ if (NOT TARGET glslang::OSDependent)
+ include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\")
+ endif()
+
+ add_library(OSDependent ALIAS glslang::OSDependent)
+ ")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OSDependentTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
endif()
diff --git a/glslang/OSDependent/Unix/ossource.cpp b/glslang/OSDependent/Unix/ossource.cpp
index 81da99c..b98df93 100644
--- a/glslang/OSDependent/Unix/ossource.cpp
+++ b/glslang/OSDependent/Unix/ossource.cpp
@@ -57,52 +57,6 @@
//
//
-// Wrapper for Linux call to DetachThread. This is required as pthread_cleanup_push() expects
-// the cleanup routine to return void.
-//
-static void DetachThreadLinux(void *)
-{
- DetachThread();
-}
-
-//
-// Registers cleanup handler, sets cancel type and state, and executes the thread specific
-// cleanup handler. This function will be called in the Standalone.cpp for regression
-// testing. When OpenGL applications are run with the driver code, Linux OS does the
-// thread cleanup.
-//
-void OS_CleanupThreadData(void)
-{
-#if defined(__ANDROID__) || defined(__Fuchsia__)
- DetachThreadLinux(NULL);
-#else
- int old_cancel_state, old_cancel_type;
- void *cleanupArg = NULL;
-
- //
- // Set thread cancel state and push cleanup handler.
- //
- pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &old_cancel_state);
- pthread_cleanup_push(DetachThreadLinux, (void *) cleanupArg);
-
- //
- // Put the thread in deferred cancellation mode.
- //
- pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &old_cancel_type);
-
- //
- // Pop cleanup handler and execute it prior to unregistering the cleanup handler.
- //
- pthread_cleanup_pop(1);
-
- //
- // Restore the thread's previous cancellation mode.
- //
- pthread_setcanceltype(old_cancel_state, NULL);
-#endif
-}
-
-//
// Thread Local Storage Operations
//
inline OS_TLSIndex PthreadKeyToTLSIndex(pthread_key_t key)
diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt
index 21d603e..6048bb8 100644
--- a/glslang/OSDependent/Windows/CMakeLists.txt
+++ b/glslang/OSDependent/Windows/CMakeLists.txt
@@ -48,7 +48,17 @@
endif()
if(ENABLE_GLSLANG_INSTALL)
- install(TARGETS OSDependent EXPORT OSDependentTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+ install(TARGETS OSDependent EXPORT glslang-targets)
+
+ # Backward compatibility
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/OSDependentTargets.cmake" "
+ message(WARNING \"Using `OSDependentTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
+
+ if (NOT TARGET glslang::OSDependent)
+ include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\")
+ endif()
+
+ add_library(OSDependent ALIAS glslang::OSDependent)
+ ")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OSDependentTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
endif()
diff --git a/glslang/OSDependent/osinclude.h b/glslang/OSDependent/osinclude.h
index 218abe4..fcfeff2 100644
--- a/glslang/OSDependent/osinclude.h
+++ b/glslang/OSDependent/osinclude.h
@@ -54,8 +54,6 @@
typedef unsigned int (*TThreadEntrypoint)(void*);
-void OS_CleanupThreadData(void);
-
void OS_DumpMemoryCounters();
} // end namespace glslang
diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h
index d2a4bf4..78dd323 100644
--- a/glslang/Public/ShaderLang.h
+++ b/glslang/Public/ShaderLang.h
@@ -108,8 +108,10 @@
EShLangMissNV = EShLangMiss,
EShLangCallable,
EShLangCallableNV = EShLangCallable,
- EShLangTaskNV,
- EShLangMeshNV,
+ EShLangTask,
+ EShLangTaskNV = EShLangTask,
+ EShLangMesh,
+ EShLangMeshNV = EShLangMesh,
LAST_ELEMENT_MARKER(EShLangCount),
} EShLanguage; // would be better as stage, but this is ancient now
@@ -132,8 +134,10 @@
EShLangMissNVMask = EShLangMissMask,
EShLangCallableMask = (1 << EShLangCallable),
EShLangCallableNVMask = EShLangCallableMask,
- EShLangTaskNVMask = (1 << EShLangTaskNV),
- EShLangMeshNVMask = (1 << EShLangMeshNV),
+ EShLangTaskMask = (1 << EShLangTask),
+ EShLangTaskNVMask = EShLangTaskMask,
+ EShLangMeshMask = (1 << EShLangMesh),
+ EShLangMeshNVMask = EShLangMeshMask,
LAST_ELEMENT_MARKER(EShLanguageMaskCount),
} EShLanguageMask;
@@ -150,8 +154,8 @@
typedef enum {
EShClientNone, // use when there is no client, e.g. for validation
- EShClientVulkan,
- EShClientOpenGL,
+ EShClientVulkan, // as GLSL dialect, specifies KHR_vulkan_glsl extension
+ EShClientOpenGL, // as GLSL dialect, specifies ARB_gl_spirv extension
LAST_ELEMENT_MARKER(EShClientCount),
} EShClient;
@@ -166,8 +170,9 @@
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
+ EShTargetVulkan_1_3 = (1 << 22) | (3 << 12), // Vulkan 1.3
EShTargetOpenGL_450 = 450, // OpenGL
- LAST_ELEMENT_MARKER(EShTargetClientVersionCount = 4),
+ LAST_ELEMENT_MARKER(EShTargetClientVersionCount = 5),
} EShTargetClientVersion;
typedef EShTargetClientVersion EshTargetClientVersion;
@@ -179,7 +184,8 @@
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 = 6),
+ EShTargetSpv_1_6 = (1 << 16) | (6 << 8), // SPIR-V 1.6
+ LAST_ELEMENT_MARKER(EShTargetLanguageVersionCount = 7),
} EShTargetLanguageVersion;
struct TInputLanguage {
@@ -262,6 +268,7 @@
EShMsgHlslLegalization = (1 << 12), // enable HLSL Legalization messages
EShMsgHlslDX9Compatible = (1 << 13), // enable HLSL DX9 compatible mode (for samplers and semantics)
EShMsgBuiltinSymbolTable = (1 << 14), // print the builtin symbol table
+ EShMsgEnhanced = (1 << 15), // enhanced message readability
LAST_ELEMENT_MARKER(EShMsgCount),
};
@@ -298,7 +305,7 @@
//
// ShHandle held by but opaque to the driver. It is allocated,
-// managed, and de-allocated by the compiler/linker. It's contents
+// managed, and de-allocated by the compiler/linker. Its contents
// are defined by and used by the compiler and linker. For example,
// symbol table information and object code passed from the compiler
// to the linker can be stored where ShHandle points.
@@ -468,6 +475,8 @@
GLSLANG_EXPORT void setSourceEntryPoint(const char* sourceEntryPointName);
GLSLANG_EXPORT void addProcesses(const std::vector<std::string>&);
GLSLANG_EXPORT void setUniqueId(unsigned long long id);
+ GLSLANG_EXPORT void setOverrideVersion(int version);
+ GLSLANG_EXPORT void setDebugInfo(bool debugInfo);
// IO resolver binding data: see comments in ShaderLang.cpp
GLSLANG_EXPORT void setShiftBinding(TResourceType res, unsigned int base);
@@ -485,6 +494,8 @@
GLSLANG_EXPORT void addUniformLocationOverride(const char* name, int loc);
GLSLANG_EXPORT void setUniformLocationBase(int base);
GLSLANG_EXPORT void setInvertY(bool invert);
+ GLSLANG_EXPORT void setDxPositionW(bool dxPosW);
+ GLSLANG_EXPORT void setEnhancedMsgs();
#ifdef ENABLE_HLSL
GLSLANG_EXPORT void setHlslIoMapping(bool hlslIoMap);
GLSLANG_EXPORT void setFlattenUniformArrays(bool flatten);
@@ -512,11 +523,14 @@
// use EShClientNone and version of 0, e.g. for validation mode.
// Note 'version' does not describe the target environment,
// just the version of the source dialect to compile under.
+ // For example, to choose the Vulkan dialect of GLSL defined by
+ // version 100 of the KHR_vulkan_glsl extension: lang = EShSourceGlsl,
+ // dialect = EShClientVulkan, and version = 100.
//
// See the definitions of TEnvironment, EShSource, EShLanguage,
// and EShClient for choices and more detail.
//
- // setEnvClient: The client that will be hosting the execution, and it's version.
+ // setEnvClient: The client that will be hosting the execution, and its version.
// Note 'version' is not the version of the languages involved, but
// the version of the client environment.
// Use EShClientNone and version of 0 if there is no client, e.g.
@@ -703,6 +717,9 @@
// a function in the source string can be renamed FROM this TO the name given in setEntryPoint.
std::string sourceEntryPointName;
+ // overrides #version in shader source or default version if #version isn't present
+ int overrideVersion;
+
TEnvironment environment;
friend class TProgram;
diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp
index f9680dd..1d97546 100644
--- a/gtests/AST.FromFile.cpp
+++ b/gtests/AST.FromFile.cpp
@@ -233,8 +233,10 @@
"precise_struct_block.vert",
"maxClipDistances.vert",
"findFunction.frag",
+ "noMatchingFunction.frag",
"constantUnaryConversion.comp",
"xfbUnsizedArray.error.vert",
+ "xfbUnsizedArray.error.tese",
"glsl.140.layoutOffset.error.vert",
"glsl.430.layoutOffset.error.vert",
"glsl.450.subgroup.frag",
@@ -284,9 +286,16 @@
"textureoffset_sampler2darrayshadow.vert",
"atomicAdd.comp",
"GL_ARB_gpu_shader5.u2i.vert",
+ "textureQueryLOD.frag",
"atomicCounterARBOps.vert",
"GL_EXT_shader_integer_mix.vert",
"GL_ARB_draw_instanced.vert",
+ "GL_ARB_fragment_coord_conventions.vert",
+ "BestMatchFunction.vert",
+ "EndStreamPrimitive.geom",
+ "floatBitsToInt.vert",
+ "coord_conventions.frag",
+ "gl_FragCoord.frag"
})),
FileNameAsCustomTestSuffix
);
diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt
index c8f0282..8dff7ed 100644
--- a/gtests/CMakeLists.txt
+++ b/gtests/CMakeLists.txt
@@ -69,9 +69,19 @@
set_property(TARGET glslangtests PROPERTY FOLDER tests)
glslang_set_link_args(glslangtests)
if(ENABLE_GLSLANG_INSTALL)
- install(TARGETS glslangtests EXPORT glslangtestsTargets
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
- install(EXPORT glslangtestsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+ install(TARGETS glslangtests EXPORT glslang-targets)
+
+ # Backward compatibility
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangtestsTargets.cmake" "
+ message(WARNING \"Using `glslangtestsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
+
+ if (NOT TARGET glslang::glslangtests)
+ include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\")
+ endif()
+
+ add_library(glslangtests ALIAS glslang::glslangtests)
+ ")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangtestsTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
endif()
set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test")
diff --git a/gtests/GlslMapIO.FromFile.cpp b/gtests/GlslMapIO.FromFile.cpp
index 574e905..aabb4ae 100644
--- a/gtests/GlslMapIO.FromFile.cpp
+++ b/gtests/GlslMapIO.FromFile.cpp
@@ -109,7 +109,52 @@
success &= outQualifier.layoutLocation == inQualifier.layoutLocation;
}
else {
- success &= false;
+ if (!in.getType()->isStruct()) {
+ bool found = false;
+ for (auto outIt : pipeOut) {
+ if (outIt.second->getType()->isStruct()) {
+ unsigned int baseLoc = outIt.second->getType()->getQualifier().hasLocation() ?
+ outIt.second->getType()->getQualifier().layoutLocation :
+ std::numeric_limits<unsigned int>::max();
+ for (size_t j = 0; j < outIt.second->getType()->getStruct()->size(); j++) {
+ baseLoc = (*outIt.second->getType()->getStruct())[j].type->getQualifier().hasLocation() ?
+ (*outIt.second->getType()->getStruct())[j].type->getQualifier().layoutLocation : baseLoc;
+ if (baseLoc != std::numeric_limits<unsigned int>::max()) {
+ if (baseLoc == in.getType()->getQualifier().layoutLocation) {
+ found = true;
+ break;
+ }
+ baseLoc += glslang::TIntermediate::computeTypeLocationSize(*(*outIt.second->getType()->getStruct())[j].type, EShLangVertex);
+ }
+ }
+ if (found) {
+ break;
+ }
+ }
+ }
+ success &= found;
+ }
+ else {
+ unsigned int baseLoc = in.getType()->getQualifier().hasLocation() ? in.getType()->getQualifier().layoutLocation : -1;
+ for (size_t j = 0; j < in.getType()->getStruct()->size(); j++) {
+ baseLoc = (*in.getType()->getStruct())[j].type->getQualifier().hasLocation() ?
+ (*in.getType()->getStruct())[j].type->getQualifier().layoutLocation : baseLoc;
+ if (baseLoc != std::numeric_limits<unsigned int>::max()) {
+ bool isMemberFound = false;
+ for (auto outIt : pipeOut) {
+ if (baseLoc == outIt.second->getType()->getQualifier().layoutLocation) {
+ isMemberFound = true;
+ break;
+ }
+ }
+ if (!isMemberFound) {
+ success &= false;
+ break;
+ }
+ baseLoc += glslang::TIntermediate::computeTypeLocationSize(*(*in.getType()->getStruct())[j].type, EShLangVertex);
+ }
+ }
+ }
}
}
}
@@ -295,6 +340,10 @@
::testing::ValuesIn(std::vector<IoMapData>({
{{"iomap.crossStage.vert", "iomap.crossStage.frag" }, Semantics::OpenGL},
{{"iomap.crossStage.2.vert", "iomap.crossStage.2.geom", "iomap.crossStage.2.frag" }, Semantics::OpenGL},
+ {{"iomap.blockOutVariableIn.vert", "iomap.blockOutVariableIn.frag"}, Semantics::OpenGL},
+ {{"iomap.variableOutBlockIn.vert", "iomap.variableOutBlockIn.frag"}, Semantics::OpenGL},
+ {{"iomap.blockOutVariableIn.2.vert", "iomap.blockOutVariableIn.geom"}, Semantics::OpenGL},
+ {{"iomap.variableOutBlockIn.2.vert", "iomap.variableOutBlockIn.geom"}, Semantics::OpenGL},
// vulkan semantics
{{"iomap.crossStage.vk.vert", "iomap.crossStage.vk.geom", "iomap.crossStage.vk.frag" }, Semantics::Vulkan},
}))
@@ -303,4 +352,4 @@
} // anonymous namespace
} // namespace glslangtest
-#endif
\ No newline at end of file
+#endif
diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp
index 5e1cbda..5974257 100644
--- a/gtests/Hlsl.FromFile.cpp
+++ b/gtests/Hlsl.FromFile.cpp
@@ -59,11 +59,13 @@
using HlslCompileTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
using HlslVulkan1_1CompileTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
+using HlslSpv1_6CompileTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
using HlslCompileAndFlattenTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
using HlslLegalizeTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
using HlslDebugTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
using HlslDX9CompatibleTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
using HlslLegalDebugTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
+using HlslNonSemanticShaderDebugInfoTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
// Compiling HLSL to pre-legalized SPIR-V under Vulkan semantics. Expected
// to successfully generate both AST and SPIR-V.
@@ -81,6 +83,13 @@
Target::BothASTAndSpv, true, GetParam().entryPoint);
}
+TEST_P(HlslSpv1_6CompileTest, FromFile)
+{
+ loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
+ Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_6,
+ Target::BothASTAndSpv, true, GetParam().entryPoint);
+}
+
TEST_P(HlslCompileAndFlattenTest, FromFile)
{
loadFileCompileFlattenUniformsAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
@@ -128,6 +137,13 @@
"/baseResults/", true, true);
}
+TEST_P(HlslNonSemanticShaderDebugInfoTest, FromFile)
+{
+ loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
+ Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
+ Target::Spv, true, GetParam().entryPoint, "/baseResults/", false, false, true);
+}
+
// clang-format off
INSTANTIATE_TEST_SUITE_P(
ToSpirv, HlslCompileTest,
@@ -385,6 +401,7 @@
{"hlsl.structbuffer.fn2.comp", "main"},
{"hlsl.structbuffer.rw.frag", "main"},
{"hlsl.structbuffer.rwbyte.frag", "main"},
+ {"hlsl.structbuffer.rwbyte2.comp", "main"},
{"hlsl.structin.vert", "main"},
{"hlsl.structIoFourWay.frag", "main"},
{"hlsl.structStructName.frag", "main"},
@@ -425,7 +442,8 @@
{"hlsl.typedef.frag", "PixelShaderFunction"},
{"hlsl.whileLoop.frag", "PixelShaderFunction"},
{"hlsl.void.frag", "PixelShaderFunction"},
- {"hlsl.type.type.conversion.all.frag", "main"}
+ {"hlsl.type.type.conversion.all.frag", "main"},
+ {"hlsl.instance.geom", "GeometryShader"}
}),
FileNameAsCustomTestSuffix
);
@@ -451,6 +469,16 @@
// clang-format off
INSTANTIATE_TEST_SUITE_P(
+ ToSpirv, HlslSpv1_6CompileTest,
+ ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
+ {"hlsl.spv.1.6.discard.frag", "PixelShaderFunction"}
+ }),
+ FileNameAsCustomTestSuffix
+);
+// clang-format on
+
+// clang-format off
+INSTANTIATE_TEST_SUITE_P(
ToSpirv, HlslCompileAndFlattenTest,
::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
{"hlsl.array.flatten.frag", "main"},
@@ -507,7 +535,21 @@
}),
FileNameAsCustomTestSuffix
);
+// clang-format on
+// clang-format off
+INSTANTIATE_TEST_SUITE_P(
+ ToSpirv, HlslNonSemanticShaderDebugInfoTest,
+ ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
+ {"spv.debuginfo.hlsl.vert", "main"},
+ {"spv.debuginfo.hlsl.frag", "main"},
+ {"spv.debuginfo.hlsl.comp", "main"},
+ {"spv.debuginfo.hlsl.geom", "main"},
+ {"spv.debuginfo.hlsl.tesc", "main"},
+ {"spv.debuginfo.hlsl.tese", "main"},
+ }),
+ FileNameAsCustomTestSuffix
+);
// clang-format on
} // anonymous namespace
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index ef11764..93e364d 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -69,6 +69,7 @@
using CompileVulkanToDebugSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
using CompileVulkan1_1ToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
using CompileToSpirv14Test = GlslangTest<::testing::TestWithParam<std::string>>;
+using CompileToSpirv16Test = GlslangTest<::testing::TestWithParam<std::string>>;
using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
using VulkanSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
using OpenGLSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
@@ -79,6 +80,7 @@
using CompileVulkanToSpirvTestNV = GlslangTest<::testing::TestWithParam<std::string>>;
using CompileVulkanToSpirv14TestNV = GlslangTest<::testing::TestWithParam<std::string>>;
using CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::testing::TestWithParam<std::string>>;
+using CompileVulkanToNonSemanticShaderDebugInfoTest = GlslangTest<::testing::TestWithParam<std::string>>;
// Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully
// generate SPIR-V.
@@ -122,6 +124,13 @@
Target::Spv);
}
+TEST_P(CompileToSpirv16Test, FromFile)
+{
+ loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
+ Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_6,
+ Target::Spv);
+}
+
// Compiling GLSL to SPIR-V under OpenGL semantics. Expected to successfully
// generate SPIR-V.
TEST_P(CompileOpenGLToSpirvTest, FromFile)
@@ -221,6 +230,13 @@
Target::Spv);
}
+TEST_P(CompileVulkanToNonSemanticShaderDebugInfoTest, FromFile)
+{
+ loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
+ Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
+ Target::Spv, true, "", "/baseResults/", false, false, true);
+}
+
// clang-format off
INSTANTIATE_TEST_SUITE_P(
Glsl, CompileVulkanToSpirvTest,
@@ -250,6 +266,7 @@
"rayQuery-initialization.Error.comp",
"rayQuery-global.rgen",
"rayQuery-types.comp",
+ "rayQuery-OpConvertUToAccelerationStructureKHR.comp",
"spv.set.vert",
"spv.double.comp",
"spv.100ops.frag",
@@ -365,7 +382,6 @@
"spv.int64.frag",
"spv.intcoopmat.comp",
"spv.intOps.vert",
- "spv.intrinsicsSpecConst.vert",
"spv.intrinsicsSpirvByReference.vert",
"spv.intrinsicsSpirvDecorate.frag",
"spv.intrinsicsSpirvExecutionMode.frag",
@@ -373,6 +389,7 @@
"spv.intrinsicsSpirvLiteral.vert",
"spv.intrinsicsSpirvStorageClass.rchit",
"spv.intrinsicsSpirvType.rgen",
+ "spv.intrinsicsSpirvTypeLocalVar.vert",
"spv.invariantAll.vert",
"spv.layer.tese",
"spv.layoutNested.vert",
@@ -436,6 +453,7 @@
"spv.textureBuffer.vert",
"spv.image.frag",
"spv.imageAtomic64.frag",
+ "spv.imageAtomic64.comp",
"spv.types.frag",
"spv.uint.frag",
"spv.uniformArray.frag",
@@ -462,6 +480,7 @@
"spv.storageBuffer.vert",
"spv.terminate.frag",
"spv.subgroupUniformControlFlow.vert",
+ "spv.subgroupSizeARB.frag",
"spv.precise.tese",
"spv.precise.tesc",
"spv.viewportindex.tese",
@@ -476,7 +495,9 @@
"spv.smBuiltins.frag",
"spv.builtin.PrimitiveShadingRateEXT.vert",
"spv.builtin.ShadingRateEXT.frag",
- "spv.atomicAdd.bufferReference.comp"
+ "spv.atomicAdd.bufferReference.comp",
+ "spv.fragmentShaderBarycentric3.frag",
+ "spv.fragmentShaderBarycentric4.frag",
})),
FileNameAsCustomTestSuffix
);
@@ -520,6 +541,7 @@
"spv.vulkan110.int16.frag",
"spv.int32.frag",
"spv.explicittypes.frag",
+ "spv.float16NoRelaxed.vert",
"spv.float32.frag",
"spv.float64.frag",
"spv.memoryScopeSemantics.comp",
@@ -617,12 +639,37 @@
"spv.WorkgroupMemoryExplicitLayout.std140.comp",
"spv.WorkgroupMemoryExplicitLayout.std430.comp",
"spv.WorkgroupMemoryExplicitLayout.scalar.comp",
+
+ // SPV_EXT_mesh_shader
+ "spv.ext.meshShaderBuiltins.mesh",
+ "spv.ext.meshShaderRedeclBuiltins.mesh",
+ "spv.ext.meshShaderTaskMem.mesh",
+ "spv.ext.meshShaderUserDefined.mesh",
+ "spv.ext.meshTaskShader.task",
+ "spv.atomiAddEXT.error.mesh",
+ "spv.atomiAddEXT.task",
+ "spv.460.subgroupEXT.task",
+ "spv.460.subgroupEXT.mesh",
})),
FileNameAsCustomTestSuffix
);
// clang-format off
INSTANTIATE_TEST_SUITE_P(
+ Glsl, CompileToSpirv16Test,
+ ::testing::ValuesIn(std::vector<std::string>({
+ "spv.1.6.conditionalDiscard.frag",
+ "spv.1.6.helperInvocation.frag",
+ "spv.1.6.specConstant.comp",
+ "spv.1.6.samplerBuffer.frag",
+ "spv.1.6.separate.frag",
+ })),
+ FileNameAsCustomTestSuffix
+);
+
+
+// clang-format off
+INSTANTIATE_TEST_SUITE_P(
Hlsl, HlslIoMap,
::testing::ValuesIn(std::vector<IoMapData>{
{ "spv.register.autoassign.frag", "main_ep", 5, 10, 0, 20, 30, true, false },
@@ -785,6 +832,7 @@
})),
FileNameAsCustomTestSuffix
);
+
INSTANTIATE_TEST_SUITE_P(
Glsl, CompileUpgradeTextureToSampledTextureAndDropSamplersTest,
::testing::ValuesIn(std::vector<std::string>({
@@ -792,6 +840,19 @@
})),
FileNameAsCustomTestSuffix
);
+
+INSTANTIATE_TEST_SUITE_P(
+ Glsl, CompileVulkanToNonSemanticShaderDebugInfoTest,
+ ::testing::ValuesIn(std::vector<std::string>({
+ "spv.debuginfo.glsl.vert",
+ "spv.debuginfo.glsl.frag",
+ "spv.debuginfo.glsl.comp",
+ "spv.debuginfo.glsl.geom",
+ "spv.debuginfo.glsl.tesc",
+ "spv.debuginfo.glsl.tese"
+ })),
+ FileNameAsCustomTestSuffix
+);
// clang-format on
} // anonymous namespace
diff --git a/gtests/TestFixture.cpp b/gtests/TestFixture.cpp
index ced6fcc..4c935f8 100644
--- a/gtests/TestFixture.cpp
+++ b/gtests/TestFixture.cpp
@@ -73,9 +73,9 @@
} else if (stage == "rcall") {
return EShLangCallable;
} else if (stage == "task") {
- return EShLangTaskNV;
+ return EShLangTask;
} else if (stage == "mesh") {
- return EShLangMeshNV;
+ return EShLangMesh;
} else {
assert(0 && "Unknown shader stage");
return EShLangCount;
diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h
index 2b057dc..d087d6d 100644
--- a/gtests/TestFixture.h
+++ b/gtests/TestFixture.h
@@ -217,6 +217,7 @@
EShTextureSamplerTransformMode texSampTransMode = EShTexSampTransKeep,
bool enableOptimizer = false,
bool enableDebug = false,
+ bool enableNonSemanticShaderDebugInfo = false,
bool automap = true)
{
const EShLanguage stage = GetShaderStage(GetSuffix(shaderName));
@@ -263,6 +264,8 @@
std::vector<uint32_t> spirv_binary;
options().disableOptimizer = !enableOptimizer;
options().generateDebugInfo = enableDebug;
+ options().emitNonSemanticShaderDebugInfo = enableNonSemanticShaderDebugInfo;
+ options().emitNonSemanticShaderDebugSource = enableNonSemanticShaderDebugInfo;
glslang::GlslangToSpv(*program.getIntermediate(stage),
spirv_binary, &logger, &options());
@@ -367,11 +370,12 @@
if (success && (controls & EShMsgSpvRules)) {
spv::SpvBuildLogger logger;
+ std::vector<std::string> whiteListStrings;
std::vector<uint32_t> spirv_binary;
glslang::GlslangToSpv(*program.getIntermediate(stage),
spirv_binary, &logger, &options());
- spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, remapOptions);
+ spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, whiteListStrings, remapOptions);
std::ostringstream disassembly_stream;
spv::Parameterize();
@@ -394,9 +398,9 @@
{
if ((controls & EShMsgSpvRules)) {
std::vector<uint32_t> spirv_binary(code); // scratch copy
+ std::vector<std::string> whiteListStrings;
+ spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, whiteListStrings, remapOptions);
- spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, remapOptions);
-
std::ostringstream disassembly_stream;
spv::Parameterize();
spv::Disassemble(disassembly_stream, spirv_binary);
@@ -447,7 +451,8 @@
const std::string& entryPointName="",
const std::string& baseDir="/baseResults/",
const bool enableOptimizer = false,
- const bool enableDebug = false)
+ const bool enableDebug = false,
+ const bool enableNonSemanticShaderDebugInfo = false)
{
const std::string inputFname = testDir + "/" + testName;
const std::string expectedOutputFname =
@@ -463,7 +468,8 @@
if (enableDebug)
controls = static_cast<EShMessages>(controls | EShMsgDebugInfo);
GlslangResult result = compileAndLink(testName, input, entryPointName, controls, clientTargetVersion,
- targetLanguageVersion, false, EShTexSampTransKeep, enableOptimizer, enableDebug, automap);
+ targetLanguageVersion, false, EShTexSampTransKeep, enableOptimizer, enableDebug,
+ enableNonSemanticShaderDebugInfo, automap);
// Generate the hybrid output in the way of glslangValidator.
std::ostringstream stream;
diff --git a/gtests/VkRelaxed.FromFile.cpp b/gtests/VkRelaxed.FromFile.cpp
index 777134d..96cd3cf 100644
--- a/gtests/VkRelaxed.FromFile.cpp
+++ b/gtests/VkRelaxed.FromFile.cpp
@@ -107,8 +107,8 @@
auto inQualifier = in.getType()->getQualifier();
auto outQualifier = out->second->getType()->getQualifier();
success &= outQualifier.layoutLocation == inQualifier.layoutLocation;
- }
- else {
+ // These are not part of a matched interface. Other cases still need to be added.
+ } else if (name != "gl_FrontFacing" && name != "gl_FragCoord") {
success &= false;
}
}
@@ -293,6 +293,7 @@
::testing::ValuesIn(std::vector<vkRelaxedData>({
{{"vk.relaxed.frag"}},
{{"vk.relaxed.link1.frag", "vk.relaxed.link2.frag"}},
+ {{"vk.relaxed.stagelink.0.0.vert", "vk.relaxed.stagelink.0.1.vert", "vk.relaxed.stagelink.0.2.vert", "vk.relaxed.stagelink.0.0.frag", "vk.relaxed.stagelink.0.1.frag", "vk.relaxed.stagelink.0.2.frag"}},
{{"vk.relaxed.stagelink.vert", "vk.relaxed.stagelink.frag"}},
{{"vk.relaxed.errorcheck.vert", "vk.relaxed.errorcheck.frag"}},
{{"vk.relaxed.changeSet.vert", "vk.relaxed.changeSet.frag" }, { {"0"}, {"1"} } },
diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt
index 7d5bc15..b34df3a 100644
--- a/hlsl/CMakeLists.txt
+++ b/hlsl/CMakeLists.txt
@@ -46,14 +46,16 @@
endif()
if(ENABLE_GLSLANG_INSTALL)
- if(BUILD_SHARED_LIBS)
- install(TARGETS HLSL EXPORT HLSLTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
- else()
- install(TARGETS HLSL EXPORT HLSLTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- endif()
- install(EXPORT HLSLTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+ install(TARGETS HLSL EXPORT glslang-targets)
+
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/HLSLTargets.cmake" "
+ message(WARNING \"Using `HLSLTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
+
+ if (NOT TARGET glslang::HLSL)
+ include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\")
+ endif()
+
+ add_library(HLSL ALIAS glslang::HLSL)
+ ")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/HLSLTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
endif()
diff --git a/known_good.json b/known_good.json
index 96c27de..5ee36a2 100644
--- a/known_good.json
+++ b/known_good.json
@@ -5,14 +5,14 @@
"site" : "github",
"subrepo" : "KhronosGroup/SPIRV-Tools",
"subdir" : "External/spirv-tools",
- "commit" : "21e3f681e2004590c7865bc8c0195a4ab8e66c88"
+ "commit" : "eb0a36633d2acf4de82588504f951ad0f2cecacb"
},
{
"name" : "spirv-tools/external/spirv-headers",
"site" : "github",
"subrepo" : "KhronosGroup/SPIRV-Headers",
"subdir" : "External/spirv-tools/external/spirv-headers",
- "commit" : "814e728b30ddd0f4509233099a3ad96fd4318c07"
+ "commit" : "85a1ed200d50660786c1a88d9166e871123cce39"
}
]
}
diff --git a/license-checker.cfg b/license-checker.cfg
index 409f18e..15b8f97 100644
--- a/license-checker.cfg
+++ b/license-checker.cfg
@@ -15,6 +15,8 @@
"_config.yml",
".*",
+ ".github/workflows/*.yml",
+ ".github/workflows/*.js",
"CMakeSettings.json",
"known_good_khr.json",
"known_good.json",
@@ -34,6 +36,7 @@
"SPIRV/GLSL.*.h",
"SPIRV/NonSemanticDebugPrintf.h",
+ "SPIRV/NonSemanticShaderDebugInfo100.h",
"SPIRV/spirv.hpp"
]
}
diff --git a/update_glslang_sources.py b/update_glslang_sources.py
index 65be2f6..20f303b 100755
--- a/update_glslang_sources.py
+++ b/update_glslang_sources.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# Copyright 2017 The Glslang Authors. All rights reserved.
#